2016-08-19 4 views
1

Я пытаюсь загрузить объемные данные Oanda forex, используя quantmod::getSymbols. В файле справки говорится, что вы можете загружать только 500 дней данных за запрос, тогда как я получаю предупреждение о кепке на 5 лет с данными от warnings(). Тем не менее, я попытался создать цикл для загрузки данных с 1997 года до этой даты. Это мой код:Создайте цикл, чтобы загрузить 10-летние данные из Oanda через пакет quantmod

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)) 
} 

Какие изменения следует реализовать?


Edit 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-01-09] (https://github.com/joshuaulrich/quantmod/commit/70e06d723eafb365c5830b79ab1298f7e103ebce) –

+0

Спасибо за ваш комментарий. – Greconomist

ответ

0

Вы можете сделать это, перейдя по вектору дат, которые находятся на расстоянии 500 дней. Обратите внимание, что я завернул вызов 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) 
}))