最近重讀王錦樹寫的 "點睛技術分析-心法篇" (2010, 寰宇出版), 裡面詳細解說了主要的幾種指標的計算方法與原理. 其中最老牌也最簡單的就是 KD 值的計算 (參考第七章 : "KD 線-壓力與支撐"), 雖然技術指標玲瑯滿目, 但據說許多老手還是只靠平均線與 KD 指標致勝. 今天就用 Google 雲端硬碟來實作 KD 的計算.
關於 KD 的原理, 可以參考下列資料 :
#
甚麼是 KD 值
計算 KD 前, 必須計算所謂的 RSV 值 (未成熟隨機震盪值, Row Stochastic oscillator Value), 定義如下 :
RSV=100*(第N天收盤價-近N日內最低價)/(近N日內最高價-近N日內最低價)
注意, 這裡的最低價與最高價都是指每天的收盤價, 不是每日盤中的最低價與最高價. 其中 N 一般為 9, 以 9 天為參數算出來的 K/D 值也就稱為 K9 與 D9 了.
RSV 的值域為 0~100, 若當日收盤價為 9 日內最低價, RSV 值為 0; 若當日收盤價為 9 日內最高價, 則 RSV 值為 100, 因此 RSV 本身就可以作為股價是否達到 9 日內新低或新高的技術指標.
接著就可以計算 K/D 值了, 其算式如下 :
K
t=(1/3)RSV
t + (2/3)K
t-1
D
t=(1/3)K
t + (2/3)D
t-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
最後計算 D 值, 點 G11 格, 即 20150202 的 D 欄, 輸入下列公式 :
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 補充 :
感謝網友匿名兄反映, 上述
我對公式中最高價與最低價的理解似乎有誤, 可能是當日最高價與最低價, 我將找時間重新驗算一次. (
請瀏覽底下熱血網友的留言)