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.
This commit is contained in:
@@ -52,29 +52,25 @@ def __run_backtest_bg(btconfig: Config):
|
|||||||
lastconfig = ApiBG.bt["last_config"]
|
lastconfig = ApiBG.bt["last_config"]
|
||||||
strat = StrategyResolver.load_strategy(btconfig)
|
strat = StrategyResolver.load_strategy(btconfig)
|
||||||
validate_config_consistency(btconfig)
|
validate_config_consistency(btconfig)
|
||||||
|
time_settings_changed = (
|
||||||
if (
|
lastconfig.get("timeframe") != strat.timeframe
|
||||||
not ApiBG.bt["bt"]
|
|
||||||
or lastconfig.get("timeframe") != strat.timeframe
|
|
||||||
or lastconfig.get("timeframe_detail") != btconfig.get("timeframe_detail")
|
or lastconfig.get("timeframe_detail") != btconfig.get("timeframe_detail")
|
||||||
or lastconfig.get("timerange") != btconfig["timerange"]
|
or lastconfig.get("timerange") != btconfig["timerange"]
|
||||||
):
|
)
|
||||||
|
|
||||||
|
if not ApiBG.bt["bt"] or time_settings_changed:
|
||||||
from freqtrade.optimize.backtesting import Backtesting
|
from freqtrade.optimize.backtesting import Backtesting
|
||||||
|
|
||||||
ApiBG.bt["bt"] = Backtesting(btconfig)
|
ApiBG.bt["bt"] = Backtesting(btconfig)
|
||||||
else:
|
else:
|
||||||
ApiBG.bt["bt"].config = deep_merge_dicts(btconfig, ApiBG.bt["bt"].config)
|
ApiBG.bt["bt"].config = deep_merge_dicts(btconfig, ApiBG.bt["bt"].config)
|
||||||
ApiBG.bt["bt"].init_backtest()
|
ApiBG.bt["bt"].init_backtest()
|
||||||
# Only reload data if timeframe changed.
|
# Only reload data if timerange is open or settings changed
|
||||||
if (
|
if not ApiBG.bt["data"] or not ApiBG.bt["timerange"] or time_settings_changed:
|
||||||
not ApiBG.bt["data"]
|
|
||||||
or not ApiBG.bt["timerange"]
|
|
||||||
or lastconfig.get("timeframe") != strat.timeframe
|
|
||||||
or lastconfig.get("timerange") != btconfig["timerange"]
|
|
||||||
):
|
|
||||||
ApiBG.bt["data"], ApiBG.bt["timerange"] = ApiBG.bt["bt"].load_bt_data()
|
ApiBG.bt["data"], ApiBG.bt["timerange"] = ApiBG.bt["bt"].load_bt_data()
|
||||||
|
|
||||||
lastconfig["timerange"] = btconfig["timerange"]
|
lastconfig["timerange"] = btconfig["timerange"]
|
||||||
|
lastconfig["timeframe_detail"] = btconfig.get("timeframe_detail")
|
||||||
lastconfig["timeframe"] = strat.timeframe
|
lastconfig["timeframe"] = strat.timeframe
|
||||||
lastconfig["enable_protections"] = btconfig.get("enable_protections")
|
lastconfig["enable_protections"] = btconfig.get("enable_protections")
|
||||||
lastconfig["dry_run_wallet"] = btconfig.get("dry_run_wallet")
|
lastconfig["dry_run_wallet"] = btconfig.get("dry_run_wallet")
|
||||||
|
|||||||
Reference in New Issue
Block a user