VALYNOX
VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
策略學院 / 指標與訊號

能量潮(OBV):計算方式與確認功能

能量潮會在 K 棒收盤上漲時加上該棒的成交量,收盤下跌時減去。只有當它的擺動高點或低點跟得上價格,才能確認走勢;座標軸上的數值本身沒有意義。把它當成基本規則上的明確過濾條件來測試,並納入交易成本,同時先檢查轉倉日。

作者 · 發佈 · 更新於 · 編輯原則

目錄
  1. 能量潮如何計算?它能確認價格走勢嗎?
  2. 如何在圖上判讀 OBV?
  3. 什麼是 OBV 背離?如何找到它?
  4. OBV 與單純成交量有何不同?
  5. 為什麼轉倉會扭曲期貨上的 OBV?
  6. 如何把 OBV 當成趨勢過濾條件來測試?我們的 NQ 測試結果是什麼?
  7. 常見問題
  8. 參考文獻

能量潮如何計算?它能確認價格走勢嗎?

能量潮(OBV)是成交量的累計值:當某根 K 棒的收盤高於前一根收盤時,加上該棒的成交量;收盤低於前一根時,減去該棒的成交量。只有當 OBV 自己的擺動高點或低點跟得上價格時,它才能確認價格走勢;它的絕對水準沒有意義,因為數值取決於起算日。

可以把 OBV 想成銀行存款餘額。每根收盤上漲的 K 棒都會存入該棒的成交量,每根收盤下跌的 K 棒都會提領該棒的成交量,收盤持平的 K 棒則不做任何變動。今天看到的餘額取決於你當初開始記帳的那一天,所以兩位交易者用不同的圖表歷史,看同一個市場會讀到不同的數字。OBV 指標頁面提供完整定義;本文談的是如何在期貨上讀懂並測試它。

值得記住的公式只有一條:

今日 OBV = 昨日 OBV + 今日成交量(若收盤上漲)、− 今日成交量(若收盤下跌),或不變(若收盤持平)

這裡的昨日 OBV 是前一根 K 棒之後的累計值,今日成交量是當根 K 棒成交的口數,收盤上漲指本根收盤高於前一根收盤。公式裡沒有任何一項在看價格變動了多少,只有變動的方向才有影響。

假設性範例

六根日 K 棒的收盤價依序為 100、102、101、101、104 與 103,成交量分別為 500、700、400、600、800 與 300 口。第一根 K 棒的 OBV 從零開始。第二根收盤上漲,加 700:OBV 為 +700。第三根收盤下跌,減 400:為 +300。第四根收盤持平:仍為 +300。第五根收盤上漲,加 800:為 +1,100。第六根收盤下跌,減 300:為 +800。若你早一週開始計算,每個數值都會平移相同的量,但形狀完全一樣。

OBV 是累計值:六根假設K棒收盤價為100、102、101、101、104、103,成交量分別為5、7、4、6、8、3百口。收高加上成交量,收低減去成交量,收平不變,故 OBV 為0、7、3、3、11、8百口 OBV 是累計值 假設資料,成交量以百口計 收盤 100 102 101 101 104 103 成交量 5 7 4 6 8 3 OBV 0 +7 +3 +3 +11 +8 只看收盤方向。 所以看形狀,不看水準。
OBV 是帶正負號的累計值,不是平均數。每根 K 棒會加上、減去,或讓累計值維持不變,取決於收盤的方向。

它能確認價格走勢嗎?只在一種狹義的意義上成立。當價格創新高、OBV 也創新高時,上漲伴隨著上漲 K 棒的成交量多於下跌 K 棒,這就是多數交易者說的「已確認」。當價格創新高、OBV 卻沒有時,上漲是建立在較薄的買盤之上。第二種情況是 OBV 裡唯一值得寫成規則的型態,本文其餘部分談的就是如何誠實地把它寫成規則。

如何在圖上判讀 OBV?

判讀 OBV 時,看它的斜率,以及它的擺動高點與低點是否與價格的擺動高點與低點相符;座標軸上的數值則忽略不看。這個水準只是起算日的產物,所以「OBV 的讀數是 2 百萬」本身不含任何資訊。「價格創更高的高點,OBV 卻出現較低的高點」才有資訊。

