Utilitários em Java e Python para ler arquivos de histórico de cotações da B3

No post anterior, sobre o KNRI11, mencionei que fiz o download de vários arquivos com o histórico de cotações a partir do site da B3.

Entretanto, esses arquivos, apesar de serem bastante completos, não estão organizados de maneira prática e usual, sendo grandes arquivos de texto com as informações contidas em um formato posicional, ou seja, cada linha do arquivo tem várias informações que estão em posições fixas.

Isso torna a leitura do arquivo em Excel, por exemplo, uma tarefa mais complicada.

Por isso, fiz alguns programas utilitários que leem esses arquivos e geram arquivos no formato .csv que podem ser abertos diretamente no Excel.

Os programas podem ser encontrados neste repositório no github e não têm nenhuma restrição de licença.

Existem duas versões dos programas, uma em Java e outra em Python. Abaixo deixo um pequeno tutorial de como usá-los.

Preparação - Baixando arquivos da B3

Antes, é necessário baixar os arquivos com os históricos de cotações do site da B3. Atualmente o link é este: https://www.b3.com.br/pt_br/market-data-e-indices/servicos-de-dados/market-data/historico/mercado-a-vista/series-historicas/



É necessário selecionar o ano desejado (os arquivos são por ano) e preencher um captcha para comprovar que você é uma pessoa acessando. Provavelmente você vai tentar algumas vezes, já que os caracteres que o site da B3 gera são usualmente muito ruins de se ler.



Será feito o download de um arquivo .zip, referente ao ano selecionado. Neste exemplo, requisitei os dados do ano 2023, me gerando o arquivo COTAHIST_A2023.ZIP.



Depois de fazer o download de todos os arquivos referentes aos anos desejados, será necessário extrair os arquivos .TXT de dentro dos arquivos .ZIP, para uma pasta em comum onde trabalharemos. 

Por exemplo, assumindo que iríamos trabalhar numa pasta chamada "cotacoes" no disco D:\, poderíamos clicar em cima dos arquivos .ZIP com o botão direito e pedir para "Extrair Tudo..."



Assim que todos os arquivos dos anos pretendidos tiverem sido baixados e extraídos, podemos partir para o uso dos programas.



Versão Java

Em primeiro lugar, será necessário checar se o Java está instalado no computador e qual a versão instalada, se houver.

Para isso, abra um Prompt de Comando. (Pode-se usar o atalho com as teclas "Windows" e "R", digitar "cmd" na tela "Executar" e clicar em "OK").



Na tela que se abrir, digite "java -version". Se houver alguma versão do Java instalado, será mostrado. Caso contrário, aparecerá uma mensagem de que java não foi reconhecido como comando ou programa.

Caso não tenha o Java instalado, você pode tentar a versão em Python ou instalar o Java.

Caso o Java esteja instalado, você pode baixar do github as versões compiladas dos programas. Aqui neste tutorial irei mostrar apenas uma versão do programa, mais completa, que lê vários arquivos. Para a outra versão, pode-se ler o README que consta no github.

Primeiro, acesse o github (https://github.com/eeyamane/public-utils-b3), baixe o arquivo ExtraiPapelSeriesHistoricasB3VariosArquivos.class e salve-o na mesma pasta que colocou os .TXTs da B3 (no nosso exemplo, a pasta D:\cotacoes)



Abra um Prompt de comando (da mesma forma que foi feito para verificar a versão do Java), navegue até a pasta em que os arquivos foram salvos e execute o comando:



java ExtraiPapelSeriesHistoricasB3VariosArquivos COTAHIST_A 2019 KNRI11 CotacoesFII.csv

Onde você pode alterar:

COTAHIST_A - padrão do nome dos arquivos da B3. Só altere se você alterou o nome dos arquivos baixados da B3, por algum motivo.

2019 - ano inicial da busca. O programa sempre inicia a busca pelo arquivo do ano passado, até o ano atual. Assim, no exemplo, o primeiro arquivo até o ano atual deveria ser o COTAHIST_A2019.TXT.

KNRI11 - ticker do papel a ser buscado. Se quiser buscar ao mesmo tempo mais de um papel, coloque entre ponto-e-vírgula (;). Por exemplo, para buscar KNRI11 e HGBS11, deveria ser KNRI11;HGBS11

CotacoesFII.csv - nome do arquivo a ser gerado com as cotações.



Versão Python

Em primeiro lugar, será necessário checar se o Python está instalado no computador e qual a versão instalada, se houver.

Para isso, abra um Prompt de Comando. (Pode-se usar o atalho com as teclas "Windows" e "R", digitar "cmd" na tela "Executar" e clicar em "OK").

Na tela que se abrir, digite "py --version" ou "python --version". Se houver alguma versão do Python instalado, será mostrado. Caso contrário, aparecerá uma mensagem de que python ou py não foi reconhecido como comando ou programa.



Caso o Python esteja instalado, você pode baixar do github o arquivo com o script/programa. Há, no arquivo, duas versões (semelhantes às duas versões feitas em Java), mas aqui neste tutorial irei mostrar  o uso de apenas um script, mais completo, que lê vários arquivos. Para outra versão, pode-se ler o README que consta no github.

Primeiro, acesse o github (https://github.com/eeyamane/public-utils-b3), baixe o arquivo ExtraiPapelSeriesHistoricasB3.py e salve-o na mesma pasta que colocou os .TXTs da B3 (no nosso exemplo, a pasta D:\cotacoes)




Abra o arquivo baixado com algum editor de sua preferência (pode ser até o Bloco de Notas do windows).

Vá até o final do arquivo e edite a linha que não começa com um #.

Deixe-a assim:

extrair_cotacoes_varios_arquivos('COTAHIST_A', 2019, 'KNRI11', 'CotacoesFII.csv')

e salve o arquivo.



Abra um Prompt de comando (da mesma forma que foi feito para verificar a versão do Python), navegue até a pasta em que os arquivos foram salvos e execute o script, com o comando:



py ExtraiPapelSeriesHistoricasB3.py

ou 

python ExtraiPapelSeriesHistoricasB3.py 

Os parâmetros da função

extrair_cotacoes_varios_arquivos('COTAHIST_A', 2019, 'KNRI11', 'CotacoesFII.csv')

são similares aos argumentos do programa versão Java, então por isso vale a mesma lógica.

É isso. Espero que ajude.

Comentários

Postagens mais visitadas deste blog

Investindo no FII KNRI11, poderíamos viver de renda?