Skip to content

11.7 监控与告警

课前导读

本章目标

学完能解决什么困惑:你将理解为什么实盘系统不能只看收益曲线,还要像家里安装火警报警器一样,提前发现断网、延迟、数据异常、订单失败和回撤超限。

适合谁学习:已经理解组合、回测和实盘架构,准备把策略放进真实 A 股交易环境的新手投资者。

难度:advanced

用时:约 40 分钟


知识正文

先想一个生活场景。

你住在一栋楼里,平时不会盯着厨房看火苗。

但你会希望厨房有火警报警器。

它不是为了让你每天紧张。

它是为了在烟雾刚出现时,把问题从“小麻烦”拦在“大事故”之前。

实盘量化系统也是一样。

策略就像厨房里的炉灶。

数据、网络、订单、仓位、资金,就像燃气、电线、锅具和排风。

只要其中一个环节失控,系统就可能从“正常交易”变成“带病运行”。

监控与告警,就是实盘系统里的火警报警器。

它不负责预测明天涨跌。

它负责回答一个更底层的问题:

系统现在还能不能安全地执行原来的计划?

1. 从“盯盘”到“盯系统”

很多新手把实盘监控理解成“看行情”。

例如盯着上证指数、个股涨跌幅、持仓盈亏。

这些当然重要。

但量化实盘还需要盯系统本身。

因为亏损不一定来自策略判断错误。

也可能来自行情数据迟到、网络断开、订单没有回报、风控模块没有及时拦截。

如果你只盯收益,就像只看锅里的菜有没有糊,却不看燃气阀门是否漏气。

真正的监控要覆盖三个层面。

第一层是环境是否活着。

第二层是数据是否可信。

第三层是交易行为是否越界。

这三层组合起来,才是实盘系统的安全仪表盘。

mermaid
graph TD
  A[实盘系统运行] --> B[环境监控]
  A --> C[数据监控]
  A --> D[交易监控]
  B --> E[网络与服务是否在线]
  C --> F[行情与账户数据是否可信]
  D --> G[订单与风险是否越界]

关键心得

监控不是为了制造焦虑,而是为了让问题在可控范围内被发现。

2. 什么是告警分级

告警分级,就是把不同严重程度的问题分成不同响应等级。

就像小区里有烟雾提示、火警铃声、紧急疏散广播。

不是所有异常都要立刻停掉系统。

但也不是所有异常都可以等晚上再看。

实盘中常见的分级可以理解为三类。

提醒级:需要记录和观察,但不一定立刻干预。

例如某只持仓的行情延迟 2 秒,随后恢复。

警告级:需要尽快确认,可能影响交易质量。

例如订单连续两次被拒,或者数据源出现短时间缺口。

紧急级:需要立即暂停、降级或人工接管。

例如网络断开、账户资金异常、组合回撤超过预设上限。

这里的重点不是名字,而是响应动作。

没有响应动作的告警,只是噪音。

有分级、有责任人、有处理时限的告警,才是安全机制。

3. 断网:最朴素也最危险的故障

A 股交易时间集中,上午和下午各有一段连续交易。

如果系统在 9:30 到 11:30 或 13:00 到 15:00 之间断网,影响会非常直接。

行情可能无法更新。

订单状态可能无法确认。

风控模块可能拿不到最新持仓。

此时最危险的不是“没有交易”。

最危险的是系统以为自己仍然在正常交易。

因此断网监控至少要回答三个问题。

第一,行情连接是否正常。

第二,账户或交易通道的状态是否正常。

第三,系统是否能在连接异常时停止新增风险。

风险提示

本课程只讲监控思想,不提供真实券商接口连接步骤,也不提供可直接用于实盘的自动下单实现。

4. 延迟:慢几秒也可能改变成交质量

延迟不是完全断开。

它更像火警报警器电量不足,声音还在,但反应慢了。

