added charts, fixes,...

This commit is contained in:
olli 2023-10-20 17:41:32 +02:00
parent a5a8134b02
commit c1ce1f3ca7

View File

@ -1,24 +1,4 @@
function genchart {
local lastmark=0
local mark=""
local file="$1"
local highest=$(sort -n "${file}" | tail -n1 | sed s/^-//)
local lowest=$(sort -n "${file}" | head -n1 | sed s/^-//)
local divideby=$(echo "$highest+$lowest" | bc -l)
local color="green"
tail -n1 "${file}" | grep -q "^-" && color="red"
echo "<div id='${file}'>
<table class='charts-css line show-data-on-hover show-heading'><caption> $file </caption>"
for mark in $(cat "${file}")
do
echo "<tr><td style='--color: $color; --start: calc( ($lastmark + $lowest) / $divideby ); --end: calc( ( $mark + $lowest) / $divideby );'> <span class='tooltip'> ${mark} % </span> </td></tr>"
lastmark=${mark}
done
echo "</table></div>"
}
function webpage {
g_echo_note "RUNNING FUNCTION ${FUNCNAME} $@"
@ -27,17 +7,18 @@ function webpage {
[ -e ../charts.min.css ] || wget -q https://raw.githubusercontent.com/ChartsCSS/charts.css/main/dist/charts.min.css -O ../charts.min.css
# create status webpage
echo '<html><head>
<meta charset="UTF-8">
<meta http-equiv="refresh" content="60" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="/browser.css">
<link rel="stylesheet" type="text/css" href="/charts.min.css">' >../index.html.tmp
echo "<title>Dabo! on ${STOCK_EXCHANGE} - ${URL}</title>
</head><body>" >>../index.html.tmp
echo "<h1>State of Dabo-Bot! on ${STOCK_EXCHANGE} - ${URL} (ReadOnly)</h1>
<h1>Last update $(date "+%F %T")</h1>" >>../index.html.tmp
echo "<html>
<head>
<meta charset='UTF-8'>
<meta http-equiv='refresh' content='${INTERVAL}'>
<meta name='viewport' content='width=device-width, initial-scale=1'>
<link rel='stylesheet' type='text/css' href='/browser.css'>
<link rel='stylesheet' type='text/css' href='/charts.min.css'>
<title>Dabo! on ${STOCK_EXCHANGE} - ${URL}</title>
</head>
<body>
<h1>State of Dabo-Bot! on ${STOCK_EXCHANGE} - ${URL} (ReadOnly)</h1>
<h1>Last update $(date '+%F %T')</h1>" >../index.html.tmp
local f_SPOT_BALANCE=$(tail -n1 "asset-histories/BALANCESPOT${CURRENCY}.history.csv" | cut -d, -f2)
local f_COMPLETE_BALANCE=$(tail -n1 "asset-histories/BALANCECOMPLETE${CURRENCY}.history.csv" | cut -d, -f2)
@ -103,7 +84,7 @@ function webpage {
echo '<h2>Open Trades (Invested Assets)</h2>' >>../index.html.tmp
echo "<table>" >>../index.html.tmp
echo "<table width='100%'>" >>../index.html.tmp
local line
cat EXCHANGE_GET_BALANCES_CMD_OUT | grep -v ${CURRENCY} | sort | while read line
do
@ -117,7 +98,19 @@ function webpage {
echo "</table>" >>../index.html.tmp
echo "<h2>Market Performance ( $(cat MARKET_PERFORMANCE_LATEST)%)</h2>" >>../index.html.tmp
echo "<table>" >>../index.html.tmp
#echo "<table width='100%'><tr><td><details><summary>Charts</summary>" >>../index.html.tmp
echo "<details><summary>Charts</summary>" >>../index.html.tmp
echo "Krypto" >>../index.html.tmp
genchart MARKET_PERFORMANCE.csv 50 2,3,4,5,6,7 red-or-green,gold,royalblue,lightyellow,MediumSlateBlue,Sienna >>../index.html.tmp
echo "Commodities" >>../index.html.tmp
genchart MARKET_PERFORMANCE.csv 50 2,12,10,13 red-or-green,gold,SandyBrown,Sienna >>../index.html.tmp
echo "World Economic data" >>../index.html.tmp
genchart MARKET_PERFORMANCE.csv 50 2,11,15 red-or-green,Yellow,Sienna >>../index.html.tmp
echo "US Economic data" >>../index.html.tmp
genchart MARKET_PERFORMANCE.csv 50 2,8,17,16,18,19,20,21,14,9 red-or-green,OliveDrab,Yellow,Orange,DeepSkyBlue,DarkMagenta,PeachPuff,PaleTurquoise,Pink,PapayaWhip >>../index.html.tmp
#echo "</details></td></tr></table>" >>../index.html.tmp
echo "</details>" >>../index.html.tmp
echo "<details><summary>Table</summary><table width='100%'>" >>../index.html.tmp
echo "<tr>" >>../index.html.tmp
head -n1 MARKET_PERFORMANCE.csv | perl -pe 's/,/\n/g' | tr [:lower:] [:upper:] | while read f_mperfcol
do
@ -142,35 +135,20 @@ function webpage {
echo "</tr>" >>../index.html.tmp
done
echo "</table>" >>../index.html.tmp
echo "</table></details>" >>../index.html.tmp
echo "<a href=\"botdata/MARKET_PERFORMANCE.csv\">Complete list</a>" >>../index.html.tmp
echo "<h2>Top/Flop</h2>" >>../index.html.tmp
ls -1 trade-histories/*.result | cut -d . -f3-6 | sort -u | while read f_asset_results
do
f_asset=$(echo ${f_asset_results} | cut -d\- -f1)
echo $(cat trade-histories/*${f_asset_results} | awk "{ SUM += \$1} END { printf(\"%.2f\", SUM)}") >trade-histories/${f_asset}.complete_result
done
echo "<h3>Top 10</h3>" >>../index.html.tmp
grep [0-9] trade-histories/*.complete_result | sort -t: -k2 -rn | head -n 10 | cut -d/ -f2 | perl -pe 's/\.complete_result:/ /; s/$/%<br>/' >>../index.html.tmp
echo "<h3>Flop 10</h3>" >>../index.html.tmp
grep [0-9] trade-histories/*.complete_result | sort -t: -k2 -n | head -n 10 | cut -d/ -f2 | perl -pe 's/\.complete_result:/ /; s/$/%<br>/' >>../index.html.tmp
echo '<h2>Latest trades</h2>' >>../index.html.tmp
echo '<h3>Open</h3>' >>../index.html.tmp
echo "<table><tr>" >>../index.html.tmp
echo "<table width='100%'><tr>" >>../index.html.tmp
echo "<td>Date</td>
<td>Asset</td>
<td>Action</td>
<td>${CURRENCY} Quantity</td>
<td>${CURRENCY} Price</td>
<td>Commission</td>
<td>Comment</td>
<td>Chart</td></tr>" >>../index.html.tmp
<td>Comment</td></tr>" >>../index.html.tmp
local f_trade_file
for f_trade_file in $(ls -t trade-histories/trade-*-open.history.csv 2>/dev/null)
@ -185,24 +163,23 @@ function webpage {
<td>$(echo ${tradeline} | cut -d, -f5)</td>
<td>$(echo ${tradeline} | cut -d, -f6)</td>
<td>$(echo ${tradeline} | cut -d, -f7,8,9,10,11,12,13,14,15)</td>
<td width='800'>" >>../index.html.tmp
genchart "$interimfile" >>../index.html.tmp
echo "</td>
</tr>" >>../index.html.tmp
echo "<tr><td colspan='7'><details><summary>Chart</summary>" >>../index.html.tmp
genchart "$interimfile" >>../index.html.tmp
echo "</details></td></tr>" >>../index.html.tmp
done
echo "</table>" >>../index.html.tmp
echo '<h3>Closed</h3>' >>../index.html.tmp
echo "<table><tr>" >>../index.html.tmp
echo "<table width='100%'><tr>" >>../index.html.tmp
echo "<td>Date</td>
<td>Asset</td>
<td>Action</td>
<td>${CURRENCY} Quantity</td>
<td>${CURRENCY} Price (result)</td>
<td>Commission</td>
<td>Comment</td>
<td>Chart</td></tr>" >>../index.html.tmp
<td>Comment</td></tr>" >>../index.html.tmp
for f_trade_file in $(ls -t trade-histories/trade-*-closed.history.csv 2>/dev/null | head -n 50)
do
@ -211,10 +188,12 @@ function webpage {
do
local f_action=$(echo ${tradeline} | cut -d, -f2)
local f_price=$(echo ${tradeline} | cut -d, -f5)
local tradedate=$(echo ${tradeline} | cut -d, -f1 | perl -pe 's/_([0-9][0-9])-([0-9][0-9])-([0-9][0-9])/ $1:$2/')
if echo ${f_action} | grep -q buy
then
echo ${f_price} >${g_tmp}/buyprice
local tradedatebuy=${tradedate}
fi
if echo ${f_action} | grep -q sell
@ -231,30 +210,43 @@ function webpage {
fi
local asset=$(echo ${f_trade_file} | cut -d. -f3 | cut -d- -f1)
interimfile=$(echo ${f_trade_file} | sed 's/closed\.history\.csv/interim\.history\.csv/')
echo "<td>$(echo ${tradeline} | cut -d, -f1)</td>
echo "<td>${tradedate}</td>
<td><a href=\"botdata/asset-histories/${asset}.history.csv\">${asset}</a> <a href=\"https://www.coingecko.com/de/munze/$(egrep -i ^$(echo ${asset} | sed "s/${CURRENCY}$//"), COINGECKO_IDS | cut -d, -f2 )\">🔗</a></td>
<td>${f_action}</td>
<td>$(echo ${tradeline} | cut -d, -f4)</td>
<td>${f_price}</td>
<td>$(echo ${tradeline} | cut -d, -f6)</td>
<td>$(echo ${tradeline} | cut -d, -f7,8,9,10,11,12,13,14,15)</td>
<td width='800'> ">>../index.html.tmp
echo ${f_action} | grep -q sell && genchart "$interimfile" >>../index.html.tmp
echo "</td>
</tr>" >>../index.html.tmp
<td>$(echo ${tradeline} | cut -d, -f7,8,9,10,11,12,13,14,15)</td> ">>../index.html.tmp
if echo ${f_action} | grep -q sell
then
echo "<tr><td colspan='7'><details><summary>Charts</summary>" >>../index.html.tmp
local tradeintervals=$(cat ${interimfile} | wc -l)
head -n1 asset-histories/${asset}.history.csv >${g_tmp}/trade.csv
grep -A ${tradeintervals} "${tradedatebuy}:" asset-histories/${asset}.history.csv >>${g_tmp}/trade.csv
echo "Price, EMA, Levels" >>../index.html.tmp
genchart "${g_tmp}/trade.csv" ${tradeintervals} 2,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39 >>../index.html.tmp
echo "MACD" >>../index.html.tmp
genchart "${g_tmp}/trade.csv" ${tradeintervals} 8,6,7 >>../index.html.tmp
echo "RSIs" >>../index.html.tmp
genchart "${g_tmp}/trade.csv" ${tradeintervals} 10,11,12,14,15,16,17,13 >>../index.html.tmp
echo "</details></td></tr>" >>../index.html.tmp
else
echo "</tr>" >>../index.html.tmp
fi
done
done
echo "</table>" >>../index.html.tmp
echo "<h2>Current config</h2>" >>../index.html.tmp
echo "<pre>$(cat ../../dabo-bot.conf | perl -pe 's/\</&#60;/g; s/\>/&#62;/g;')</pre>" >>../index.html.tmp
#echo "<h2>Current config</h2>" >>../index.html.tmp
#echo "<pre>$(cat ../../dabo-bot.conf | perl -pe 's/\</&#60;/g; s/\>/&#62;/g;')</pre>" >>../index.html.tmp
echo '<h2>Available Assets and histories</h2>' >>../index.html.tmp
echo "<table><tr>" >>../index.html.tmp
echo "<table width='100%'><tr>" >>../index.html.tmp
echo "<tr><td>Asset</td><td>Date</td><td>Price ${CURRENCY}</td><td>24h change (USD)</td></tr>" >>../index.html.tmp
local asset
cat ASSETS | egrep -v "${BLACKLIST}" | sort | while read asset
@ -263,15 +255,36 @@ function webpage {
echo "<td><a href=\"botdata/asset-histories/${asset}.history.csv\">${asset}</a> <a href=\"https://www.coingecko.com/de/munze/$(egrep -i ^$(echo ${asset} | sed "s/${CURRENCY}$//"), COINGECKO_IDS | cut -d, -f2 )\">🔗</a></td>" >>../index.html.tmp
kcurrency=$(echo ${asset} | sed "s/${CURRENCY}//")
#get_rate_percentage_min_before_and_now ${kcurrency} ${CURRENCY} 1440
local asset=($(cat asset-histories/${asset}.history.csv | egrep -v "0.00000000$" | tail -n2 | head -n1 | sed 's/,/ /g'))
echo "
<td>${asset[0]} ${asset[1]}</td>
<td>${CURRENCY} ${asset[2]}</td>
local assetin=($(cat asset-histories/${asset}.history.csv | egrep -v "0.00000000$" | tail -n2 | head -n1 | sed 's/,/ /g'))
echo "<td>${assetin[0]} ${assetin[1]}</td>
<td>${CURRENCY} ${assetin[2]}</td>
<td> $(grep "^$kcurrency," ASSET_PRICE_CHANGE_PERCENTAGE_24H | cut -d, -f2)%</td>
</tr>" >>../index.html.tmp
</tr><tr><td colspan='4'>" >>../index.html.tmp
echo "<details><summary>${asset} Charts</summary>" >>../index.html.tmp
echo "Price, EMA, Levels" >>../index.html.tmp
genchart asset-histories/${asset}.history.csv 50 2,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39 >>../index.html.tmp
echo "MACD" >>../index.html.tmp
genchart asset-histories/${asset}.history.csv 50 8,6,7 >>../index.html.tmp
echo "RSIs" >>../index.html.tmp
genchart asset-histories/${asset}.history.csv 50 10,11,12,14,15,16,17,13 >>../index.html.tmp
echo "</details></td></tr>" >>../index.html.tmp
done
echo "</table>" >>../index.html.tmp
echo "<h2>Top/Flop</h2>" >>../index.html.tmp
ls -1 trade-histories/*.result | cut -d . -f3-6 | sort -u | while read f_asset_results
do
f_asset=$(echo ${f_asset_results} | cut -d\- -f1)
echo $(cat trade-histories/*${f_asset_results} | awk "{ SUM += \$1} END { printf(\"%.2f\", SUM)}") >trade-histories/${f_asset}.complete_result
done
echo "<h3>Top 10</h3>" >>../index.html.tmp
grep [0-9] trade-histories/*.complete_result | sort -t: -k2 -rn | head -n 10 | cut -d/ -f2 | perl -pe 's/\.complete_result:/ /; s/$/%<br>/' >>../index.html.tmp
echo "<h3>Flop 10</h3>" >>../index.html.tmp
grep [0-9] trade-histories/*.complete_result | sort -t: -k2 -n | head -n 10 | cut -d/ -f2 | perl -pe 's/\.complete_result:/ /; s/$/%<br>/' >>../index.html.tmp
echo '<h2>Complete trading histories</h2>' >>../index.html.tmp
echo "<table>" >>../index.html.tmp
find trade-histories -type f -name *.history.csv | cut -d/ -f2 | cut -d. -f1 | sort | while read asset
@ -284,4 +297,8 @@ function webpage {
# color magic
cat ../index.html.tmp | perl -pe 's/ (\-[0-9]+\.[0-9]+\%)/<font color=red>$1<\/font>/g; s/ ([0-9]+\.[0-9]+\%)/<font color=green>$1<\/font>/g;' >../index.html
#mv ../index.html.tmp ../index.html
g_echo_note "RUNNING FUNCTION ${FUNCNAME} $@ finished"
}