Mam problem z następującym skryptem 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"
)
Wartość SMA jest obliczana, ale w niewłaściwej kolejności. Więc muszę zamówić plik rosnąco przed obliczeniem SMA? Myślę, że data w pliku jest używana jako ciąg znaków, a nie jako data?
Nie używam getSymbols("AAPL",src="yahoo")
ponieważ zwraca tylko dane od 2007 do teraz i żadnych starszych danych.
Odpowiedzi:
2 dla odpowiedzi № 1Nie używałem biblioteki quantmod, ale funkcja yahooSeries () w bibliotece fImport może dostarczyć pełnej długości danych.
W przypadku danych, należy przekonwertować datę ciągu na format daty i kolejność, tutaj jest kod:
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), ]