Skip to content

11.2 事件驱动 vs 定时任务

课前导读

学习目标

学完能解决什么困惑:为什么有的量化程序像门铃一样“有事才处理”,有的像闹钟一样“到点就检查”。 难度:advanced 用时:约 40 分钟 适合对象:已经知道回测与实盘有差异,想理解实盘程序运行节奏的 A 股新手。

上一节我们把实盘系统看成机场塔台和工厂流水线。 这一节继续往前走:系统到底什么时候运行? 是每秒盯着市场,还是每天收盘后检查一次? 是公告一出现就处理,还是固定时间统一处理? 这里会遇到两个重要概念:事件驱动和定时任务。 别被名字吓到。 事件驱动像“门铃响了就去开门”。 定时任务像“闹钟到点就检查”。 两者没有绝对高低,只有适不适合。 对 A 股新手来说,更重要的问题不是“哪个更高级”,而是“哪个更安全、更符合我的策略频率”。 本节依然强调底线:在没有充分模拟盘、人工确认和小资金观察之前,不要把任何运行模式变成无人看管的真实自动交易。

知识正文

1. 类比:门铃响就处理

事件驱动就像家里的门铃。 平时你不需要每隔 1 分钟跑到门口看一次。 只要门铃响了,你就知道有人来了。 在程序世界里,“门铃”可以是价格变化、成交回报、公告更新、风控触发或数据异常。 当事件发生,系统才开始处理。

听起来很聪明。 但门铃也有风险。 如果门铃坏了,客人来了你不知道。 如果门铃被小孩乱按,你会被频繁打扰。 如果门铃响了但你没看猫眼,就可能把不该进来的人放进来。 对应到交易系统,事件驱动需要可靠的数据来源、清晰的事件定义和严格的过滤条件。 否则系统会被噪声牵着走。

2. 类比:闹钟到点检查

定时任务像闹钟。 比如你每天 15:10 看一次收盘数据。 每周五复盘一次组合暴露。 每月第一个交易日更新一次股票池。 闹钟不会因为门外有人经过就响。 它只按计划提醒你。

这种方式看起来不够“实时”,但非常适合许多 A 股新手策略。 因为你刚学过的很多规则,本来就不需要秒级反应。 日线策略只需要收盘后确认。 组合再平衡通常按周或按月检查。 公告类事件也需要先确认公告来源、披露时间和影响范围,而不是看到标题就冲动行动。 定时任务最大的优点是节奏稳定、容易复盘、降低情绪干扰。

3. 术语:什么是事件驱动

事件驱动指的是:系统在特定事件出现时被触发并执行预设处理。 这里的事件不是“重大新闻”这么狭窄。 它可以是任何被系统定义并识别出来的变化。 例如:

  • 新的分钟行情到达。
  • 某只股票进入涨停状态。
  • 组合回撤触及预设边界。
  • 上市公司发布正式公告。
  • 模拟盘委托状态发生变化。
  • 数据源超过预期时间仍未更新。

事件驱动的关键词是“触发”。 但触发不等于交易。 对学习者来说,触发后最安全的动作常常是记录、提示、进入人工确认,而不是直接下单。

4. 术语:什么是定时任务

定时任务指的是:系统按固定时间或固定周期执行检查。 它不依赖某个外部事件突然发生。 常见例子包括:

  • 每个交易日收盘后更新日线数据。
  • 每天 15:30 生成策略观察清单。
  • 每周末检查组合行业暴露。
  • 每月更新一次股票池和风险预算。
  • 每个交易日前检查是否有停牌、公告或风险提示。

定时任务的关键词是“节奏”。 它适合可等待、可确认、可复盘的流程。 对于 A 股新手,稳定节奏比追求极速更重要。 因为多数错误不是慢一秒造成的,而是没有检查就行动造成的。

5. 两种模式的安全比较

维度事件驱动定时任务新手建议
类比门铃响就处理闹钟到点检查先理解闹钟,再理解门铃
适合场景状态变化、异常提醒、委托回报日线更新、组合复盘、股票池维护日频策略优先定时任务
最大优点反应快,能及时处理变化节奏稳,容易记录和复盘稳定比快速更重要
最大风险噪声多、误触发、依赖数据可靠性可能错过盘中变化明确哪些变化不需要立刻处理
安全动作提醒、暂停、进入确认生成清单、复盘、更新数据都不应直接跳到真实自动下单

