WeCore
自动化

用 Webhook 自动化 TradingView 警报:原理、格式与安全

什么是 webhook,指标警报与策略警报有何区别,如何用占位符构建 JSON 消息,以及要检查哪些事项才能让你的警报自动化保持可靠与安全。

WeCore·发布于 ·阅读约 4 分钟

TradingView 是最受欢迎的看图和策略开发工具之一,但它的警报本身并不会把订单发给券商。连接警报和执行的桥梁是 webhook:警报触发的那一刻,自动发送到你指定地址的一条消息。本文解释其工作原理、消息里该写什么,以及有哪些可靠性和安全方面的陷阱值得提前了解。

什么是 webhook

webhook 是这样一种机制:当某件事发生时,一个系统向另一个系统发送 HTTP 请求,而不是让第二个系统不停地询问“有新消息吗?”。在 TradingView 中,当警报条件满足时,TradingView 的服务器会向你配置的 webhook URL 发送一个 POST 请求,请求正文就是你在消息栏里写的文本。

接收端(例如一个自动化平台)读取消息,判断该做什么(买入、卖出、平仓、数量),再把订单发送到券商账户。请记住:TradingView 只负责发消息。所有关于执行、风险管理和合理性检查的决定都发生在接收端。

根据 TradingView 帮助中心的说明,webhook 推送取决于你的订阅方案,通常还要求账户开启双重验证。这些要求可能会变,请到其官网查看最新细节。

指标警报与策略警报

用于自动化的警报主要有两类:

  • 指标或条件警报:创建在指标、价格或 Pine 代码中的警报函数上。适用于逻辑简单,或由指标本身决定何时发出信号的情况。
  • 策略警报:创建在策略类脚本上,当策略引擎执行一笔模拟订单(入场、出场、反手)时触发。优点是消息可以携带订单本身的信息,例如方向和数量。

这个区别很重要,因为它会改变行为。策略警报取决于策略设置,例如是只在 K 线收盘时计算,还是每个 tick 都计算。如果你的回测是按收盘计算的,而实盘警报在 K 线内触发,结果就可能不同。检查设置,确保前后一致。

构建消息:JSON 与占位符

大多数自动化系统要求消息采用 JSON 格式,即由字段和值组成的结构。用文字描述,一条典型的消息包含这样一些字段:交易哪个品种、什么方向、几手合约,有时还包括策略 ID 或用于识别连接的令牌。确切格式由接收端定义,因此务必从你所用平台的文档中复制模板。

TradingView 支持占位符:写在双大括号里的变量,发送时会被替换成真实的值。有表示品种、收盘价、时间的占位符,在策略警报中还有表示订单方向和数量的占位符。正确使用占位符,可以让同一个消息模板在多张图表上复用,无需重写。

几条值得遵守的规则:

  • 保持 JSON 有效:字段名和文本用双引号,字段之间用逗号,末尾不要留多余的逗号。
  • 不要依赖在某些情况下可能为空的字段。
  • 在 TradingView 的警报日志中查看替换后的消息,确认实际发出的内容。

正确的品种与合约换月

期货还有一个特有的问题:连续合约图(例如 NQ1!)显示的是主力合约,并会自动切换,但券商需要知道交易的是哪一个具体合约。如果消息里发送的是连续合约的名称,接收端就必须把它翻译成正确的合约;如果发送的是具体合约,到了换月时就必须更新警报。完整说明见期货合约换月一文。

可靠性方面的考虑

好的自动化,是你能知道它什么时候没起作用的自动化。需要注意的要点:

  1. 警报过期:在某些方案中,警报有到期日。过期的警报会悄无声息地停止发送。给自己设个提醒。
  2. 脚本修改:如果你编辑了指标或策略,现有警报可能仍在旧版本上运行。通常需要重新创建。
  3. 重复警报:同一张图上的两个警报,或者一根 K 线内触发多次的警报,可能会发出重复订单。要有意识地设置触发频率,最好让接收端能识别重复。
  4. 延迟:webhook 通过互联网传输,可能会延迟。在快速行情中,哪怕很小的延迟也会影响价格;参见滑点与执行成本一文。
  5. 接收端故障:如果接收服务器不可用,消息可能会丢失。好的系统会提醒你。

保护你的 webhook URL

你的 webhook URL 实际上就是一把钥匙:任何知道它、又知道消息格式的人,都能向你的账户发送订单。因此:

  • 不要在截图、论坛或聊天群里公开这个 URL。
  • 尽可能在消息中使用一个由接收端验证的秘密令牌。
  • 如果怀疑 URL 已经泄露,创建新的连接并作废旧的。
  • 在接收端设置风控限额,这样即使是格式错误的消息也无法开出巨大的仓位。

上线前检查清单

  • 策略测试时使用的计算设置,与警报运行时的设置是否相同?
  • 按照接收端的文档,消息是否为有效的 JSON?
  • 品种是否映射到了正确的合约?
  • 你知道警报的到期日吗?
  • 是否设置了每日亏损上限和最大合约数?
  • 是否先在模拟环境中测试过全部流程?

要点总结

  • webhook 只是信使:TradingView 发送消息,接收端负责执行和风险管理。
  • 策略警报可以传递方向和数量,但需要一致的计算设置。
  • 有效的 JSON 和正确的占位符能避免大量错误。
  • 过期、重复和脚本修改是常见的故障来源。
  • 你的 webhook URL 是机密,要像对待密码一样对待它。

如果你想看看实际操作是什么样子,可以参考指南如何把 TradingView 警报连接到 WeCore。WeCore 接收警报,将其转化为你的券商或自营交易公司账户上的订单,并执行自动化风控限额,你还可以先从模拟模式开始。

资料来源与延伸阅读