Supertrend 是什麼?—
參數怎麼調、為什麼適合當自動下單訊號
你把 Supertrend 掛上 TradingView。線是綠的、多頭;線一翻紅、就是空頭。你把「翻色」設成 alert 條件,接上 webhook(TradingView 觸發時打出去的 HTTP 通知)打去 TVSBot 或任何一個執行端。第一次跑起來,你會遇到兩件事。
第一件:K 棒還沒收,訊號先跳一下就送出去了。第二件:同一根 K 棒後來又翻回去,等你反應過來部位已經反手了兩次,手續費先付了一輪。這不是 Supertrend 壞了,也不是你的策略邏輯錯——是它「當下就給你答案」的性格跟自動下單的節奏對不上。
alertcondition() 加上 UI 的「Once Per Bar Close」觸發模式、或者在條件裡加 barstate.isconfirmed。兩種都能擋掉 K 棒收盤前的閃爍。這是這篇最重要的一句話。Supertrend 在算什麼——ATR 決定寬度,close 決定方向
Supertrend 的計算分兩層。第一層是基本帶:以每根 K 棒的中點 (high + low) / 2 為中線,往上往下各推 multiplier × ATR 得到上下軌。ATR 是 Average True Range,量的是這段時間的波動——ATR 大代表最近震得凶,帶就寬;ATR 小代表相對平靜,帶就窄。
第二層是趨勢鎖定:這條線畫出來的時候,是走上軌還是下軌,取決於當前是多頭還是空頭。空頭時畫上軌、上軌只能往下步進(如果新的一根 K 棒算出來上軌變寬,會保留原本較窄的那條);多頭時畫下軌、下軌只能往上步進。方向翻轉的觸發條件很單純:收盤價穿越當前那條線。close 從下軌上方跌破下軌,翻空;close 從上軌下方突破上軌,翻多。
兩個參數:ATR 週期與 multiplier
Supertrend 就兩個旋鈕,其他都是這兩個推導出來的。
| 參數 | 在做什麼 | 調大的效果 | 調小的效果 |
|---|---|---|---|
| ATR 週期 | 算 ATR 的取樣長度(K 棒數) | 波動計算更平滑、反應變慢 | 波動計算對近期更敏感、翻轉更頻繁 |
| multiplier | 帶到中線的距離(幾倍 ATR) | 帶變寬、翻轉次數變少、容忍雜訊 | 帶變窄、訊號變密、抓小波動 |
Supertrend 的兩個參數與它們各自影響哪一件事。(查證日期 2026 年 8 月)
TradingView 內建的 ta.supertrend(factor, atrPeriod) 預設是 ATR 週期 10、multiplier 3。TVSBot 的 Pine 範本頁也是同一組,這是這個組合在圈子裡的預設起點——不是「最好」,是「大家都從這裡開始」。你要偏保守就把 multiplier 拉到 4 或 5、要偏敏感就調到 2。
//@version=5
strategy("TVSBot SuperTrend", overlay=true)
atrPeriod = input.int(10, "ATR 週期")
factor = input.float(3.0, "SuperTrend 倍數")
[supertrend, direction] = ta.supertrend(factor, atrPeriod)
longCondition = ta.change(direction) < 0 // 從空翻多
shortCondition = ta.change(direction) > 0 // 從多翻空
if longCondition
strategy.entry("Long", strategy.long, alert_message='{"side":"buy"}')
if shortCondition
strategy.entry("Short", strategy.short, alert_message='{"side":"sell"}')這段是 TVSBot 官方 Pine 範本,來源 /docs/pine-templates。ta.supertrend() 的第一個回傳是那條線的價位,第二個是方向:-1 是多頭、1 是空頭。用 ta.change(direction) < 0 就是「這一根從空翻多」。
為什麼它比 RSI/MACD 更適合當自動下單訊號
震盪類指標——RSI(相對強弱指數)、MACD(快慢均線差)——的訊號本質是連續數值:RSI 是 0 到 100 之間的數字、MACD histogram 是持續浮動的差值。你要拿它當自動下單訊號,得自己在上面拉一條線(RSI 低於 30 買、histogram 穿零軸買),而那條線在盤整區會被反覆穿越。
Supertrend 不一樣,它直接產出離散狀態——只有 up 跟 down 兩種,翻轉是一次明確的事件。沒有「差一點就翻」、也沒有「即將翻」。這對送 webhook 特別重要,因為 webhook 只知道「觸發」跟「沒觸發」,它沒辦法送出「快翻了」這種曖昧狀態。
| RSI / MACD | Supertrend | ||
|---|---|---|---|
| 訊號本質 | 連續數值 | 離散方向 | |
| 翻轉判定 | 穿越自定閾值 | 穿越當前 trailing band | |
| 止損位置 | 需另外定義 | 指標線本身 | |
| 盤整區行為 | 雜訊多、容易誤觸 | 翻轉少但一翻就整段 | |
| 適合作 webhook 條件 | 要另加濾網 | 翻轉就是條件 |
要講清楚的是:這不代表 Supertrend 一定「比較準」。它只是結構上跟自動下單的介面更合——你不用寫太多 wrapper 就能把它變成一個乾淨的訊號源。
但——K 棒收盤前的訊號會反覆
Pine Script 對「當前 K 棒」的計算方式是這樣的:每一個 tick(成交跳動)進來,它都會用「假設這根 K 棒現在就收在這個價位」的前提重新算一次。所以你在圖表上看 Supertrend 的當前那一段,其實一直在被覆寫。
direction 值,在它收盤之前每個 tick 都可能不同。你把 alert 設成「Once Per Bar」,會在條件第一次滿足時就觸發——即使那個滿足只維持了半秒。K 棒收盤那一刻真正的 direction 可能完全相反。Pine 有兩個現成機制擋這件事。alertcondition() 在 TradingView UI 上可以選 Once Per Bar Close,這樣只有 K 棒收盤那一刻條件滿足才會觸發。barstate.isconfirmed 這個內建變數在 K 棒收盤那一刻才是 true,把它加進 if 條件裡就能過濾掉 intra-bar 的閃爍。
上面的範本是 strategy.entry 走 alert()/alert 條件的路線,正常路徑是靠 alert 建立時的觸發設定。如果你另外用 alertcondition() 拉一條自訂條件出來,那就一定要選 close 那個選項——不然前面講的一切就白做了。
接進 webhook 前必查的四件事
下面五條裡任何一條沒過,你的 Supertrend 訊號都會在盤中反覆或跟你想像的不一樣。全部過了再上實盤。
Once Per Bar Close 嗎?direction 在盤中會來回跳嗎?- Alert 建立時,觸發模式選 Once Per Bar Close,不要選 Once Per Bar。後者在條件第一次成立時就觸發,K 棒收盤前反覆是常態。
- 如果你自己寫
alertcondition(),或者 strategy 的進出場條件不想倚賴 UI 設定,就在條件裡加and barstate.isconfirmed。這是 Pine 官方推薦的 intra-bar 過濾方式。 - 用 TradingView 的 Data Window(右上角
{}圖示 → Data Window)看direction這欄的值。在盤中盯一根 K 棒的實時變化,如果它會來回跳,你的 alert 就會照跳一次。 - webhook payload 裡的
{{strategy.order.action}}是 TradingView 在觸發那一刻的訂單方向。K 棒沒收盤前送出去的方向,跟收盤後不見得一樣——所以第一件事一定要做,不然這條 payload 就是騙自己。 - 在 TVSBot 的 dashboard 開 dry-run(不實際下單、只跑執行流程)跑幾天,比對每一次 Supertrend 翻轉的圖表位置跟 dashboard 收到的訊號時間戳。有偏差就回去查前三條。
誠實的一段:Supertrend 不擅長的事
Supertrend 在單邊趨勢裡表現最好——鎖定方向後只吃順風。反過來,在盤整區它會被反覆打耳光:帶收得再寬,價格在中間震來震去終究會穿越某條線,然後翻回來、再翻過去。這不是參數沒調好,是這個指標的結構就會這樣。
它也只給你方向,不給你部位大小。從空翻多是 buy、從多翻空是 sell,但要 buy 多少、要不要加碼、什麼時候止盈,都是另一件事。TVSBot 的 payload 裡 margin_pct、tp_pct、sl_pct 這幾個欄位是 Supertrend 訊號之外你要自己決定的部分(webhook 自動交易的部位怎麼抓那篇拆得更細)。指標本身不知道你的帳戶大小,也不管你的風險胃納。
另一件實際使用者常忽略的事:Supertrend 的訊號是給那個時間週期的。你在 4H 圖上調好的參數,換到 15m 圖不能直接用。Multiplier 3 在 4H 是穩健,在 5m 上可能就是每兩小時一次翻轉。參數要跟你打算跑的 timeframe 一起調,不然你以為在跑一個保守策略,實際跑的是雜訊機。
常見問題
預設參數(ATR 10、multiplier 3)真的可以直接用嗎?
ta.supertrend() 常見的 demo 值、也是 TVSBot 範本的預設,但真正合不合適要看你的 timeframe 與標的的波動特性。用 TradingView 的 Strategy Tester 把 ATR 週期在 7 到 14、multiplier 在 2 到 5 之間各跑一輪回測,選出你能忍受最大回撤的那組。為什麼線的顏色翻了,但 direction 值沒變?
direction 那一欄可以直接看到當下的實際值。Once Per Bar Close 會不會讓我進場慢一根?
Supertrend 可以跟其他指標搭配嗎?
我用 Supertrend 送 webhook 給 TVSBot,可以在同一個 Pine 檔裡下多筆單嗎?
strategy() 的 pyramiding 參數預設是 0,意思是「同方向只允許 1 筆進場,之後的同方向 strategy.entry() 會被 rejected」。想真的加碼得在 strategy(...) 宣告裡顯式寫 pyramiding=2(或更大)。想開多個獨立部位就用 TVSBot 的 strategy 欄位在 payload 裡區分策略、或每個部位跑獨立的 Pine 檔。這件事跟 Supertrend 無關,跟 Pine 部位大小處理那類坑有關。Get started
把 Supertrend 的翻轉訊號接進交易所——TVSBot 用你自己的 API key、支援 dry-run、風控自己設。7 家交易所都能打。
免費開始使用