故障排查 · Webhook

TradingView Webhook 延迟有多严重?
官方规格、常见原因与能修复的地方

2026-07-08·10 分钟

你设置了 TradingView alert 自动交易,结果信号来得比想象慢很多——有时候是几秒, 有时候感觉像过了好几分钟。先说结论:你感受到的「延迟」,十次有八次不是 TradingView 端真的慢,而是三件事之一——(1) 你自己选的触发频率设置本来就要等、 (2) 你的接收服务器响应太慢被判定超时、(3) 你的方案根本没有 webhook 功能。

先诚实说在最前面:TradingView 官方从未公开承诺过 webhook 的送达时间,也没有 SLA(服务水平协议)。这篇不会编一个「平均延迟 XX 秒」的数字给你,而是把官方文档 里真正写明的规格、方案限制、社区反馈,以及哪些延迟你能自己修、哪些是架构上修不了的, 诚实拆开来讲。

TL;DR
官方没有延迟 SLA。大部分人以为的「慢」其实是Once Per Bar Close 设置本来就要等 K 线收盘;官方真正写明的规格是接收端 3 秒内没响应就取消、不重试;免费方案完全没有 webhook; 真正修不了的是 TradingView 从条件成立到发出 webhook 之间的内部耗时,这段官方没有 公开任何数字。

先破解最大的误会:「Once Per Bar Close」不是慢,是故意等

官方文档对触发频率的定义很清楚:Once per bar 是「每根 K 线都检查, 条件符合就触发,同一根最多一次,不等收盘」;Once per bar close 则是「同样逻辑,但一定要等 K 线收盘才触发」。这两个字的差异,决定了你的信号会不会 「感觉慢」。

1
1 小时线,14:00 K 线一开盘价格就摸到你设的条件
频率选 Once per bar条件成立当下立刻触发,webhook 几乎实时发出。
频率选 Once per bar close系统会一直等到这根 K 线在 15:00 收盘才触发——这段等待长达 59 分钟,是你自己选的设置造成的,不是 TradingView 慢。

再加一个容易被忽略的区分:以上是「Create Alert」对话框 UI 的 Frequency 选项, 适用于 price/technical/alertcondition() alert。但 Pine alert() 函数的 freq 参数只有三个值:alert.freq_once_per_bar(默认)、alert.freq_once_per_bar_closealert.freq_all—— 没有「Once Only」也没有「Once per minute」这两个选项,很多教程文章会混用。

另外,strategy 默认在 K 线收盘才重新计算:除非你在代码里开启 calc_on_every_tick = true,否则 alert() 就算填了 alert.freq_all,实际上也只会在收盘时触发一次。这是很多人以为「实时策略 结果却等收盘」的真正原因。

官方到底承诺了什么延迟?

查遍 TradingView 官方帮助中心、Pine Script 文档与状态页,都没有找到 任何对「webhook 延迟」或「送达时间」的量化承诺或 SLA。官方文档里真正写明、跟时间 有关的规格,其实是下面这几个「接收端」规格,而不是「TradingView 内部处理耗时」:

3 秒
接收端没响应就判定超时、直接取消
不重试
超时或 4xx 响应不会重发
5 秒
收到 5xx 才会等这么久后重发
最多 3 次
5xx 重发上限(总共最多发 4 次)
2 个月
alert 默认最长存活期限
15 次 / 3 分钟
触发太频繁会被系统自动停用

换句话说,官方明确承诺的是「你的服务器要多快响应」,而不是「TradingView 自己从条件成立到发出 webhook 要多快」。后者完全没有 公开数字可查。

你的方案本身可能就没有 webhook

在怀疑延迟之前,先确认一件更根本的事:免费 Basic 方案完全不支持 webhook 通知,这在 pricing 页的对比表里是叉号,不是「比较慢」,是根本没有。

Basic(免费)EssentialPlusPremiumUltimate
Webhook 通知
Price alert 数量3201004001,000
Technical alert 数量0201004001,000
Alert 有效期上限1 个月2 个月2 个月可不过期可不过期
一个诚实的观察:官网文案自己打架
TradingView pricing 页的营销条列清单里,Essential/Plus/Premium/Ultimate 四个 方案全部都列了「Alerts that don't expire」这一条,容易让人 以为 Essential、Plus 也能设不过期的 alert。但同一页下方的详细对比表写得很清楚: Essential、Plus 的 alert 有效期上限都是 2 个月,官方帮助中心也明确说「只有 Premium 和 Ultimate 才能开启不过期(open-ended)选项」。遇到这种矛盾,以对比表和 帮助中心逐字说明为准,不要只看营销条列。

哪些延迟你能自己修,哪些修不了

把上面官方规格和常见坑整理成一张表,分成「你能动手改」跟「架构上修不了、只能绕道」:

问题你能做什么
频率选了 Once per bar close 却想要实时改成 Once per bar;strategy 想要逐 tick 触发要开 calc_on_every_tick
服务器 3 秒没响应被取消,不会重试收到请求先立刻回 200,下单逻辑丢到后台处理,不要在同一个请求里等交易所响应
消息或 request body 太大出错手动消息上限 4000 字符,alert() / alert_message 上限 40960 字符,精简 payload
改了 Pine 代码但 alert 没反应alert 创建当下会把脚本快照下来,改完代码要删除旧 alert 重建
方案没有 webhook 或 alert 数量不够用升级到 Essential 以上;数量还不够可申请额外的 active alert 额度
TradingView 从条件成立到发出 webhook 的内部耗时修不了——官方无 SLA、无公开数字,只能靠自己的信号日志/回放监控实际情况
3 分钟内触发超过 15 次被系统停用修不了频率上限本身,只能重新设计信号逻辑降低触发次数
只接受 80/443 端口、不支持 IPv6修不了规格,接收服务要用标准端口、IPv4

