A lot of the usdt freqtradebot tests pass now

This commit is contained in:
Sam Germain 2021-09-26 13:43:01 -06:00
parent ba5d78f005
commit 43339f1660
2 changed files with 51 additions and 47 deletions

View File

@ -441,7 +441,7 @@ def ticker_sell_down():
def ticker_usdt(): def ticker_usdt():
return MagicMock(return_value={ return MagicMock(return_value={
'bid': 2.0, 'bid': 2.0,
'ask': 2.01, 'ask': 2.1,
'last': 2.0, 'last': 2.0,
}) })
@ -449,9 +449,9 @@ def ticker_usdt():
@pytest.fixture @pytest.fixture
def ticker_usdt_sell_up(): def ticker_usdt_sell_up():
return MagicMock(return_value={ return MagicMock(return_value={
'bid': 2.19, 'bid': 2.2,
'ask': 2.2, 'ask': 2.3,
'last': 2.19, 'last': 2.2,
}) })

View File

@ -320,8 +320,8 @@ def test_create_trade_no_stake_amount(default_conf_usdt, ticker_usdt, limit_buy_
@pytest.mark.parametrize('stake_amount,create,amount_enough,max_open_trades', [ @pytest.mark.parametrize('stake_amount,create,amount_enough,max_open_trades', [
(0.0005, True, True, 99), (5.0, True, True, 99),
(0.000000005, True, False, 99), (0.00005, True, False, 99),
(0, False, True, 99), (0, False, True, 99),
(UNLIMITED_STAKE_AMOUNT, False, True, 0), (UNLIMITED_STAKE_AMOUNT, False, True, 0),
]) ])
@ -2592,14 +2592,15 @@ def test_execute_trade_exit_up(default_conf_usdt, ticker_usdt, fee, ticker_usdt_
'exchange': 'Binance', 'exchange': 'Binance',
'pair': 'ETH/USDT', 'pair': 'ETH/USDT',
'gain': 'profit', 'gain': 'profit',
'limit': 1.172e-05, 'limit': 2.2,
'amount': 91.07468123, 'amount': 5.0,
'order_type': 'limit', 'order_type': 'limit',
'open_rate': 1.098e-05, 'open_rate': 2.0,
'current_rate': 1.173e-05, 'current_rate': 2.3,
'profit_amount': 6.223e-05, # TODO: Double check that profit_amount and profit_ratio are correct
'profit_ratio': 0.0620716, 'profit_amount': 0.9475,
'stake_currency': 'BTC', 'profit_ratio': 0.09451372,
'stake_currency': 'USDT',
'fiat_currency': 'USD', 'fiat_currency': 'USD',
'sell_reason': SellType.ROI.value, 'sell_reason': SellType.ROI.value,
'open_date': ANY, 'open_date': ANY,
@ -2638,20 +2639,21 @@ def test_execute_trade_exit_down(default_conf_usdt, ticker_usdt, fee, ticker_usd
assert rpc_mock.call_count == 2 assert rpc_mock.call_count == 2
last_msg = rpc_mock.call_args_list[-1][0][0] last_msg = rpc_mock.call_args_list[-1][0][0]
# TODO: Should be a loss, but comes out as a gain
assert { assert {
'type': RPCMessageType.SELL, 'type': RPCMessageType.SELL,
'trade_id': 1, 'trade_id': 1,
'exchange': 'Binance', 'exchange': 'Binance',
'pair': 'ETH/USDT', 'pair': 'ETH/USDT',
'gain': 'loss', 'gain': 'loss',
'limit': 1.044e-05, 'limit': 2.01,
'amount': 91.07468123, 'amount': 5.0,
'order_type': 'limit', 'order_type': 'limit',
'open_rate': 1.098e-05, 'open_rate': 2.0,
'current_rate': 1.043e-05, 'current_rate': 2.0,
'profit_amount': -5.406e-05, 'profit_amount': -0.000125,
'profit_ratio': -0.05392257, 'profit_ratio': -1.247e-05,
'stake_currency': 'BTC', 'stake_currency': 'USDT',
'fiat_currency': 'USD', 'fiat_currency': 'USD',
'sell_reason': SellType.STOP_LOSS.value, 'sell_reason': SellType.STOP_LOSS.value,
'open_date': ANY, 'open_date': ANY,
@ -2692,7 +2694,7 @@ def test_execute_trade_exit_custom_exit_price(default_conf_usdt, ticker_usdt, fe
freqtrade.strategy.confirm_trade_exit = MagicMock(return_value=True) freqtrade.strategy.confirm_trade_exit = MagicMock(return_value=True)
# Set a custom exit price # Set a custom exit price
freqtrade.strategy.custom_exit_price = lambda **kwargs: 1.170e-05 freqtrade.strategy.custom_exit_price = lambda **kwargs: 2.25
freqtrade.execute_trade_exit(trade=trade, limit=ticker_usdt_sell_up()['bid'], freqtrade.execute_trade_exit(trade=trade, limit=ticker_usdt_sell_up()['bid'],
sell_reason=SellCheckTuple(sell_type=SellType.SELL_SIGNAL)) sell_reason=SellCheckTuple(sell_type=SellType.SELL_SIGNAL))
@ -2709,14 +2711,14 @@ def test_execute_trade_exit_custom_exit_price(default_conf_usdt, ticker_usdt, fe
'exchange': 'Binance', 'exchange': 'Binance',
'pair': 'ETH/USDT', 'pair': 'ETH/USDT',
'gain': 'profit', 'gain': 'profit',
'limit': 1.170e-05, 'limit': 2.25,
'amount': 91.07468123, 'amount': 5.0,
'order_type': 'limit', 'order_type': 'limit',
'open_rate': 1.098e-05, 'open_rate': 2.0,
'current_rate': 1.173e-05, 'current_rate': 2.3,
'profit_amount': 6.041e-05, 'profit_amount': 6.041e-05,
'profit_ratio': 0.06025919, 'profit_ratio': 0.07262344,
'stake_currency': 'BTC', 'stake_currency': 'USDT',
'fiat_currency': 'USD', 'fiat_currency': 'USD',
'sell_reason': SellType.SELL_SIGNAL.value, 'sell_reason': SellType.SELL_SIGNAL.value,
'open_date': ANY, 'open_date': ANY,
@ -2755,27 +2757,28 @@ def test_execute_trade_exit_down_stoploss_on_exchange_dry_run(default_conf_usdt,
freqtrade.strategy.order_types['stoploss_on_exchange'] = True freqtrade.strategy.order_types['stoploss_on_exchange'] = True
# Setting trade stoploss to 0.01 # Setting trade stoploss to 0.01
trade.stop_loss = 0.00001099 * 0.99 trade.stop_loss = 2.0 * 0.99
freqtrade.execute_trade_exit(trade=trade, limit=ticker_usdt_sell_down()['bid'], freqtrade.execute_trade_exit(trade=trade, limit=ticker_usdt_sell_down()['bid'],
sell_reason=SellCheckTuple(sell_type=SellType.STOP_LOSS)) sell_reason=SellCheckTuple(sell_type=SellType.STOP_LOSS))
assert rpc_mock.call_count == 2 assert rpc_mock.call_count == 2
last_msg = rpc_mock.call_args_list[-1][0][0] last_msg = rpc_mock.call_args_list[-1][0][0]
# TODO: Are these values correct?
assert { assert {
'type': RPCMessageType.SELL, 'type': RPCMessageType.SELL,
'trade_id': 1, 'trade_id': 1,
'exchange': 'Binance', 'exchange': 'Binance',
'pair': 'ETH/USDT', 'pair': 'ETH/USDT',
'gain': 'loss', 'gain': 'loss',
'limit': 1.08801e-05, 'limit': 1.98,
'amount': 91.07468123, 'amount': 5.0,
'order_type': 'limit', 'order_type': 'limit',
'open_rate': 1.098e-05, 'open_rate': 2.0,
'current_rate': 1.043e-05, 'current_rate': 2.0,
'profit_amount': -1.408e-05, 'profit_amount': -0.14975,
'profit_ratio': -0.01404051, 'profit_ratio': -0.01493766,
'stake_currency': 'BTC', 'stake_currency': 'USDT',
'fiat_currency': 'USD', 'fiat_currency': 'USD',
'sell_reason': SellType.STOP_LOSS.value, 'sell_reason': SellType.STOP_LOSS.value,
'open_date': ANY, 'open_date': ANY,
@ -2975,24 +2978,25 @@ def test_execute_trade_exit_market_order(default_conf_usdt, ticker_usdt, fee,
sell_reason=SellCheckTuple(sell_type=SellType.ROI)) sell_reason=SellCheckTuple(sell_type=SellType.ROI))
assert not trade.is_open assert not trade.is_open
assert trade.close_profit == 0.0620716 assert trade.close_profit == 0.09451372 # TODO: Check this is correct
assert rpc_mock.call_count == 3 assert rpc_mock.call_count == 3
last_msg = rpc_mock.call_args_list[-1][0][0] last_msg = rpc_mock.call_args_list[-1][0][0]
# TODO: Is this correct?
assert { assert {
'type': RPCMessageType.SELL, 'type': RPCMessageType.SELL,
'trade_id': 1, 'trade_id': 1,
'exchange': 'Binance', 'exchange': 'Binance',
'pair': 'ETH/USDT', 'pair': 'ETH/USDT',
'gain': 'profit', 'gain': 'profit',
'limit': 1.172e-05, 'limit': 2.2,
'amount': 91.07468123, 'amount': 5.0,
'order_type': 'market', 'order_type': 'market',
'open_rate': 1.098e-05, 'open_rate': 2.0,
'current_rate': 1.173e-05, 'current_rate': 2.3,
'profit_amount': 6.223e-05, 'profit_amount': 0.9475,
'profit_ratio': 0.0620716, 'profit_ratio': 0.09451372,
'stake_currency': 'BTC', 'stake_currency': 'USDT',
'fiat_currency': 'USD', 'fiat_currency': 'USD',
'sell_reason': SellType.ROI.value, 'sell_reason': SellType.ROI.value,
'open_date': ANY, 'open_date': ANY,
@ -3893,7 +3897,7 @@ def test_startup_trade_reinit(default_conf_usdt, edge_conf, mocker):
def test_sync_wallet_dry_run(mocker, default_conf_usdt, ticker_usdt, fee, limit_buy_order_usdt_open, caplog): def test_sync_wallet_dry_run(mocker, default_conf_usdt, ticker_usdt, fee, limit_buy_order_usdt_open, caplog):
default_conf_usdt['dry_run'] = True default_conf_usdt['dry_run'] = True
# Initialize to 2 times stake amount # Initialize to 2 times stake amount
default_conf_usdt['dry_run_wallet'] = 0.002 default_conf_usdt['dry_run_wallet'] = 20.0
default_conf_usdt['max_open_trades'] = 2 default_conf_usdt['max_open_trades'] = 2
default_conf_usdt['tradable_balance_ratio'] = 1.0 default_conf_usdt['tradable_balance_ratio'] = 1.0
patch_exchange(mocker) patch_exchange(mocker)
@ -3906,7 +3910,7 @@ def test_sync_wallet_dry_run(mocker, default_conf_usdt, ticker_usdt, fee, limit_
bot = get_patched_freqtradebot(mocker, default_conf_usdt) bot = get_patched_freqtradebot(mocker, default_conf_usdt)
patch_get_signal(bot) patch_get_signal(bot)
assert bot.wallets.get_free('BTC') == 0.002 assert bot.wallets.get_free('USDT') == 20.0
n = bot.enter_positions() n = bot.enter_positions()
assert n == 2 assert n == 2
@ -3916,8 +3920,8 @@ def test_sync_wallet_dry_run(mocker, default_conf_usdt, ticker_usdt, fee, limit_
bot.config['max_open_trades'] = 3 bot.config['max_open_trades'] = 3
n = bot.enter_positions() n = bot.enter_positions()
assert n == 0 assert n == 0
assert log_has_re(r"Unable to create trade for XRP/BTC: " assert log_has_re(r"Unable to create trade for XRP/USDT: "
r"Available balance \(0.0 BTC\) is lower than stake amount \(0.001 BTC\)", r"Available balance \(0.0 USDT\) is lower than stake amount \(10.0 USDT\)",
caplog) caplog)