Automatizzare la gestione dei titoli di borsa
Da Slacky.eu.
Versione delle 17:58, 21 ott 2007, autore: Slacky (Discussione | contributi)
Descrizione
Lo script consente di automatizzare la gestione dei titoli di borsa; si inserisce codice isin, quantità e prezzo di acquisto delle azioni acquistate; ogni volta che si vuole controllare l'andamento dei titoli in possesso basta eseguire lo script, che calcola il guadagno/la perdita per tipo di azione a seconda del prezzo corrente; una volta venduto un pacchetto di titoli lo si può cancellare; il sistema estrae le quotazioni dal sito www.borsa.it
Download
http://www.slacky.eu/misto/concorso/paoletta/borsa.sh
Script
#!/bin/sh
file_src=/tmp/borsa.src
url="http://www.borse.it/Cerca.php"
db=~/.borsa/database.db
numberOfGain=0
numberOfLoss=0
numberSamePrice=0
# Function - Testing Internet Connection (thanks gall0ws)
conn()
{
ping -c1 -W1 borsa.it &> /dev/null || {
echo -e $MSG_ERR_CONNECTION
exit 1
}
}
# Function - Testing if www.borsa.it is working properly
isWorking()
{
echo "tipo=0&rtype=ISIN&nome=NL0000226223&x=25&y=9" | lynx -post-data $url &>$file_src
name=$(cat $file_src | grep "\-\|+\|=\.gif" | grep -o "\[[0-9][0-9]\][^0-9]*" | head -1 | cut -c 5-)
currentPrice=$(cat $file_src | grep "\-\|+\|=\.gif" | grep "$name" | grep -o "\w*,\w*" | head -1)
if [ "$currentPrice" = "" ];then
echo "valori non disponibili!"
exit 1
else
rm $file_src
fi
}
# Function - It chooses isin code
find_isin(){
if [ -f $db ]; then
echo "";echo""
echo -e "\033[01;32mQUOTAZIONI TITOLI\033[0;33m"
echo "";echo""; echo ""
while read all
do
isin=$(echo $all | cut -d "#" -f 1)
purchasePrice=$(echo $all | cut -d "#" -f 2)
howMany=$(echo $all | cut -d "#" -f 3)
alg $isin $purchasePrice $howMany
echo ""
done<$(echo $db)
else
help
exit
fi
}
# Function - Help message
help()
{
echo "con l'opzione 'i' inserisci un titolo in questo modo: borsa.sh i ISIN prezzo_acquisto quantità"
echo ""
echo "con l'opzione 'd' cancelli un titolo in questo modo: borsa.sh d ISIN"
echo ""
echo "senza opzioni controlla quanto guadagni/perdi vendendo all'istante tutte le azioni"
echo "di cui sei in possesso"
}
# Function - It removes the temporary files
remove_tmp()
{
rm -rf $file_src
}
# Function - Search Algorithm
alg()
{
echo "tipo=0&rtype=ISIN&nome=$1&x=25&y=9" | lynx -post-data $url &>$file_src
name=$(cat $file_src | grep "\-\|+\|=\.gif" | grep -o "\[[0-9][0-9]\][^0-9]*" | head -1 | cut -c 5-)
#name=$(cat $file_src | grep "\[67\]" | grep \.gif | grep -o "\[67\][^0-9]*" | cut -c 5-)
currentPrice=$(cat $file_src | grep "\-\|+\|=\.gif" | grep "$name" | grep -o "\w*,\w*" | head -1)
purchasePriceForSed=$(echo $2 | sed "s/\,/\./")
currentPriceForSed=$(echo $currentPrice | sed "s/\,/\./")
ris=$(echo "$currentPriceForSed - $purchasePriceForSed >= 0" | bc -l)
gainForSed=$(echo "$currentPriceForSed - $purchasePriceForSed" | bc -l)
gain=$(echo "$gainForSed * $3" | bc -l)
gain=$(echo $gain | sed "s/\./\,/")
print "$name" "$3" "$purchasePrice" "$currentPrice" "$gainForSed" "$gain"
}
print(){
echo -e "\033[01;31m$1 \033[0;33m "
echo ""
echo "ne hai comprate $2 al prezzo iniziale di $3 euro l'una;"
echo ""
echo "ora valgono $4 l'una"
echo ""
bool=$(echo "$5 > 0.0" | bc -l)
if [ "$bool" -eq 1 ]; then
echo -e "\033[01;31mGUADAGNERESTI\033[0;33m $6 euro vendendole tutte ora"
numberOfGain=`echo "$numberOfGain + 1" | bc -l`
else
bool=$(echo "$5 < 0.0" | bc -l)
if [ "$bool" -eq 1 ]; then
gain=$(echo $6 | sed "s/\-//")
echo -e "\033[01;31mPERDERESTI\033[0;33m $gain euro vendendole tutte ora"
numberOfLoss=`echo "$numberOfLoss + 1" | bc -l`
else
echo -e "prezzo invariato"
numberSamePrice=`echo "$numberSamePrice + 1" | bc -l`
fi
fi
echo "";echo "";echo "";echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";echo ""
}
case "$1" in
"d")
isPresent=`grep -o $2 $db`
if [ "$isPresent" = "" ];then
echo "$2 non e' presente nel db"
exit 1
fi
sed "/$2/d" -i $db
if [ $? -eq 1 ]
then
echo "problemi nella cancellazione del record"
exit 1
fi ;;
"i")
if [ ! -d ~/.borsa/ ];then
mkdir ~/.borsa/
touch $db
fi
if [ \( "$2" != "" \) -a \( "$3" != "" \) -a \( "$4" != "" \) ];then
echo "$2#$3#$4" >> $db
else
help
exit 1
fi
;;
"h")
help
;;
*)
if [ ! -f $db ];then
help
exit
fi
conn
isWorking
find_isin
echo "azioni +: $numberOfGain"
echo "azioni -: $numberOfLoss"
if [ "$numberSamePrice" -ne 0 ];then
echo "azioni =: $numberSamePrice"
fi
remove_tmp
;;
esac
- Data: 21/10/2007
- Autore: Paoletta