diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index d25a6a38f..3bae2bfe2 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -246,6 +246,7 @@ class Binance(Exchange): raise OperationalException( "Freqtrade only supports isolated futures for leverage trading") + @retrier def load_leverage_tiers(self) -> Dict[str, List[Dict]]: if self._config['dry_run']: leverage_tiers_path = ( diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 646425b9a..30e70461e 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -1858,6 +1858,7 @@ class Exchange: except ccxt.BaseError as e: raise OperationalException(e) from e + @retrier def load_leverage_tiers(self) -> Dict[str, List[Dict]]: if self.trading_mode == TradingMode.FUTURES and self.exchange_has('fetchLeverageTiers'): try: @@ -1874,7 +1875,6 @@ class Exchange: else: return {} - @retrier def fill_leverage_tiers(self) -> None: """ Assigns property _leverage_tiers to a dictionary of information about the leverage diff --git a/freqtrade/exchange/okx.py b/freqtrade/exchange/okx.py index 833e3cc09..3fa62de9e 100644 --- a/freqtrade/exchange/okx.py +++ b/freqtrade/exchange/okx.py @@ -4,6 +4,7 @@ from typing import Dict, List, Tuple from freqtrade.enums import MarginMode, TradingMode from freqtrade.exceptions import OperationalException from freqtrade.exchange import Exchange +from freqtrade.exchange.common import retrier logger = logging.getLogger(__name__) @@ -64,6 +65,7 @@ class Okx(Exchange): pair_tiers = self._leverage_tiers[pair] return pair_tiers[-1]['max'] / leverage + @retrier def load_leverage_tiers(self) -> Dict[str, List[Dict]]: # * This is slow(~45s) on Okex, must make 90-some api calls to load all linear swap markets if self.trading_mode == TradingMode.FUTURES: diff --git a/tests/conftest.py b/tests/conftest.py index 04c4fd70d..b9dd86d1d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -846,7 +846,7 @@ def get_markets(): 'option': False, 'active': True, 'contract': None, - 'linear': None, + 'linear': True, 'inverse': None, 'taker': 0.0006, 'maker': 0.0002, @@ -891,8 +891,8 @@ def get_markets(): 'future': True, 'swap': True, 'margin': True, - 'linear': False, - 'inverse': True, + 'linear': True, + 'inverse': False, 'type': 'spot', 'contractSize': None, 'taker': 0.0006, diff --git a/tests/exchange/test_binance.py b/tests/exchange/test_binance.py index cb516e0d0..64f18220f 100644 --- a/tests/exchange/test_binance.py +++ b/tests/exchange/test_binance.py @@ -486,7 +486,7 @@ def test_fill_leverage_tiers_binance(default_conf, mocker): api_mock, "binance", "fill_leverage_tiers", - "fetch_leverage_tiers" + "fetch_leverage_tiers", ) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 0de8ddfbc..5e8a44ef4 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -4247,7 +4247,7 @@ def test_load_leverage_tiers(mocker, default_conf, leverage_tiers): mocker, default_conf, api_mock, - "binance", + "ftx", "load_leverage_tiers", "fetch_leverage_tiers", )