我正在为技术分析创建股票技术指标。除 MFI 外,大多数指标都运行良好。代码到达 MFI 的那一刻,我得到以下错误
系列包含非领先的 NA
我已验证库存系列中没有非领先的 NA。我仍然收到此错误。下面是一个可重现的代码。感谢任何帮助。
library(ggplot2)
library(quantmod)
library(xts)
library(timeSeries)
library(rpart)
library(ROCR)
get_indicators <- function(stock, period){
stock <- na.locf(stock)
price_change <- Ad(lag(stock,-period)) - Ad(stock)
response <- ifelse(price_change > 0, "Up", "Down")
#Simple Moving Average
sma15 <- SMA(Ad(stock),n=15)
sma50 <- SMA(Ad(stock),n=50)
#Exponential Moving Average
ema15 <- EMA(Ad(stock),n=15)
ema50 <- EMA(Ad(stock),n=50)
#Moving Average Convergence Divergence
macd <- MACD(Ad(stock), nFast=12, nSlow=26, nSig=9, maType= "EMA")
#Relative Strength Index
rsi <- RSI(Ad(stock), n=14, maType= "EMA")
#High, Low, and Adjusted Close xts object
hlac <- as.xts(data.frame(x=Hi(stock), y=Lo(stock), z=Ad(stock)))
#Stochastic Oscillator
sto <- stoch(hlac, nFastK = 14) *100
#Commodity Channel Index
cci <-CCI(hlac, n = 20, c = 0.015)
#Price Rate of Change
proc <- ROC(Ad(stock), n=14) *100
#Momentum
mom <- momentum(Ad(stock), n=14)
#Bollinger Bands
bb <- BBands(Ad(stock),n=20,sd = 2)
#Average True Range
atr <- ATR(hlac, n=14)
#On Balance Volume
obv <- OBV(Ad(stock), Vo(stock))
print(anyNA(stock))
print(sum(is.na(stock)))
#Money Flow Index
mfi <- MFI(hlac,Vo(stock),n=14)
#Feature Aggregation: Combine all derived indicators for model buuilding
indicators <- data.frame(sma15, sma50, ema15, ema50, macd, rsi,
sto, cci, proc, mom, bb$mavg, atr$atr, obv, response)
colnames(indicators) <- c("SMA.15","SMA.50","EMA.15","EMA.50","MACD","MACDSignal",
"RSI","StoFASTK","StoFASTD","StoSLOWD", "CCI.20","PROCR",
"MOM.14", "BB","ATR", "OBV","Response")
return(indicators)
}
start.date <-'2015-01-01'
end.date <-'2020-01-01'
quantmod::getSymbols("SBIN.NS",src="yahoo",from=start.date,to=end.date,periodicity="daily")
stoci <- get_indicators(SBIN.NS,20)
stoci