Obtendo cotações da Bovespa usando Python

Eu estava em busca de alguma biblioteca que permitisse acessar os dados da Bovespa, de preferência os mais atuais. Existem algumas opções como a API do Yahoo Finance que permite, inclusive, obter gráficos com alguns indicadores, através de uma url, como a mostrada abaixo:

http://chart.finance.yahoo.com/z?s=PETR4.SA&t=6m&q=c&l=on&z=l&a=m26-12-9,&p=e13,e150,

Gráfico correspondente:

Clicando no link acima obtemos um gráfico candlestick de seis meses de cotações com os indicadores MACD, EMA-13 e EMA-150. Há um ano atrás implementei uma página acessando alguns papéis do meu interesse via javascript. O código está aqui no github.

Pesquisando eu encontrei algumas libs de terceiros como o yahoo-finance para ruby e a ystockquote para python. Essas duas libs acessam dados da Yahoo! que muitas vezes alguns poucos dias defasados e depois de algumas consultas parecia que o acesso estava ficando cada vez mais demorado. Não sei se tem um limite para fazer consultas através do webservice da Yahoo! ou algo assim… No gráfico acima por exemplo a última cotação era do dia 23/jan/2014 e hoje são 29 de janeiro de 2014.

Pesquisando mais um pouquinho, agora no google docs, encontrei um script para a planilha de dados chamada “Cotações BMF Bovespa”, que acessa a própria bovespa para obter os dados. Experimentei por algum tempo e me pareceu ser a que estava mais próxima da minha necessidade de obter os dados mais atuais. Claro que fui ver o código do script e aprendi como obter esses dados. Abaixo listo o código python mostrando como é simples obter a última cotação da Petrobras (PETR4) com a respectiva data de atualização da cotação. Basta consultar uma url e fazer o parsing do XML obtido:

import urllib2 as url
import xml.etree.ElementTree as ET

content = url.urlopen("http://www.bmfbovespa.com.br/Pregao-Online/ExecutaAcaoAjax.asp?CodigoPapel=PETR4").read()
root = ET.fromstring(content)
child = root[0]
print child.get('Nome'), child.get("Ultimo"), child.get('Data')

Não vi se tem como pegar o histórico das cotações, mas em todo caso podemos combinar esse serviço da bovespa com os serviços do Yahoo! que fornecem cotações históricas sem muita dificuldade com as libs mencionadas nas linhas acima.

Advertisements

8 Responses to Obtendo cotações da Bovespa usando Python

  1. Dogão says:

    Estou buscando algum serviço Rest ou Webservice mesmo, porém para cotação em tempo real. Esta difícil. Só achei DDE e RTD, mas ambos são fontes de dados para Excel.
    Saberia me informar se você já encontrou algo ? Detalhe, estou disposto a pagar pelo serviço.

    • Eduardo says:

      Olá,
      gostaria de saber tb.Vou tentar entrar em contato com duas corretoras e ver se eles me dão alguma resposta. Abraços.

      • Douglas Araujo says:

        Esta dificil, tentei em varios lugares e ate agora nada. So querem liberar tal informacao para empresa.

  2. Aroldo says:

    A esta altura, é possível que você já tenha encontrado o que procura.

    No entanto, fiz um post em meu blog sobre o tema:
    http://aroldobatista.blogspot.com.br/2013/08/planilha-do-google-com-cotacoes-de.html

  3. O webervice http://www.bmfbovespa.com.br saiu do ar, alguem conhece alguma alternativa?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: