用R中的List计算MACD

时间:2018-05-10 10:46:12

标签: r

我已将股票价格加载到R中的列表(DATA)中。说,DATA [[1]]是AAPL。如果我在每个股票下面有以下列:日期,开盘价,最高价,最低价,收盘价。问题在于我计算MACD并使用以下命令将其分配给列表中的列:

DATA[[1]]$Macd <- MACD(DATA[[1]]$Close,nFast=12, nSlow=26, nSig=9, maType = "EMA")

我得到一列值,我不确定那些值是什么。

但是当我通过将MACD分配给变量

来计算MACD时
 macd <- MACD(DATA[[2]]$Close,nFast=12, nSlow=26, nSig=9, maType = "EMA")

我有两列 macd 信号

当我使用MACD函数计算List中的值时,有人可以帮我弄清楚如何获得两列值(macd和signal)吗?

P.S。我在 TTR

下使用了 MACD 功能

1 个答案:

答案 0 :(得分:1)

您已经知道,MACD函数提供两列值- macd signal 。 您所需要做的就是通过引用其MACD索引1和2将它们分配给DATA [[1]]中的两个新列。 这是代码:

library(quantmod)
DATA <- list(getSymbols('AAPL', from=Sys.Date()-100, auto.assign=FALSE))
names(DATA[[1]])=c('open','high','low','close','volume','adjusted')
macd <- MACD(DATA[[1]]$close, maType='EMA')
   tail(macd, 2)  #verify
DATA[[1]]$macd <- macd[,1]
DATA[[1]]$sgnl <- macd[,2]
   tail(DATA[[1]][,c('macd','sgnl')], 2)  #verify

P.S。由于您使用的是MACD默认值(nFast = 12,nSlow = 26,nSig = 9),因此可以在代码中忽略它们。