29 浏览
0

在ta.py文件中的KDJ计算方法中,rsv = pd.Series(np.where(hv == lv, 0, (df[“close”] – lv) / (hv – lv) * 100))中,hv == lv时的缺省值不应该是0,应该设置成50,设置成0会导致KDJ失真。

def KDJ(df, n, m1, m2):
    new_df = pd.DataFrame()
    hv = df["high"].rolling(n).max()
    lv = df["low"].rolling(n).min()
    rsv = pd.Series(np.where(hv == lv, 0, (df["close"] - lv) / (hv - lv) * 100))
    new_df["k"] = tqsdk.tafunc.sma(rsv, m1, 1)
    new_df["d"] = tqsdk.tafunc.sma(new_df["k"], m2, 1)
    new_df["j"] = 3 * new_df["k"] - 2 * new_df["d"]
    return new_df

fantuantaozi 编辑问题 1天 前