我正在尝试计算具有不同基础时期的标准普尔 500 指数的多个 EMA。
#get stock data
library(quantmod)
getSymbols("^GSPC", src="yahoo", from="2020-01-01", to="2020-09-30")
SP500 <- GSPC[,"GSPC.Close"]
我知道如何手动完成,但这不是令人满意的解决方案。
#Calculate different EMA with different periods
EMA1 <- EMA(SP500, n=1, wilder=F)
EMA2 <- EMA(SP500, n=2, wilder=F)
EMA3 <- EMA(SP500, n=3, wilder=F)
data.frame(SP500, EMA1, EMA2, EMA3)
GSPC.Close EMA EMA.1 EMA.2
2020-01-02 3257.85 3257.85 NA NA
2020-01-03 3234.85 3234.85 3246.350 NA
2020-01-06 3246.28 3246.28 3246.303 3246.327
2020-01-07 3237.18 3237.18 3240.221 3241.753
2020-01-08 3253.05 3253.05 3248.774 3247.402
是否可以在为每个新 EMA 创建新列时计算 n?那怎么可能呢?
此外,您将如何为这些列创建正确的标签?在上面的示例中,EMA.1 对应于“EMA2”等等,这可能会造成混淆。手动我会这样做:
EMA1 <- EMA(SP500, n=1, wilder=F)
EMA2 <- EMA(SP500, n=2, wilder=F)
EMA3 <- EMA(SP500, n=3, wilder=F)
mydata <- data.frame(SP500, EMA1, EMA2, EMA3)
colnames(mydata) <- c("GSPC Close","EMA1","EMA2","EMA3")
mydata
GSPC Close EMA1 EMA2 EMA3
2020-01-02 3257.85 3257.85 NA NA
2020-01-03 3234.85 3234.85 3246.350 NA
2020-01-06 3246.28 3246.28 3246.303 3246.327
2020-01-07 3237.18 3237.18 3240.221 3241.753
感谢大家!