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

CCI 順勢指標:公式、±100 水位與期貨回測方法

CCI 衡量典型價偏離其移動平均的程度,並以 0.015 縮放,使多數讀數落在 ±100 之內。同一個 ±100 穿越,可以當成反轉規則,也可以當成突破規則;兩者方向相反,必須當成各自獨立的候選策略來測試,成本要在第一次執行前設定好。

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

目錄
  1. CCI 指標如何計算?
  2. CCI 到哪個水位算超買或超賣?
  3. 反轉還是突破:±100 該往哪個方向交易?
  4. CCI 設定:14 或 20 週期?
  5. CCI 與 RSI、KD 有何不同?
  6. CCI 規則在不同期貨市場表現如何,回測該怎麼讀?
  7. 常見問題
  8. 參考文獻

CCI 指標如何計算?

CCI 指標(Commodity Channel Index)衡量一根 K 棒的典型價偏離自身移動平均的程度,單位是回看期間的平均距離。常數 0.015 讓多數讀數依設計落在 −100 與 +100 之間,超出這兩條線的讀數,就是 CCI 規則交易的區間。

四個量構成讀數。典型價是一根 K 棒最高價、最低價與收盤價的平均。均線是典型價在 N 根 K 棒上的簡單移動平均,N 是你設定的週期(常見選擇是 14 與 20)。平均偏差是最近 N 個典型價與該均線之間絕對距離的平均,描述典型價平常會偏離多遠。完整定義放在CCI 順勢指標(商品通道指數)頁面;值得記住的公式只有一個:

CCI = (典型價 − 均線) ÷ (0.015 × 平均偏差)

其中典型價 − 均線是今日偏離均線的距離,平均偏差是正常距離,0.015是固定的縮放常數。除以正常距離,讀數就變成「目前偏離了幾個正常距離」;常數再把這個數字放大,讓一般的 K 棒落在 ±100 之內。常數不是要調的設定,要調的是週期。CCI 在其他震盪指標與通道工具之中的位置,以及哪些能寫成固定規則,見技術分析工具與指標這篇指南。

假設性範例

假設今日典型價為 101,典型價的 20 根均線為 100,這 20 根 K 棒的平均偏差為 0.5。距離均線 1。CCI = 1 ÷ (0.015 × 0.5) = 1 ÷ 0.0075 ≈ 133。價格高出均線兩個正常距離,讀數在 +100 之上。若平均偏差改為 1.0,同樣的價格讀數約為 67,仍在正常區間內。

CCI 的四步驟計算方式:典型價、典型價在 N 根 K 棒上的簡單平均、與該均線的平均偏差,最後 CCI 等於與均線的距離除以 0.015 乘以平均偏差;0.015 只負責設定刻度,讓多數讀數落在正負 100 之內 價格到 CCI 的四步驟 0.015 讓多數讀數落在 ±100 內 1 2 3 4 典型價 均線 平均偏差 CCI TP = (H + L + C) ÷ 3 均線=N 根 TP 平均 MD=平均|TP−均線| (TP − avg) ÷ (0.015 × MD) 0.015 只決定刻度。 所以:調週期,不調 0.015。
從價格到 CCI 的四個步驟。0.015 常數只在最後一步出現,且只用來設定刻度。

CCI 到哪個水位算超買或超賣?

一般慣例是讀數高於 +100 為超買、低於 −100 為超賣,±200 為極端;但這些是線經常進出的區間,不是罕見的訊號。刻度的設計讓多數讀數落在 ±100 之內,也就是說有一定比例的讀數會落在外面。強趨勢可以讓讀數連續多根 K 棒停在 +100 之上,指標一路喊「超買」,價格卻持續上漲。

寫規則用三個區間就夠。±100 之內是正常區間,價格靠近均線。±100 到 ±200 之間是超買或超賣區間,價格被拉開。±200 之外是極端區間,線較少到達,通常出現在快速行情或波動衝擊時。線在各區間停留多久,取決於市場、K 棒週期與週期設定,所以實用的做法是用自己的資料計數:載入你的 K 棒,選好週期,數出 ±100 之外的 K 棒占比。這個占比說明反轉規則多常進入待命、突破規則多常觸發。

60 根 K 棒上的示意 CCI 線,正常區間在負 100 到正 100 之間,超買與超賣區間在正負 100 之外,極端區間在正負 200 之外;線數度離開正常區間,這些段落以醒目標示 線經常離開 ±100 60 根示意 K 棒上的 CCI +200 +100 −100 −200 極端 超買 正常 超賣 極端 ±100 之外是常態,並不罕見。 所以:用自己的 K 棒來數。
CCI 的三個區間。線會定期離開正常區間,所以 ±100 是建立規則的條件,本身不是訊號。

同一個水位有兩種解讀。均值回歸的交易者把 +100 讀成「拉得太遠,可能回來」;趨勢交易者把 +100 讀成「夠強,可以跟」。兩種解讀各自都不算錯;下一節會說明,它們產生的交易方向相反。

反轉還是突破:±100 該往哪個方向交易?

同一個 ±100 穿越,可以寫成反轉規則,也可以寫成突破規則;兩者在同一根 K 棒上方向相反,必須當成各自獨立的候選策略來測試。反轉規則屬均值回歸,等線從超買或超賣區間回來後,逆著走勢交易。突破規則屬趨勢規則,線進入該區間時進場,順著走勢交易。

規則要素突破(趨勢)規則反轉(均值回歸)規則
多單進場CCI 向上穿越 +100CCI 先低於 −100,再向上穿回
空單進場CCI 向下穿越 −100CCI 先高於 +100,再向下穿回
常見出場CCI 逆著部位穿越零軸CCI 回到零軸,或持有固定根數的 K 棒
持有時間較長;跟著趨勢走較短;吃下回彈
適合的市場趨勢段盤整段
典型失敗線在 ±100 附近徘徊時來回被洗逆著持續超出 ±100 的趨勢交易
同一條 CCI 線在兩種規則下:突破規則在線向上穿越正 100 時做多,向下穿越零時出場;反轉規則在線向下穿回正 100 時做空,到零時出場,所以在那根 K 棒上,一種規則做多,另一種做空 同樣的穿越,相反的交易 一條 CCI 線,兩種規則 突破規則 反轉規則 +100 0 做多 做空 出場 出場 同一根 K 棒:這裡做多,那裡做空。 所以:當成兩個候選策略來測。
一條 CCI 線,兩種規則。在突破規則仍持多單的那根 K 棒,反轉規則做空。

測試前,把每個規則的每項條件固定下來寫明:哪個穿越進場、哪個穿越或水位出場、是否雙向交易。「交易 ±100 線」不是規則;「收盤穿越 +100 時做多,收盤跌破 0 時出場」才是。把兩種方向混在同一個候選策略裡,例如先用突破進場,後來因為權益曲線偏弱,又加上反轉濾網,檢驗就變成了湊合歷史資料的練習。

突破版本與Supertrend 指標的翻轉邏輯屬同一類,兩者都在走勢已顯示強度之後才進場。差別在於衡量的對象。Supertrend 在收盤穿越一條與價格相距平均真實區間倍數的線時翻轉,所以反應的是價格走過一段與波動相稱的距離。CCI 突破則在偏離均線的距離超過正常距離的某個倍數時觸發,反應的是偏離本身。Supertrend 通常隨時都在市場中,因為每次翻轉都會反向建立部位;CCI 突破有獨立的出場,也會有空手的時間。把兩者放在同樣的 K 棒上測試,就能知道你的市場獎勵的是「在與波動相稱的走勢之後跟進」,還是「在偏離均線之後跟進」。

CCI 設定:14 或 20 週期?

14 與 20 本身都不是正確的 CCI 設定;正確的週期,是相鄰數值在扣除成本後表現相近的那一個。週期較短,均線與平均偏差反應較快,線穿越 ±100 更頻繁、更早,交易更多,雜訊也更多。週期較長,兩者都更平滑,線穿越較少、較晚,交易較少、進場較晚,被洗的次數也較少。

影響CCI(14)CCI(20)
±100 的穿越次數較多較少
同一次穿越的時點較早晚數根 K 棒
每年交易筆數較多較少
成本拖累較高,因為更多筆交易都要付手續費與滑價較低
±100 附近的來回洗盤較多較少
錯過行情起點較小較大
同一段價格上的兩條示意 CCI 線:14 週期線五次越過正負 100,20 週期線三次,同一波走勢上,20 週期線比 14 週期線晚數根 K 棒穿越 短週期穿越更多 圓點標示每次越過 ±100 +100 −100 CCI(14) 5 次穿越 CCI(20) 3 次穿越 14 穿越更頻繁、更早。 所以:測一整段週期範圍。
同一段價格在兩種週期下的表現。較短的週期穿越更頻繁、更早;較長的週期穿越較少、較晚。

選擇的方法是測一個範圍,而不是一對數字。用大約 10 到 30 的週期、每次間隔 2 逐一執行規則,每次的手續費、滑價與下一根 K 棒成交設定都相同,再把扣除成本後的平均每筆損益,對週期畫成一條線。好結果是一片高原:相鄰的一段週期,例如 16 到 24,平均每筆損益都相近。壞結果是尖峰:18 看起來不錯,16 與 20 都不好。Pardo(2008)把這種高原檢驗視為最佳化參數的基本檢查,道理並不複雜。實單交易時的價格不會與你的歷史一樣,只在某個確切數值才有效的設定,描述的是那段歷史裡的雜訊。從高原中間挑週期,並把高原的寬度記進候選策略的說明。

週期也決定交易筆數,而交易筆數決定結果有沒有意義。日 K 棒上的 20 週期反轉規則,一年可能只產生寥寥數筆交易;同一規則在 15 分鐘 K 棒上,會產生數百筆。比較 14 與 20 之前,先以完成的交易筆數而不是年數來判斷樣本。

CCI 與 RSI、KD 有何不同?

RSI 與 KD 限制在 0 到 100 之間,CCI 沒有上限,所以強趨勢中 CCI 持續上升,RSI 與 KD 則在接近上限處走平。三者衡量的東西也不同。RSI 比較期間內的平均漲幅與平均跌幅,如 Wilder(1978)所述。KD 即隨機指標 KD(Stochastic Oscillator),把收盤價放在期間最高價到最低價的區間內。CCI 以正常距離為單位,衡量與均線的距離。RSI 與 KD 是不會超過 100 的比值,持續上漲的趨勢會把它們推向上限,到了那裡,它們就不再告訴你走勢有多強。CCI 沒有上限,拉開得更大,讀數就單純更高。

屬性CCIRSIKD(隨機指標)
刻度無上下限0 到 1000 到 100
輸入典型價與其均線的距離平均漲幅對平均跌幅收盤價在期間高低區間內的位置
常見水位±100,極端為 ±20070 與 3080 與 20
強趨勢中的表現持續上升在上限附近走平在上限附近走平
天然適合的規則類型反轉或突破以反轉為主以反轉為主,常搭配 %K/%D 交叉
一段穩定的示意上升趨勢中的三個震盪指標:RSI 與 KD 上升後,在 100 的上限下方走平,CCI 因為沒有上限而持續上升 CCI 沒有上限 一段穩定上升趨勢中的三個震盪指標 RSI KD CCI 止於 100 止於 100 持續上升 RSI 與 KD 走平;CCI 持續上升。 所以:CCI 也能跟趨勢。
三個震盪指標在同一段趨勢中的表現。RSI 與 KD 在接近 100 時沒有空間;拉開越大,CCI 讀得越高。

這個差異改變了各指標的用途。有上限,才讓RSI 指標的 70/30 水位與KD 指標的 80/20 水位成為自然的反轉觸發,因為接近上限的讀數沒有多少再往上的空間。沒有上限,讓 CCI 也能當趨勢衡量:讀數從 +100 爬到 +250 是新資訊,RSI 從 80 到 85 卻幾乎沒變。如果你已經在交易 RSI 相對強弱指標的反轉規則,CCI 反轉規則是近親,常在同樣的 K 棒觸發;真正補上 RSI 無法表達之處的,是 CCI 突破規則。

CCI 規則在不同期貨市場表現如何,回測該怎麼讀?

CCI 規則的結果,更取決於市場的性格而非指標本身,所以每個市場各自測試,並以扣除成本後的平均每筆損益、交易筆數與回撤來讀報表,不要看淨損益。ES 與台指期這類指數期貨,長時間處於趨勢,這些階段獎勵 ±100 的突破用法,卻懲罰一路逆勢賣出的反轉規則。每個市場都有的盤整階段,獎勵反轉用法,並讓突破規則被來回洗。兩種階段的占比因市場與年份而異,所以把數個市場合在一起測,會藏住每個市場自己的狀況。

  1. 把進出場寫成固定條件。哪個穿越進場、哪個穿越出場、只做多還是雙向。
  2. 第一次執行前,先設定手續費、滑價與下一根 K 棒成交。在收盤決定的規則,必須在下一根 K 棒成交;以決定當下的收盤價成交,用的是你實際上無法成交的價格。
  3. 反轉與突破版本分別當成獨立的候選策略,在一整段週期範圍內,每個市場各自執行。
  4. 讀扣除成本後的平均每筆損益、交易筆數與最大回撤。只看淨損益,說不出收益是怎麼賺來的。
  5. 保留任何候選策略之前,先檢查相鄰週期與樣本外階段。
CCI 測試的五步順序:固定進出場規則,設定成本與下一根 K 棒成交,各規則分別測試,讀平均每筆損益、交易筆數與回撤,最後檢查相鄰週期與樣本外階段,才保留候選策略 CCI 測試的順序 前一步完成才做下一步 1 2 3 4 5 固定進出場規則 設定成本與下一根 K 棒成交 各規則分別測試 讀平均每筆損益、交易筆數、回撤 檢查相鄰週期與樣本外(OOS) 成本先於任何結果設定。 所以:檢查之後才決定。
CCI 測試的順序。成本與成交方式在第一次執行前固定,穩健性檢驗先於決定。

