fix(portfolio): 基准装载时序修正:load_strategy()会reset_settings()清掉预设,须在initialize闭包内set_benchmark(聚宽同款模式);构造参数与预run设置双失效 [vps]
CI/CD / test (push) Successful in 9s
CI/CD / nas-deploy (push) Successful in 27s
CI/CD / nas-verify (push) Successful in 11s

This commit is contained in:
2026-08-13 23:09:58 +08:00
parent c8b7be69c9
commit 6728872d72
+6 -6
View File
@@ -229,12 +229,6 @@ def run_backtest(args: argparse.Namespace) -> Dict[str, Any]:
provider = build_provider(args.provider, args.provider_config)
set_data_provider(provider)
# bullet_trade 0.9.x: BacktestEngine(benchmark=) 构造参数不生效(构造器收而不用),
# 引擎只认 set_benchmark() 设的全局 settings → 必须显式设,否则 benchmark_data
# 恒 None(VPS 冒烟实测:基准曲线空)。每次 run 都设,幂等。
if getattr(args, "benchmark", ""):
bt_set_benchmark(args.benchmark)
# 占位策略:initialize 里把 self(strategy)挂到聚宽风格定时器
holder: Dict[str, Any] = {}
@@ -242,6 +236,12 @@ def run_backtest(args: argparse.Namespace) -> Dict[str, Any]:
strategy = _build_strategy(args, provider)
holder["strategy"] = strategy
# benchmark 必须在 initialize 内设:engine.load_strategy() 会 reset_settings()
# 清掉一切预设(且 BacktestEngine(benchmark=) 构造参数 0.9.x 收而不用),
# initialize 之后引擎才读 settings.benchmark 装载基准数据(否则恒 None)
if getattr(args, "benchmark", ""):
bt_set_benchmark(args.benchmark)
# 注册定时任务(按策略类型分发)
_register_schedule(strategy)