May
1
2008

pyBovespa

Posted In: apple, codes, python, ubuntu by elm

Neste ano eu comecei a investir em ações. É algo ao mesmo tempo emocionante e apavorante porque você pode ganhar e perder dinheiro em questão de horas. Por isso é importante ficar sempre atento as alterações dos valores das ações. Existem vários programas e sites que permitem o acompanhamento das alterações. Mesmo assim, eu aproveitei a manhã de feriado, enquanto me recupero de uma pequena ressaca, e fiz um script em Python que busca os dados da Bovespa e permite o acompanhamento da sua “carteira de ações”. Assim dá para deixar um terminal aberto e ir acompanhando o mercado.
O script foi feito por diversão e uso pessoal, mas se servir para alguém mais legal. O código:

  1. # -*- coding: utf-8 -*-
  2. # Elton Luís Minetto
  3. import urllib
  4. from xml.dom import minidom
  5. from time import sleep
  6. from os import system
  7.  
  8. #adicionar as acoes aqui
  9. #formato ACAO: [num_acoes,valor_compra,data_compra]
  10. acoes = {
  11.  'BBDC4':[100,34.84,'25/04/2008'],
  12.  'PETR4':[100,42.00,'20/04/2008'],
  13. }
  14.  
  15. def atualiza(acoes):
  16.  system('clear')
  17.  url = 'http://www.bovespa.com.br/Mercado/RendaVariavel/InfoPregao/ExecutaAcaoAjax.asp?CodigoPapel='
  18.  for i in acoes:
  19.   url += '|'+i
  20.  f = urllib.urlopen(url)
  21.  xml = f.read()
  22.  xmldoc = minidom.parseString(xml)
  23.  papeis = xmldoc.getElementsByTagName('Papel')
  24.  #cabecalho
  25.  print 'Ação\tValor de Compra\tData da Compra\tQtd\tAtual\tDiferença R$\tDiferença %\tData de Atualização'
  26.  
  27.  total_compra = 0.0
  28.  total_dif_reais = 0.0
  29.  for i in papeis:
  30.   codigo = i.attributes['Codigo'].value
  31.   valor_compra = acoes[codigo][1]
  32.   qtd_acoes = acoes[codigo][0]
  33.   data_compra = acoes[codigo][2]
  34.   valor_atual = i.attributes['Ultimo'].value.replace(',','.')
  35.   data_atual = i.attributes['Data'].value
  36.  
  37.   diferenca_reais = (float(valor_atual) * qtd_acoes) - (valor_compra * qtd_acoes)
  38.   diferenca_perc = (diferenca_reais*100)/(valor_compra * qtd_acoes)
  39.   total_compra += valor_compra * qtd_acoes
  40.   total_dif_reais += diferenca_reais
  41.  
  42.   print '%s\t%02f\t%s\t%d\t%s\t%02f\t%02f\t%s' % (codigo,valor_compra,data_compra,qtd_acoes,valor_atual,diferenca_reais,diferenca_perc,data_atual)
  43.  
  44.  print 'Total de Compra:%02f' % total_compra
  45.  print 'Total da Diferença em Reais:%02f' % total_dif_reais
  46.  total_dif_perc = (total_dif_reais * 100)/total_compra
  47.  print 'Total da Diferença em Percentual:%02f' % total_dif_perc
  48.  sleep(1200)
  49.  
  50. while 1:
  51.  atualiza(acoes)

Eu testei o script no MacOSX Leopard. Mas deve funcionar legal no Linux e no Windows
Download do arquivo

8 Comments

Muito legal a idéia, será útil sim.

Só tem um problema: copiar e colar o código da forma que está não é nada prático (a identação fica errada).

Verdade. Coloquei o link para fazer download do arquivo. Obrigado pela dica

Muito bacana a idéia, mas ficar de olho nas ações eu vou deixar de trabalhar, o negócio é esqueçer as ações lá e coletar o fruto daqui um bom tempo…

Da-lhe Petro e Vale.

Abraços

Opa! ideia do caralho eim… o Elton, vc tem que ficar mais de ressaca… iuahsdiuhuahsuda
vo ta usando e repassando, só preciso descobri como usa primeiro… hahahha muito obrigado, abraço.

Muito bom cara!

3 coisas: 1- muito legal esse script, 2- pelo menos no windows, os caracteres unicode ficaram corretos depois de colocar u”" nos “prints”. 3-o comando system(”clear”) não existe no windows, e sim system(”cls”) :-)

Vou melhorar o script. Testar qual é o sistema operacional e trocar o clear por cls se for o windows. Boa dica. Obrigado

Parabéns Cara, show de bola.

O workshop de Django, esclareu muitas dúvidas, foi do c. Estou me agendando para o de Julho…

Aproveitando vc poderia enviar a doc do WorkShop de django

Something to say?

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.