期货量化告警太吵怎么控频:天勤 TqNotify 与业务信号分级
前言
国内期货量化策略上线后,程序 7×24 跑在服务器:天勤 TqApi 主循环里 wait_update() 推进,每根 5 分钟 K 线收盘可能算出「螺纹钢均线金叉」这类交易信号,有人把信号原文直接推到钉钉群;同时柜台还可能回报断线、拒单、成交。若全部即时推送,群消息一分钟几十条「金叉/死叉」,真正重要的「行情停更半小时」「连续资金不足拒单」反而被淹没。
天勤在 tqsdk.lib 提供 TqNotify:在 wait_update 循环里用 get_notifies() 批量取服务器侧通知,适合接连接、柜台类事件。业务交易信号、风控触发则应走自建结构化日志,再按级别限频分流。下面说明怎么拆通道、怎么设冷却时间,让手机只响该响的。
一、TqNotify 做什么
from tqsdk import TqApi, TqAuth, TqKq, TqNotify
api = TqApi(account=TqKq(), auth=TqAuth("账户", "密码"))
notify = TqNotify(api)
while True:
api.wait_update()
for n in notify.get_notifies():
handle_server_notify(n) # 按 n 的内容分类
get_notifies() 返回自上次调用以来新增的通知列表,无新通知则 []。适合接柜台、连接类事件,不适合每根 K 线都发。
二、三级分流建议
| 级别 | 内容 | 通道 | 限频 |
|---|---|---|---|
| L0 静默 | 常规信号、心跳 | 仅写文件 | 无上限 |
| L1 日报 | 成交汇总、日终权益 | 邮件/群摘要 | 日 1 次 |
| L2 即时 | 断线、连续拒单、emergency | 钉钉/短信 | 同类型 5 分钟 1 条 |
业务信号(target 变化)记 jsonl,默认不推送。只有 emergency 或 risk_ratio 超阈值才升 L2。
三、限频实现示意
import time
_last_alert = {}
def alert_l2(key, msg, cooldown=300):
now = time.time()
if now - _last_alert.get(key, 0) < cooldown:
return
_last_alert[key] = now
send_dingtalk(msg)
对 TqNotify 解析出的同类断线通知也用 key="disconnect" 限频,避免重连抖动连发。
四、与手写监控的关系
夜盘监控专题里的 quote.datetime stale、volume_left 僵死等,应汇总成 L2,而不是每个 symbol 单独轰炸。成交可用 L0 记全量,L1 只发日累计。
五、测试环境隔离
mode=sim 的 webhook 指向测试群;配置从环境变量读,避免模拟盘告警进生产群(与日志脱敏同一习惯)。
六、业务信号该记什么但不推送
建议在 jsonl 里记:event=signal、bar_datetime、symbol、target、pos、reason,默认不调用钉钉。只有 event=emergency 或 risk_ratio 超阈值才升 L2。均线金叉一天可能十几次,推送毫无意义;连续三次 last_msg 含资金不足则必须推送。
七、夜盘值守摘要模板
L1 日终一条 Markdown 摘要即可:
- 当日
balance起止 - 成交笔数、手续费
- 拒单次数 Top3
last_msg - 断线次数
由定时任务在夜盘结束触发,不打扰白天。
八、TqNotify 与自建监控的组合
TqNotify 偏柜台与连接;quote.datetime stale、volume_left 僵死等需自建规则。两者都走 handle_notify,用不同 key 限频,避免双通道重复发同一件事。
总结
告警太吵,是因为把研究信号和运维事件混在一个通道里。天勤 TqNotify 负责收服务器通知,适合断线、柜台类事件;均线信号等应写结构化日志并默认静默。给 L2 即时告警加同类冷却时间,日终再用 L1 摘要成交与权益,手机才不会在夜盘被无效消息占满。
FAQ
1)TqNotify 和 get_trade 区别?
Notify 是服务端通知流;成交以 get_trade 为准。
2)能否过滤 notify 内容?
在 handle_server_notify 里按字段丢弃无关项。
3)信号要不要推送?
看团队习惯;默认建议只记日志。
4)Webhook 怎么接?
在 alert_l2 里用 requests.post 调钉钉机器人即可,URL 放环境变量,勿写进仓库。
本文基于天勤 TqSdk 公开 API 整理,不构成投资建议。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)