Módulo yahoofinance en ruby

ruby, rails Deja un comentario

yahoofinance es un módulo de ruby que se utiliza para obtener las cotizaciones de acciones e índices del sitio web Yahoo! Finance. Permite, además de cotizaciones actuales, obtener cotizaciones históricas.

ruby yahoofinance

Su instalación es muy sencilla, ya que está disponible como gema:

$ sudo gem install yahoofinance
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed yahoofinance-1.2.2

Asimismo es muy fácil de usar. Éste es un script de ejemplo:

require 'rubygems'
require_gem 'yahoofinance'
quote_type = YahooFinance::StandardQuote
quote_symbols = "tef.mc"
YahooFinance::get_quotes( quote_type, quote_symbols ) do |qt|
  puts qt.symbol
  puts "==============================================="
  puts qt.to_s
end

Y ejecutándolo obtenemos:

TEF.MC
===============================================
YahooFinance::StandardQuote
volume = 39562432
ask = 22.06
lastTradeWithTime = 11:38am - <b>22.05</b>
bid = 22.05
dayRange = 22.03 - 22.42
changePercent = -0.23
date = 11/26/2007
tickerTrend =  ====-=
changePoints = -0.05
change = -0.05 - -0.23%
name = TELEFONICA
open = 22.16
previousClose = 22.1
lastTrade = 22.05
averageDailyVolume = 77187648
dayLow = 22.03
time = 11:38am
dayHigh = 22.42
symbol = TEF.MC

Y para obtener, por ejemplo, los datos históricos de los últimos 10 días:

require 'rubygems'
require_gem 'yahoofinance'
#   [0] - Date
#   [1] - Open
#   [2] - High
#   [3] - Low
#   [4] - Close
#   [5] - Volume
#   [6] - Adjusted Close
YahooFinance::get_historical_quotes_days( 'tef.mc', 10 ) do |row|
  puts "#{row[0]} #{row[4]}"
end

Y ejecutándolo obtenemos:

2007-11-23 22.10
2007-11-22 22.09
2007-11-21 22.39
2007-11-20 22.93
2007-11-19 22.74
2007-11-16 22.86

Se puede observar que devuelve 6 filas en lugar de 10. Esto es porque el valor que le pasamos a get_historical_quotes_days es el número de días naturales, no los días en los que el mercado está abierto.

En la página web del proyecto hay más ejemplos de utilización de este práctico módulo.

Deja un comentario