Skip to content

Instantly share code, notes, and snippets.

@rmff
Created August 23, 2023 17:16
Show Gist options
  • Save rmff/d77c96110b09ba1caed6c39373f405cf to your computer and use it in GitHub Desktop.
Save rmff/d77c96110b09ba1caed6c39373f405cf to your computer and use it in GitHub Desktop.
Extrator e formatador de séries históricas B3 (Brasil, Bolsa, Balcão) para CVS padrão pt_BR
#!/bin/sh
#Arquivos de dados
#https://www.b3.com.br/pt_br/market-data-e-indices/servicos-de-dados/market-data/historico/mercado-a-vista/series-historicas/
#Salvar este script dentro da mesma pasta dos arquivos anuais de dados
echo "\nRaiz do ativo. ex: Petrobrás use apenas as 4 primeiras letras 'PETR'"
raiz=$1
arqs=`ls COTAHIST*.TXT`
echo "\nUtilizando os arquivos: \n${arqs}"
echo "\nFiltrando ativo ${raiz}..."
grep -hi -E "^[0-9]+${raiz}" ./COTAHIST* > $raiz.txt
echo "\nOrdernando dados..."
sort -k1.13,1.24 -k1.2,1.10nr $raiz.txt > $raiz.sorted.txt
echo "\nCriando CSV..."
echo "Formatando números com a vírgula..."
echo "Formatando datas AAAAMMDD para DD/MM/AAAA..."
awk -v \
FIELDWIDTHS="2 8 2 12 3 12 10 3 4 13 13 13 13 13 13 13 5 18 18 13 1 8 7 13 12 3" \
'BEGIN{print "TIPREG;DTPREGAO;CODBDI;CODNEG;TPMERC;NOMRES;ESPECI;PRAZOT;MODREF;PREABE;PREMAX;PREMIN;PREMED;PREULT;PREOFC;PREOFV;TOTNEG;QUATOT;VOLTOT;PREEXE;INDOPC;DATVEN;FATCOT;PTOEXE;CODISI;DISMES"} \
{DTPREGAO=substr($2,7,2)"/"substr($2,5,2)"/"substr($2,1,4); DATVEN=substr($22,7,2)"/"substr($22,5,2)"/"substr($22,1,4); \
f=sprintf("%s;%s;%s;%s;%s;%s;%s;%s;%s;%.2f;%.2f;%.2f;%.2f;%.2f;%.2f;%.2f;%s;%s;%.2f;%.2f;%s;%s;%s;%.2f;%s;%s",\
$1,DTPREGAO,$3,$4,$5,$6,$7,$8,$9,$10/100,$11/100,$12/100,$13/100,$14/100,$15/100,$16/100,$17,$18,$19/100,$20/100,$21,DATVEN,$23,$24/100,$25,$26); gsub(/\./,",",f); print f;}' \
./$raiz.sorted.txt > ./$raiz.csv
echo "\nRemovendo arquivos temporários..."
rm $raiz.sorted.txt $raiz.txt
echo "\nFim."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment