Added retrier to exchange functions and reduced failing tests down to 2

This commit is contained in:
Sam Germain 2021-09-04 19:16:17 -06:00
parent aac1094078
commit 61fdf74ad9
4 changed files with 25 additions and 10 deletions

View File

@ -1521,10 +1521,23 @@ class Exchange:
self._async_get_trade_history(pair=pair, since=since, self._async_get_trade_history(pair=pair, since=since,
until=until, from_id=from_id)) until=until, from_id=from_id))
def get_interest_rate(self, pair: str, maker_or_taker: str, is_short: bool) -> float: @retrier
def get_interest_rate(
self,
pair: str,
maker_or_taker: str,
is_short: bool
) -> Tuple[float, float]:
"""
:param pair: base/quote currency pair
:param maker_or_taker: "maker" if limit order, "taker" if market order
:param is_short: True if requesting base interest, False if requesting quote interest
:return: (open_interest, rollover_interest)
"""
# TODO-lev: implement # TODO-lev: implement
return (0.0005, 0.0005) return (0.0005, 0.0005)
@retrier
def fill_leverage_brackets(self): def fill_leverage_brackets(self):
""" """
#TODO-lev: Should maybe be renamed, leverage_brackets might not be accurate for kraken #TODO-lev: Should maybe be renamed, leverage_brackets might not be accurate for kraken
@ -1543,6 +1556,7 @@ class Exchange:
raise OperationalException( raise OperationalException(
f"{self.name.capitalize()}.get_max_leverage has not been implemented.") f"{self.name.capitalize()}.get_max_leverage has not been implemented.")
@retrier
def set_leverage(self, leverage: float, pair: Optional[str]): def set_leverage(self, leverage: float, pair: Optional[str]):
""" """
Set's the leverage before making a trade, in order to not Set's the leverage before making a trade, in order to not
@ -1558,7 +1572,8 @@ class Exchange:
except ccxt.BaseError as e: except ccxt.BaseError as e:
raise OperationalException(e) from e raise OperationalException(e) from e
def set_margin_mode(self, symbol: str, collateral: Collateral, params: dict = {}): @retrier
def set_margin_mode(self, pair: str, collateral: Collateral, params: dict = {}):
''' '''
Set's the margin mode on the exchange to cross or isolated for a specific pair Set's the margin mode on the exchange to cross or isolated for a specific pair
:param symbol: base/quote currency pair (e.g. "ADA/USDT") :param symbol: base/quote currency pair (e.g. "ADA/USDT")
@ -1568,7 +1583,7 @@ class Exchange:
return return
try: try:
self._api.set_margin_mode(symbol, collateral.value, params) self._api.set_margin_mode(pair, collateral.value, params)
except ccxt.DDoSProtection as e: except ccxt.DDoSProtection as e:
raise DDosProtection(e) from e raise DDosProtection(e) from e
except (ccxt.NetworkError, ccxt.ExchangeError) as e: except (ccxt.NetworkError, ccxt.ExchangeError) as e:

View File

@ -149,7 +149,7 @@ def test_get_max_leverage_binance(default_conf, mocker, pair, nominal_value, max
def test_fill_leverage_brackets_binance(default_conf, mocker): def test_fill_leverage_brackets_binance(default_conf, mocker):
api_mock = MagicMock() api_mock = MagicMock()
api_mock.load_leverage_brackets = MagicMock(return_value={{ api_mock.load_leverage_brackets = MagicMock(return_value={
'ADA/BUSD': [[0.0, '0.025'], 'ADA/BUSD': [[0.0, '0.025'],
[100000.0, '0.05'], [100000.0, '0.05'],
[500000.0, '0.1'], [500000.0, '0.1'],
@ -173,7 +173,7 @@ def test_fill_leverage_brackets_binance(default_conf, mocker):
[250000.0, '0.125'], [250000.0, '0.125'],
[1000000.0, '0.5']], [1000000.0, '0.5']],
}}) })
exchange = get_patched_exchange(mocker, default_conf, api_mock, id="binance") exchange = get_patched_exchange(mocker, default_conf, api_mock, id="binance")
assert exchange._leverage_brackets == { assert exchange._leverage_brackets == {

View File

@ -2998,8 +2998,8 @@ def test_set_leverage(mocker, default_conf, exchange_name, collateral):
exchange_name, exchange_name,
"set_leverage", "set_leverage",
"set_leverage", "set_leverage",
symbol="XRP/USDT", pair="XRP/USDT",
collateral=collateral leverage=5.0
) )
@ -3021,6 +3021,6 @@ def test_set_margin_mode(mocker, default_conf, exchange_name, collateral):
exchange_name, exchange_name,
"set_margin_mode", "set_margin_mode",
"set_margin_mode", "set_margin_mode",
symbol="XRP/USDT", pair="XRP/USDT",
collateral=collateral collateral=collateral
) )

View File

@ -274,7 +274,7 @@ def test_get_max_leverage_kraken(default_conf, mocker, pair, nominal_value, max_
def test_fill_leverage_brackets_kraken(default_conf, mocker): def test_fill_leverage_brackets_kraken(default_conf, mocker):
api_mock = MagicMock() api_mock = MagicMock()
api_mock.load_markets = MagicMock(return_value={{ api_mock.load_markets = MagicMock(return_value={
"ADA/BTC": {'active': True, "ADA/BTC": {'active': True,
'altname': 'ADAXBT', 'altname': 'ADAXBT',
'base': 'ADA', 'base': 'ADA',
@ -483,7 +483,7 @@ def test_fill_leverage_brackets_kraken(default_conf, mocker):
[5000000, 0.0012], [5000000, 0.0012],
[10000000, 0.0001]]}} [10000000, 0.0001]]}}
}}) })
exchange = get_patched_exchange(mocker, default_conf, api_mock, id="kraken") exchange = get_patched_exchange(mocker, default_conf, api_mock, id="kraken")
assert exchange._leverage_brackets == { assert exchange._leverage_brackets == {