fix(portfolio): 基准装载时序修正:load_strategy()会reset_settings()清掉预设,须在initialize闭包内set_benchmark(聚宽同款模式);构造参数与预run设置双失效 [vps]
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user