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
在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
在ta.py文件中的KDJ计算方法中,这一行rsv = pd.Series(np.where(hv == lv, 0, (df["close"] - lv) / (hv - lv) * 100))中,hv == lv时的缺省值不应该是0,应该设置成50,设置成0会导致KDJ失真。