2016-08-19 5 views
1

quantmod::getSymbolsを使用して、Oandaの外貨データをダウンロードしようとしています。ヘルプファイルには、リクエストごとに500日分のデータしかダウンロードできないと記載されていますが、warnings()から5年間のデータ上限の警告が表示されます。それにもかかわらず、1997年からこの日までデータをダウンロードするループを作成しようとしました。これは私のコードです量子モデルパッケージを使用してOandaから10年間のデータをダウンロードするループを作成します

library(xts) 
library(quantmod) 

date_from = c("1996-01-01", "2001-01-02", "2005-01-03", "2009-01-03", "2013-01-04") 
date_to = c("2001-01-01", "2005-01-02", "2009-01-03", "2013-01-03", "2016-01-04") 
for (i in 1:5) { 
    getSymbols("EUR/AUD", src="oanda", from = dates_from[i], to = date_to[i]) 
    forex = for (i=1) EURAUD else NULL 
    final_Dataset<- rbind(c(forex, EURAUD)) 
} 

私はどのような変更を行う必要がありますか?


編集1 私はそれが仕事作ったが、それはだらしなく書かれています。どんな提案された変更も高く評価されるでしょう。

date_from = c("1996-01-01", "2001-01-02", "2005-01-03", "2009-01-03", "2013-01-04") 
date_to = c("2001-01-01", "2005-01-02", "2009-01-03", "2013-01-03", "2016-01-04") 
forex = vector(mode = 'list', length = 5) 
for (i in 1:5) { 
    getSymbols("EUR/AUD", src="oanda", from = dates_from[i], to = date_to[i]) 
    forex[[i]] = EURAUD 
} 
EUR_AUD = Reduce(rbind,forex) 
+0

警告が間違っています。制限は500日間の歴史[2009年1月9日以降](https://github.com/joshuaulrich/quantmod/commit/70e06d723eafb365c5830b79ab1298f7e103ebce) –

+0

ご意見ありがとうございます。 – Greconomist

答えて

0

これは、500日離れた日付のベクトルをループすることで実行できます。最初の2つの開始日が機能しなかったので、getSymbolsコールをtryにラップしたことに注目してください。なぜ私は分からない。

require(quantmod) 
Data <- do.call(rbind, lapply(dates, function(d) { 
    sym <- "EUR/AUD" 
    x <- try(getSymbols(sym, src="oanda", from=d, to=d+499, auto.assign=FALSE)) 
    if (inherits(x, "try-error")) 
    return(NULL) 
    else 
    return(x) 
})) 
関連する問題