Как получить курсы обмена валют в R

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

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

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

2 ответов


можно использовать quantmod получить ваши котировки. (Я не уверен, насколько задерживаются котировки 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, или мой twsInstrument пакет (что в основном просто обертки для функций IBrokers)

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

выглядит так: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)
}