From 09ef2c9deaed9c98ed49889c980d3b58b46d9030 Mon Sep 17 00:00:00 2001 From: Stefano Date: Thu, 14 Aug 2025 12:45:34 +0900 Subject: [PATCH 1/4] move strategy load after candle type has been defined --- freqtrade/optimize/analysis/recursive.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/freqtrade/optimize/analysis/recursive.py b/freqtrade/optimize/analysis/recursive.py index 3aac9c48a..2ad27f5f8 100644 --- a/freqtrade/optimize/analysis/recursive.py +++ b/freqtrade/optimize/analysis/recursive.py @@ -33,13 +33,6 @@ class RecursiveAnalysis(BaseAnalysis): super().__init__(config, strategy_obj) - strat = StrategyResolver.load_strategy(config) - self._strat_scc = strat.startup_candle_count - - if self._strat_scc not in self._startup_candle: - self._startup_candle.append(self._strat_scc) - self._startup_candle.sort() - self.partial_varHolder_array: list[VarHolder] = [] self.partial_varHolder_lookahead_array: list[VarHolder] = [] @@ -149,6 +142,13 @@ class RecursiveAnalysis(BaseAnalysis): self.local_config["candle_type_def"] = prepare_data_config["candle_type_def"] backtesting._set_strategy(backtesting.strategylist[0]) + strat = backtesting.strategy + self._strat_scc = strat.startup_candle_count + + if self._strat_scc not in self._startup_candle: + self._startup_candle.append(self._strat_scc) + self._startup_candle.sort() + varholder.data, varholder.timerange = backtesting.load_bt_data() varholder.timeframe = backtesting.timeframe From a37edf8c6228deb5c3fa6237f8e009c43734dd9b Mon Sep 17 00:00:00 2001 From: Stefano Date: Thu, 14 Aug 2025 12:51:27 +0900 Subject: [PATCH 2/4] remove unused import --- freqtrade/optimize/analysis/recursive.py | 1 - 1 file changed, 1 deletion(-) diff --git a/freqtrade/optimize/analysis/recursive.py b/freqtrade/optimize/analysis/recursive.py index 2ad27f5f8..df10fd3c7 100644 --- a/freqtrade/optimize/analysis/recursive.py +++ b/freqtrade/optimize/analysis/recursive.py @@ -15,7 +15,6 @@ from freqtrade.loggers.set_log_levels import ( ) from freqtrade.optimize.backtesting import Backtesting from freqtrade.optimize.base_analysis import BaseAnalysis, VarHolder -from freqtrade.resolvers import StrategyResolver logger = logging.getLogger(__name__) From 6edcda1e424e3e460da57943d650d266a99086f4 Mon Sep 17 00:00:00 2001 From: Stefano Date: Thu, 14 Aug 2025 16:06:15 +0900 Subject: [PATCH 3/4] fallback if strat don't specify startup candle --- freqtrade/optimize/analysis/recursive_helpers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/analysis/recursive_helpers.py b/freqtrade/optimize/analysis/recursive_helpers.py index 1d2ccdd0b..5a4b42260 100644 --- a/freqtrade/optimize/analysis/recursive_helpers.py +++ b/freqtrade/optimize/analysis/recursive_helpers.py @@ -17,7 +17,7 @@ class RecursiveAnalysisSubFunctions: @staticmethod def text_table_recursive_analysis_instances(recursive_instances: list[RecursiveAnalysis]): startups = recursive_instances[0]._startup_candle - strat_scc = recursive_instances[0]._strat_scc + strat_scc = recursive_instances[0]._strat_scc or 0 headers = ["Indicators"] for candle in startups: if candle == strat_scc: From df19c77bcf1de29f7497dc1897c42a87e4d58fe1 Mon Sep 17 00:00:00 2001 From: Stefano Date: Thu, 14 Aug 2025 16:09:43 +0900 Subject: [PATCH 4/4] better fallback --- freqtrade/optimize/analysis/recursive_helpers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/analysis/recursive_helpers.py b/freqtrade/optimize/analysis/recursive_helpers.py index 5a4b42260..4a1deb5bf 100644 --- a/freqtrade/optimize/analysis/recursive_helpers.py +++ b/freqtrade/optimize/analysis/recursive_helpers.py @@ -17,7 +17,7 @@ class RecursiveAnalysisSubFunctions: @staticmethod def text_table_recursive_analysis_instances(recursive_instances: list[RecursiveAnalysis]): startups = recursive_instances[0]._startup_candle - strat_scc = recursive_instances[0]._strat_scc or 0 + strat_scc = getattr(recursive_instances[0], "_strat_scc", 0) or 0 headers = ["Indicators"] for candle in startups: if candle == strat_scc: