Permalink
Browse files

Função nova zzbolsas - Consulta bolsas e ações

  • Loading branch information...
itamarnet committed Oct 5, 2009
1 parent 1a161fe commit 5527cd1643a192e91245853e720d9da86165c5b7
Showing with 204 additions and 0 deletions.
  1. +204 −0 extra/zzbolsas
View
@@ -0,0 +1,204 @@
# ----------------------------------------------------------------------------
# http://br.finance.yahoo.com
# Pesquisa índices de bolsas e cotações de ações
# Sem parametros mostra a lista de bolsas disponíveis(códigos)
# Com o parametro -l apenas mostra as bolsas disponíveis e seus nomes
# Com o parametro sendo um código de bolsa ou ação mostra sua última
# cotação. Se for seguido de uma data, pesquisa a cotação deste dia.
# Com o parametro sendo um código de bolsa seguido de um texto qualquer
# pesquisa-o no nome ou código das ações disponíves na bolsa citada.
# Com o parametro -l seguido do código da bolsa, lista as ações(códigos)
# Com o parametro --lista seguido do código da bolsa, lista
# as ações com nome e última cotação
# Uso: zzbolsas [--l|--lista] [bolsa|ação] [data|pesquisa]
# Ex.: zzbolsas
# zzbolsas --lista ^BVSP
#
# Autor: Itamar <itamarnet (a) yahoo com br>
# Versão: 1
# TODO: filtrar um texto por todas as ações de todas as bolsas
# ----------------------------------------------------------------------------
zzbolsas ()
{
zzzz -h bolsas $1 && return
local url='http://br.finance.yahoo.com'
local dj='^DWC'
local new_york='^NYA ^NYI ^NYY ^NY ^NYL'
local nasdaq='^IXIC ^IXBK ^NBI ^IXK ^IXF ^IXID ^IXIS ^IXFN ^IXUT ^IXTR ^NDX'
local sp='^GSPC ^OEX ^MID ^SPSUPX ^SML'
local amex='^XAX ^IIX ^NWX ^XMI'
local ind_nac='^IBX50 ^IVBX ^IGCX'
local bolsa pag pags pag_atual
case $# in
0)
# Lista apenas os códigos das bolsas disponíveis
for bolsa in americas europe asia africa
do
zztool eco "\n$bolsa :"
$ZZWWWDUMP "$url/intlindices?e=$bolsa"|
sed -n '/Última/,/_/p'|sed '/Componentes,/!d'|
awk '{ printf "%s ", $1}';echo
done
zztool eco "\nDow Jones :"
$ZZWWWDUMP "$url/usindices"|
sed -n '/Última/,/_/p'|sed '/Componentes,/!d'|
awk '{ printf "%s ", $1}'
printf "%s " "$dj";echo
zztool eco "\nNYSE :"
for bolsa in $new_york; do printf "%s " "$bolsa"; done;echo
zztool eco "\nNasdaq :"
for bolsa in $nasdaq; do printf "%s " "$bolsa"; done;echo
zztool eco "\nStandard & Poors :"
for bolsa in $sp; do printf "%s " "$bolsa"; done;echo
zztool eco "\nAmex :"
for bolsa in $amex; do printf "%s " "$bolsa"; done;echo
zztool eco "\nOutros Índices Nacionais :"
for bolsa in $ind_nac; do printf "%s " "$bolsa"; done;echo
;;
1)
# Lista os códigos da bolsas e seus nomes
case "$1" in
-l)
for bolsa in americas europe asia africa
do
zztool eco "\n$bolsa :"
$ZZWWWDUMP "$url/intlindices?e=$bolsa"|
sed -n '/Última/,/_/p'|sed '/Componentes,/!d'|
sed 's/[0-9]*,*[0-9]*\.[0-9].*//g'|
awk '{ printf " %-10s ", $1; for(i=2; i<=NF-1; i++) printf "%s ",$i; print $NF}'
done
zztool eco "\nDow Jones :"
$ZZWWWDUMP "$url/usindices"|
sed -n '/Última/,/_/p'|sed '/Componentes,/!d'|
sed 's/[0-9]*,*[0-9]*\.[0-9].*//g'|
awk '{ printf " %-10s ", $1; for(i=2; i<=NF-1; i++) printf "%s ",$i; print $NF}'
printf " %-10s " "$dj";$ZZWWWDUMP "$url/q?s=$dj"|
sed -n "/($dj)/p"|sed "s/^ *//;s/ *($dj)//"
zztool eco "\nNYSE :"
for bolsa in $new_york;
do
printf " %-10s " "$bolsa";$ZZWWWDUMP "$url/q?s=$bolsa"|
sed -n "/($bolsa)/p"|sed "s/^ *//;s/ *($bolsa)//"
done
zztool eco "\nNasdaq :"
for bolsa in $nasdaq;
do
printf " %-10s " "$bolsa";$ZZWWWDUMP "$url/q?s=$bolsa"|
sed -n "/($bolsa)/p"|sed "s/^ *//;s/ *($bolsa)//"
done
zztool eco "\nStandard & Poors :"
for bolsa in $sp;
do
printf " %-10s " "$bolsa";$ZZWWWDUMP "$url/q?s=$bolsa"|
sed -n "/($bolsa)/p"|sed "s/^ *//;s/ *($bolsa)//"
done
zztool eco "\nAmex :"
for bolsa in $amex;
do
printf " %-10s " "$bolsa";$ZZWWWDUMP "$url/q?s=$bolsa"|
sed -n "/($bolsa)/p"|sed "s/^ *//;s/ *($bolsa)//"
done
zztool eco "\nOutros Índices Nacionais :"
for bolsa in $ind_nac;
do
printf " %-10s " "$bolsa";$ZZWWWDUMP "$url/q?s=$bolsa"|
sed -n "/($bolsa)/p"|sed "s/^ *//;s/ *($bolsa)//"
done
;;
*)
bolsa=$(echo "$1"|zzmaiusculas)
# Último índice da bolsa citada
if ( zztool grep_var "^" "$1" )
then
$ZZWWWDUMP "$url/q?s=$bolsa"|
sed -n "/($bolsa)/p;/Valor do índice:/,/Em 52 semanas:/p"|tr ',.' '.,'
else
# Última cotação da ação
$ZZWWWDUMP "$url/q?s=$bolsa"|
sed -n "/($bolsa)/p;/:$bolsa/p;/^ *$/d;/Última transação:/,/\[Chart\]/p"|
sed "/\[Chart\]/d;s/.*(\(.*\):$bolsa.*$/\1/"|
sed 's/^ */\t/g;s/\([0-9]\+\),\([0-9]\+\)/\1§\2/g;s/\([0-9]\+\)\.\([0-9]\+\)/\1,\2/g;s/\([0-9]\+\)§\([0-9]\+\)/\1\.\2/g'
#/Dividendos e rendimentos/p"
fi
;;
esac
;;
2)
# Lista as ações de uma bolsa especificada
if (([ "$1" = "-l" ]||[ "$1" = "--lista" ]) && zztool grep_var "^" "$2" )
then
bolsa=$(echo "$2"|zzmaiusculas)
pag_final=$($ZZWWWDUMP "$url/q/cp?s=$bolsa"|sed -n '/Primeiro/p;/Primeiro/q'|sed "s/^ *//g;s/.*of *\([0-9]\+\) .*/\1/")
pags=$(echo "scale=0;($pag_final - 1) / 50"|bc)
#pags=$((($pag_final-1)/50 ))
for ((pag=0;pag<=$pags;pag++))
do
if ([ "$1" = "--lista" ])
then
# Listar as ações com descrição e suas últimas posições
$ZZWWWDUMP "$url/q/cp?s=$bolsa&c=$pag"|
sed -n 's/^ *//g;/Símbolo /,/Primeiro/p'|
sed '/Símbolo /d;/Primeiro/d;/^[ ]*$/d'
else
# Lista apenas os códigos das ações
$ZZWWWDUMP "$url/q/cp?s=$bolsa&c=$pag"|
sed -n 's/^ *//g;/Símbolo /,/Primeiro/p'|
sed '/Símbolo /d;/Primeiro/d;/^[ ]*$/d'|
awk '{printf "%s ",$1}';echo
#awk '{print $1}'|paste - - - - -
#awk '{printf "%s ",$1}';echo
fi
done
# Valores de uma bolsa ou ação em uma data especificada (histórico)
elif ( $(zztool testa_data "$2") && $(zztool grep_var / "$2"))
then
yyyy=${2##*/}
mm=${2#*/}
mm=${mm%/*}
mm=$(($mm - 1))
dd=${2%%/*}
yyyy=$(echo "2*10^(3-${#yyyy})"|bc)$yyyy
yyyy=${yyyy#0}
zztool eco "$dd/$(($mm + 1))/$yyyy"
bolsa=$(echo "$1"|zzmaiusculas)
$ZZWWWDUMP "$url/q/hp?s=$bolsa&a=${mm}&b=${dd}&c=${yyyy}&d=${mm}&e=${dd}&f=${yyyy}&g=d"|
sed -n "/($bolsa)/p;/Data Abertura/,/* Preço/p"|sed 's/Data/ /;/* Preço/d'|
sed 's/^ */\t/g;s/\([0-9]\+\),\([0-9]\+\)/\1§\2/g;s/\([0-9]\+\)\.\([0-9]\+\)/\1,\2/g;s/\([0-9]\+\)§\([0-9]\+\)/\1\.\2/g'
# Pesquisa o texto nas açôes (código e nomes) de todas bolsas
#elif ([ "$1" = "-p" ])
#then
#
# Pesquisa o texto nas ações (código e nomes) da bolsa atual
else
bolsa=$(echo "$1"|zzmaiusculas)
pag_final=$($ZZWWWDUMP "$url/q/cp?s=$bolsa"|sed -n '/Primeiro/p;/Primeiro/q'|sed 's/^ *//g;s/.*of *\([0-9]\+\) .*/\1/')
pags=$(echo "scale=0;($pag_final - 1) / 50"|bc)
#pags=$((($pag_final-1)/50 ))
for ((pag=0;pag<=$pags;pag++))
do
$ZZWWWDUMP "$url/q/cp?s=$bolsa&c=$pag"|
sed -n 's/^ *//g;/Símbolo /,/Primeiro/p'|
sed '/Símbolo /d;/Primeiro/d;/^[ ]*$/d'|
grep -i "$2"
done
fi
;;
esac
}

0 comments on commit 5527cd1

Please sign in to comment.