为什么我的 RSI 值与雅虎财经不同

问题描述

我尝试使用以下代码在 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 (将#修改为@)