From eb8eebe49225c10d91566b09e4c987124493b9be Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 4 Oct 2022 10:08:58 +0000 Subject: [PATCH] Reset open_order_id after trade cancel Part of #7526 --- freqtrade/freqtradebot.py | 6 ++++-- tests/test_freqtradebot.py | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 4ec9c34ce..15398ca04 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1389,11 +1389,13 @@ class FreqtradeBot(LoggingMixin): reason += f", {constants.CANCEL_REASON['FULLY_CANCELLED']}" else: self.update_trade_state(trade, trade.open_order_id, corder) + trade.open_order_id = None logger.info(f'{side} Order timeout for {trade}.') else: # update_trade_state (and subsequently recalc_trade_from_orders) will handle updates # to the trade object self.update_trade_state(trade, trade.open_order_id, corder) + trade.open_order_id = None logger.info(f'Partial {trade.entry_side} order timeout for {trade}.') reason += f", {constants.CANCEL_REASON['PARTIALLY_FILLED']}" @@ -1450,6 +1452,7 @@ class FreqtradeBot(LoggingMixin): # Order might be filled above in odd timing issues. if co.get('status') in ('canceled', 'cancelled'): trade.exit_reason = None + trade.open_order_id = None else: trade.exit_reason = exit_reason_prev @@ -1459,8 +1462,7 @@ class FreqtradeBot(LoggingMixin): reason = constants.CANCEL_REASON['CANCELLED_ON_EXCHANGE'] logger.info(f'{trade.exit_side.capitalize()} order {reason} for {trade}.') self.update_trade_state(trade, trade.open_order_id, order) - - self.wallets.update() + trade.open_order_id = None self._notify_exit_cancel( trade, diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index cdea772dc..c127e3850 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -3178,6 +3178,7 @@ def test_handle_cancel_exit_limit(mocker, default_conf_usdt, fee) -> None: assert send_msg_mock.call_count == 1 assert trade.close_rate is None assert trade.exit_reason is None + assert trade.open_order_id is None send_msg_mock.reset_mock()