技術分析 · 成交量指標

VWAP 是什麼?
為什麼機構看這條線、散戶卻常常用錯

2026-08-18·10 分鐘閱讀

你在圖上拉了條 VWAP,用它當多空分界線——上方就做多、下方就做空。跑幾天之後你會發現,這條線每天開盤 flip 一次,中間常常無感觸發。照著做的日子甚至比不看它還糟。

沒有人先跟你講的是:VWAP 從設計之初就不是拿來預測方向的——它是機構做完一筆單之後,用來檢查「我這筆執行有沒有比市場的平均成本差」的計分板。把計分板當進場訊號,就像看溫度計來決定要不要感冒。

這篇不重複 VWAP 的公式與圖表操作——那些在 Volume Profile / VWAP / TWAP 完整教學 已經寫過。這裡只講四個散戶把它用錯的地方,以及少數幾種它真正有意義的用法。

先講結論:兩邊看的是同一條線,用途完全不同

同一個 VWAP 數字,在機構桌上與散戶圖表上代表的意義幾乎不重疊。這張表是給你比對用的,不用背——後面每一節會拆一遍。

機構執行台散戶圖表
拿來做什麼事後檢查執行成本事前預測進出場
時間軸從自己下單開始、到單子做完為止整個交易日
怎麼算勝負成交均價比 VWAP 差幾個 bp價格穿越 VWAP 有沒有續走
誰在推動這條線不含自己這筆單包含所有人的單,包括你
重置點自己單子的起點當日開盤(一個習慣)

落差一:VWAP 是給執行後打分用的,不是給進場前預測用的

VWAP 這個指標最早出現在機構的 execution desk,用途是解決一個很具體的問題:一個大單子被拆成幾百筆小單塞出去之後,怎麼證明自己「沒有把市場推很多」?

於是就有了 Σ(price × volume) / Σ(volume) 這個公式——它不是猜下一筆會走去哪,而是把整段時間裡的成交,按量加權平均起來。做完單之後,把自己的平均成交價跟這個數字相減,差距用 basis point(bp,也就是一個百分點的百分之一)報回去。這是一種回頭看的計分板。

散戶拿到這條線的時候順序反過來:它已經被畫在 K 線上,看起來像一條可以「反彈」的支撐。但這條線的每個點都是過去成交價的加權平均,跟未來沒有結構性的關係。它在圖上長得像均線,只是因為它每根 K 棒都往前算一次。

機制與後果分開講
這件事對你的影響是:VWAP 適合放進「回顧」——這一天我進出場的均價比 VWAP 好還是差幾個 bp;不適合放進「觸發」——價格穿過 VWAP 就做多。前者是它被設計來做的事,後者是把工具反過來用。

落差二:跨日累積的 VWAP 是自己發明出來的

TradingView 的 ta.vwap() 預設在每個 session boundary(也就是交易時段的邊界,例如美股每天 9:30 開盤那一刻)重置。Pine Script v5 以後允許你自己指定 anchor(ta.vwap(source, anchor, stdev_mult)),可以是 session、week、month,或任何你自己算出來的 bool 條件。

但常見的一種誤用是:把 anchor 設成 barstate.isfirst、然後從資料的第一根 K 棒一路累積下去,用意是「拿到一條穩定的長期均線」。這條線在圖上看起來很平滑,但它已經不是 VWAP 了,它是「從你可看到的歷史起點以來的成交量加權平均價」。這個數字沒有任何機構會拿去用。

1 天
VWAP 的原始重置週期(傳統股市)
自訂
Pine v5 起可以指定的 anchor 粒度
0
「歷史起點累積 VWAP」在機構執行桌的實際用途

想要一條「跨日的成交量加權平均」,那個東西叫 anchored VWAP:從某個明確事件開始重新累積——某次財報、某次跳空缺口、某個減半日。它有意義是因為 anchor 本身是事件;從歷史第一根 K 棒起不算事件,只算「Pine 有多少資料」。同一條腳本換一個交易對、換一段時間範圍,那條線的位置就完全不同。

落差三:VWAP 假設你不會推動市場——加密散戶剛好相反

