2016-03-20 10 views
1

Ich möchte eine Liste von Aktiensymbolen durchlaufen und sie mit chartSeries ausdrucken. Es wäre einfacher, als immer das Argument zu ändern. Leider habe ich immer eine Fehlermeldung erhalten, wenn ich in einer Schleife oder Teilmenge wollen:xtsible object, looping in quantmod

Error in try.xts(x, error = "chartSeries requires an xtsible object"): 
    chartSeries requires an xtsible object 

Hier den Code, der den Fehler erzeugt:

library(quantmod) 
stocks <- c("FIS", "AXP", "AVB") 
symbols <- (getSymbols(stocks, src='yahoo')) 
for (i in symbols){ 
    chartSeries(i, theme="white", 
     TA="addVo();addBBands();addCCI();addSMA(20, col='blue'); 
     addSMA(5, col='red');addSMA(50, col='black')", subset='last 30 days')  
} 

oder nur:

chartSeries(symbols[1], theme="white", 
     TA="addVo();addBBands();addCCI();addSMA(20, col='blue'); 
     addSMA(5, col='red');addSMA(50, col='black')", subset='last 30 days') 

Antwort

0

symbols a Zeichenvektor. Es ist keine Liste von XTS-Objekten. Der Aufruf von chartSeries auf einem Zeichenvektor verursacht den Fehler.

R> chartSeries("OOPS") 
Error in try.xts(x, error = "chartSeries requires an xtsible object") : 
    chartSeries requires an xtsible object 

Eine Lösung ist es, alle heruntergeladenen Daten in einer Umgebung zu setzen, dann chartSeries in der Umgebung auf jedem Objekt aufrufen.

library(quantmod) 
stocks <- c("FIS", "AXP", "AVB") 
stockEnv <- new.env() 
symbols <- getSymbols(stocks, src='yahoo', env=stockEnv) 
for (stock in ls(stockEnv)){ 
    chartSeries(stockEnv[[stock]], theme="white", name=stock, 
     TA="addVo();addBBands();addCCI();addSMA(20, col='blue'); 
     addSMA(5, col='red');addSMA(50, col='black')", subset='last 30 days')  
}