依序看以下三件事:

  1. 最近幾段擺動的斜率。OBV 上升,代表最近收盤上漲的 K 棒成交量多於收盤下跌的 K 棒。OBV 持平,代表兩邊大致平衡,不論價格怎麼走。
  2. 擺動高點。在價格上標出最近兩個擺動高點,並記下同一根 K 棒上的 OBV 值。若第二個 OBV 高點高於第一個,上漲即獲確認;若低於或等於,則未獲確認。
  3. 擺動低點。對下跌走勢做相反的檢查。價格創新低,而 OBV 的低點仍高於前一個低點,這就是交易者所說的多方背離。
兩個面板價格線都創更高高點:左側 OBV 也創更高高點,因此走勢獲得確認;右側 OBV 創較低高點,因此走勢未獲確認 價格相同,OBV 不同 比較兩個擺動高點 已確認 未確認 價格 OBV 價格 OBV 價格相同;只有 OBV 不同。 因此:比較擺動高點,而非價位。
兩個價格面板看起來一樣。只有 OBV 面板能區分已確認與未確認的走勢。

價格上漲而 OBV 持平或下降,是唯一值得訂成規則的型態。OBV 上其他看得到的訊息,例如「OBV 呈上升趨勢」,其實從價格本身就已經看得出來,因為收盤上漲與上升趨勢在構造上就是相伴而生的。價格圖下方附上 OBV 的圖表,最好把它當成失去零點刻度的磅秤來讀:讀數之間的差異有意義,讀數本身則沒有。

什麼是 OBV 背離?如何找到它?

OBV 背離是價格創出新的擺動高點(或低點),而 OBV 卻沒有跟著創新高(或新低)。只有在擺動定義、回看範圍與最小差距都寫成明確數字之後,它才能被測試。用肉眼判讀時,背離在哪裡全看讀者想看到什麼;寫成規則後,它在某根 K 棒上不是存在,就是不存在。

擺動高點是指某根 K 棒的最高價,高於其左右各 N 根 K 棒的最高價。這個 N,也就是擺動寬度,是你需要的第一個數字。第二個是回看範圍:前一個擺動高點可以往回推多少根 K 棒,仍然算是一組。第三個是最小落差:OBV 值必須比其前一個擺動高點低多少,才算是較低的高點。通常會寫成近期 OBV 波動範圍的百分比,這樣才不會因起算日而改變。

價格在第一個高點之後20根K棒,形成更高的擺動高點,而OBV則形成更低的高點;圖中標示了使此背離可供檢驗的三個輸入值:擺動寬度、20根K棒回看期間,以及OBV最小差距百分比 背離需要三個數字 先固定,再看圖 價格 OBV 回看20根K棒 擺動寬度 差距 % 三個數字,讓觀察變成規則。 所以:先寫下它們,再看圖表。
只有在擺動寬度、回看範圍與 OBV 最小落差都寫成數字之後,背離才能被測試。

這個定義會帶來兩個結果。第一,訊號是延遲的。寬度為 5 的擺動高點,要等到高點之後的第 5 根 K 棒才能確定,所以背離規則至少要在第二個擺動點之後 5 根 K 棒才會觸發。希爾伯特震盪器的週期讀數也有相同的性質,原因相同:轉折點要等後面的 K 棒證明那是轉折,才能被辨認出來。第二,擺動寬度與回看範圍的選擇會改變你找到的東西,就像費波那契回檔測試中,錨點的選擇決定了它量測的是什麼。Lo、Mamaysky 與 Wang(2000)指出,圖表型態可以用演算法定義,然後加以計數;這正是 OBV 背離應該接受的標準。

許多圖表工具會替你畫出背離標記。在把這些標記用於測試之前,請先確認每個標記是放在哪一根 K 棒上。許多標記放在擺動點那根 K 棒上,但其實要等到好幾根 K 棒之後才可能知道,這跟回測 LuxAlgo 訊號或其他任何手繪標記都會遇到的時間問題是同一件事。

OBV 與單純成交量有何不同?

