天勤策略钉钉告警:交易信号与异常通知怎么分流
前言策略上云之后我和同事最怕两件事一是真出事了没人知道二是没事也被钉钉刷屏刷到麻木。最早接推送时图省事在wait_update里每次last_price变就发一条一个活跃品种白天能几百条两天之后群里全员静音某天进程凌晨挂了直到早上九点半才有人发现——因为大家默认「又是行情刷屏」。后来我们按天勤advanced/dingding.rst接好发送函数又定了一张「分级表」什么必须叫醒人、什么只写日志、什么一天汇总一条。推送变成运维工具而不是行情转播站。下面写集成位置和频率习惯Webhook 仍放环境变量别进 git。一、为什么要分流不同类型消息频率差几个数量级混在一个通道里一定失控。类型频率建议断线、未捕获异常、紧急平仓低立即推送成交、调仓、风控拒单累计中合并、阈值、日终汇总行情 tick、指标值极高禁止推送告警疲劳的代价是真故障被当成噪音。我们吃过亏所以宁可少推也不滥推。二、集成位置在策略初始化或循环外层接发送能力类名参数以dingding.rst为准。禁止在每个 tick 调发送接口。defnotify_alert(msg:str):# 按 dingding.rst 调用官方或自建发送passwhileTrue:try:api.wait_update()exceptExceptionase:notify_alert(f[策略A] uncaught:{e})raisenotify_alert内部也应轻量失败写本地日志别在循环里无限重试 HTTP否则行情泵再次被拖死。三、推荐触发点这些点我倾向于推钉钉TqApi创建失败、连续多次wait_update长时间无更新阈值自定紧急平仓或emergency_flat执行后日终一条各品种净持仓、当日盈亏摘要、拒单次数风控拒单在同一原因下累计超过 N 次这些点不要推每根 K 线金叉死叉、每个 tick 价格、每次is_changing为真。成交是否实时推看团队风格。我倾向日终汇总 大额调仓即时推中间小调仓只进文件日志。四、频率控制同一错误文本 5 分钟内只推一次用本地时间戳去重夜盘结束发汇总而不是每笔成交一条测试环境关闭推送或打到「测试群」避免吓到交易员有一次测试 webhook 没改生产群半夜连发「模拟平仓成功」第二天被风控约谈——这种笑话能避免就避免。五、与日志分工渠道内容文件日志全量、可检索、事后复盘钉钉需要人马上介入的事件文件日志负责全量落盘钉钉不能替代审计。监管或内控要查历史永远以日志为准推送只是提醒你有日志可看。六、安全Webhook、密钥仅环境变量或密钥管理不进仓库消息里不打密码、不打完整资金账号群成员最小权限离职及时轮换 webhook总结钉钉接天勤策略价值在「少而准」不在「全而烦」。文档把发送能力准备好了团队若不做分级很快就会回到全员静音的老路。我现在的底线是tick 绝不进钉钉异常一定进钉钉成交看规模在即时和日终之间取平衡。你若正准备加推送建议先用模拟盘跑一天数一下「如果全开会有多少条」——这个数字会帮你定阈值。往往算完你自己都会想把一半触发点划掉。FAQ1能否推企业微信文档若仅钉钉其他 IM 可自研 HTTP注意异步、短超时、失败不阻塞循环。2发送失败怎么办记本地日志主策略继续跑或按预案停机别在循环里死重试。3回测要推送吗关闭避免测试消息进生产群。4多策略共用一个群消息前缀带策略名、主机名、单元名。风险提示本文用于期货量化技术实践讨论不构成投资建议。