關於 KD 的原理, 可以參考下列資料 :
# 甚麼是 KD 值
計算 KD 前, 必須計算所謂的 RSV 值 (未成熟隨機震盪值, Row Stochastic oscillator Value), 定義如下 :
RSV=100*(第N天收盤價-近N日內最低價)/(近N日內最高價-近N日內最低價)
RSV 的值域為 0~100, 若當日收盤價為 9 日內最低價, RSV 值為 0; 若當日收盤價為 9 日內最高價, 則 RSV 值為 100, 因此 RSV 本身就可以作為股價是否達到 9 日內新低或新高的技術指標.
接著就可以計算 K/D 值了, 其算式如下 :
Kt=(1/3)RSVt + (2/3)Kt-1
Dt=(1/3)Kt + (2/3)Dt-1
這裡下標 t 表示當日, t-1 為前一日. K/D 值事實上是上面 RSV 值的加權移動平均, 是指數平滑化的一種方法.
下面以與大盤亦步亦趨的台灣 50 為對象, 計算其 9 日 KD 值, 樣本取自 Yahoo 股市台灣 50 (0050) 的每日收盤價 :
# https://tw.finance.yahoo.com/q/ta?s=0050
樣本日期為 2015-01-21 到 2015-02-13 封關日共 18 天如下 :
日期 | 收盤價 |
20150121 | 67.25 |
20150122 | 67.6 |
20150123 | 68.7 |
20150126 | 68.7 |
20150127 | 69.15 |
20150128 | 69.15 |
20150129 | 68.3 |
20150130 | 68 |
20150202 | 68.15 |
20150203 | 68.65 |
20150204 | 69.4 |
20150205 | 69.1 |
20150206 | 68.75 |
20150209 | 68.5 |
20150210 | 68.25 |
20150211 | 69 |
20150212 | 69 |
20150213 | 69.45 |
把這些日期輸入到雲端硬碟的試算表文件上, 然後在右邊新增最高價, 最低價, 回溯填入 9 日內的最高與最低收盤價 :
日期 | 收盤價 | 最高價 | 最低價 |
20150121 | 67.25 | ||
20150122 | 67.6 | ||
20150123 | 68.7 | ||
20150126 | 68.7 | ||
20150127 | 69.15 | ||
20150128 | 69.15 | ||
20150129 | 68.3 | ||
20150130 | 68 | ||
20150202 | 68.15 | 69.15 | 67.25 |
20150203 | 68.65 | 69.15 | 67.6 |
20150204 | 69.4 | 69.4 | 68 |
20150205 | 69.1 | 69.4 | 68 |
20150206 | 68.75 | 69.4 | 68 |
20150209 | 68.5 | 69.4 | 68 |
20150210 | 68.25 | 69.4 | 68 |
20150211 | 69 | 69.4 | 68 |
20150212 | 69 | 69.4 | 68.15 |
20150213 | 69.45 | 69.45 | 68.25 |
然後在右邊新增 RSV, K, D 三欄, 以便填入計算後的值. 因為 K9/D9 必須有 9 筆之前的資料才能得到 9 日內最高價與最低價以進行計算, 也就是 20150202 那天才能開始計算 RSV 與 K/D. 計算這一天的 K/D 需要用到前一日 (20150130) 的 K/D, 我們設定初始 K/D 均為 50.
先計算 RSV, 如下圖所示, 點 E10 格, 即 20150202 的 RSV 欄, 輸入下列計算公式 :
E11 : =100*(B10-D10)/(C10-D10)
接著計算 K 值, 點 F11 格, 即 20150202 的 K 欄, 輸入下列公式 :
F11 : =(1/3)*E10+(2/3)*F9
G11 : =(1/3)*F10+(2/3)*G9
然後分別按 E11, F11, G11 儲存格的右下控點往下拉到底, 就會自動將公式套用到 20150213 封關日的 RSV, K, D 值計算, 結果如下 :
日期 | 收盤價 | 最高價 | 最低價 | RSV | K | D |
20150121 | 67.25 | |||||
20150122 | 67.6 | |||||
20150123 | 68.7 | |||||
20150126 | 68.7 | |||||
20150127 | 69.15 | |||||
20150128 | 69.15 | |||||
20150129 | 68.3 | |||||
20150130 | 68 | 50 | 50 | |||
20150202 | 68.15 | 69.15 | 67.25 | 47.36842105 | 49.12280702 | 49.70760234 |
20150203 | 68.65 | 69.15 | 67.6 | 67.74193548 | 55.32918317 | 51.58146262 |
20150204 | 69.4 | 69.4 | 68 | 100 | 70.21945545 | 57.79412689 |
20150205 | 69.1 | 69.4 | 68 | 78.57142857 | 73.00344649 | 62.86390009 |
20150206 | 68.75 | 69.4 | 68 | 53.57142857 | 66.52610718 | 64.08463579 |
20150209 | 68.5 | 69.4 | 68 | 35.71428571 | 56.25550003 | 61.47492387 |
20150210 | 68.25 | 69.4 | 68 | 17.85714286 | 43.45604764 | 55.46863179 |
20150211 | 69 | 69.4 | 68 | 71.42857143 | 52.78022223 | 54.57249527 |
20150212 | 69 | 69.4 | 68.15 | 68 | 57.85348149 | 55.66615734 |
20150213 | 69.45 | 69.45 | 68.25 | 100 | 71.90232099 | 61.07821189 |
結果封關日 20150213 的 K=71.90, D=61.08, 對照 Yahoo 股市 20130213 日的 K=68.11, D=61.63, 可見 K 值誤差稍大 (-3.79), D 值誤差較小 (-0.55), 若日期稍長, 數值將逐漸收斂, 誤差將變小.
台灣 50 除了存股賺股息外, 也可以用技術指標來賺差價, 而且只用 KD 與均線即可, 因為台灣 50 包含 50 個成分股, 走勢貼近大盤, 要騙線沒這麼容易, 方法參見 :
# 用台灣50(0050)幫你年賺15%的操作方法
要言之, 即 KD 小於 20 時酌量買進, 若再低, 不要猶豫繼續買, 然後等待它必然的回升, 當 KD 高於 80 時即伺機賣出. 不過這種機會不會很多, 要耐心等待, 也要耐心持有, 至少年底還有不錯的配息.
回溯過去幾年台灣 50 的走勢, 這種 KD 降至接近 20 的情況, 自 2007 到 2014 的 7 年之間只出現兩次, 一次是 2008 年底的金融海嘯, 另一次是 2012 年 6 月左右 :
所以, 若這樣的交易頻率太低, 或許 KD 往下降至 40 就可以考慮進場了.
2017-10-12 補充 :
感謝網友匿名兄反映, 上述我對公式中最高價與最低價的理解似乎有誤, 可能是當日最高價與最低價, 我將找時間重新驗算一次. (請瀏覽底下熱血網友的留言)
您好:拜讀您的大作,獲益良多。能否請問如果要計算周KD或月KD時之算法為何?謝謝。
回覆刪除Sorry, 這我倒還沒去探究, 我想應該是用過去一周或一月的平均值吧!
回覆刪除請問為什麼KD初值放50。
回覆刪除原書用 50 為初值之用意, 我想可能是 KD 範圍 0~100, 取中間值收斂速度較快吧!
回覆刪除請問這個算法,以 0050 在 2017/7/6 的價格
回覆刪除收盤價 80.4
最高價 80.75
最低價 80.2
算出來的 RSV 為 36.36363636
但為何 yahoo 的是顯示 37.14 呢?
因為我們只計算了剛開始的幾個日期而已.
回覆刪除注意, 這裡的最低價與最高價都是指每天的收盤價, 不是每日盤中的最低價與最高價
回覆刪除是每天出現過的最低價與最高價喔,不是每天的收盤價!
害我算半天為何跟 yahoo 的算不同,去 google 別人的文章才找到問題!
感謝匿名兄留言, 原來是我理解錯誤, 我會找時間重算一次.
回覆刪除