From 2697ac35817b47f6c8e92cf5ef847375c9c205d6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Jan 2025 06:23:15 +0100 Subject: [PATCH] chore: stop detail processing once a trade closed --- freqtrade/optimize/backtesting.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 81784c9a3..a1ef29fa1 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -1486,8 +1486,9 @@ class Backtesting: current_detail_time: datetime = row[DATE_IDX].to_pydatetime() trade_dir: LongShort | None = self.check_for_trade_entry(row) + pair_has_open_trades = len(LocalTrade.bt_trades_open_pp[pair]) > 0 if ( - (trade_dir is not None or len(LocalTrade.bt_trades_open_pp[pair]) > 0) + (trade_dir is not None or pair_has_open_trades) and self.timeframe_detail and pair in self.detail_data ): @@ -1525,6 +1526,9 @@ class Backtesting: ) current_time_det += self.timeframe_detail_td is_first = False + if pair_has_open_trades and not len(LocalTrade.bt_trades_open_pp[pair]) > 0: + # Auto-lock pair for the rest of the candle if the trade has been closed. + break else: self.dataprovider._set_dataframe_max_date(current_time) self.backtest_loop(row, pair, current_time, trade_dir, not is_last_row)