單純成交量只說明某根 K 棒成交了多少,沒有方向;OBV 則依收盤方向給每根 K 棒一個正負號並加以累計,所以 OBV 帶有方向,卻捨棄了價格變動的幅度。一根只上漲一個跳動點、成交量很大的 K 棒,對 OBV 的加總影響,和一根在相同成交量下大漲 100 點的 K 棒完全相同。單純成交量無法告訴你哪一方比較積極;OBV 則無法告訴你走勢的力道有多強。

屬性單純成交量OBV
K 棒數值是什麼該 K 棒成交的口數帶正負號成交量的累計值
是否有方向否是,依收盤方向決定
是否記得之前的 K 棒否是,記得自起算以來的每一根
收盤上漲 1 個跳動點與上漲 100 點成交量相同時讀數相同成交量相同時讀數相同
是否受起算日影響否是,水準會平移;形狀不變
是否受合約轉倉影響轉倉日出現下降與尖峰在累計值中形成永久性的階梯
普通量與 OBV 比較:普通量沒有方向也沒有記憶,OBV 依收盤價決定方向並記住每一根 K 棒;兩者都忽略價格變動幅度;起始日期會改變 OBV 水位;換月造成量能的低點與高點,但會在 OBV 留下持續的階梯 OBV 加入的是[方向],不是幅度 普通量 OBV 方向 無 有 記憶 無 每根 K 棒 變動幅度 忽略 忽略 起始日期 無影響 改變水位 換月 低點、高點 階梯保留 OBV 加入的是方向,不是幅度。 因此:兩者都不能取代動能指標。
OBV 保留方向,但失去幅度。單純成交量保留幅度,卻沒有方向。

正因如此,兩者在規則中不能互相替代。像「只有成交量高於其 20 根 K 棒平均時才交易」這樣的成交量過濾條件,問的是市場是否活絡。OBV 過濾條件問的則是近期的成交偏向買方還是賣方。兩者都忽略了每根 K 棒價格變動的大小,所以都無法取代動能讀數。OBV 在其他常見工具中的位置,可參考可以測試的技術分析工具與指標指南。

為什麼轉倉會扭曲期貨上的 OBV?

在轉倉前後的幾天裡,成交量會從即將到期的合約移到下一個合約。如果連續序列是每次只用一個合約拼接而成,就會出現成交量的下降與尖峰,而 OBV 會把它們變成累計值中的永久階梯。由於 OBV 從不遺忘任何一根 K 棒,轉倉日的扭曲不會自行消失,它會永遠留在水準中,並使之後的每一個擺動高點與低點都平移相同的幅度。

連續序列是把不同到期月的合約依序接起來的價格歷史,讓策略能像在同一個商品上一樣,跨越多個到期日進行測試。轉倉是指序列停止使用即將到期的合約,改用下一個合約的那個時點。以 NQ,也就是那斯達克 100 迷你期貨為例,合約每季到期,分別是 3 月、6 月、9 月與 12 月,而交易從一個合約移到下一個合約,是發生在到期前的幾天裡,而不是在某一刻跳轉。交易所可能會更動合約月份與到期規則,因此在建立轉倉時程之前,請先到交易所的合約頁面確認最新的合約規格。這個市場的時程細節,可參考NQ 合約何時轉倉,以及如何依成交量轉倉。

十個交易日的轉倉示意圖:即將到期合約的成交量逐漸降至零,下一個合約的成交量上升;連續月切換合約當天,OBV 出現階梯式下跌,且之後每個數值都保留此跌幅 轉倉會留下持續性階梯 轉倉前後十個交易日 示意圖 到期 次月 轉倉日 成交量 OBV 持續性階梯 轉倉階梯永遠不會消失。 所以:先檢查轉倉日。
示意範例。轉倉前後在合約之間移動的成交量,會在連續 OBV 中形成一個永遠不會消失的假階梯。

