用 Webhook 自动化 TradingView 警报:原理、格式与安全
什么是 webhook,指标警报与策略警报有何区别,如何用占位符构建 JSON 消息,以及要检查哪些事项才能让你的警报自动化保持可靠与安全。
TradingView 是最受欢迎的看图和策略开发工具之一,但它的警报本身并不会把订单发给券商。连接警报和执行的桥梁是 webhook:警报触发的那一刻,自动发送到你指定地址的一条消息。本文解释其工作原理、消息里该写什么,以及有哪些可靠性和安全方面的陷阱值得提前了解。
什么是 webhook
webhook 是这样一种机制:当某件事发生时,一个系统向另一个系统发送 HTTP 请求,而不是让第二个系统不停地询问“有新消息吗?”。在 TradingView 中,当警报条件满足时,TradingView 的服务器会向你配置的 webhook URL 发送一个 POST 请求,请求正文就是你在消息栏里写的文本。
接收端(例如一个自动化平台)读取消息,判断该做什么(买入、卖出、平仓、数量),再把订单发送到券商账户。请记住:TradingView 只负责发消息。所有关于执行、风险管理和合理性检查的决定都发生在接收端。
根据 TradingView 帮助中心的说明,webhook 推送取决于你的订阅方案,通常还要求账户开启双重验证。这些要求可能会变,请到其官网查看最新细节。
指标警报与策略警报
用于自动化的警报主要有两类:
- 指标或条件警报:创建在指标、价格或 Pine 代码中的警报函数上。适用于逻辑简单,或由指标本身决定何时发出信号的情况。
- 策略警报:创建在策略类脚本上,当策略引擎执行一笔模拟订单(入场、出场、反手)时触发。优点是消息可以携带订单本身的信息,例如方向和数量。
这个区别很重要,因为它会改变行为。策略警报取决于策略设置,例如是只在 K 线收盘时计算,还是每个 tick 都计算。如果你的回测是按收盘计算的,而实盘警报在 K 线内触发,结果就可能不同。检查设置,确保前后一致。
构建消息:JSON 与占位符
大多数自动化系统要求消息采用 JSON 格式,即由字段和值组成的结构。用文字描述,一条典型的消息包含这样一些字段:交易哪个品种、什么方向、几手合约,有时还包括策略 ID 或用于识别连接的令牌。确切格式由接收端定义,因此务必从你所用平台的文档中复制模板。
TradingView 支持占位符:写在双大括号里的变量,发送时会被替换成真实的值。有表示品种、收盘价、时间的占位符,在策略警报中还有表示订单方向和数量的占位符。正确使用占位符,可以让同一个消息模板在多张图表上复用,无需重写。
几条值得遵守的规则:
- 保持 JSON 有效:字段名和文本用双引号,字段之间用逗号,末尾不要留多余的逗号。
- 不要依赖在某些情况下可能为空的字段。
- 在 TradingView 的警报日志中查看替换后的消息,确认实际发出的内容。
正确的品种与合约换月
期货还有一个特有的问题:连续合约图(例如 NQ1!)显示的是主力合约,并会自动切换,但券商需要知道交易的是哪一个具体合约。如果消息里发送的是连续合约的名称,接收端就必须把它翻译成正确的合约;如果发送的是具体合约,到了换月时就必须更新警报。完整说明见期货合约换月一文。
可靠性方面的考虑
好的自动化,是你能知道它什么时候没起作用的自动化。需要注意的要点:
- 警报过期:在某些方案中,警报有到期日。过期的警报会悄无声息地停止发送。给自己设个提醒。
- 脚本修改:如果你编辑了指标或策略,现有警报可能仍在旧版本上运行。通常需要重新创建。
- 重复警报:同一张图上的两个警报,或者一根 K 线内触发多次的警报,可能会发出重复订单。要有意识地设置触发频率,最好让接收端能识别重复。
- 延迟:webhook 通过互联网传输,可能会延迟。在快速行情中,哪怕很小的延迟也会影响价格;参见滑点与执行成本一文。
- 接收端故障:如果接收服务器不可用,消息可能会丢失。好的系统会提醒你。
保护你的 webhook URL
你的 webhook URL 实际上就是一把钥匙:任何知道它、又知道消息格式的人,都能向你的账户发送订单。因此:
- 不要在截图、论坛或聊天群里公开这个 URL。
- 尽可能在消息中使用一个由接收端验证的秘密令牌。
- 如果怀疑 URL 已经泄露,创建新的连接并作废旧的。
- 在接收端设置风控限额,这样即使是格式错误的消息也无法开出巨大的仓位。
上线前检查清单
- 策略测试时使用的计算设置,与警报运行时的设置是否相同?
- 按照接收端的文档,消息是否为有效的 JSON?
- 品种是否映射到了正确的合约?
- 你知道警报的到期日吗?
- 是否设置了每日亏损上限和最大合约数?
- 是否先在模拟环境中测试过全部流程?
要点总结
- webhook 只是信使:TradingView 发送消息,接收端负责执行和风险管理。
- 策略警报可以传递方向和数量,但需要一致的计算设置。
- 有效的 JSON 和正确的占位符能避免大量错误。
- 过期、重复和脚本修改是常见的故障来源。
- 你的 webhook URL 是机密,要像对待密码一样对待它。
如果你想看看实际操作是什么样子,可以参考指南如何把 TradingView 警报连接到 WeCore。WeCore 接收警报,将其转化为你的券商或自营交易公司账户上的订单,并执行自动化风控限额,你还可以先从模拟模式开始。