程式語言-自建KD值

難易程度★★★★

--

此篇文章使用 Anaconda的 Jupyter寫程式,測試環境 python3.6,事先完成 pandas、numpy、twstock及 talib套件安裝

(這篇文長,有興趣再閱讀)

這篇我們【用公式】自己算出『KD值』

在上一篇程式語言-KD值調參數 帶領大家如何調整參數內部資料,但輸出的『結果』與『看盤軟體』的還是有落差

今天我們就用最原始的方法自己計算KD值

KD值的計算原理:

下面就用套公式把值算出來

程式解析

  1. 從『導入套件』到『爬蟲』都與上一篇一模一樣,這裡不再贅述

此時 df 的產出的資料如下圖:

2. 開始計算RSV值,在程式語言-股價爬蟲套件分析 加碼區教過大家如何使用 rolling(window=day) 畫出『移動平均線』,這裡後面加上 .min.max取區間最小(大)值

3. 因為 rolling 採用9天內的資料來計算,所以前8天不會有值,這裡用np.nan_to_num 的方法將前8筆改為 0,而資料自動轉成array型態

4. 把資料放入dataframe並定義名稱為RSV,資料索引以df的收盤價為主,並加入到df裡RSV的欄位中(這裡之前解釋過,快速帶過)

創建KD值

5. 開始創建K值,因前8筆 RSV 都沒有值,無法算出K值,所以我們給前8筆(k1)一個初始值a,用 append 添加8次

6. 第9筆之後就可以開始計算,我們把結果放入k2,而一開始的初始值k_temp為a,用 append 添加 df長度的次數(df-8+8)

7. 用 concat 將k1、k2疊加起來

8. 最後用老方法設定index,並加入到df的K欄位裡

9. D值就用上述方法再做一次,公式記得要調整~

比較『原始』及『自建』KD值

10. 將自建的KD值畫出來,並與talib畫的KD圖做比較

還是有些微的不一樣,感覺自己建的比較激動,不過從數據來看,自建的值與看盤軟體好像相近許多~~

附上原始程式碼

這次的教學教了

  1. 溫習前面爬蟲課程
  2. 溫習rolling(window=day)加上.min.max的用法
  3. 使用nan_to_num的方法
  4. 溫習append的用法
  5. 使用concat的方法

--

--