【问题标题】:addTA - Error in naCheck(x, n) : Series contains non-leading NAsaddTA - naCheck(x, n) 中的错误:系列包含非领先的 NA
【发布时间】:2018-03-12 17:57:03
【问题描述】:

我最近尝试创建自己的技术指标,一个简单的黄金交叉指标。 50 - 200 天 EMA 要添加到我的 chartSeries 图表中。起初,下面的代码运行良好,但在 quantmod 的更新包发布后,它给了我这个错误消息:

代码(股票数据通过quantmod中的getSymbols函数下载)

#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?

【问题讨论】:

  • 能否展示完整的代码,包括如何下载数据?
  • getSymbols("VELO.CO") p
  • @jsb getSymbols 和 p

标签: r charts quantmod technical-indicator


【解决方案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")

【讨论】:

  • 这行得通,谢谢@jsb which 函数到底是做什么的?
  • which 给出逻辑对象的TRUE 索引,在本例中为complete.cases 的输出向量。
【解决方案2】:

您可以使用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")

【讨论】:

    猜你喜欢
    • 2021-04-01
    • 1970-01-01
    • 2016-07-10
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    相关资源
    最近更新 更多