跳转到内容

策略生命周期流程

AQE 持有一个 StrategyState,并按确定的顺序运行策略:

  1. 调用 on_start(ctx),执行一次性的启动逻辑。
  2. 调用 universe(ctx),执行静态或内联品种选择。
  3. 运行已注册的标的池模型,执行模块化品种选择。
  4. 为合并后的最终标的池加载资产元数据。
  5. 为每个可交易资产调用一次 init(ctx, asset)。
  6. 每根 K 线到来时,更新历史数据、计算指标,并运行 Alpha 模型、策略回调和信号处理器。
  7. 调用 on_teardown(ctx),执行停止时的清理逻辑。

生命周期逻辑块在生成的或内联的策略生命周期方法前后运行。标的池模型则为最终标的池提供品种代码。

运行时回测流程遵循 StrategyState::run_backtest 的实现:

aq-engine/src/core/strategy/mod.rs
// 1. strategy.on_start(ctx)
// 2. load_universe() -> strategy.universe() -> broker.get_ticker_info()
// 3. alpha.start() per alpha
// 4. load_init() -> OnInit lifecycle logic -> strategy.init per asset
// 5. alpha.init(asset) per alpha per asset
// 6. broker.load_backtest_data()
// 7. loop: broker step -> on_bar() -> optional insight generation -> run_insight_pipeline()
// 8. strategy.on_teardown(ctx)
// 9. return BacktestResults

AQS 生成的项目遵循相同的运行时顺序。区别在于,AQS 会先从节点图生成部分策略方法体,然后由 AQE 执行策略。