我遇到以下R脚本的问题:
library(quantmod)
mydata = read.csv("C:/AAD.DE.csv")
### getSymbols("AAPL",src="yahoo")
sma20 <- SMA(mydata[,"Close"],20)
write.csv(
data.frame( date=index(mydata[,"Date"])
, coredata(mydata)
, coredata(sma20)
),
row.names=FALSE,
file="C:/neu_AAD.DE.csv"
)
计算SMA但顺序错误。所以我必须在计算SMA之前订购文件升序?我认为文件中的日期用作字符串而不是日期?
我不使用getSymbols("AAPL",src="yahoo")
,因为它只返回2007年之前的数据,而且没有旧数据。
答案 0 :(得分:2)
我没有使用过quantmod库,但是fImport库中的yahooSeries()函数可以为你提供全长的数据。
对于数据顺序,您应该将字符串日期转换为日期格式及其顺序,这里是代码:
library(fImport)
mydata <- yahooSeries(symbols = "AAPL", nDaysBack = 100000)
mydata <- as.data.frame(mydata, stringsAsFactors = FALSE)
mydata <- cbind(rownames(mydata), mydata)
names(mydata) <- c("Date", "Open", "High", "Low", "Close", "Volume", "Adj.Close")
rownames(mydata) <- NULL
mydata$Date <- as.Date(mydata$Date)
mydata <- mydata[order(mydata$Date), ]