diff --git a/sanguo_portfolio/runner_backtest.py b/sanguo_portfolio/runner_backtest.py index 419f6ba..54b8af9 100644 --- a/sanguo_portfolio/runner_backtest.py +++ b/sanguo_portfolio/runner_backtest.py @@ -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)