使用 R quantmod 将趋势线数据计算为股票列表
Calculating trendline data to list of stocks using R quantmod
我正在尝试下载一些股票数据,我想从中自动挑选出满足与移动平均线相关的特定条件的数据。到目前为止,我已经能够下载数据,但我在尝试为每只股票创建移动平均线数据时遇到了困难。
# Read csv as character list
ticker.list <- as.character(read.csv("shortftse250tickers.csv",header=F)$V1)
ftse250 <- new.env()
allData <- list()
# Get data
allData <- getSymbols(ticker.list, from='2017-01-03', src='google', env = ftse250)
# Extract Close data in correct order
tl <- mget(ticker.list, envir = ftse250)
closeData <- do.call(merge, eapply(ftse250, Cl)[allData])
# Calculate EMAs for each stock
for (i in ticker.list) {
ema3 <- EMA(closeData[i], 3)
ema7 <- EMA(closeData[i], 7)
}
一切似乎都正常,直到我到达最后一个 for 循环,我收到错误:
Error in if (length(c(year, month, day, hour, min, sec)) == 6 && c(year, :
missing value where TRUE/FALSE needed
我尝试使用 newData <- as.list(closeData)
将 closeData 转换为列表,但收到错误:
Error in EMA(newData[i], 3) : Invalid 'n'
我可以手动计算 EMA 没问题:
EMA(newData$ZPLA)
如有任何帮助,我们将不胜感激。
两件事:(1) closeData 的列名称附加了 .Close。 (2) closeData 是一个 xts 对象,因此您需要以不同的方式进行子集化。试试这个循环:
# Calculate EMAs for each stock
for (i in paste0(ticker.list, ".Close")) {
ema3 <- EMA(closeData[, i], 3)
ema7 <- EMA(closeData[, i], 7)
}
我正在尝试下载一些股票数据,我想从中自动挑选出满足与移动平均线相关的特定条件的数据。到目前为止,我已经能够下载数据,但我在尝试为每只股票创建移动平均线数据时遇到了困难。
# Read csv as character list
ticker.list <- as.character(read.csv("shortftse250tickers.csv",header=F)$V1)
ftse250 <- new.env()
allData <- list()
# Get data
allData <- getSymbols(ticker.list, from='2017-01-03', src='google', env = ftse250)
# Extract Close data in correct order
tl <- mget(ticker.list, envir = ftse250)
closeData <- do.call(merge, eapply(ftse250, Cl)[allData])
# Calculate EMAs for each stock
for (i in ticker.list) {
ema3 <- EMA(closeData[i], 3)
ema7 <- EMA(closeData[i], 7)
}
一切似乎都正常,直到我到达最后一个 for 循环,我收到错误:
Error in if (length(c(year, month, day, hour, min, sec)) == 6 && c(year, :
missing value where TRUE/FALSE needed
我尝试使用 newData <- as.list(closeData)
将 closeData 转换为列表,但收到错误:
Error in EMA(newData[i], 3) : Invalid 'n'
我可以手动计算 EMA 没问题:
EMA(newData$ZPLA)
如有任何帮助,我们将不胜感激。
两件事:(1) closeData 的列名称附加了 .Close。 (2) closeData 是一个 xts 对象,因此您需要以不同的方式进行子集化。试试这个循环:
# Calculate EMAs for each stock
for (i in paste0(ticker.list, ".Close")) {
ema3 <- EMA(closeData[, i], 3)
ema7 <- EMA(closeData[, i], 7)
}