问题描述
我尝试使用以下代码在 SMA 和 EMA 方法中计算 RSI。
def rsi(data,period = 14,column = 'Close'):
delta = data[column].diff()
delta = delta[1:]
up = delta.clip(lower=0)
down = delta.clip(upper=0)
up[ up < 0 ] = 0
down[down > 0] = 0
data['UP'] = up
data['DOWN'] = down
# Calculate the EWMA
roll_up1 = up.ewm(span=period).mean()
roll_down1 = down.abs().ewm(span=period).mean()
# Calculate the RSI based on EWMA
RS1 = roll_up1 / roll_down1
RSI1 = 100.0 - (100.0 / (1.0 + RS1))
# Calculate the SMA
roll_up2 = up.rolling(period).mean()
roll_down2 = down.abs().rolling(period).mean()
# Calculate the RSI based on SMA
RS2 = roll_up2 / roll_down2
RSI2 = 100.0 - (100.0 / (1.0 + RS2))
data['RSI1'] = RSI1
data['RSI2'] = RSI2
return data
然后我尝试计算 AAPL 股票的 RSI
df = yf.download('AAPL',period="3d",interval = '1h')
rsi(df)
df = df.dropna()
df
结果如下,
Close RSI1 RSI2
2021-06-18 09:30:00-04:00 131.050003 46.782703 53.072098
2021-06-18 10:30:00-04:00 130.327499 37.694286 48.587796
2021-06-18 11:30:00-04:00 130.990005 48.317262 55.852004
2021-06-18 12:30:00-04:00 130.809998 45.865629 53.151575
2021-06-18 13:30:00-04:00 130.960007 48.383954 61.052606
2021-06-18 14:30:00-04:00 130.904999 47.449990 55.294624
2021-06-18 15:30:00-04:00 130.399994 39.394643 51.816916
但是当我查看雅虎财经图表时,
RSI 值接近 SMA 方法。但还是不一样。
Close RSI
2021-06-18 13:30:00-04:00 130.960007 49.04
2021-06-18 14:30:00-04:00 130.904999 48.35
2021-06-18 15:30:00-04:00 130.399994 42.46
我做错了什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)