diff --git a/dabo/analyze.sh b/dabo/analyze.sh index d3d9f50..eb4b419 100755 --- a/dabo/analyze.sh +++ b/dabo/analyze.sh @@ -22,8 +22,6 @@ function g_echo_note { function analyze { - set -x - local file=$1 tmpfile=$(basename "${file}") @@ -131,7 +129,8 @@ function analyze { if [ -s ${g_tmp}/interim-${tmpfile} ] then f_interim=$(tail -n1 ${g_tmp}/interim-${tmpfile}) - f_interim=$(g_calc "${f_interim}-${FEE}") + g_calc "${f_interim}-${FEE}" + f_interim=${g_calc_result} fi fi echo "$f_line,${f_market_performance},${f_score},${f_buy_score},${f_sell_score},${f_intrade},${f_interim}" >>analyze-${analyzedate}/chart-${tmpfile} @@ -144,8 +143,10 @@ function analyze { then f_SELL="SELL ${f_ASSET}: End of file/data" echo "SELL: $(tail -n1 ${g_tmp}/${tmpfile} | cut -d, -f1) === ${f_SELL}" >>${g_tmp}/output-${tmpfile} 2>&1 - result=$(g_percentage-diff ${BUY_PRICE} ${f_price}) - result=$(g_calc "${result}-${FEE}") + g_percentage-diff ${BUY_PRICE} ${f_price} + #result=$(g_percentage-diff ${BUY_PRICE} ${f_price}) + g_calc "${g_percentage_diff_result}-${FEE}" + result=${g_calc_result} echo "$result" >>${g_tmp}/result-${tmpfile} echo "RESULT: ${result}% (${BUY_PRICE} -> ${f_price})" >>${g_tmp}/output-${tmpfile} #rm -f ${g_tmp}/open-${tmpfile} @@ -156,10 +157,12 @@ function analyze { complete_result=0 for result in $(cat ${g_tmp}/result-${tmpfile}) do - complete_result=$(g_calc "$complete_result+$result" | xargs printf "%.2f") + g_calc "$complete_result+$result" + complete_result=$(echo ${g_calc_result} | xargs printf "%.2f") done - hodlresult=$(g_percentage-diff $(egrep "^${ANALYZE_TIME}" "$file" | grep -v ',,' | head -n1 | cut -d, -f2) $(egrep "^${ANALYZE_TIME}" "$file" | grep -v ',,' | tail -n1 | cut -d, -f2)) + g_percentage-diff $(egrep "^${ANALYZE_TIME}" "$file" | grep -v ',,' | head -n1 | cut -d, -f2) $(egrep "^${ANALYZE_TIME}" "$file" | grep -v ',,' | tail -n1 | cut -d, -f2) + hodlresult=${g_percentage_diff_result} echo "COMPLETE:RESULT:$(basename "$file" | cut -d. -f1):: ${complete_result}% HODL:${hodlresult}% analyze-${analyzedate}/${tmpfile}.log $file" | perl -pe 's/ /\t/g; s/:/ /g' | tee -a ${g_tmp}/output-${tmpfile} echo "=====================================" >>${g_tmp}/output-${tmpfile} diff --git a/dabo/functions/binance_convert.sh b/dabo/functions/binance_convert.sh index 9f7ad90..cce5481 100644 --- a/dabo/functions/binance_convert.sh +++ b/dabo/functions/binance_convert.sh @@ -49,7 +49,8 @@ ${FUNCNAME} $@" cat ${g_tmp}/API_CMD_OUT >${f_CMDFILE}_QUOTE_OUT # get convert price local f_convert_price=$(cat ${f_CMDFILE}_QUOTE_OUT | grep '^{' | jq -r .inverseRatio | head -n1) - local f_price_diff=$(g_percentage-diff ${f_market_price} ${f_convert_price}) + g_percentage-diff ${f_market_price} ${f_convert_price} + local f_price_diff=${g_percentage_diff_result} fi if [ "${f_ACTION}" = "sell" ] @@ -59,7 +60,8 @@ ${FUNCNAME} $@" cat ${g_tmp}/API_CMD_OUT >${f_CMDFILE}_QUOTE_OUT # get convert price local f_convert_price=$(cat ${f_CMDFILE}_QUOTE_OUT | grep '^{' | jq -r .ratio | head -n1) - local f_price_diff=$(g_percentage-diff ${f_convert_price} ${f_market_price}) + g_percentage-diff ${f_convert_price} ${f_market_price} + local f_price_diff=${g_percentage_diff_result} fi if [ $(echo "${f_price_diff} > ${FEE}" | bc -l) -eq 1 ] diff --git a/dabo/functions/check_buy_conditions.sh b/dabo/functions/check_buy_conditions.sh index 3a007b7..f0a9767 100644 --- a/dabo/functions/check_buy_conditions.sh +++ b/dabo/functions/check_buy_conditions.sh @@ -59,7 +59,8 @@ function check_buy_conditions { g_echo_note "${f_BUY}" # calculate quantity from balance for potentially invest - local f_INVEST_QUANTITY=$(g_calc "scale=2; ${CURRENCY_BALANCE}/100*${INVEST}" | cut -d\. -f1) + g_calc "scale=2; ${CURRENCY_BALANCE}/100*${INVEST}" + local f_INVEST_QUANTITY=$(echo "${g_calc_result}" | cut -d\. -f1) g_echo_note "BUY current investment quantity is ${f_INVEST_QUANTITY} ${CURRENCY}" # remove CURRENCY from asset @@ -72,17 +73,25 @@ function check_buy_conditions { # use MIN_NOTIONAL+5% as INVEST_QUANTITY if INVEST_QUANTITY is under MIN_NOTIONAL # +5% in spite of MIN_NOTIONAL to be able to sell when the price falls a little bit - [ $(g_calc "${f_INVEST_QUANTITY} < ${f_MIN_NOTIONAL}") -eq 0 ] || f_INVEST_QUANTITY=$(g_calc "scale=2; $f_MIN_NOTIONAL/100*105") + #[ $(g_calc "${f_INVEST_QUANTITY} < ${f_MIN_NOTIONAL}") -eq 0 ] || f_INVEST_QUANTITY=$(g_calc "scale=2; $f_MIN_NOTIONAL/100*105") + if ! g_num_is_lower.sh ${f_INVEST_QUANTITY} ${f_MIN_NOTIONAL} + then + g_calc "scale=2; ${f_MIN_NOTIONAL}/100*105" + f_INVEST_QUANTITY=${g_calc_result} + fi + # if there is not enough balance for buying because ${f_MIN_NOTIONAL} needed for buying to sell (workaround) - if [ $(g_calc "${CURRENCY_BALANCE} < ${f_MIN_NOTIONAL}*2") -ne 0 ] + g_calc "${CURRENCY_BALANCE} < ${f_MIN_NOTIONAL}*2" + if [ ${g_calc_result} -ne 0 ] then g_echo_note "BUY ${f_ASSET} not enough balance ${CURRENCY_BALANCE} for buying because of MIN_NOTIONAL (${f_MIN_NOTIONAL}*2) needed for buying-to-sell (workaround)" return 1 fi # continue if not balance enough for lowest quantity (MIN_NOTIONAL) - if [ $(g_calc "${CURRENCY_BALANCE} > ${f_INVEST_QUANTITY}") -eq 0 ] + g_calc "${CURRENCY_BALANCE} > ${f_INVEST_QUANTITY}" + if [ ${g_calc_result} -eq 0 ] then g_echo_note "BUY ${f_ASSET} not enough balance (${CURRENCY_BALANCE}) for lowest quantity (MIN_NOTIONAL - ${f_INVEST_QUANTITY})" return 1 diff --git a/dabo/functions/check_sell_conditions.sh b/dabo/functions/check_sell_conditions.sh index 6887483..d0cd1be 100644 --- a/dabo/functions/check_sell_conditions.sh +++ b/dabo/functions/check_sell_conditions.sh @@ -35,10 +35,12 @@ function check_sell_conditions { fi # result values (sould be reduced to one - f_result!?) - f_result=$(g_percentage-diff ${f_BUY_PRICE} ${f_price}) + g_percentage-diff ${f_BUY_PRICE} ${f_price} + f_result=${g_percentage_diff_result} f_BUY_PRICE_LAST_RATE_DIFF=${f_result} result=${f_BUY_PRICE_LAST_RATE_DIFF} - f_real_result=$(g_calc "${f_result}-${FEE}") + g_calc "${f_result}-${FEE}" + f_real_result=${g_calc_result} # analyze [ -z "${BOT}" ] && echo "INTERIM RESULT: ${f_real_result}%" @@ -104,9 +106,10 @@ function check_sell_conditions { # echo "${csv_headline},Marketperformace #${f_last_line}" | cut -d, -f 2-22 | perl -pe 's/([0-9].[0-9][0-9][0-9][0-9][0-9][0-9])[0-9]+/$1/g' | perl -pe 's/((?<=,)|(?<=^)),/ ,/g;' | column -t -s, # echo "${f_SELL}" - #result=$(g_percentage-diff ${BUY_PRICE} ${current}) - result=$(g_percentage-diff ${BUY_PRICE} ${f_price}) - result=$(g_calc "${result}-${FEE}") + g_percentage-diff ${BUY_PRICE} ${f_price} + #result=${g_percentage_diff_result} + g_calc "${g_percentage_diff_result}-${FEE}" + result=${g_calc_result} echo "${result}" >>${g_tmp}/result-${tmpfile} rm -f "${f_TRADE_HIST_FILE}" rm -f "${f_TRADE_HIST_FILE_INTERIM}" diff --git a/dabo/functions/get_asset.sh b/dabo/functions/get_asset.sh index 79afa0c..456a7a7 100644 --- a/dabo/functions/get_asset.sh +++ b/dabo/functions/get_asset.sh @@ -67,7 +67,8 @@ function get_asset { if echo $f_last_price | grep -q "^[0-9]" then f_price=$(tail -n1 ${f_ASSET_HIST_FILE} | cut -d, -f2) - local f_price_change=$(g_percentage-diff ${f_last_price} ${f_price}) + g_percentage-diff ${f_last_price} ${f_price} + local f_price_change=${g_percentage_diff_result} else local f_price_change="" fi diff --git a/dabo/functions/get_macd_indicator.sh b/dabo/functions/get_macd_indicator.sh index bbf6210..db57c15 100644 --- a/dabo/functions/get_macd_indicator.sh +++ b/dabo/functions/get_macd_indicator.sh @@ -109,7 +109,10 @@ function get_macd_indicator { if [ $(tail -n36 "${f_hist_file}" | wc -l) -ge 35 ] then local f_macd_histogram_max=$(tail -n350 "${f_hist_file}" | cut -d"," -f8 | egrep "^[0-9]|^-[0-9]" | sed 's/^-//' | sort -n | tail -n1) - local f_macd_histogram_relation=$(echo "100+$(g_percentage-diff ${f_macd_histogram_max} ${f_macd_histogram})" | bc | sed 's/^\./0./; s/^-\./-0./' | cut -d\. -f1) + g_percentage-diff ${f_macd_histogram_max} ${f_macd_histogram} + #local f_macd_histogram_relation=$(echo "100+$(g_percentage-diff ${f_macd_histogram_max} ${f_macd_histogram})" | bc | sed 's/^\./0./; s/^-\./-0./' | cut -d\. -f1) + g_calc "100+${g_percentage_diff_result}" + local f_macd_histogram_relation=${g_calc_result} fi echo -n ",${f_macd_histogram_relation}|${f_macd_signal}" >>"${f_hist_file}" diff --git a/dabo/functions/get_rsi_indicator.sh b/dabo/functions/get_rsi_indicator.sh index 6d62229..5465bb8 100644 --- a/dabo/functions/get_rsi_indicator.sh +++ b/dabo/functions/get_rsi_indicator.sh @@ -20,28 +20,6 @@ function get_rsi_indicator { return 0 fi -# for f_price in $(tail -n${f_period} "${f_hist_file}" | cut -d"," -f2) -# do -# # not for the first line because a comparative value is missing -# if [ -z "${f_last_price}" ] -# then -# f_last_price=${f_price} -# continue -# fi -# -# # calculate each change -# local f_price_change=$(g_percentage-diff ${f_last_price} ${f_price}) -# f_last_price=${f_price} -# -# # add positive/negative changes -# if echo "${f_price_change}" | grep -q '^-' -# then -# f_negative_sum=$(echo "${f_negative_sum}+${f_price_change}" | bc -l) -# else -# f_positive_sum=$(echo "${f_positive_sum}+${f_price_change}" | bc -l) -# fi -# done - f_positive_sum=$(tail -n${f_period} "${f_hist_file}" | cut -d"," -f3 | grep "^[0-9]" | awk "{ SUM += \$1} END { printf(\"%10.10f\", SUM/${f_period}) }") f_negative_sum=$(tail -n${f_period} "${f_hist_file}" | cut -d"," -f3 | grep "^-[0-9]" | awk "{ SUM += \$1} END { printf(\"%10.10f\", SUM/${f_period}) }") diff --git a/dabo/functions/get_vars_from_csv.sh b/dabo/functions/get_vars_from_csv.sh index f3731b1..83fee59 100644 --- a/dabo/functions/get_vars_from_csv.sh +++ b/dabo/functions/get_vars_from_csv.sh @@ -45,7 +45,8 @@ function get_vars_from_csv { get_var_from_line price_change 3 # Check for price trend last 4 iterations - f_last_4_prices_change=$(g_percentage-diff ${f_4_last_line_array[2]} ${f_price}) + g_percentage-diff ${f_4_last_line_array[2]} ${f_price} + f_last_4_prices_change=${g_percentage_diff_result} if g_num_is_higher ${f_last_4_prices_change} 0 then diff --git a/dabo/functions/market_performance.sh b/dabo/functions/market_performance.sh index 90986e0..924796d 100644 --- a/dabo/functions/market_performance.sh +++ b/dabo/functions/market_performance.sh @@ -28,7 +28,8 @@ function market_performance { g_echo_warn "Didn't get correct forecast from $f_url" return 1 fi - local f_btc_forecast=$(g_percentage-diff ${f_today} ${f_forecast}) + g_percentage-diff ${f_today} ${f_forecast} + local f_btc_forecast=${g_percentage_diff_result} echo $f_btc_forecast | egrep -q '[0-9]\.[0-9]' || return 1 g_echo_note "BTC forecast: $f_btc_forecast" f_btc_forecast=$(echo "scale=2; ${f_btc_forecast}/3" | bc -l | sed -r 's/^(-?)\./\10./') @@ -53,7 +54,8 @@ function market_performance { g_echo_warn "Didn't get correct forecast from $f_url" return 1 fi - local f_eth_forecast=$(g_percentage-diff ${f_today} ${f_forecast}) + g_percentage-diff ${f_today} ${f_forecast} + local f_eth_forecast=${g_percentage_diff_result} echo $f_eth_forecast | egrep -q '[0-9]\.[0-9]' || return 1 g_echo_note "ETH forecast: $f_eth_forecast" f_eth_forecast=$(echo "scale=2; ${f_eth_forecast}/3" | bc -l | sed -r 's/^(-?)\./\10./') @@ -82,7 +84,8 @@ function market_performance { local f_index_performance="-0.1" else # calculate performance - local f_index_performance=$(g_percentage-diff ${f_from} ${f_to}) + g_percentage-diff ${f_from} ${f_to} + local f_index_performance=${g_percentage_diff_result} fi # if growing is bad for krypto - invert if echo ${f_INDEX} | grep -q INVERTED @@ -133,17 +136,9 @@ function market_performance { done # price performance bitcoin - #local f_from=$(tail -n 48 asset-histories/BTC${CURRENCY}.history.csv | head -n 24 | cut -d, -f2 | awk '{ sum += $1; n++ } END { if (n > 0) print sum / n; }') - #local f_to=$(tail -n 24 asset-histories/BTC${CURRENCY}.history.csv | cut -d, -f2 | awk '{ sum += $1; n++ } END { if (n > 0) print sum / n; }') - #local f_exchange_rate_diff_percentage=$(g_percentage-diff ${f_from} ${f_to}) - #local f_btc_performance=${f_exchange_rate_diff_percentage} local f_btc_performance=$(jq -r '.[] |select(.symbol=="btc")|(.price_change_percentage_7d_in_currency)' COINGECKO_GET_ASSETS_CMD_OUT) # price performance ethereum - #local f_from=$(tail -n 48 asset-histories/ETH${CURRENCY}.history.csv | head -n 24 | cut -d, -f2 | awk '{ sum += $1; n++ } END { if (n > 0) print sum / n; }') - #local f_to=$(tail -n 24 asset-histories/ETH${CURRENCY}.history.csv | cut -d, -f2 | awk '{ sum += $1; n++ } END { if (n > 0) print sum / n; }') - #local f_exchange_rate_diff_percentage=$(g_percentage-diff ${f_from} ${f_to}) - #local f_eth_performance=${f_exchange_rate_diff_percentage} local f_eth_performance=$(jq -r '.[] |select(.symbol=="eth")|(.price_change_percentage_7d_in_currency)' COINGECKO_GET_ASSETS_CMD_OUT) # hourly price performance over TOP 250 marketcap by coingecko diff --git a/dabo/functions/score.sh b/dabo/functions/score.sh index 1a9039f..52dfa61 100644 --- a/dabo/functions/score.sh +++ b/dabo/functions/score.sh @@ -1,6 +1,7 @@ function score { #s_score=$((s_score${1})) - s_score=$(g_calc "${s_score} + ${1}") + g_calc "${s_score} + ${1}" + s_score=${g_calc_result} #echo " SCORE: s_score=${s_score} ($1) $2" s_score_hist="${s_score_hist} s_score=${s_score} (${1}) ${2}" diff --git a/dabo/functions/webpage.sh b/dabo/functions/webpage.sh index 354be93..38bf57f 100644 --- a/dabo/functions/webpage.sh +++ b/dabo/functions/webpage.sh @@ -203,7 +203,8 @@ function webpage { local f_profit=$(cat "${f_trade_file}.result") f_price="${f_price} ( ${f_profit}%)" else - local f_profit=$(g_percentage-diff $(cat ${g_tmp}/buyprice) ${f_price}) + g_percentage-diff $(cat ${g_tmp}/buyprice) ${f_price} + local f_profit=${g_percentage_diff_result} f_price="${f_price} ( ${f_profit}%)" echo "${f_profit}" >"${f_trade_file}.result" fi diff --git a/dabo/recalc-histories-example.sh b/dabo/recalc-histories-example.sh index f68d116..1592c6d 100644 --- a/dabo/recalc-histories-example.sh +++ b/dabo/recalc-histories-example.sh @@ -32,7 +32,8 @@ function get_asset { if echo $f_last_price | grep -q "^[0-9]" then local f_price=$(tail -n1 ${f_ASSET_HIST_FILE} | cut -d, -f2) - local f_price_change=$(g_percentage-diff ${f_last_price} ${f_price}) + g_percentage-diff ${f_last_price} ${f_price} + local f_price_change=${g_percentage_diff_result} else local f_price_change="" fi diff --git a/dabo/recalc-times-before-example.sh b/dabo/recalc-times-before-example.sh index 0ec75b8..8fe540d 100644 --- a/dabo/recalc-times-before-example.sh +++ b/dabo/recalc-times-before-example.sh @@ -47,24 +47,28 @@ function get_asset { price30before=$(grep "^$timebefore" "$rawhistfile" | cut -d, -f2) [ -z "$price30before" ] && continue local price=$(echo ${f_line} | cut -d, -f2) - change30before=$(g_percentage-diff $price30before $price) + g_percentage-diff $price30before $price + change30before=${g_percentage_diff_result} #echo "XXXXXXX g_percentage-diff $price30before $price -> $change30before " timebefore=$(date "+%Y-%m-%d %H:%M" -d "$time 14 day ago") price14before=$(grep "^$timebefore" "$rawhistfile" | cut -d, -f2) [ -z "$price14before" ] && continue - change14before=$(g_percentage-diff $price14before $price) + g_percentage-diff $price14before $price + change14before=${g_percentage_diff_result} timebefore=$(date "+%Y-%m-%d %H:%M" -d "$time 7 day ago") price7before=$(grep "^$timebefore" "$rawhistfile" | cut -d, -f2) [ -z "$price7before" ] && continue - change7before=$(g_percentage-diff $price7before $price) + g_percentage-diff $price7before $price + change7before=${g_percentage_diff_result} timebefore=$(date "+%Y-%m-%d %H:%M" -d "$time 1 day ago") price1before=$(grep "^$timebefore" "$rawhistfile" | cut -d, -f2) [ -z "$price1before" ] && continue - change1before=$(g_percentage-diff $price1before $price) + g_percentage-diff $price1before $price + change1before=${g_percentage_diff_result} #echo "$f_line -- $change1before,$change7before,$change14before,$change30before"