diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 54a4cbe9a..c3a0d539d 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -33,6 +33,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'freqtrade.exchange.Exchange', fetch_ticker=ticker, get_fee=fee, + _is_dry_limit_order_filled=MagicMock(side_effect=[False, True]), ) freqtradebot = get_patched_freqtradebot(mocker, default_conf) @@ -44,6 +45,91 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: rpc._rpc_trade_status() freqtradebot.enter_positions() + + # Open order... + results = rpc._rpc_trade_status() + assert results[0] == { + 'trade_id': 1, + 'pair': 'ETH/BTC', + 'base_currency': 'ETH', + 'quote_currency': 'BTC', + 'open_date': ANY, + 'open_timestamp': ANY, + 'is_open': ANY, + 'fee_open': ANY, + 'fee_open_cost': ANY, + 'fee_open_currency': ANY, + 'fee_close': fee.return_value, + 'fee_close_cost': ANY, + 'fee_close_currency': ANY, + 'open_rate_requested': ANY, + 'open_trade_value': 0.0010025, + 'close_rate_requested': ANY, + 'sell_reason': ANY, + 'exit_reason': ANY, + 'exit_order_status': ANY, + 'min_rate': ANY, + 'max_rate': ANY, + 'strategy': ANY, + 'buy_tag': ANY, + 'enter_tag': ANY, + 'timeframe': 5, + 'open_order_id': ANY, + 'close_date': None, + 'close_timestamp': None, + 'open_rate': 1.098e-05, + 'close_rate': None, + 'current_rate': 1.099e-05, + 'amount': 91.07468124, + 'amount_requested': 91.07468124, + 'stake_amount': 0.001, + 'trade_duration': None, + 'trade_duration_s': None, + 'close_profit': None, + 'close_profit_pct': None, + 'close_profit_abs': None, + 'current_profit': 0.0, + 'current_profit_pct': 0.0, + 'current_profit_abs': 0.0, + 'profit_ratio': 0.0, + 'profit_pct': 0.0, + 'profit_abs': 0.0, + 'profit_fiat': ANY, + 'stop_loss_abs': 0.0, + 'stop_loss_pct': None, + 'stop_loss_ratio': None, + 'stoploss_order_id': None, + 'stoploss_last_update': ANY, + 'stoploss_last_update_timestamp': ANY, + 'initial_stop_loss_abs': 0.0, + 'initial_stop_loss_pct': None, + 'initial_stop_loss_ratio': None, + 'stoploss_current_dist': -1.099e-05, + 'stoploss_current_dist_ratio': -1.0, + 'stoploss_current_dist_pct': pytest.approx(-100.0), + 'stoploss_entry_dist': -0.0010025, + 'stoploss_entry_dist_ratio': -1.0, + 'open_order': '(limit buy rem=91.07468123)', + 'realized_profit': 0.0, + 'exchange': 'binance', + 'leverage': 1.0, + 'interest_rate': 0.0, + 'liquidation_price': None, + 'is_short': False, + 'funding_fees': 0.0, + 'trading_mode': TradingMode.SPOT, + 'orders': [{ + 'amount': 91.07468123, 'average': 1.098e-05, 'safe_price': 1.098e-05, + 'cost': 0.0009999999999054, 'filled': 0.0, 'ft_order_side': 'buy', + 'order_date': ANY, 'order_timestamp': ANY, 'order_filled_date': ANY, + 'order_filled_timestamp': ANY, 'order_type': 'limit', 'price': 1.098e-05, + 'is_open': True, 'pair': 'ETH/BTC', 'order_id': ANY, + 'remaining': 91.07468123, 'status': ANY, 'ft_is_entry': True, + }], + } + + # Fill open order ... + freqtradebot.manage_open_orders() trades = Trade.get_open_trades() freqtradebot.exit_positions(trades)