轉倉時有三件事會出錯,每一件都會留下痕跡:

  1. 即將到期合約的成交量在轉倉前幾天下降。OBV 加減的量變小,因此線條變得平坦,但原因與買賣雙方毫無關係。
  2. 新合約的第一根 K 棒可能出現很大的成交量數字,而序列在切換處的價格變化,有一部分來自合約間的跳空,而非市場的實際變動。OBV 會加上或減去整個數字,而其正負號來自那個跳空。
  3. 如果序列在價格上做了回溯調整,但成交量沒有對應調整,用來給成交量正負號的收盤方向,可能來自某個合約,而成交量卻來自另一個合約。

實務上有兩個處理方法。第一,使用你每天實際交易的那個合約的成交量,並依成交量而非日曆來轉倉,這樣成交量序列本身就不會有缺口。第二,在相信任何 OBV 擺動點之前,先檢查資料中每次轉倉前後一週內的 K 棒,確認那裡的 OBV 階梯與你正在量測的擺動相比足夠小。以 NQ 日線資料來說,也就是每年大約要檢查四段時間。

如何把 OBV 當成趨勢過濾條件來測試?我們的 NQ 測試結果是什麼?

把 OBV 轉成一條明確的規則,在相同交易成本下分別執行有過濾與無過濾的基本策略,並以納入交易成本後平均每筆損益的變化來評斷過濾條件。趨勢過濾條件是一種能允許或阻擋另一條規則進場的條件,它本身不會產生進場訊號。「OBV 高於它自己的 50 根 K 棒移動平均時允許做多;低於它時允許做空」就是一個完整的過濾條件。「OBV 看起來很強」則不是。

步驟的順序很重要,因為過濾條件只能相對於它所過濾的那條規則來評斷:

  1. 先寫下基本的進場與出場規則,不加過濾條件,並固定 K 棒週期、交易時段與市場。
  2. 把 OBV 過濾條件寫成精確的條件:使用哪一個移動平均長度、採用哪一種比較方式,以及它只作用於進場,還是也會強制出場。
  3. 單獨執行基本規則,每筆交易都計入手續費與滑價。
  4. 執行基本規則加上過濾條件,所有設定都相同,只改變過濾條件。
  5. 比較納入交易成本後的平均每筆損益與交易次數。好的過濾條件會提高平均每筆損益,同時保留足夠的交易次數,好讓你能做判斷。如果一個過濾條件把 120 筆交易砍到只剩 20 筆,那它並沒有改善規則,只是把樣本拿掉了。
測試 OBV 過濾器的五個步驟:撰寫基礎規則、撰寫 OBV 過濾器、執行含交易成本的基礎規則、執行基礎規則加上過濾器,並比較平均每筆損益;箭頭從比較步驟迴圈回過濾器步驟,且只改變過濾器 測試 OBV 相對於基礎規則 五個步驟,相同成本 1 2 3 4 5 撰寫基礎規則 撰寫 OBV 過濾器 執行基礎,含成本 執行基礎 + 過濾器 比較平均每筆損益 只改變 過濾器 每次執行之間只有過濾器改變。 因此:以平均每筆損益和筆數判斷。
先基本規則,後過濾條件,兩次執行都使用相同的交易成本。第三次與第四次執行之間,只有過濾條件改變。

用來比較的報表長什麼樣子?以下是 AlphaPrime(Valynox)在 NQ 日 K 棒上的一次實際執行,期間為 2019-01-02 至 2025-06-30,做多與做空,1 口,每筆交易計入 $20 手續費與 $10 滑價。它並不測試 OBV。它的唯一進場與出場規則是分形(Fractal)規則,沒有停損、沒有停利,也沒有任何過濾條件,因此它只是一條替代的基本規則,就像你在第一步會建立的那種規則。另外,它是搜尋嘗試的 1,024 組中,唯一被保留下來的候選策略,因報酬相對於回撤而被挑選;事後才挑出被保留的那一組,會讓它的結果被美化。Bailey 等人(2014)說明了為什麼在眾多嘗試中選出的最佳結果,會高估同一條規則在新資料上的表現。

來源:AlphaPrime 產品引擎(CPU),2026-10-31 執行。NQ 日線,2019-01-02 至 2025-06-30,多空都做,1 口,每筆手續費 $20、滑價 $10。

