Skip to content

Commit 13c63c0

Browse files
committed
fix: exception when backtesting in webserver mode
Running a futures backtest more than once without cache caused the process to crash due to detail data not being loaded.
1 parent aa38a36 commit 13c63c0

File tree

1 file changed

+8
-12
lines changed

1 file changed

+8
-12
lines changed

freqtrade/rpc/api_server/api_backtest.py

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -52,29 +52,25 @@ def __run_backtest_bg(btconfig: Config):
5252
lastconfig = ApiBG.bt["last_config"]
5353
strat = StrategyResolver.load_strategy(btconfig)
5454
validate_config_consistency(btconfig)
55-
56-
if (
57-
not ApiBG.bt["bt"]
58-
or lastconfig.get("timeframe") != strat.timeframe
55+
time_settings_changed = (
56+
lastconfig.get("timeframe") != strat.timeframe
5957
or lastconfig.get("timeframe_detail") != btconfig.get("timeframe_detail")
6058
or lastconfig.get("timerange") != btconfig["timerange"]
61-
):
59+
)
60+
61+
if not ApiBG.bt["bt"] or time_settings_changed:
6262
from freqtrade.optimize.backtesting import Backtesting
6363

6464
ApiBG.bt["bt"] = Backtesting(btconfig)
6565
else:
6666
ApiBG.bt["bt"].config = deep_merge_dicts(btconfig, ApiBG.bt["bt"].config)
6767
ApiBG.bt["bt"].init_backtest()
68-
# Only reload data if timeframe changed.
69-
if (
70-
not ApiBG.bt["data"]
71-
or not ApiBG.bt["timerange"]
72-
or lastconfig.get("timeframe") != strat.timeframe
73-
or lastconfig.get("timerange") != btconfig["timerange"]
74-
):
68+
# Only reload data if timerange is open or settings changed
69+
if not ApiBG.bt["data"] or not ApiBG.bt["timerange"] or time_settings_changed:
7570
ApiBG.bt["data"], ApiBG.bt["timerange"] = ApiBG.bt["bt"].load_bt_data()
7671

7772
lastconfig["timerange"] = btconfig["timerange"]
73+
lastconfig["timeframe_detail"] = btconfig.get("timeframe_detail")
7874
lastconfig["timeframe"] = strat.timeframe
7975
lastconfig["enable_protections"] = btconfig.get("enable_protections")
8076
lastconfig["dry_run_wallet"] = btconfig.get("dry_run_wallet")

0 commit comments

Comments
 (0)