【问题标题】:EMA with multiple periods in RR中具有多个周期的EMA
【发布时间】:2021-03-01 03:49:44
【问题描述】:

我正在尝试计算标准普尔 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 创建一个新列时是否可以向上计数?怎么可能呢?

此外,您将如何为这些列创建正确的标签?在上面的示例中,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

谢谢大家!

【问题讨论】:

    标签: r quantmod ttr


    【解决方案1】:

    您可以使用 for 循环并合并循环中的所有内容。优点是您合并 xts 对象。之后,您可以根据需要将其转换为 data.frame。

    n = c(1:3, 5) # choose the number of EMA periods
    
    for(i in n) {
      var <- EMA(SP500$GSPC.Close, n = i, wilder = FALSE) # create the EMA
      var <- setNames(var, paste0("EMA", i)) # rename the variable
      SP500 <- merge(SP500, var) # merge with original
    }
    
    head(SP500) # SP500 is still an xts object
    
               GSPC.Close    EMA1     EMA2     EMA3     EMA5
    2020-01-02    3257.85 3257.85       NA       NA       NA
    2020-01-03    3234.85 3234.85 3246.350       NA       NA
    2020-01-06    3246.28 3246.28 3246.303 3246.327       NA
    2020-01-07    3237.18 3237.18 3240.221 3241.753       NA
    2020-01-08    3253.05 3253.05 3248.774 3247.402 3245.842
    2020-01-09    3274.70 3274.70 3266.058 3261.051 3255.461
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-07
      • 2021-07-11
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      • 2014-10-11
      • 2020-10-28
      • 1970-01-01
      相关资源
      最近更新 更多