2014-11-01 18 views
7

Czy są jakieś pakiety/funkcje R, aby uzyskać kursy wymiany w czasie rzeczywistym, np. z Google Finance? Wolałabym unikać RCurl lub innych parserów, jeśli coś już tam jest.Jak uzyskać kursy wymiany walut w R

W szczególności, dane wektory symboli "od" i "do", chciałbym znać stawki. Coś jak:

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

Spójrz na pakiecie 'TFX' – DatamineR

+1

Możesz odwiedzić pakiety sugerowane tutaj (TFX zestawie): http://www.thertrader.com/2013/11/08/financial- Data-available-from-r-part-iii/ – KFB

Odpowiedz

12

Można użyć quantmod aby cytaty Yahoo. (Nie jestem pewien, jak opóźnione cytaty yahoo FX są, albo jak często są one aktualizowane.)

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 

Albo TFX w czasie rzeczywistym, milisekunda o czasie, cytaty, jeśli założyć darmowe konto. (Uwaga trzeba użyć konwencją rynkową, tzn USD/JPY zamiast 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 

Lub jeśli masz konto Interactive Brokers, można użyć IBrokers package, albo mój twsInstrument package (który jest w zasadzie tylko owijarki dla IBrokers funkcji)

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

W rzeczywistości można uzyskać bez nazwy użytkownika TrueFX: 'qt <- QueryTrueFX(); qt [qt $ Symbol% ​​w% paste (to, from, sep = "/"),] ', ale nadal musisz wiedzieć, czy potrzebujesz pary cytowanej w odwrotnej kolejności, lub mieć jakąś logikę, aby zobaczyć, który istnieje . – GSee

+0

czy ta funkcja modów kwantowych jest już nieczynna? quant mod :: getFX ("USD/JPY") zwraca: Błąd w pliku download.file (oanda.URL, destfile = tmp, quiet =! Verbose): nie można otworzyć adresu URL "http: //www.oanda .com/waluty/historyczne-ceny/pobieranie? quote_currency = USD & end_date = 2016-04-27 & start_date = 2014-12-15 & period = daily & display = absolute & rate = 0 & data_range = y2 i price = mid & view = table & base_currency_0 = JPY & base_currency_1 = & base_currency_2 = & base_currency_3 = & base_currency_4 = & download = csv " – tim

+1

@tim został naprawiony w wersji rozwojowej. Możesz też obejść się w następujący sposób: 'options (download.file.method =" wget "); getFX ("USD/JPY") ' – GSee

3

Wygląda TFX i quantmod posiada funkcje do tego (dzięki @RStudent i @KFB na końcach). Wolałem quantmod, ponieważ nie wymagało to założenia konta, ale AFAICT nie ma wektoryzowanej funkcji migawki prądu, na przykład tego, czego szukam. Ta funkcja GetExchangeRates robi to:

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' jest dobre dla historycznych żądań, ale aktualizuje się tylko codziennie. – GSee