diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 3e9f8c75c..f2cd4c5dd 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1118,8 +1118,7 @@ class FreqtradeBot: if isclose(filled_amount, 0.0, abs_tol=constants.MATH_CLOSE_PREC): logger.info('Buy order fully cancelled. Removing %s from database.', trade) # if trade is not partially completed, just delete the trade - Trade.session.delete(trade) - Trade.session.flush() + trade.delete() was_trade_fully_canceled = True else: # if trade is partially complete, edit the stake details for the trade diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 891822064..9759ac830 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -446,6 +446,14 @@ class Trade(_DECL_BASE): def update_order(self, order: Dict) -> None: Order.update_orders(self.orders, order) + def delete(self) -> None: + + for order in self.orders: + Order.session.delete(order) + + Trade.session.delete(self) + Trade.session.flush() + def _calc_open_trade_price(self) -> float: """ Calculate the open_rate including open_fee. diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 9b5d79267..6ace0bb88 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -567,8 +567,7 @@ class RPC: except (ExchangeError): pass - Trade.session.delete(trade) - Trade.session.flush() + trade.delete() self._freqtrade.wallets.update() return { 'result': 'success', diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 42025b3a3..8c13bc00f 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -313,7 +313,6 @@ def test_rpc_delete_trade(mocker, default_conf, fee, markets, caplog): with pytest.raises(RPCException, match='invalid argument'): rpc._rpc_delete('200') - create_mock_trades(fee) trades = Trade.query.all() trades[1].stoploss_order_id = '1234' trades[2].stoploss_order_id = '1234' diff --git a/tests/test_persistence.py b/tests/test_persistence.py index b6623d461..707247e99 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -1074,6 +1074,3 @@ def test_update_order_from_ccxt(): assert o.remaining == 0.0 assert not o.ft_is_open assert o.order_filled_date is not None - - -