请注意,事件驱动并不一定高级。 如果你交易的是日线级别策略,却每秒处理一次价格跳动,很可能只是在制造焦虑。 定时任务也不一定落后。 如果你的规则要求收盘确认,那么盘中再快也只是未完成信息。

6. A 股日频策略:更适合定时任务

很多新手最适合从日频策略开始。 日频策略用每天收盘后的数据做判断。 例如,收盘价是否站上均线,成交量是否放大,组合权重是否偏离目标。 这些信息在收盘后更完整。 你不需要盘中盯着每一次跳动。

一个更稳妥的流程是: 交易日收盘后获取数据。 检查数据完整性。 生成候选观察名单。 进行风控过滤。 输出人工确认清单。 第二天只做模拟盘或极小资金观察。 收盘后记录差异。 这就是定时任务的优势:它让你慢下来,把每一步变成可复盘的动作。

7. A 股分钟级策略:复杂度明显上升

分钟级策略会使用更细的时间单位。 例如 5 分钟、15 分钟或 30 分钟数据。 这类策略更容易接近事件驱动,因为新数据会不断到来。 但它的风险也明显上升。 数据延迟会更敏感。 滑点和成交质量更重要。 盘口变化会影响执行。 情绪压力也更大。

对新手来说,分钟级并不等于更容易赚钱。 它只是让错误发生得更快。 如果一个人还没有做好日频日志、风控和复盘,直接进入分钟级观察,很容易把系统训练成“快速犯错机器”。 所以本课程建议:先把日频定时流程做稳定,再讨论分钟级事件处理。

8. 公告事件:必须区分“看到”和“可用”

A 股里,公告非常重要。 但公告事件最容易被误用。 你可能在行情软件、新闻标题或社交平台上看到某个消息。 问题是:它是不是上市公司正式公告? 披露时间是什么? 盘中是否已经可见? 是否需要等交易所或公司补充说明? 对股价影响是一次性情绪,还是基本面长期变化?

事件驱动处理公告时,第一动作不应该是交易。 第一动作应该是确认来源与时间。 第二动作是判断是否进入观察清单。 第三动作是检查风险边界。 第四动作才可能是人工确认后的模拟盘观察。 公告不是冲动按钮。 公告是需要核验的输入。

9. 运行模式选择图

下面的图帮助你选择运行节奏。 它不是交易建议,而是流程判断。

mermaid
graph TD
  A["策略需要什么数据"] --> B["只用收盘日线"]
  A --> C["需要盘中分钟数据"]
  A --> D["依赖公告或状态变化"]
  B --> E["采用收盘后定时检查"]
  C --> F["先做模拟盘分钟观察"]
  D --> G["事件提醒加人工核验"]
  E --> H["生成观察清单"]
  F --> H
  G --> H
  H --> I["风控过滤"]
  I --> J["人工确认"]
  J --> K["模拟盘记录"]

这张图的重点是:无论从哪里开始,最后都要经过风控过滤、人工确认和模拟盘记录。 运行模式不能绕过安全门。

10. 事件驱动的常见误区

第一个误区是把所有价格变化都当成事件。 如果股价每跳动一次都触发判断,系统会被噪声淹没。 真正有意义的事件必须提前定义。 例如“收盘确认突破”比“盘中瞬间突破”更适合新手。

第二个误区是事件来了就马上行动。 事件只是提醒你看一眼。 它不是替你承担责任的命令。 尤其在真实资金面前,事件提醒后更应该进入人工确认。

第三个误区是忽略事件顺序。 同一个公告,盘后看到和盘中看到,含义不同。 同一个价格信号,收盘前出现和收盘后确认,可靠程度不同。 事件驱动必须保留时间戳,否则复盘会失真。

11. 定时任务的常见误区

第一个误区是把闹钟设得太密。 如果日线策略每 10 秒检查一次,本质上是在给自己制造盘中诱惑。 检查频率应该服务于策略频率。

第二个误区是只定时计算,不定时复盘。 很多人每天生成一堆信号,却不检查信号有没有执行、有没有偏差、有没有成本压力。 定时任务应该包括数据更新、信号生成、风控检查、日志归档和复盘提醒。

第三个误区是任务失败后没有处理。 如果收盘数据没有按时更新,系统应该记录失败并停止本轮信号。 不能用昨天的数据假装今天已完成。 这在实盘观察中非常危险。

