Python量化分析,計算KDJ


 

Python: v3.6

Pandas: v0.23.4

使用以下方法計算與國內財經軟件顯示一致

    low_list = df['最低價'].rolling(9, min_periods=9).min()
    low_list.fillna(value = df['最低價'].expanding().min(), inplace = True)
    high_list = df['最高價'].rolling(9, min_periods=9).max()
    high_list.fillna(value = df['最高價'].expanding().max(), inplace = True)
    rsv = (df['收盤價'] - low_list) / (high_list - low_list) * 100

    df['K'] = pd.DataFrame(rsv).ewm(com=2).mean()
    df['D'] = df['K'].ewm(com=2).mean()
    df['J'] = 3 * df['K'] - 2 * df['D']

注意:

1、別使用TA-Lib進行計算(如使用talib.STOCH()方法),計算結果與國內的財經軟件不一致

附:KDJ金叉死叉計算方法

df['KDJ_金叉死叉'] = ''
kdj_position=df['K']>df['D']
df.loc[kdj_position[(kdj_position == True) & (kdj_position.shift() == False)].index, 'KDJ_金叉死叉'] = '金叉'
df.loc[kdj_position[(kdj_position == False) & (kdj_position.shift() == True)].index, 'KDJ_金叉死叉'] = '死叉'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM