Repository 32bit  Forum
Repository 64bit  Wiki

Automatizzare la gestione dei titoli di borsa

Da Slacky.eu.
Versione delle 17:58, 21 ott 2007, autore: Slacky (Discussione | contributi)

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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
Strumenti personali
Namespace

Varianti