再回頭看那個公式:Σ(price × volume) / Σ(volume)。「量」這一項是市場的量——所有人的成交加起來。機構的假設是「我的單子相對市場很小,我加進去也不會歪太多」,這在美股大盤股上大致成立。

加密散戶身上這個假設常常反過來。原因不是散戶單子大,而是「這條線是哪個交易所的 VWAP」這件事本身就很糊。BTC 在幣安、OKX、Bybit、Coinbase 之間同時報價,每個交易所自己的 VWAP 都不一樣,也都只反映自己那一小塊的成交。你在 TradingView 拉出來的 VWAP 通常掛在某個單一交易所的資料源上,那條線代表的是那一個交易所的加權平均,不是「市場」的平均。

這種錯不會吵,它會安靜地壞掉
單一交易所的 VWAP 在流動性最深的那家(例如 BTC 的幣安 spot)跟聚合資料很接近,你不會發現差異。但一到二線標的,同一個時間點不同交易所的 VWAP 差 0.3~0.8% 是常態——你以為的「跌破 VWAP」在別家可能還在 VWAP 上方。

落差四:把 VWAP 當均線做交叉,是把它當成了另一個東西

這是新手 Pine Script 最愛寫的策略:close 上穿 ta.vwap 進場、下穿出場。回測跑起來曲線看起來還行,實盤跑一個月你會看到它整天在 flip。

原因很簡單:VWAP 每天重置,均線不會。開盤那幾根 K 棒 VWAP 幾乎貼著價格,因為累積量小、權重被最新那根 K 棒吃走大半,任何一個小波動都會觸發穿越。真正的均線用一段固定歷史窗口做平均,開盤時它跟昨天差不多,不會這樣過度反應。

更根本的問題是:均線與 VWAP 在「單位」上就不一樣——EMA(20) 是「最近 20 根 K 棒的價格趨勢」,VWAP 是「今天到現在為止量分佈的中心」。把兩個放在同一個規則裡當交叉條件,等於用溫度計跟血壓計比大小。

1
你想從 VWAP 拿到什麼?
檢查我這一筆單的執行成本正解。做完單之後把成交均價跟同時段 VWAP 相減,用 bp 表達。
把它當均線做交叉換成 EMA / SMA。VWAP 每天重置,開盤幾根 K 棒的訊號幾乎全是噪音。
找出某個事件之後的平均持倉成本用 anchored VWAP,把 anchor 設在事件那根 K 棒,不要從歷史起點累積。
當作日內的多空分界線對很短線的日內交易有一定意義,但要接受它每天早上會失效一次。搭配成交量條件過濾。

那什麼時候用 VWAP 才是對的?

兩種用法在既有的機構工作流裡是穩定的,散戶照著用不會走偏:

用法一:檢查自己的執行成本

你這一天做了幾筆單,把每筆的成交均價跟同一時段的 VWAP 相減。這是機構桌上 execution trader 的日常 KPI:你的均價比 VWAP 好,代表你這筆單的時機沒有拖累市場;比 VWAP 差,代表你追高或殺低了。這對散戶也成立,尤其是分批建倉或分批平倉的情況——它比「我上次進場的價格是多少」更能告訴你節奏對不對。

用法二:anchored VWAP,掛在具體事件上

這是 Brian Shannon 這一路人推廣起來的用法:把 anchor 掛在某個所有人都看到的事件——財報公佈那根 K 棒、跳空缺口的那根 K 棒、某次減半、某次協議升級。從那個 anchor 開始算的 VWAP,代表「這個事件之後所有進場的人的加權平均持倉成本」。這條線在圖上有一個具體含義:如果你是那個事件之後才進場的人,你現在是賺還是賠、賺賠幅度平均在哪。

用 Pine 寫起來的骨架是這樣(v5 起 ta.vwap 就吃 anchor 參數):

pine
//@version=5
        indicator("Anchored VWAP from event", overlay=true)

        // 讓你在圖上點一根 K 棒當 anchor(input.time 可以用滑鼠指定)
        anchorTime = input.time(timestamp("2026-01-01T00:00:00+00:00"), "Anchor 事件時間")

        // 這根 K 棒的開盤時間到了 anchorTime,就重置累積
        newAnchor = time >= anchorTime and time[1] < anchorTime

        // ta.vwap 的第二個參數就是 bool 型的重置訊號
        avwap = ta.vwap(hlc3, newAnchor)
        plot(avwap, "Anchored VWAP", color.orange, 2)