在 A 股里,部分股票在开盘、临近午盘、尾盘集合竞价前后会出现成交活跃变化。

如果你的信号依据的是 10:00 的行情,但系统 10:00:05 才处理完成,实际成交价格可能已经变了。

延迟监控不是要求每一次都零延迟。

而是要知道延迟是否超过策略能承受的范围。

不同策略的容忍度不同。

低频调仓策略可能能接受分钟级处理。

日内更敏感的策略则不能把几秒延迟当小事。

你需要监控行情到达时间、信号生成时间、订单提交时间、订单回报时间。

把它们连起来,才能看见真实链路。

mermaid
graph LR
  A[行情到达] --> B[信号计算]
  B --> C[风控检查]
  C --> D[订单提交]
  D --> E[订单回报]
  E --> F[持仓更新]

5. 数据异常:看似价格,实则陷阱

数据异常是新手最容易低估的风险。

例如某只股票价格突然显示为 0。

例如成交量缺失。

例如指数行情已经更新,个股行情还停留在上一分钟。

例如除权除息后,复权口径没有同步。

如果策略直接相信这些数据,可能会得出荒唐信号。

一个均线策略可能因为缺失价格而误判趋势断裂。

一个仓位模型可能因为净值计算错误而误以为风险很低。

所以数据监控要先问:这条数据像不像正常世界里会出现的东西?

不是所有异常都能被规则完全识别。

但常见异常必须被拦截。

例如空值、重复时间戳、价格跳变过大、成交量负数、停牌股票仍然生成买入信号。

6. 订单失败:没有成交不等于没有风险

很多新手以为订单失败只是“没买上”。

但实盘里,订单失败会让组合偏离原计划。

例如策略计划买入 5 只股票,每只 20% 仓位。

其中 2 只因为涨停、停牌、价格不合规或账户限制没有成交。

最终组合只买了 3 只,集中度就变高了。

如果系统没有识别订单失败,后续风险计算仍按 5 只股票处理,就会出现账面与现实不一致。

订单监控应至少记录四类状态。

已提交。

部分成交。

全部成交。

失败或撤单。

每种状态都要能进入后续处理。

例如部分成交后是否补单。

失败后是否放弃。

撤单后是否重新评估。

这些规则必须在盘前写清楚,而不是盘中情绪化决定。

7. 回撤超限:投资层面的火警

前面讲的是系统故障。

回撤超限则是投资风险告警。

回撤可以理解为账户净值从近期高点往下掉了多少。

如果组合从 100 万涨到 110 万,又跌到 99 万,最大回撤不是 1%,而是从 110 万到 99 万的下跌幅度。

在实盘中,回撤超限并不一定代表策略失效。

但它一定代表你需要停下来确认。

市场环境是否变化?

组合是否过度集中?

单只股票是否出现极端波动?

交易成本是否高于预期?

如果回撤告警被忽略,策略可能会在最脆弱的时候继续加码风险。

关键心得

回撤告警不是“认输按钮”,而是“暂停确认按钮”。

8. A 股案例:午后断连与错误追单

假设你运行一个低频 A 股轮动策略。

策略每天根据收盘前的信号调整少量仓位。

某天 13:20,行情数据源出现短暂断连。

系统没有监控到异常,仍使用 13:19 的旧价格计算信号。

13:25,网络恢复,策略发现目标股票已经上涨,便按旧逻辑继续提交买入。

结果买入价格明显高于预期。

更糟的是,原本应该卖出的股票订单因为状态回报延迟,没有被确认。

组合一度出现仓位偏高。

这个案例里,策略思想本身未必错。

真正的问题是系统没有在“数据不新鲜”和“订单状态不明”时暂停新增风险。

如果有监控,流程应该是这样。

mermaid
graph TD
  A[行情延迟超过阈值] --> B[触发警告级告警]
  B --> C[停止生成新买入信号]
  C --> D[等待数据恢复]
  D --> E[重新计算信号]
  E --> F[人工确认是否继续执行]

