2014-11-01 2 views
7

Есть ли какие-либо пакеты/функции R, чтобы получить обменные курсы в режиме реального времени, например. от Google Finance? Предпочитаете избегать RCurl или других парсеров, если что-то уже там.Как получить курсы обмена валют в R

В частности, данные векторы символов «от» и «до» валюты мне бы хотелось узнать. Что-то вроде:

IdealFunction(c("CAD", "JPY", "USD"), c("USD", "USD", "EUR")) 
+0

Посмотрите на пакете 'TFX' – DatamineR

+1

Вы можете посетить пакеты, предлагаемые здесь (TFX включено): http://www.thertrader.com/2013/11/08/financial- data-доступный от-r-part-iii/ – KFB

ответ

12

Вы можете использовать quantmod, чтобы получить Yahoo котировки. (Я не знаю, как задержка Yahoo FX котировки, или, как часто они обновляются.)

library(quantmod) 
from <- c("CAD", "JPY", "USD") 
to <- c("USD", "USD", "EUR") 
getQuote(paste0(from, to, "=X")) 
#     Trade Time Last Change % Change Open High Low Volume 
#CADUSD=X 2014-11-01 08:23:00 0.8875 N/A  N/A N/A N/A N/A N/A 
#JPYUSD=X 2014-11-01 08:23:00 0.0089 N/A  N/A N/A N/A N/A N/A 
#USDEUR=X 2014-11-01 08:23:00 0.7985 N/A  N/A N/A N/A N/A N/A 

Или TFX в режиме реального времени, миллисекунды датируемые котировки, если вы подписаться на бесплатный аккаунт. (Обратите внимание, вы должны использовать рыночные конвенции, т.е. USD/JPY вместо JPY/USD)

library(TFX) 
pairs <- paste(to, from, sep="/") 
QueryTrueFX(ConnectTrueFX(pairs, "validUser", "anytext")) 
# Symbol Bid.Price Ask.Price  High  Low    TimeStamp 
#1 USD/CAD 1.12651 1.12665 1.12665 1.12651 2014-10-31 20:45:00.559 
#2 USD/JPY 112.34600 112.35900 112.35900 112.34600 2014-10-31 20:45:00.134 
#3 EUR/USD 1.25234 1.25253 1.25253 1.25234 2014-10-31 20:45:00.598 

Или, если у вас есть учетная запись Interactive Brokers, вы можете использовать IBrokers package, или мой twsInstrument package (который в основном только обертки для IBrokers функций)

library(twsInstrument) 
getQuote(paste0(to, from), src="IB") # only works when market is open. 
+1

Вы можете фактически обойтись без имени пользователя TrueFX: 'qt <- QueryTrueFX(); qt [qt $ Symbol% ​​in% paste (to, from, sep = "/"),] ', но вам все равно нужно знать, нужна ли вам пара, указанная в обратном порядке, или иметь некоторую логику, чтобы увидеть, какая существует , – GSee

+0

Это функция квантового мод теперь не функционирует? квант мод :: getFX ("USD/JPY") возвращает: Ошибка в download.file (oanda.URL, DestFile = TMP, тихий = многословным!): не может открыть URL «HTTP: //www.oanda .com/валюта/исторические-курсы/скачать? quote_currency = USD & end_date = 2016-04-27 & start_date = 2014-12-15 & период = суточное и дисплей = абсолютная и скорость = 0 & data_range = y2 и цена = середина и вид = таблица & base_currency_0 = JPY & base_currency_1 = & base_currency_2 = & base_currency_3 = & base_currency_4 = & скачать = CSV ' – tim

+1

@tim он был исправлен в версии разработки. Кроме того, вы можете работать следующим образом: 'options (download.file.method =" wget "); getFX («USD/JPY») ' – GSee

3

Похоже TFX и quantmod имеют функции для этого (благодаря @RStudent и @KFB для кончиков). Я предпочел quantmod, так как он не требовал настройки учетной записи, но AFAICT не существует векторной функции моментального снимка, такой как то, что я ищу. Эта функция GetExchangeRates делает это:

GetExchangeRates <- function(from, to, dt=Sys.Date()) { 
    require(quantmod) 
    obj.names <- getFX(paste0(from, "/", to), from=dt, to=dt) 
    result <- numeric(length(obj.names)) 
    names(result) <- obj.names 
    for (obj.name in obj.names) { 
    result[obj.name] <- as.numeric(get(obj.name))[1] 
    # Clean up  
    rm(obj.name) 
    } 
    return(result) 
} 

TestExchangeRates <- function() { 
    from <- c("CAD", "JPY", "USD") 
    to <- c("USD", "USD", "EUR") 
    GetExchangeRates(from, to) 
} 
+2

'getFX' хорош для исторических запросов, но он обновляется ежедневно. – GSee

Смежные вопросы