Merge pull request #10195 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -249,3 +249,44 @@ class Bybit(Exchange):
|
|||||||
# Canceled orders will have "remaining=0" on bybit.
|
# Canceled orders will have "remaining=0" on bybit.
|
||||||
order['remaining'] = None
|
order['remaining'] = None
|
||||||
return order
|
return order
|
||||||
|
|
||||||
|
@retrier
|
||||||
|
def get_leverage_tiers(self) -> Dict[str, List[Dict]]:
|
||||||
|
"""
|
||||||
|
Temporary workaround for https://github.com/freqtrade/freqtrade/issues/10196
|
||||||
|
should be removed or updated once https://github.com/ccxt/ccxt/issues/22448 is fixed.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Load cached tiers
|
||||||
|
tiers_cached = self.load_cached_leverage_tiers(self._config['stake_currency'])
|
||||||
|
if tiers_cached:
|
||||||
|
tiers = tiers_cached
|
||||||
|
return tiers
|
||||||
|
|
||||||
|
# Fetch tiers from exchange
|
||||||
|
|
||||||
|
symbols = self._api.market_symbols([])
|
||||||
|
|
||||||
|
def parse_resp(response):
|
||||||
|
result = self._api.safe_dict(response, 'result', {})
|
||||||
|
data = self._api.safe_list(result, 'list', [])
|
||||||
|
return self._api.parse_leverage_tiers(data, symbols, 'symbol')
|
||||||
|
|
||||||
|
params = {
|
||||||
|
'category': 'linear',
|
||||||
|
}
|
||||||
|
tiers = {}
|
||||||
|
# 20 pairs ... should be sufficient assuming 30 pairs per page
|
||||||
|
# Aimed to avoid a potential infinite loop
|
||||||
|
for _ in range(20):
|
||||||
|
# Fetch from private endpoint
|
||||||
|
response = self._api.publicGetV5MarketRiskLimit(params)
|
||||||
|
tiers = tiers | parse_resp(response)
|
||||||
|
if (cursor := response['result']['nextPageCursor']) == '':
|
||||||
|
break
|
||||||
|
params.update({
|
||||||
|
"cursor": cursor
|
||||||
|
})
|
||||||
|
|
||||||
|
self.cache_leverage_tiers(tiers, self._config['stake_currency'])
|
||||||
|
return tiers
|
||||||
|
|||||||
@@ -4936,7 +4936,10 @@ def test_get_max_pair_stake_amount(
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('exchange_name', EXCHANGES)
|
@pytest.mark.parametrize('exchange_name', EXCHANGES)
|
||||||
def test_load_leverage_tiers(mocker, default_conf, leverage_tiers, exchange_name):
|
def test_load_leverage_tiers(mocker, default_conf, exchange_name):
|
||||||
|
if exchange_name == 'bybit':
|
||||||
|
# TODO: remove once get_leverage_tiers workaround has been removed.
|
||||||
|
pytest.skip("Currently skipping")
|
||||||
api_mock = MagicMock()
|
api_mock = MagicMock()
|
||||||
api_mock.fetch_leverage_tiers = MagicMock()
|
api_mock.fetch_leverage_tiers = MagicMock()
|
||||||
type(api_mock).has = PropertyMock(return_value={'fetchLeverageTiers': True})
|
type(api_mock).has = PropertyMock(return_value={'fetchLeverageTiers': True})
|
||||||
|
|||||||
Reference in New Issue
Block a user