76 浏览
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

chaos 已回答的问题 16小时 前
0

这个应该没有对错之分,如果无波动情况当成中性处理,50确实会比0更合理

可以按照你的交易习惯修改下源码,或者自己重新实现一个kdj函数会更好些

chaos 发表新评论 16小时 前

有其他问题欢迎加入官方Q群748265037一起交流

您正在查看1个答案中的1个,单击此处查看所有答案。