下面這次回測顯示這類報表在實務上的樣子。它測試的是 Volume Profile Levels 規則,這是以標準指標組成的替代規則,不是 CCI 規則,標的是 ES 日 K 棒,期間 2019-01-02 至 2025-06-30,多空皆做,一口,每筆交易收取 $20 手續費與 $25 滑價。這是搜尋從所試的 1,024 個候選策略中保留下來的唯一一個,依報酬對回撤的比值挑出;事後挑選最好的候選策略會讓它看起來更好:保留下來的那個帶有一份選擇加成,新的一段資料不會兌現,Bailey 等人(2014)對此有詳細說明。

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

數字結果
淨利(已平倉)$137,912.5
最大回撤$37,892.5
交易筆數160
勝率51.25%
獲利因子1.482
平均每筆$861.95
在場時間84.23%
由左至右讀這條曲線:回撤最深在哪裡、持續多久,以及樣本外標記之後的斜率是否與之前相似。
由左至右讀這條曲線:回撤最深在哪裡、持續多久,以及樣本外標記之後的斜率是否與之前相似。 ES · 日 K 棒 · 2019-01-02 至 2025-06-30 · CPU 引擎回測

依這個順序讀。第一是平均每筆損益 $861.95,對照每筆交易收取的 $45 手續費與滑價:成本只占平均每筆損益的一小部分,所以滑價加倍也不會改變正負號。第二是交易筆數,約六年半 160 筆,足以讓平均值有意義,但少到幾筆大額交易就能左右它;交易明細會告訴你結果有多集中。第三是最大回撤 $37,892.5,對照淨損益 $137,912.5:最糟的虧損階段吞掉了整段期間所賺的略多於四分之一,而該拿來對照帳戶規模的是這個回撤,不是淨損益。第四是在場時間 84.23%,表示這個規則大部分時間都持有部位,所以幾乎每週都帶著隔夜部位。在 AlphaPrime(Valynox)中,這些數字與交易明細、各期間明細一同呈現在績效報表,所以 CCI 候選策略一跑完,就能讀到同樣這四個數字。以上都不是預測,以同樣方式測試的 CCI 規則,會有它自己的數字。

假設性範例

假設某指數期貨上的 CCI(20) 突破規則,共 400 筆交易,扣除成本前的平均每筆損益為 $70。每筆交易有 $45 手續費與滑價,扣除成本後平均每筆損益為 $25,略高於毛額的一半。若滑價加倍成 $50,成本會升到 $70,平均每筆損益歸零。結果為正但偏薄,所以要不要保留,要看高原檢查與樣本外階段,而不是帳面利潤。

下一步:取一個市場自己的 K 棒,把 CCI(20) 突破規則與 CCI(20) 反轉規則寫成兩個固定的候選策略,用你實際的手續費、每邊一個跳動點的滑價與下一根 K 棒成交各跑一次,並記錄各產生了多少筆交易。若任一個少於數百筆,先改用較小的 K 棒週期或較長的歷史,再比較兩者。

常見問題

CCI 能高於 200 或低於 −200 嗎?

可以。CCI 沒有上下限,因為它是用與均線的距離除以正常距離,沒有任何東西限制結果。超出 ±200 的讀數比 ±100 到 ±200 之間的少見,通常出現在快速行情或波動衝擊時。出現頻率取決於市場、K 棒週期與週期設定,所以用自己的資料來計數,不要預設一個占比。

CCI 是領先指標還是落後指標?

它由移動平均與移動平均偏差組成,所以像任何平均類指標一樣落後於價格;週期越短落後越少,週期越長落後越多。「領先」的印象來自反轉用法,也就是讀數離開 ±100 區間,被讀成走勢疲弱的跡象。那是對落後讀數的詮釋,不是預測,必須像其他規則一樣,當成固定規則來測試。

CCI 用哪個 K 棒週期最好?

CCI 在每種 K 棒週期上的算法相同,所以選擇決定的是交易筆數與持有時間,而不是指標的意義。日 K 棒上,20 週期規則一年只有寥寥數筆交易;日內 K 棒則有數百筆。挑一個能累積足夠完成交易來判斷的 K 棒週期,用同樣的成本在上面跑同一個規則,並確認相鄰週期的表現相近,再信任結果。

CCI 策略在期貨上有效嗎?

CCI 規則是對價格的固定條件,所以任何有 K 棒資料的期貨合約都能測試,是否站得住腳是要量測的結果,不是指標本身的屬性。突破用法傾向適合指數期貨的趨勢階段,反轉用法傾向適合盤整階段,但兩者的比重因市場與年份而變。每個市場各自測試,先設定手續費、滑價與下一根 K 棒成交,再讀扣除成本後的平均每筆損益、交易筆數與回撤。

參考文獻

  • Wilder, J. W. (1978). New Concepts in Technical Trading Systems. Trend Research.
  • Pardo, R. (2008). The Evaluation and Optimization of Trading Strategies (2nd ed.). John Wiley & Sons.
  • 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.