R 与 Yahoo Finance/TradingView 中的 RSI 不同

问题描述

在 R 中计算的 filter(grepl("[[:alpha:]]+",x = race)) 与我在 Yahoo-Finance 中看到的不同。 Yahoo-Finance 文档说它使用 RSISMA。我在 R 中做了同样的事情,但值不匹配。我不确定该相信哪一个。我尝试了关闭和调整关闭​​。

close

RSI(5,Close) 的 R 输出

enter image description here

雅虎财经:

enter image description here

library(quantmod)
getSymbols("AAPL",from = '2021-05-01',to = '2021-06-16')

price <- Cl(AAPL)   #Close Price
RSI(price,SMA,n = 5)

解决方法

RSI 计算使用 EMA,而不是 SMA。不知道你从哪里得到雅虎描述,但如果它说它使用了 sma,那就是不正确的。 rsi 的上下计算是典型的 ema 计算。大多数软件包/软件使用 Wilder 平滑,但有一些不使用。默认情况下,quantmod 在 RSI 计算中使用 Wilder 平滑。但是,如果您在 RSI 函数中指定 EMA 且没有 wilder = TRUE,则不会进行平滑。

要获得与 yahoo 相同的数字,您需要使用 quantmond (TTR) 的基本 RSI 函数。

tail(RSI(price,n = 5))
                rsi
2021-06-08 63.28863
2021-06-09 66.53765
2021-06-10 51.60627
2021-06-11 63.91243
2021-06-14 79.97755
2021-06-15 69.58576

或者如果您想填写所有详细信息:

tail(RSI(price,EMA,n = 5,wilder = TRUE))

                rsi
2021-06-08 63.28863
2021-06-09 66.53765
2021-06-10 51.60627
2021-06-11 63.91243
2021-06-14 79.97755
2021-06-15 69.58576