anchor 要能對外解釋
自己隨便挑「今天早上 10:03」當 anchor 是沒意義的——那個時間沒有任何人跟你共享。anchor 要選市場上有共識的事件:新聞、公告、跳空缺口、明確的技術破位。這樣算出來的線才對得起「其他人的持倉成本」這個含義。

誠實的一段:這條線的極限

就算你把它用對了,VWAP 還是有幾件事做不到,先寫在前面:

  • 不會告訴你方向——它只是把過去成交往一個中心壓過去,中心點本身沒有預測力。
  • 對低流動性的標的意義很弱——量太少的時候,加權跟不加權差不了多少。
  • 加密盤本來就 24 小時,若又用短週期切 anchor,樣本點會太少,算出來抖動很大。

比較安全的做法:把 VWAP 當成一個補充濾網——你的主策略是某個突破、某個型態、某個訊號,VWAP 只是拿來做「這個訊號發生在多方成本上方還是下方」的分類器。不要讓 VWAP 自己當進場條件。

如果你已經在跑 TradingView webhook

webhook 就是 alert 觸發時把 JSON payload 送到你自己伺服器的那條通道。最常見的做法是把 VWAP 的條件寫進 Pine 策略裡當過濾器:strategy.entry 只在「訊號成立 而且 close 在 anchored VWAP 上方」時才觸發。這樣真正發出去的 alert 是有過濾的,webhook 端不需要再判斷。

這種寫法的坑不是 VWAP 本身,是「訊號的 timing 跟 K 棒收盤的關係」——如果你用 barstate.isconfirmed 才觸發,訊號會晚一根 K 棒;如果不用,你會拿到會消失的訊號(Pine Script 的 Alert 沒有記憶那篇解釋過為什麼)。把 VWAP 加進來之前先確定這件事沒踩到。

常見問題

TradingView 內建的那條 VWAP 是哪個交易所的?
你圖上 chart 的資料源那家。BTCUSDT 在圖表右下角顯示的是 BINANCE 就是幣安的、BYBIT 就是 Bybit 的——切換交易所資料源,VWAP 也會跟著變。沒有一條「全市場」的 VWAP,要自己拿幾家的資料算加權平均。
anchored VWAP 跟一般 VWAP 差在哪?只是換個起點嗎?
差別就在起點,但意義完全不同。一般 VWAP 以「當日開盤」重置,反映的是這一天的執行成本;anchored VWAP 以「某個事件」為起點,反映的是「這個事件之後進場的人的平均持倉」。前者是一天內的紀律工具,後者是跨時段的成本地圖。
為什麼 Pine 內建的 ta.vwap 預設不能算跨日?
它可以,只是預設不這樣做。ta.vwap(source, anchor) 的第二個參數是 bool,你可以在裡面自己算出「每週一開盤」或「某個事件時間」再送進去。但預設值是 session 重置,這是刻意的——把跨日累積做預設會誤導絕大多數使用者。
我把 VWAP 當做多空分界線在做日內交易,是不是完全不對?
不是完全不對,但要接受兩件事:它每天重置,開盤前 1~2 小時的訊號幾乎全是噪音;還有它會被大量成交把權重拉走,某一根 K 棒有巨量成交的時候 VWAP 會跳一下。用它當分界線的話,加一個「不在開盤 60 分鐘內」的過濾器會少踩一半的坑。
機構的 VWAP algo 跟我在 TradingView 看到的 VWAP 是同一個東西嗎?
數學是同一個,用途相反。機構的 VWAP algo 是執行工具——把大單子拆成小單,讓自己的成交均價貼近 VWAP。你在 TradingView 看到的是顯示工具——把已經成交的資料算出一個中心線畫給你看。同一個公式,一邊用它決定怎麼下單、一邊用它決定畫在哪裡。

Get started

想把今天學到的東西自動化跑起來?

把 anchored VWAP 過濾器加進你的 Pine 策略,webhook 到交易所這段交給 TVSBot——用你自己的 API key,先 dry-run,風控自己設。

免費開始使用