接收端(你的服务器)也会拖慢——这是我们的做法

前面说「3 秒没响应就取消、不重试」,这条规则常被低估。如果你的接收服务器在同一个 请求里做完「验证信号 → 调用交易所 API 下单 → 等成交响应」整套流程,很容易在真实 交易环境下超过 3 秒,导致这笔信号直接被 TradingView 判定失败丢弃,而且不会重试——你可能完全不知道自己漏接了一笔信号。

TVSBot 的做法是先收到 webhook 就立刻响应,实际下单逻辑丢到后台异步处理,避免撞到 TradingView 这条 3 秒超时规则。我们自己的 FAQ 页对这段「收到信号到实际下单」的 延迟写的是:目标 P95 落在 500ms 以内,实际延迟一般加总在 1-3 秒内——这是我们自己文档上的目标值与一般经验值,不是有公开方法论、逐笔测量的实测报告, 写在这里是想诚实说明「接收端能做到什么程度」,而不是包装成精确 benchmark。

想更完整了解怎么把 webhook 接起来、payload 要带哪些字段,可以看 TradingView Webhook 完整教程这篇;如果你的下单金额跟预期对不上,很可能是另一个常见坑,可以看 qty_type 语义陷阱那篇。

来源验证:IP 白名单 vs SSL 证书

官方目前公布的 webhook 来源 IP 列表(截至 2026 年 7 月查证)是:

text
52.89.214.238
34.212.75.30
54.218.53.128
52.32.178.7

但官方文档并没有承诺这份列表永久不变。更稳妥的做法是验证 TradingView 发请求时附带的 SSL 证书(CN = webhook-server@tradingview.com),这是官方自己提供、 比单纯 IP 白名单更可靠的验证方式。

诊断你的 alert 为什么「感觉很慢」

1
触发频率是不是设成 Once per bar close?
这是设计如此,本来就要等 K 线收盘。
继续往下检查。
2
是不是免费 Basic 方案?
这个方案本来就没有 webhook 功能,升级才有。
继续往下检查。
3
你的接收服务器多久响应?
超过 3 秒会被直接取消且不重试——让服务器先立刻回 200,下单逻辑改后台处理。
3 秒内继续往下检查。
4
这个 alert 创建多久了?有没有过期?
已过期Alert Manager 会显示红色「Stopped — Expired」,默认 2 个月到期,重建即可。
没过期继续往下检查。
5
这 3 分钟内是不是触发超过 15 次?
系统会自动停止该 alert,需要重新设计信号逻辑降低频率。
以上都排除,那可能真的是 TradingView 端本身的处理耗时——官方没有公开 SLA,只能靠自己的信号记录长期观察。
社区反馈,仅供参考
Reddit r/TradingView 上有用户反馈:「高峰时段大概会晚 10 秒左右收到通知, 有时候 webhook 甚至没触发」。这是单一用户的个人经验,没有说明 测试方法、样本数或服务器地理位置,不能当成统计事实,仅供「延迟量级可能到两位数秒」 的参考。

上线前检查清单

  • 确认方案支持 webhook(Essential 以上),免费 Basic 完全没有
  • 触发频率选对:要实时用 Once per bar,要等收盘确认用 Once per bar close
  • 服务器收到请求先立刻回 200,绝不在 3 秒内做完整套下单流程
  • 用 SSL 证书或至少 IP 白名单验证请求真的来自 TradingView
  • 改了 Pine 代码记得删除旧 alert 重建,而不是以为会自动更新
  • 定期检查 Alert Manager 有没有红色「Stopped — Expired」
为什么我的 TradingView alert 要等好几分钟才触发?
先检查触发频率是不是设成 Once per bar close——这种设置本来就要等 K 线收盘才触发,1 小时线最长可能要等接近 1 小时, 不是 bug,是设计如此。如果要更实时的反应,改用 Once per bar
TradingView 官方有承诺 webhook 多久内送达吗?
没有。查遍官方帮助中心、Pine Script 文档与状态页,都找不到任何 对 webhook 延迟或送达时间的量化承诺或 SLA。官方只公开了「接收端 3 秒内没响应 就取消、不重试」这类针对你服务器的规格。
免费方案可以用 webhook 吗?
不行。pricing 页对比表里,Basic(免费)方案的 webhook 通知字段是叉号, 要 Essential 以上(年付约 $12.95/mo 起)才有这个功能。
官方公布的 webhook 来源 IP 列表是什么?
截至 2026 年 7 月查证,官方公布的列表是 52.89.214.238、34.212.75.30、 54.218.53.128、52.32.178.7,但官方没有承诺这份列表永久不变。建议搭配官方 提供的 SSL 证书验证(CN = webhook-server@tradingview.com) 作为更稳妥的验证方式。
我的 alert 完全没有触发,是什么原因?
常见原因包括:方案不支持 webhook、alert 已过期(默认 2 个月)、Pine 脚本 发生 runtime error 导致停止执行、3 分钟内触发超过 15 次被系统自动停用、 或是你的服务器 3 秒内没响应被取消且不会重试。

Get started

想把今天学到的东西自动化跑起来?

TVSBot 是非托管的 TradingView → 交易所自动交易平台,支持 Binance / OKX / Bitget / Bybit / Gate.io / BingX / Hyperliquid 共 7 家。我们用后台异步处理避开 TradingView 的 3 秒超时规则,收到信号先立刻确认、下单逻辑再交给后台处理。

免费开始