2014-11-01 23 views
7

Ci sono pacchetti/funzioni R per ottenere i tassi di cambio in tempo reale, ad es. da Google Finanza? Preferirei evitare RCurl o altri parser se qualcosa è già in circolazione.Come ottenere i tassi di cambio in R

In particolare, dati i vettori di simboli "da" e "a", desidero conoscere le tariffe. Qualcosa di simile:

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

un'occhiata al pacchetto 'TFX' – DatamineR

+1

Si consiglia di visitare i pacchetti suggeriti qui (TFX inclusa): http://www.thertrader.com/2013/11/08/financial- data-accessible-from-r-part-iii/ – KFB

risposta

12

È possibile utilizzare quantmod per ottenere le quotazioni di Yahoo. (Io non sono sicuro di come ritardate citazioni yahoo FX sono, o quanto spesso stanno aggiornati.)

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 

O TFX in tempo reale, millisecondo citazioni timestamp se ti iscrivi per un account gratuito. (Nota È necessario utilizzare convenzione di mercato, vale a dire USD/JPY al posto di 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 

Oppure, se si dispone di un account Interactive Brokers, è possibile utilizzare il IBrokers package, o il mio twsInstrument package (che è fondamentalmente solo involucri per le funzioni IBrokers)

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

Si può effettivamente ottenere senza un nome utente TrueFX: 'qt <- QueryTrueFX(); qt [qt $ Simbolo% in% incolla (to, from, sep = "/"),] ', ma dovresti comunque sapere se hai bisogno della coppia quotata al contrario, o avere qualche logica per vedere quale esiste . – GSee

+0

questa funzione di mod mod ora defunta? quant mod :: getFX ("USD/JPY") restituisce: Errore nella download.file (oanda.URL, destfile = tmp, tranquilla = verbose!): non può aprire URL 'http: //www.oanda .com/valuta/storico-tassi/scaricare? quote_currency = USD & data_finale = 2016/04/27 & start_date = 2014/12/15 & periodo = ogni giorno e display = assoluta & rate = 0 & data_range = y2 e prezzo = mid & view = tavolo e base_currency_0 = JPY & base_currency_1 = & base_currency_2 = & base_currency_3 = & base_currency_4 = & scaricare = csv ' – tim

+1

@tim è stato corretto nella versione di sviluppo. In alternativa, puoi lavorare in questo modo: 'options (download.file.method =" wget "); getFX ("USD/JPY") ' – GSee

3

Sembra TFX e quantmod hanno funzioni di questo (grazie a @RStudent e @KFB per le punte). Ho preferito quantmod dato che non è stato necessario creare un account, ma AFAICT non ha alcuna funzione di snapshot corrente vettorizzata come quello che sto cercando. Questa funzione GetExchangeRates fa questo:

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' è utile per le richieste storiche, ma si aggiorna solo giornalmente. – GSee

Problemi correlati