Rename stocks.sh to stocks_legacy
as stocks.sh no longer work (API finance Yahoo HS)
This commit is contained in:
181
stocks.sh
181
stocks.sh
@@ -1,181 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
italic="\033[3m"
|
||||
underline="\033[4m"
|
||||
ita_under="\033[3;4m"
|
||||
bgd="\033[1;4;31m"
|
||||
red="\033[1;31m"
|
||||
green="\033[1;32m"
|
||||
bold="\033[1m"
|
||||
box="\033[1;41m"
|
||||
reset="\033[0m"
|
||||
|
||||
LANG=C
|
||||
LC_NUMERIC=C
|
||||
|
||||
stocks_list=~/.stocks.yaml
|
||||
|
||||
query() {
|
||||
echo "$obj" | jq -r ".$1"
|
||||
}
|
||||
|
||||
round() {
|
||||
echo $(printf %.$2f $(echo "scale=$2;(((10^$2)*$1)+0.5)/(10^$2)" | bc))
|
||||
}
|
||||
|
||||
# Test if jq & yq executables are in $PATH
|
||||
|
||||
if ! $(type jq >/dev/null 2>&1); then
|
||||
echo "'jq' is not in the PATH. (See: https://stedolan.github.io/jq/)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! $(type yq >/dev/null 2>&1); then
|
||||
echo "'yq' is not in the PATH. (See: https://github.com/kislyuk/yq"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Read stocks from .stocks.yaml config file
|
||||
|
||||
if [ -f $stocks_list ]; then
|
||||
#a=$(cat ~/.stocks.yaml | yq '.watchlist')
|
||||
a=$(cat $stocks_list | yq '.watchlist')
|
||||
b=$(cat $stocks_list | yq '.lots')
|
||||
else
|
||||
echo "$stocks_list not present !"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
while IFS= read -r obj; do
|
||||
stock=${obj:2}
|
||||
list+="$stock,"
|
||||
done < <(echo "$a")
|
||||
|
||||
symbols=$(echo "$list" | sed 's/.$//')
|
||||
|
||||
# AC.PA ATO.PA AUB.PA CS.PA DG.PA ^FCHI VIRP.PA WLN.PA
|
||||
|
||||
#####
|
||||
|
||||
if [ -z "$symbols" ]; then
|
||||
echo "Usage: ./stocks.sh"
|
||||
echo " - add stocks to ~/.stocks.yaml file"
|
||||
exit
|
||||
fi
|
||||
|
||||
# Get stocks data from yahoo finance
|
||||
|
||||
API_ENDPOINT="https://query1.finance.yahoo.com/v7/finance/quote?lang=fr-FR®ion=FR&corsDomain=finance.yahoo.com"
|
||||
|
||||
results=$(curl --silent "$API_ENDPOINT&fields=$fields&symbols=$symbols" | jq '.quoteResponse .result')
|
||||
|
||||
# Display stocks data
|
||||
|
||||
t=0
|
||||
|
||||
echo -e "${bold}stocks.sh${reset}\n"
|
||||
|
||||
while IFS= read -r obj; do
|
||||
marketState=$(query 'marketState')
|
||||
symbol=$(query 'symbol')
|
||||
|
||||
preMarketChange=$(query 'preMarketChange')
|
||||
postMarketChange=$(query 'postMarketChange')
|
||||
|
||||
longName=$(query 'longName')
|
||||
if [ "$longName" == "null" ] && [ $symbol == "^FCHI" ]; then
|
||||
longName="CAC 40"
|
||||
fi
|
||||
|
||||
if [ $t == "0" ]; then
|
||||
printf "${bold}%-10s | %-21s | %-7s | " "Symbole" "Entreprise" "Cours"
|
||||
printf "%-6s | %-7s | %-7s | " "Diff" "%" "Veille"
|
||||
printf "%-7s | %-7s | %-8s | " "+ Haut" "+ Bas" "Volume"
|
||||
printf "%-9s | %-25s | %-18s | " "Ouverture" "Heure" "52 semaines"
|
||||
printf "%-7s | %-9s | %-9s | %-6s${reset}\n" "Qté" "Valoris." "+/- value" "Perf."
|
||||
fi
|
||||
t=1
|
||||
|
||||
if [ $marketState == "PRE" ] && [ $preMarketChange != "0" ] && [ $preMarketChange != "null" ]; then
|
||||
nonRegularMarketSign='*'
|
||||
price=$(query 'preMarketPrice')
|
||||
diff=$preMarketChange
|
||||
percent=$(query 'preMarketChangePercent')
|
||||
elif [ $marketState != "REGULAR" ] && [ $postMarketChange != "0" ] && [ $postMarketChange != "null" ]; then
|
||||
nonRegularMarketSign='*'
|
||||
price=$(query 'postMarketPrice')
|
||||
diff=$postMarketChange
|
||||
percent=$(query 'postMarketChangePercent')
|
||||
else
|
||||
nonRegularMarketSign=''
|
||||
price=$(query 'regularMarketPrice')
|
||||
diff=$(query 'regularMarketChange')
|
||||
percent=$(query 'regularMarketChangePercent')
|
||||
previous=$(query 'regularMarketPreviousClose')
|
||||
volume=$(query 'regularMarketVolume')
|
||||
haut=$(query 'regularMarketDayHigh')
|
||||
bas=$(query 'regularMarketDayLow')
|
||||
ouverture=$(query 'regularMarketOpen')
|
||||
ts=$(query 'regularMarketTime')
|
||||
heure=$(LC_ALL=fr_FR.UTF-8 date -d @$ts +"%c" 2>/dev/null || LC_ALL=fr_FR.UTF-8 date -r $ts +"%c")
|
||||
ftweeks=$(query 'fiftyTwoWeekRange')
|
||||
fi
|
||||
|
||||
# Stocks owned
|
||||
#z=$(jq -c '.[] | select(.symbol == "'${symbol}'")' <<<$b)
|
||||
z=$(yq '.[] | select(.symbol == "'${symbol}'")' <<< "$b")
|
||||
|
||||
if [ -n "$z" ]; then
|
||||
#echo "$z"
|
||||
#quantity=$(jq -c '.[] | select(.symbol == "'${symbol}'") | .quantity' <<< $b)
|
||||
#quantity=$(jq -c '.quantity' <<<$z)
|
||||
#unit_cost=$(jq -c '.unit_cost' <<<$z)
|
||||
quantity=$(yq '.quantity' <<<$z)
|
||||
unit_cost=$(yq '.unit_cost' <<<$z)
|
||||
purchase=$(echo "$quantity * $unit_cost" | bc -l)
|
||||
valuations=$(echo "$quantity * $price" | bc -l)
|
||||
profit=$(echo "$valuations - $purchase" | bc -l)
|
||||
performance=$(echo "($valuations / $purchase - 1) * 100" | bc -l)
|
||||
performance=$(round $performance 2)
|
||||
|
||||
#valuation=$(($quantity * $price))
|
||||
#profit=$((valuations-purchase))
|
||||
#profit=$(($valuations-$purchase))
|
||||
#profit=$(($purchase-$valuations))
|
||||
#((profit = valuations - purchase))
|
||||
|
||||
#echo "Qte: $quantity - PM: $unit_cost - Achat: $purchase - Valorisation: $valuations"
|
||||
#echo "+-value: $profit - Perf: $performance%"
|
||||
fi
|
||||
|
||||
# Lines colors: + green ; - red ; 0 no color
|
||||
if [ "$diff" == "0" ] || [ "$diff" == "0.0" ]; then
|
||||
color=
|
||||
elif (echo "$diff" | grep -q ^-); then
|
||||
color=$red
|
||||
#cours_color="\033[3;31m"
|
||||
cours_color="\033[1;37;1;41m"
|
||||
else
|
||||
color=$green
|
||||
#cours_color="\033[3;32m"
|
||||
cours_color="\033[1;37;1;42m"
|
||||
fi
|
||||
|
||||
# Displaying
|
||||
if [ "$price" != "null" ]; then
|
||||
printf "${color}%-10s | %-21s | ${reset}${cours_color}%7.2f${reset}${color} | " $symbol "$longName" $price
|
||||
printf "% 6.2f | % 6.2f%% | %7.2f | " $diff $percent $previous
|
||||
printf "%7.2f | %7.2f | %8d | " $haut $bas $volume
|
||||
printf "%9.2f | %25s | %18s | " $ouverture "$heure" "$ftweeks"
|
||||
if [ -n "$z" ]; then
|
||||
printf "%6d | %9.2f | %9.2f | % 6.2f%%${reset}\n" $quantity $valuations $profit $performance
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
fi
|
||||
|
||||
done < <(echo "$results" | jq -c '.[]')
|
||||
|
||||
d=$(LC_ALL=fr_FR.UTF-8 TZ='Europe/Paris' date +"%c")
|
||||
echo -e "\n${reset}Dernière mise-à-jour: ${bold}$d${reset}"
|
||||
Reference in New Issue
Block a user