跳转到内容

策略生命周期

策略生命周期是 AQE 的核心:

  • on_start
  • universe
  • init
  • on_bar
  • generate_insights
  • insight_pipeline
  • on_teardown
aq-engine/src/core/strategy/traits.rs
pub trait Strategy {
fn name(&self) -> &str {
"Base Strategy"
}
fn on_start(&mut self, ctx: &mut dyn StrategyContext);
fn init(&mut self, ctx: &mut dyn StrategyContext, asset: &Asset);
fn universe(&self, ctx: &mut dyn StrategyContext) -> HashSet<String>;
fn on_bar(&mut self, ctx: &mut dyn StrategyContext, symbol: &str, bar: &BarData);
fn generate_insights(&mut self, ctx: &mut dyn StrategyContext, symbol: &str);
fn insight_pipeline(&mut self, ctx: &mut dyn StrategyContext, insight: &Insight);
fn on_teardown(&mut self, ctx: &mut dyn StrategyContext);
}

使用 on_start 注册共享的运行时配置:

  • 指标
  • Alpha 模型
  • 处理器
  • 风险设置
  • 预热 K 线

universe() 返回策略交易的品种代码。AQE 使用这些代码,从选定的数据源和经纪商组合中加载 Asset 元数据。

标的池加载完成后,init() 会对每个资产执行一次。可在此初始化各资产的变量、各品种的指标状态,或完成依赖资产信息的配置。

每当某个品种收到一根新 K 线时,都会调用 on_bar()。在此处根据最新市场数据更新策略级状态。

在 on_bar() 之后,AQE 会调用 generate_insights()。在此处创建新的交易信号并将其加入运行时。

K 线处理完成后,AQE 会运行信号处理流水线。各处理器根据交易信号的当前状态,执行仓位计算、验证、提交、拒绝、取消或平仓等操作。

使用 on_teardown() 执行最终清理和汇总。

有关可复用的启动、初始化、收尾和标的池选择模块,请参阅生命周期组件。