def KST(df, r1, r2, r3, r4, n1, n2, n3, n4,s):
M = df['Close'].diff(r1)
N = df['Close'].shift(r1)
ROC1 = (M / N)*100
M = df['Close'].diff(r2)
N = df['Close'].shift(r2)
ROC2 = (M / N)*100
M = df['Close'].diff(r3)
N = df['Close'].shift(r3)
ROC3 = (M / N)*100
M = df['Close'].diff(r4)
N = df['Close'].shift(r4)
ROC4 = (M / N)*100
KST = pd.Series(pd.rolling_mean(ROC1, n1) + pd.rolling_mean(ROC2, n2) * 2 +
pd.rolling_mean(ROC3, n3) * 3 + pd.rolling_mean(ROC4, n4) * 4, name = 'KST')
Sig = pd.Series(pd.rolling_mean(KST, s), name = 'Signal')
df = df.join(KST)
df = df.join(Sig)
#df = df.round(2)
return df
# Retrieve the S&P 500 data from Yahoo finance:
评论列表
文章目录