addTA - naCheck(x, n) 错误:系列包含非前导 NA
addTA - Error in naCheck(x, n) : Series contains non-leading NAs
我最近尝试创建自己的技术指标,一个简单的黄金交叉指标。 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')
然后它给我这个错误信息:
Error in naCheck(x, n) : Series contains non-leading NAs
有谁知道如何删除这些非前导 NA?
我不熟悉 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")
您可以使用 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")
我最近尝试创建自己的技术指标,一个简单的黄金交叉指标。 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')
然后它给我这个错误信息:
Error in naCheck(x, n) : Series contains non-leading NAs
有谁知道如何删除这些非前导 NA?
我不熟悉 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")
您可以使用 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")