web-dev-qa-db-ja.com

Rで為替レートを取得する方法

リアルタイムで為替レートを取得するためのRパッケージ/関数はありますか? GoogleFinanceから?何かがすでにそこにある場合は、RCurlまたは他のパーサーを避けたいと思います。

具体的には、「from」と「to」の通貨記号のベクトルが与えられた場合、レートを知りたいです。何かのようなもの:

IdealFunction(c("CAD", "JPY", "USD"), c("USD", "USD", "EUR"))
11
Max Ghenis

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。 (市場の慣習を使用する必要があることに注意してください。つまり、JPY/USDではなくUSD/JPY)

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パッケージ またはmy twsInstrumentパッケージ (基本的にはIBrokers関数の単なるラッパー)を使用できます。

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

TFXquantmodにはこのための関数があるようです(ヒントについては@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)
}
3
Max Ghenis