12. A 股三个场景怎么选

场景更适合的方式原因安全提醒
日线均线策略定时任务收盘后数据完整,节奏清晰盘中不提前确认收盘信号
分钟级止损提醒事件驱动加人工确认状态变化需要及时提醒提醒不等于自动卖出
公告观察事件驱动加定时复核公告出现是事件,影响判断需复核只认正式披露和可见时间
组合再平衡定时任务通常按周或月检查先看偏离和成本,不频繁调整
数据异常事件驱动异常需要立刻停止或提示异常时优先暂停,而非继续交易

你会发现,真实系统常常不是二选一。 它可以是混合模式。 日线数据用定时任务。 数据异常用事件驱动提醒。 公告用事件提醒后进入人工核验。 组合复盘按周定时完成。 混合不复杂,复杂的是没有边界。

13. 伪代码:只描述运行节奏,不描述真实下单

下面是学习用伪代码。 它帮助你理解两种节奏如何配合。 不包含真实券商接口,也不能直接用于实盘。

text
每天收盘后:
    更新日线数据
    检查数据完整性
    生成候选信号
    进行风控过滤
    输出人工确认清单

当发现数据异常:
    记录异常时间和范围
    暂停本轮信号
    提醒人工检查

当出现正式公告提醒:
    记录公告来源和披露时间
    标记为待核验事件
    不直接交易

每周末:
    复盘信号、模拟盘成交、风控拒绝和日志缺口

这段伪代码里,最重要的动作仍然是暂停、记录和确认。 速度不是安全的替代品。

14. 专业视角:节奏决定风险形态

站在投资者角度,运行节奏会改变你的心理压力。 定时任务让你少看盘,减少冲动。 事件驱动会让你更频繁接收提醒,必须防止被提醒牵着走。

站在量化开发角度,运行节奏会改变系统复杂度。 定时任务更容易测试、复盘和定位问题。 事件驱动更依赖状态管理、消息顺序和异常处理。

站在老师角度,建议新手按三步走。 第一步,只做日频定时观察。 第二步,增加异常事件提醒,但不自动交易。 第三步,在模拟盘中观察事件提醒是否真的改善决策。 如果不能改善,就不要增加复杂度。

交互实验室

练习:为你的策略选择运行节奏

请选择一条你已经理解的策略,不要选择刚听来的热门方法。 按下面清单判断它适合门铃模式、闹钟模式,还是混合模式。

问题你的回答倾向
信号必须等收盘才确认吗是的话偏定时任务日频更稳
盘中价格跳动是否真的改变规则否的话不要频繁事件触发降低噪声
是否依赖正式公告是的话先事件提醒,再人工核验不抢传闻
是否需要处理数据异常是的话可用事件提醒异常优先暂停
是否已经能稳定写日志否的话先不要上复杂事件驱动先练基本功

输出一张运行节奏卡

请把答案写成下面的格式。

text
策略名称:
主要数据频率:日线 / 分钟 / 公告 / 组合周频
运行方式:定时任务 / 事件驱动 / 混合
固定检查时间:
允许触发的事件:
触发后默认动作:记录 / 提醒 / 暂停 / 人工确认
禁止动作:真实自动下单、绕过风控、无日志执行
复盘周期:

低风险试运行

连续 10 个交易日只做运行节奏观察。 每天记录系统是否按时完成。 记录有没有误触发。 记录有没有漏掉正式公告。 记录有没有因为提醒太多而影响情绪。 如果 10 天后你发现大部分提醒都没有价值,就减少事件。 如果你发现定时任务已经足够完成决策,就不要为了“高级”而增加复杂度。

核心复盘

知识清单

  • [ ] 我能用“门铃响就处理”解释事件驱动。
  • [ ] 我能用“闹钟到点检查”解释定时任务。
  • [ ] 我知道日频策略通常更适合收盘后定时检查。
  • [ ] 我知道分钟级和公告事件更复杂,必须先模拟盘观察。
  • [ ] 我理解事件提醒不等于交易命令。
  • [ ] 我能为一条策略写出运行节奏卡。

金句总结

运行模式不是越快越好,而是越符合策略节奏、越能被复盘越好。

本文档仅供学习交流用途,不构成任何投资建议。股市有风险,入市需谨慎。