疑難排解 · 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 官方 Help Center、Pine Script 文件與 status page,都沒有找到 任何對「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 個月,官方 Help Center 也明講「只有 Premium 和 Ultimate 才能開啟不過期(open-ended)選項」。遇到這種矛盾,以比較表和 Help Center 逐字說明為準,不要只看行銷條列。

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

把上面官方規格和常見坑整理成一張表,分成「你能動手改」跟「架構上修不了、只能繞道」:

問題你能做什麼
頻率選了 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、無公開數字,只能靠自己的 signal log/replay 監控實際狀況
3 分鐘內觸發超過 15 次被系統停用修不了頻率上限本身,只能重新設計訊號邏輯降低觸發次數
只接受 80/443 port、不支援 IPv6修不了規格,接收服務要用標準 port、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 多久內送達嗎?
沒有。查遍官方 Help Center、Pine Script 文件與 status page,都找不到任何 對 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 秒逾時規則,收到訊號先立刻確認、下單邏輯再交給背景處理。

免費開始