pyBovespa

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:

# -*- coding: utf-8 -*-
# Elton Luís Minetto
import urllib
from xml.dom import minidom
from time import sleep
from os import system

#adicionar as acoes aqui
#formato ACAO: [num_acoes,valor_compra,data_compra]
acoes = {
	'BBDC4':[100,34.84,'25/04/2008'],
	'PETR4':[100,42.00,'20/04/2008'],
}

def atualiza(acoes):
	system('clear')
	url = 'http://www.bovespa.com.br/Mercado/RendaVariavel/InfoPregao/ExecutaAcaoAjax.asp?CodigoPapel='
	for i in acoes:
		url += '|'+i
	f = urllib.urlopen(url)
	xml = f.read()
	xmldoc = minidom.parseString(xml)
	papeis = xmldoc.getElementsByTagName('Papel')
	#cabecalho
	print 'Ação\tValor de Compra\tData da Compra\tQtd\tAtual\tDiferença R$\tDiferença %\tData de Atualização'

	total_compra = 0.0
	total_dif_reais = 0.0
	for i in papeis:
		codigo = i.attributes['Codigo'].value
		valor_compra = acoes[codigo][1]
		qtd_acoes = acoes[codigo][0]
		data_compra = acoes[codigo][2]
		valor_atual = i.attributes['Ultimo'].value.replace(',','.')
		data_atual = i.attributes['Data'].value

		diferenca_reais = (float(valor_atual) * qtd_acoes) - (valor_compra * qtd_acoes)
		diferenca_perc = (diferenca_reais*100)/(valor_compra * qtd_acoes)
		total_compra += valor_compra * qtd_acoes
		total_dif_reais += diferenca_reais

		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)

	print 'Total de Compra:%02f' % total_compra
	print 'Total da Diferença em Reais:%02f' % total_dif_reais
	total_dif_perc = (total_dif_reais * 100)/total_compra
	print 'Total da Diferença em Percentual:%02f' % total_dif_perc
	sleep(1200)

while 1:
	atualiza(acoes)

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

Etiquetado

8 thoughts on “pyBovespa

  1. Cesar disse:

    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).

  2. elm disse:

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

  3. Rafael disse:

    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

  4. Lippert disse:

    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.

  5. yakuza disse:

    Muito bom cara!

  6. leogregianin disse:

    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”) :-)

  7. elm disse:

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

  8. Antonio disse:

    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

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Join 1.472 other followers