在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天 前