我想获得一些ETF的RSI,所以我运行以下代码
startDate<- '2015-09-01'
endDate<-'2015-11-01'
etfs<-c("XLE")
tickers <- get(getSymbols(etfs, from=startDate, to=endDate, auto.assign=TRUE))
RSIdataset <- RSI(Ad(tickers),n=14)
tail(RSIdataset)
我得到了以下输出:
EMA
2015-10-23 58.91729
2015-10-26 51.03857
2015-10-27 47.74480
2015-10-28 53.62664
2015-10-29 54.89976
2015-10-30 56.63444
但是当我把开始日改为2015-07-01,并保持其他代码相同时,我得到了:
EMA
2015-10-23 57.69569
2015-10-26 50.29627
2015-10-27 47.17508
2015-10-28 52.91749
2015-10-29 54.16700
2015-10-30 55.87331
我的问题是,即使设置了n = 14,并且在相同的日期(例如2015-10-30),当startDate改变时RSI输出也不同。应该不仅仅是2015-10-30之前的14天吗?在这种情况下,无论startDate是什么,它都应该是相同的? 提前谢谢你
答案 0 :(得分:2)
如果更改开始日期并使用默认移动平均线(或任何递归移动平均线),结果将始终不同。请参阅let numbersDictionary =
[('I', 1); ('V', 5); ('X', 10); ('L', 50); ('C', 100); ('D', 500); ('M', 1000)]
|> Map.ofList
let takeVal = function
| Some v -> v
| None -> 0
let rec evaluate = function
| [] -> []
| head::tail -> takeVal (numbersDictionary.TryFind head)::evaluate tail
evaluate ['X'; 'V']
// val it : int list = [10; 5]
中的警告部分:
使用计算一些指标(例如EMA,DEMA,EVWMA等) 指标&#39;拥有以前的值,因此不稳定 短期的。随着指标接收更多数据,其输出 变得更稳定。见下面的例子。
相关的例子是:
?MovingAverages