2012-09-02 15 views
5

Sto tentando di caricare più simboli utilizzando un file CSV anziché il download da Yahoo. Il codice originale funziona alla grande e usaCaricare più simboli utilizzando csv con quantmod

load.packages('quantmod') 
tickers = spl('TLT,IWM,GLD') 
data <- new.env() 
getSymbols(tickers, src = 'yahoo', from = '1980-01-01', env = data, 
      auto.assign = T) 

quando provo usando il codice seguente, tuttavia, il risultato e ' "Indice fuori dai limiti" errori più avanti nello script:

load.packages('quantmod') 
tickers = spl('TLT,IWM,GLD') 
data <- new.env() 
getSymbols(tickers, src="csv", dir= "C:/Users/Admiral/Downloads/", 
      env = data, auto.assign = T) 

Qualcuno ha pensieri Why il secondo set di codici non funzionerà? Per testare ho appena scaricato dati CSV da Yahoo e salvato localmente (Windows). Non ottengo gli errori di pedice se uso solo un file csv. Ho anche provato il codice qui sotto, ma ottengo gli stessi errori più avanti nello script:

setSymbolLookup(tickers=list(src="csv", dir= "C:/Users/Admiral/Downloads/")) 
getSymbols(tickers, auto.assign = T, from = '1980-01-01', env=data) 
+0

Che sembra codice investitore sistematico. Esegui 'rm (index.xts)', quindi prova di nuovo il codice. (http://stackoverflow.com/questions/12124683/r-index-or-index-xts-changes-the-values-of-date-of-a-time-series-why/12125165#12125165) – GSee

+0

Sì, è il codice SI - ho provato il tuo suggerimento e non sembrava avere alcun effetto. – AdmiralF

+0

Se vuoi che scopriamo perché getSymbols.csv non funziona per te, allora dovrai mostrarci alcuni dei tuoi file CSV. O forse potresti semplicemente mostrare come li hai creati. – GSee

risposta

2

vorrei farlo usando il pacchetto FinancialInstrument

require('quantmod') 
require('FinancialInstrument') 
tickers <- c("TLT", "IWM", "GLD") 
data <- new.env() 
getSymbols(tickers, src = 'yahoo', from = '1980-01-01', env = data) 

# Now save the data in a directory 
tmpdir <- tempdir() 
saveSymbols.common(tickers, tmpdir, env=data) 

#remove the data  
rm(list=tickers, pos=data) 
ls(data) # see that there is nothing there 
# Now load the data back from disk 
getSymbols(tickers, src='FI', dir=tmpdir, env=data, split_method='common') 
ls(data) 

Se si desidera utilizzare getSymbols.csv, i dati ha deve avere la data e 6 colonne (OHLCVA)

#write data to csv files on disk 
for (i in seq_along(tickers)) {  
    write.zoo(get(tickers[i], pos=data), file=paste0(tmpdir, "/", tickers[i], ".csv"), sep=",") 
} 
rm(list=tickers, pos=data) #remove from memory 
getSymbols(tickers, src='csv', dir=tmpdir)#, env=data) #load from csv files 
+0

sebbene, che lo salva come file 'rda', non CSV – GSee

+0

Grazie per l'aiuto. Quanto sopra funziona, ma posso modificare il file rda prima di eseguire lo script (cioè modificare il prezzo di chiusura)? Sto cercando di utilizzare i dati modificati piuttosto che i dati di Yahoo. – AdmiralF

+0

Sì, oppure è possibile modificarli prima di salvarli. – GSee

Problemi correlati