def RSI_F(df, n, field='close'):
UpMove = df[field] - df[field].shift(1)
DoMove = df[field].shift(1) - df[field]
UpD = pd.Series(UpMove)
DoD = pd.Series(DoMove)
UpD[(UpMove <= 0)] = 0
DoD[(DoMove <= 0)] = 0
PosDI = pd.Series(pd.ewma(UpD, com = n-1), name = "RSI"+str(n)+'_UP')
NegDI = pd.Series(pd.ewma(DoD, com = n-1), name = "RSI"+str(n)+'_DN')
RSI = pd.Series(PosDI / (PosDI + NegDI) * 100, name = 'RSI' + str(n))
return pd.concat([RSI, PosDI, NegDI], join='outer', axis=1)
评论列表
文章目录