From 9382c4bd759d3a1c73831f3faa80e03e6b986c07 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 21 Jul 2022 20:33:30 +0200 Subject: [PATCH] Fix backtesting bug where trade.amount didn't equal the filled order amount --- freqtrade/persistence/trade_model.py | 5 ++--- tests/test_freqtradebot.py | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/freqtrade/persistence/trade_model.py b/freqtrade/persistence/trade_model.py index a04aa654b..9d63e8c8e 100644 --- a/freqtrade/persistence/trade_model.py +++ b/freqtrade/persistence/trade_model.py @@ -178,10 +178,9 @@ class Order(_DECL_BASE): self.remaining = 0 self.status = 'closed' self.ft_is_open = False - if (self.ft_order_side == trade.entry_side - and len(trade.select_filled_orders(trade.entry_side)) == 1): + if (self.ft_order_side == trade.entry_side): trade.open_rate = self.price - trade.recalc_open_trade_value() + trade.recalc_trade_from_orders() trade.adjust_stop_loss(trade.open_rate, trade.stop_loss_pct, refresh=True) @staticmethod diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index c1f3feb66..c47f71a31 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -5760,7 +5760,7 @@ def test_position_adjust2(mocker, default_conf_usdt, fee) -> None: (('sell', 100, 11), (100.0, 5.0, 500.0, 596.0, 596.0, 1.189027)), (('buy', 150, 15), (250.0, 11.0, 2750.0, 596.0, 596.0, 1.189027)), (('sell', 100, 19), (150.0, 11.0, 1650.0, 1388.5, 792.5, 0.7186579)), - (('sell', 150, 23), (150.0, 11.0, 1650.0, 3175.75, 3175.75, 0.977153)), # final profit (sum) + (('sell', 150, 23), (150.0, 11.0, 1650.0, 3175.75, 3175.75, 0.977153)), # final profit ) ]) def test_position_adjust3(mocker, default_conf_usdt, fee, data) -> None: