策略生命周期
策略生命周期是 AQE 的核心:
on_startuniverseiniton_bargenerate_insightsinsight_pipelineon_teardown
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);}各钩子的作用
Section titled “各钩子的作用”使用 on_start 注册共享的运行时配置:
- 指标
- Alpha 模型
- 处理器
- 风险设置
- 预热 K 线
universe() 返回策略交易的品种代码。AQE 使用这些代码,从选定的数据源和经纪商组合中加载 Asset 元数据。
标的池加载完成后,init() 会对每个资产执行一次。可在此初始化各资产的变量、各品种的指标状态,或完成依赖资产信息的配置。
每当某个品种收到一根新 K 线时,都会调用 on_bar()。在此处根据最新市场数据更新策略级状态。
在 on_bar() 之后,AQE 会调用 generate_insights()。在此处创建新的交易信号并将其加入运行时。
K 线处理完成后,AQE 会运行信号处理流水线。各处理器根据交易信号的当前状态,执行仓位计算、验证、提交、拒绝、取消或平仓等操作。
使用 on_teardown() 执行最终清理和汇总。
有关可复用的启动、初始化、收尾和标的池选择模块,请参阅生命周期组件。
