addTA - naCheck(x,n)中的错误:系列包含非领先的NA

时间:2017-10-01 12:24:06

标签: r charts quantmod technical-indicator

我最近尝试创建自己的技术指标,一个简单的黄金交叉指标。将50 - 200天的EMA添加到我的chartSeries图表中。这首先使用下面的代码工作正常,但在更新quantmod包后,它给了我这个错误消息:

代码(库存数据通过getSymbols中的quantmod函数下载)

#20dayEMA - 50dayEMA Technical indicator, Price and Volume
newEMA <- function(x){(removeNA(EMA(p[,6],n=50)-(EMA(p[,6],n=200))))
}
emaTA <- newTA(newEMA)
emaTA(col='lightgoldenrod3', 'Price')

然后它给了我这个错误信息:

  

naCheck(x,n)出错:系列包含非领先的NA

有谁知道如何删除这些非领先的NA?

2 个答案:

答案 0 :(得分:1)

我不熟悉quantmod软件包,但我玩了你的代码,我觉得我找到了一个可行的解决方案:

library("quantmod")
getSymbols("VELO.CO")
p <- as.xts(c(VELO.CO))

# remove incomplete cases
vec <- which(!complete.cases(p))  # rows 2305 2398
p2 <- p[-vec, ]

newEMA <- function(x) {
    EMA(p2[, 6], n = 20) - (EMA(p2[, 6], n = 50))
}

emaTA <- newTA(newEMA)
barChart(VELO.CO)
emaTA(col = "lightgoldenrod3", "Price")

答案 1 :(得分:0)

您可以使用na.omit,而无需转换为xts-object,因为这是默认设置。

library(quantmod)
getSymbols("VELO.CO")
p <- na.omit(VELO.CO)
newEMA <- function(x) {
  EMA(p[,6], n = 20) - (EMA(p[,6], n = 50))
}

emaTA <- newTA(newEMA)
barChart(VELO.CO)
emaTA(col = "lightgoldenrod3", "Price")
相关问题