9. 告警也需要防止过载

如果系统每分钟发几十条消息,投资者很快会麻木。

告警过载就像火警报警器太敏感,炒菜冒一点烟就狂响,最后大家会把电池拆掉。

所以告警设计要避免三个问题。

第一,重复告警不合并。

同一个数据源延迟,不需要每秒发一条。

第二,低级别问题升级条件不清楚。

提醒级如果持续 10 分钟,可能就该升级。

第三,告警没有恢复通知。

问题恢复后也要记录,否则复盘时不知道异常持续多久。

10. 可执行的监控设计步骤

你可以按以下顺序设计自己的监控。

先列出系统里最怕发生的五类事故。

再为每类事故找到可观测指标。

然后给指标设置正常区间和异常阈值。

接着定义告警等级。

最后写清楚每个等级对应的动作。

动作要具体。

例如“通知我”不够具体。

“暂停新增买入信号,保留卖出和撤单处理,记录异常开始时间,由人工在 5 分钟内确认”才是可执行动作。

11. 一段安全伪代码

下面只是监控逻辑示意,不是实盘接口实现。

text
如果 行情更新时间 距离当前时间 超过允许范围:
  标记为 数据延迟
  暂停新增买入信号
  记录告警等级和开始时间

如果 订单失败次数 连续超过预设次数:
  标记为 订单异常
  停止重复提交同类订单
  请求人工复核

如果 组合回撤 超过盘前设定上限:
  标记为 风险超限
  暂停加仓动作
  进入复盘流程

这段伪代码的核心不是技术语法。

核心是“先保护系统,再追求收益”。


交互实验室

本节的交互产物是一张告警分级表

请把它复制到你的交易日志或策略说明文档里,并根据自己的策略频率调整阈值。

告警对象观察指标提醒级警告级紧急级建议动作
网络连接行情与账户连接状态短暂抖动后恢复连续多次连接失败交易时段完全断开暂停新增风险,确认连接后再恢复
行情延迟最新行情时间与当前时间差轻微落后超过策略容忍范围长时间无更新停止使用旧行情生成新信号
数据异常空值、重复、跳变单条异常多只股票异常核心数据源异常启用备用数据或暂停计算
订单失败拒单、废单、无回报偶发失败连续失败状态无法确认停止追单,人工核对账户
回撤风险组合净值回撤接近阈值达到阈值明显超过阈值暂停加仓,进入风险复盘

练习步骤如下。

  1. 选择你最关心的一个策略。

  2. 写出它最依赖的三类数据。

  3. 写出它最不能接受的两类系统故障。

  4. 为每类故障设置一个“提醒级”和一个“紧急级”。

  5. 给每个等级写出具体动作。

  6. 检查动作里是否出现“看情况再说”。

  7. 如果出现,把它改成可以执行的句子。

示例填写:

场景我的阈值我的动作
行情延迟超过 60 秒暂停新买入信号,保留风险降低动作
单日回撤接近预设上限降低观察频率之外的交易冲动,记录原因
订单失败同类订单连续失败不重复追单,先核对失败原因

练习提醒

告警表不是写给机器看的,而是写给未来紧张、疲惫、容易冲动的自己看的。


核心复盘

知识清单

  • [ ] 我能用“火警报警器”解释监控与告警的作用。
  • [ ] 我知道实盘监控不只看收益,还要看环境、数据和交易行为。
  • [ ] 我能区分提醒级、警告级、紧急级告警。
  • [ ] 我理解断网、延迟、数据异常、订单失败都会让策略偏离原计划。
  • [ ] 我知道回撤超限是投资层面的暂停确认信号。
  • [ ] 我能为自己的策略写出一张告警分级表。

金句总结

实盘系统能活下来,不是因为它从不出错,而是因为它能在小错变成大错前及时报警。

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