Come si evince dal nome, YahooFinance
è un'interfaccia verso i servizi offerti dal sito finance.yahoo.com che fornisce dati finanziari in tempo reale.
Subito un esempio che ricava le quote dei titoli Red Hat e Microsoft:
require 'rubygems' require 'yahoofinance' quote_type = YahooFinance::StandardQuote quote_symbols = "RHT,MSFT" YahooFinance::get_quotes(quote_type, quote_symbols) do |q| puts "#{q.symbol}: #{q.lastTrade} (#{q.changePercent}%)" end
è tutto molto intuitivo, raccogliamo i dati necessari attraverso il metodo YahooFinance::get_quotes
e stampiamo alcune informazioni; più precisamente questo codice stamperà la sigla del titolo, l'ultima quotazione e la variazione percentuale:
RHT: 20.83 (0.19%) MSFT: 29.52 (0.75%)
In alternativa avremmo potuto usare il metodo get_info
ottenendo pressappoco le stesse informazioni. Se invece vogliamo stampare tutte le informazioni disponibili basta mettere una riga del genere nel blocco:
puts q.to_s
per ottenere
YahooFinance::StandardQuote volume = 2510972 ask = 0.0 lastTradeWithTime = 4:02pm - <b>20.83</b> bid = 0.0 dayRange = 20.63 - 21.22 changePercent = 0.19 date = 8/2/2007 tickerTrend = -==+-= changePoints = 0.04 change = +0.04 - +0.19% name = RED HAT INC open = 21.02 previousClose = 20.79 lastTrade = 20.83 averageDailyVolume = 2311880 dayLow = 20.63 time = 4:02pm dayHigh = 21.22 symbol = RHT
Oltre ad ottenere i dati in tempo reale YahooFinance
permette di recuperare anche i dati storici relativi ai titoli. Ad esempio per ottenere l'andamento di Yahoo negli ultimi 5 giorni possiamo utilizzare il metodo YahooFinance::get_HistoricalQuotes_days
in questo modo:
YahooFinance::get_HistoricalQuotes_days( 'RHT', 5 ) do |q| puts "#{q.symbol}: [#{q.date}] #{q.open} -> #{q.close}" end
In questo modo otteniamo la quota di apertura e quella di chiusura degli utlimi 5 giorni:
RHT: [2007-07-13] 21.72 -> 21.38 RHT: [2007-07-12] 21.4 -> 21.7 RHT: [2007-07-11] 21.24 -> 21.26 RHT: [2007-07-10] 20.97 -> 21.15 RHT: [2007-07-09] 21.39 -> 20.97
Per maggiori dettagli rimando alla pagina del progetto.