隨機指標(Stochastic):%K、%D、參數設定與訊號回測方法
隨機指標顯示最新收盤價落在近期 K 棒最高價與最低價區間的哪個位置,刻度為 0 到 100。它的訊號在盤整市場有幫助,在強勢趨勢中則會反覆失敗,所以回測時要把交易成本算進去,並確認相近的參數設定能得到相似的結果。
作者 Soren Huang · 發佈 · 更新於 · 編輯原則
目錄
隨機指標衡量最新收盤價落在最近一段固定數量 K 棒的最高價與最低價之間的位置,刻度從 0 到 100。%K 就是這個原始位置,%D 是 %K 的移動平均。交易者會用高於 80 或低於 20 的讀數,以及 %K 穿越 %D,作為訊號。
隨機指標是怎麼運作的?
隨機指標的做法是把收盤價和近期的交易區間比較,而不是和平均價格比較。可以把它想成一支溫度計,顯示今天的氣溫落在過去兩週最冷一天與最熱一天之間的哪個位置。讀數 100 代表今天和最熱的一天一樣熱,讀數 0 代表和最冷的一天一樣冷。
隨機指標把同樣的概念用在價格上。它先設定一個回看期數,也就是計算時要看的近期 K 棒數量,找出這個視窗內的最高價與最低價,再問收盤價在這個區間中位於多高的位置。
原始值稱為 %K,計算方式如下:
%K = 100 × (C − L) ÷ (H − L)
- C 是當根 K 棒的收盤價。
- L 是最近 n 根 K 棒(含當根)的最低價。
- H 是最近 n 根 K 棒(含當根)的最高價。
- n 是回看期數,常見預設值為 14 根 K 棒。
假設性範例
最近 14 根 K 棒的最高價是 110,最低價是 90,所以區間為 20 點。當根 K 棒收在 105。收盤價比最低價高 15 點,15 ÷ 20 = 0.75,所以 %K = 75。收盤價位於近期區間的四分之三處。
有一個邊界情況會影響回測。如果視窗內每根 K 棒的最高價與最低價都相同,區間為零,公式就會除以零。不同平台處理這種情況的方式不同,所以在不同工具之間比較結果之前,先確認你的平台怎麼處理。
%K 與 %D 是什麼?
%K 是主線,%D 是比較慢的訊號線。%K 是收盤價在區間內的原始位置,計算方式如上。%D 是 %K 的簡單移動平均,通常取 3 根 K 棒。因為 %D 落後於 %K,當 %K 的方向改變時兩條線就會交叉,而大多數隨機指標訊號都建立在這些交叉上。
在短週期 K 棒上,原始 %K 的跳動很大。一根大幅 K 棒就能讓它一步從 20 跳到 90。平滑處理可以減少這種跳動,不同程度的平滑就形成下面要說明的快速、慢速與完整版本。
快速、慢速與完整隨機指標有什麼差別?
這三個版本使用相同的區間計算,差別只在套用多少平滑。看盤平台可能對同一個東西用不同名稱,所以要看參數設定,不要只看名稱。
| 版本 | %K 線 | %D 線 | 常見參數 |
|---|---|---|---|
| 快速隨機指標 | 原始 %K,不平滑 | 原始 %K 的 3 根 K 棒平均 | 14, 3 |
| 慢速隨機指標 | 原始 %K 的 3 根 K 棒平均(即快速版的 %D) | 慢速 %K 的 3 根 K 棒平均 | 14, 3, 3 |
| 完整隨機指標 | 原始 %K 依你選擇的週期平均 | 該線依你選擇的週期再平均 | 預設 14, 3, 3,三個數字都可調整 |
完整隨機指標涵蓋了另外兩種。%K 平滑設為 1 時就是快速隨機指標,設為 3 時就是標準的慢速隨機指標。所以「隨機指標參數」通常指三個數字:回看期數、%K 平滑與 %D 平滑。
台灣看盤軟體常見的 KD 指標是近親。它通常使用 9 根 K 棒的回看期數,平滑方式是新值佔三分之一權重、前一個值佔三分之二。這兩條線看起來和慢速隨機指標類似,但數值並不相同。KD 指標說明會詳細介紹這個版本。
超買、超賣與交叉訊號代表什麼?
超買與超賣的讀數表示收盤價接近近期區間的邊緣,交叉則表示 %K 已經轉向。這兩者都不代表價格一定會反轉。交易者會把它們組合成像下面這樣的規則:
- 水準訊號。讀數高於 80 稱為超買:收盤價位於區間的上五分之一。讀數低於 20 稱為超賣:收盤價位於區間的下五分之一。
- 交叉訊號。%K 向上穿越 %D 視為買進訊號,%K 向下穿越 %D 視為賣出訊號。
- 區域內的交叉。許多交易者只在兩條線都低於 20 時才採用買進交叉,只在兩條線都高於 80 時才採用賣出交叉。這樣可以濾掉區間中段的交叉。
- 離開區域。另一種版本是等 %K 回到 20 之上(做多)或回到 80 之下(做空)。這樣進場較晚,但可以避免讀數仍在下滑時就買進。
- 背離。價格創新低而隨機指標形成較高的低點,或在高點時相反。這比較難定義成精確的規則,所以也比較難測試。
80 和 20 這兩個水準是慣例,不是自然界限。有些交易者用 70 和 30。在回測中,它們和其他參數沒有差別。
為什麼隨機指標在強勢趨勢中會失效?
在強勢趨勢中,隨機指標會長時間停在極端區,所以「超買就賣」會不斷給出虧損的訊號。原因就在公式裡。在穩定的上升趨勢中,每次收盤都接近近期區間的頂部,所以 %K 一根接一根地停在 80 之上。這裡的超買只代表趨勢正在運作。
一個在 %K 於 80 之上向下穿越 %D 時就賣出的規則,會在這段上漲中一再放空。每一次交叉都只是趨勢內的小幅回檔,之後趨勢仍然繼續。在穩定的下跌趨勢中情況正好相反,低於 20 的買進訊號會不斷失敗。
交易者通常用三種方式處理這個問題,而每一種都是需要測試的,不能直接假設有效:
- 搭配趨勢濾網交易。價格在長期移動平均之上時只接受買進訊號,在其下時只接受賣出訊號。
- 趨勢強度高時不交易。例如當 ADX(一種不論方向、只衡量趨勢強弱的指標)高於選定水準時,忽略反轉訊號。
- 把隨機指標當作回檔工具。在上升趨勢中,等隨機指標跌入超賣區時買進,而不是在超買時賣出。
如何回測隨機指標規則?
回測隨機指標規則的做法,是把規則寫得夠精確,讓兩個人會下出同樣的單,再用貼近實際的成交方式與交易成本來執行。像「看起來超賣就買」這樣含糊的規則無法測試。下列步驟能把想法變成可測試的規則:
- 固定版本。寫下回看期數、%K 平滑與 %D 平滑,例如 14, 3, 3,以及使用的平均類型。
- 寫出進場條件。例如:慢速 %K 向上穿越慢速 %D,且兩者都低於 20 時買進。
- 寫出出場條件。例如:%K 在 80 之上向下穿越 %D 時賣出,或在固定停損、固定 K 棒數之後出場。沒有出場條件的規則是不完整的。
- 使用下一根 K 棒成交。隨機指標要等 K 棒收盤後才知道,所以訂單應在下一根 K 棒成交,而不是在產生訊號的那個收盤價成交。
- 從第一次執行就納入手續費與滑價。在短週期 K 棒上,交叉規則可能交易很頻繁,而頻繁的小額交易在加入成本後最先失效。如何比較平均每筆損益與一買一賣(來回)的成本,請見回測中的交易成本。
- 設定交易時段。決定 K 棒是否包含夜盤。加入隔夜的 K 棒後,區間會改變,%K 也會跟著改變。
- 分開檢查多單與空單。在長期向上漂移的市場中,同一個規則的買進端與賣出端表現可能差很多。
如何檢查隨機指標的參數設定是否穩定?
當相近的數值能得到相似的結果,設定就是穩定的。如果只有某一個確切的組合有效,這個回測很可能只是找到了雜訊。參數穩定度是指:參數稍微改變時,策略的結果只會逐漸變化。
隨機指標規則有很多可調的地方:回看期數、兩個平滑期數、兩個區域水準,還有出場。測試的組合夠多,就一定會有一個因為純粹的機率而看起來很出色。Sullivan、Timmermann 與 White(1999)說明了,在同一份資料上測試許多技術交易規則,會讓最好的那一個看起來比實際更好。Bailey 等人(2017)提出了一種方法,用來估計搜尋中最佳回測發生過度最佳化的可能性。
一個實用的檢查方式是結果網格。讓規則在每個參數的一段範圍內執行,然後觀察整體的分布型態,而不是只看最好的那一格。
假設性範例
你測試 5 到 30 根 K 棒的回看期數,以及 10、15、20、25 和 30 的超賣水準,出場與交易成本固定。這共有 26 × 5 = 130 種組合。
結果 A,尖峰:回看期數 14、水準 20 的淨損益為正,但相同水準下回看期數 13 和 15 都是負的。這只是單一一格的運氣。
結果 B,高原:水準 15 到 25 之間,回看期數從 10 到 20 的每一格淨損益都為正,回撤也相近。確切的設定沒那麼重要,這正是你希望看到的。
完成網格之後,再做推進分析:在一段歷史視窗上選出參數,再原封不動地拿去測試接下來的期間,然後重複。如果被選中的回看期數在各視窗之間從 6 跳到 28 又跳到 11,就表示這個規則沒有穩定的偏好,全歷史的結果也不是可靠的參考。
如果你使用 AlphaPrime(Valynox),這意味著:策略生成讓你設定參數範圍、進場與出場條件和搜尋限制,所以回看期數與區域水準都是以範圍來搜尋,並且已納入交易成本與下一根 K 棒成交。接著你在策略檢驗中,依推進分析的結果與你自己的門檻來評斷留下來的規則,而不是只看單一最佳數字。
常見問題
最佳的隨機指標參數是什麼?
沒有單一最佳設定。慢速隨機指標常見的預設值是 14, 3, 3,許多台灣平台的 KD 則用 9 根 K 棒。有用的問題是:以你的選擇為中心的一段參數範圍,在扣除交易成本後是否能得到相似的回測結果。
KD 指標和隨機指標是同一個東西嗎?
它們建立在同一個概念上:收盤價在近期最高價與最低價區間內的位置。常見的 KD 版本使用 9 根 K 棒的回看期數,以及讓最新值佔三分之一權重的平滑方式。它的兩條線看起來像慢速隨機指標,但數值略有不同,所以要註明你測試的是哪一種。
隨機指標和 RSI 有什麼差別?
隨機指標是把收盤價和近期 K 棒的最高價與最低價比較。RSI 則是比較近期上漲幅度與下跌幅度的大小。兩者都在 0 到 100 之間,都用來判斷超買與超賣,但在同一張圖上可能得出不一致的結果。
隨機指標適用於期貨的日內圖表嗎?
它可以在任何 K 棒週期上計算,但短週期 K 棒會有更多交叉,因此交易也更多。交易越多,手續費與滑價佔每筆交易結果的比例就越大。請在你使用的 K 棒週期上,納入交易成本與正確的交易時段來測試。
參考文獻
- Sullivan, R., Timmermann, A., & White, H. (1999). Data-Snooping, Technical Trading Rule Performance, and the Bootstrap. The Journal of Finance, 54(5), 1647–1691.
- Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2017). The Probability of Backtest Overfitting. Journal of Computational Finance, 20(4), 39–69.
AlphaPrime 在這裡能幫上什麼
AlphaPrime 的策略生成把規則想法轉成可測試的進場與出場條件,並附上參數範圍;回測則批次評估這些策略,並納入手續費、滑價、下一根 K 棒成交與交易時段。