項目結果
淨利(已平倉)$119,660
最大回撤$30,220
交易筆數124
勝率58.06%
獲利因子1.722
平均每筆$965
在場時間12.44%
觀察回撤的深度相對於上漲幅度的比例,以及標示的樣本外區段,其斜率與前段相比如何。加上過濾條件的執行結果,將以同樣兩個特徵來評斷。
觀察回撤的深度相對於上漲幅度的比例,以及標示的樣本外區段,其斜率與前段相比如何。加上過濾條件的執行結果,將以同樣兩個特徵來評斷。 NQ · 日線 · 2019-01-02 至 2025-06-30 · CPU 引擎回測

請把這個方塊當成基準線來讀,而不要把它當成 OBV 的結果。納入交易成本後,平均每筆損益為 $965,共 124 筆交易,最大回撤為 $30,220,在場時間為 12.44%。如果你在這條基本規則上加入 OBV 過濾條件,第五步的問題就很具體:納入交易成本後的平均每筆損益是否高於 $965?124 筆交易還剩下多少?回撤的減少幅度是否大於淨損益的減少幅度?這些數字才能告訴你過濾條件是否值得留下,而這些數字無法單從 OBV 圖上讀出。在看到過濾後的結果之前,就先寫下它的通過門檻,這和 AlphaPrime 策略檢驗的做法相同:它要求每一個候選策略都必須符合在搜尋開始前就設定好的門檻。Park 與 Irwin(2007)回顧了數十年的技術規則研究,發現結果高度取決於交易成本與被測試變體數量的處理方式,這正是兩次執行都必須採用相同交易成本的原因。

下一步由你自己執行。載入你自己的 NQ 日線資料,標出轉倉日,並使用你實際交易的那個合約的成交量來計算 OBV。把過濾條件寫成一行,只用一個移動平均長度。接著執行你的基本規則兩次,一次加上過濾條件,一次不加。在看任何一條權益曲線之前,先把每次執行的納入交易成本後平均每筆損益與交易次數記下來。

常見問題

OBV 的數值多少才算好?

OBV 的數值沒有好壞之分。它是一個累計值,從你圖表歷史的起點開始計算,所以座標軸上的數字會隨起算日而移動。請看斜率,並比較 OBV 與價格各自的擺動高點與低點。價格上漲而 OBV 持平或下降,是最值得注意的型態。

OBV 是領先指標嗎?

OBV 是由當根 K 棒的收盤方向與成交量算出來的,所以這條線本身並不領先價格。交易者從中讀到的背離型態,只有在第二個擺動點完成之後才能辨認,這表示背離規則會在擺動點之後的好幾根 K 棒才觸發。這種延遲的訊號是否仍對策略有幫助,要由納入交易成本的回測來回答,而不是指標本身的性質。

OBV 能用在期貨合約上嗎?

任何有成交量的 K 棒序列都能計算 OBV,包括期貨。期貨上的特定問題是合約轉倉:成交量會在好幾天內從即將到期的合約移到下一個合約,而一次只用一個合約拼接的連續序列,會把那些下降與尖峰變成 OBV 中的永久階梯。請使用你實際交易的那個合約的成交量,並在相信任何擺動點之前,檢查每次轉倉前後的 K 棒。

OBV 能用在盤中 K 棒上嗎?

可以,5 分鐘 K 棒的計算方式與日 K 棒相同。但有兩件事會不同。成交量集中在特定時段,因此不論趨勢如何,OBV 都會在開盤與收盤附近最快上升或下降,而每個交易時段的開始是重設累計值的自然時點,這樣隔夜成交量就不會主導結果。測試前請先寫下重設規則,因為它會改變之後的每一個 OBV 數值。

參考文獻

  • Lo, A. W., Mamaysky, H., & Wang, J. (2000). Foundations of Technical Analysis: Computational Algorithms, Statistical Inference, and Empirical Implementation. The Journal of Finance, 55(4), 1705–1765.
  • Park, C.-H., & Irwin, S. H. (2007). What Do We Know About the Profitability of Technical Analysis? Journal of Economic Surveys, 21(4), 786–826.
  • Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.
  • CME Group. E-mini Nasdaq-100 Futures Contract Specs. https://www.cmegroup.com/markets/equities/nasdaq/e-mini-nasdaq-100.contractSpecs.html