Как получить курсы обмена валют в 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)
}