事件驱动执行:Tick 管线与 1 分钟 K 线闭合

很多量化系统从「定时轮询数据库里的 K 线」演进到「行情事件驱动」,动机很简单:减少无效扫描、降低延迟、让评估时机与数据到达语义一致。

结论先行:EasyQuant 的默认执行路径以 行情侧驱动的 1 分钟 K 线闭合 为触发点,在事件管线中调用策略评估与纸面提交相关逻辑;历史「纯定时轮询调度器」路线已让位于该模型。
理解这一点,才能解释「为什么信号总在整分附近」「为什么在 bar 不完整时会跳过评估」。


一、为什么用「1m 闭合」而不是任意轮询?

  • 语义清晰:一根 1m bar 闭合,指标在该周期上的取值才稳定(避免用到「未闭合最后一根」的偷看未来争议)。
  • 与数据源对齐:Tick 聚合出 1m,与 Many chart / 回测常用周期一致,便于 仿真 ↔ 回测 对齐。
  • 负载可控:按事件触发,而不是固定频率扫全库。

交易时段、节假日等仍会通过 市场会话 / 日历 过滤,避免噪声 bar 干扰(详见 从 1m 到策略周期)。


二、工程结构:Tick 到聚合再到策略执行

高层数据流可概括为:

  1. 行情接入:WebSocket Tick 或回填 K 线进入入库与聚合链路。
  2. Bar 形成:在 1m 边界产生「可评估」的 bar 点。
  3. 策略执行器:在事件线程或管线中拉取需要使用的市场状态,调用 DSL / ta4j 信号引擎 做评估。
  4. 风控与纸面:在信号通过后走预检、通道与账本(见 paper 执行链路)。

三、对产品与运营的可见影响

  • 排障:若「长时间无评估」,先查 1m 数据是否持续写入交易时段是否过滤殆尽策略是否启用激活版本是否存在
  • 可观测:结合 Micrometer / Prometheus(可观测性)看 ingest 与阻塞原因统计。
  • 演示:无外部行情时依赖 Seed / 模拟数据,保证管线仍能被触发(无行情订阅也能跑通)。

结语

事件驱动不是「架构炫技」,而是 让执行时机与市场数据语义对齐,从根上减少「为什么和回测不一致」的扯皮。
风险与对账如何挂到同一套观测叙事上,见:风险与报告工作台


延伸阅读