more pure bash to speed up things

This commit is contained in:
olli 2023-11-22 17:35:44 +01:00
parent 411b4ee940
commit 9a9e08fb36
3 changed files with 41 additions and 125 deletions

View File

@ -26,9 +26,14 @@ function check_buy_conditions {
f_BUY=""
# run strategies
local f_strategy_path=../../strategies
[ -z "${BOT}" ] && f_strategy_path=strategies
for f_strategy in $(find ${f_strategy_path} -name "buy.*.conf" -type f)
if [ -z "$f_buy_strategies_array" ]
then
local f_strategy_path=../../strategies
[ -z "${BOT}" ] && f_strategy_path=strategies
mapfile -t f_buy_strategies_array < <(find ${f_strategy_path} -name "buy.*.conf" -type f)
fi
#for f_strategy in $(find ${f_strategy_path} -name "buy.*.conf" -type f)
for f_strategy in "${f_buy_strategies_array[@]}"
do
f_echo_prefix="BUY ${f_ASSET}@${CURRENCY}:${f_price}:${f_strategy} - "
if check_buy_conditions_strategy ${f_ASSET_HIST_FILE} ${f_strategy}
@ -113,15 +118,16 @@ function check_buy_conditions_strategy {
# load strategy
local f_echo_prefix="BUY ${f_ASSET}@${CURRENCY}:${f_price}:${f_strategy} - "
f_do_buy=""
if [ -s "${f_strategy}" ]
then
. "${f_strategy}" || return 1
else
g_echo_note "${f_echo_prefix}Strategy file not found"
return 1
fi
[ -n "${BOT}" ] && g_echo_note "${f_echo_prefix}Running BUY checks"
#if [ -s "${f_strategy}" ]
#then
. "${f_strategy}" || return 1
#else
# g_echo_note "${f_echo_prefix}Strategy file not found"
# return 1
#fi
# Check buy signal from strategy
if [ -n "${f_do_buy}" ]
then
@ -130,103 +136,5 @@ function check_buy_conditions_strategy {
fi
return 1
########## Obsolete Code #############
# if [ $(echo "${f_market_performance} > ${GOOD_MARKET_PERFORMANCE_INDEX}" | bc -l) -eq 0 ]
# then
# echo " ${f_echo_prefix}BUY market performance ${f_market_performance}% looks bad - Dont buy anything"
# return 1
# fi
#
# local f_priceXago=$(tail -n${BUY_MINGROWTH_PERIOD} ${f_ASSET_HIST_FILE} | grep ^[0-9] | head -n1 | cut -d, -f2)
# local f_pricenow=$(echo ${f_last_line} | grep ^[0-9] | cut -d, -f2)
# local f_pricediff=$(g_percentage-diff "$f_priceXago" "$f_pricenow")
# if [ $(echo "${f_pricediff} < ${BUY_MINGROWTH}" | bc -l) -ne 0 ]
# then
# echo " ${f_echo_prefix}With ${f_pricediff} under ${BUY_MINGROWTH}% growth in the last ${BUY_MINGROWTH_PERIOD} time periods"
# return 1
# fi
#
#
# # Check MACD
# if [ $(echo "${f_macd_histogram_relation} < ${BUY_MACD_RELATION_FROM}" | bc -l) -ne 0 ]
# then
# echo " ${f_echo_prefix}MACD Relation with ${f_macd_histogram_relation}% under BUY_MACD_RELATION_FROM ${BUY_MACD_RELATION_FROM}%"
# return 1
# fi
# if [ $(echo "${f_macd_histogram_relation} > ${BUY_MACD_RELATION_TO}" | bc -l) -ne 0 ]
# then
# echo " ${f_echo_prefix}MACD Relation with ${f_macd_histogram_relation}% over BUY_MACD_RELATION_TO ${BUY_MACD_RELATION_TO}%"
# return 1
# fi
#
# # RSI
# if \
# [ ${f_rsi5} -le ${BUY_RSI5_SIGNAL_UNTIL} ] && \
# [ ${f_rsi14} -le ${BUY_RSI14_SIGNAL_UNTIL} ] && \
# [ ${f_rsi21} -le ${BUY_RSI21_SIGNAL_UNTIL} ] && \
# [ ${f_rsi60} -le ${BUY_RSI60_SIGNAL_UNTIL} ] && \
# [ ${f_rsi120} -le ${BUY_RSI120_SIGNAL_UNTIL} ] && \
# [ ${f_rsi240} -le ${BUY_RSI240_SIGNAL_UNTIL} ] && \
# [ ${f_rsi420} -le ${BUY_RSI420_SIGNAL_UNTIL} ] && \
# [ ${f_rsi720} -le ${BUY_RSI720_SIGNAL_UNTIL} ] && \
# [ ${f_rsi5} -ge ${BUY_RSI5_SIGNAL_FROM} ] && \
# [ ${f_rsi14} -ge ${BUY_RSI14_SIGNAL_FROM} ] && \
# [ ${f_rsi21} -ge ${BUY_RSI21_SIGNAL_FROM} ] && \
# [ ${f_rsi60} -ge ${BUY_RSI60_SIGNAL_FROM} ] && \
# [ ${f_rsi120} -ge ${BUY_RSI120_SIGNAL_FROM} ] && \
# [ ${f_rsi240} -ge ${BUY_RSI240_SIGNAL_FROM} ] && \
# [ ${f_rsi420} -ge ${BUY_RSI420_SIGNAL_FROM} ] && \
# [ ${f_rsi720} -ge ${BUY_RSI720_SIGNAL_FROM} ]
# then
# echo "${f_echo_prefix}RSI conditions met" >/dev/null
# else
# echo " ${f_echo_prefix}RSI conditions NOT met"
# return 1
# fi
#
# # Price change
# if \
# [ $(echo "${f_price_change_1_day} > ${BUY_MIN_PRICE_CHANGE_LAST_1_DAY}" | bc -l) -ne 0 ] && \
# [ $(echo "${f_price_change_7_day} > ${BUY_MIN_PRICE_CHANGE_LAST_7_DAY}" | bc -l) -ne 0 ] && \
# [ $(echo "${f_price_change_14_day} > ${BUY_MIN_PRICE_CHANGE_LAST_14_DAY}" | bc -l) -ne 0 ] && \
# [ $(echo "${f_price_change_30_day} > ${BUY_MIN_PRICE_CHANGE_LAST_30_DAY}" | bc -l) -ne 0 ]
# then
# echo "${f_echo_prefix}Price change conditions met" >/dev/null
# else
# echo " ${f_echo_prefix}Price change conditions NOT met"
# return 1
# fi
#
#
# # after high change in one period next price often falls
# if [ -n "${BUY_DONT_WHEN_LAST_RATE_HIGHER_THEN}" ]
# then
# if [ $(echo "${f_price_change} > ${BUY_DONT_WHEN_LAST_RATE_HIGHER_THEN}" | bc -l) -ne 0 ]
# then
# echo " ${f_echo_prefix}BUY_DONT_WHEN_LAST_RATE_HIGHER_THEN (${BUY_DONT_WHEN_LAST_RATE_HIGHER_THEN}) met"
# return 1
# fi
# fi
#
# if [ -n "${BUY_DONT_WHEN_LAST_RATE_LOWER_THEN}" ]
# then
# if [ $(echo "${f_price_change} < ${BUY_DONT_WHEN_LAST_RATE_LOWER_THEN}" | bc -l) -ne 0 ]
# then
# echo " ${f_echo_prefix}BUY_DONT_WHEN_LAST_RATE_LOWER_THEN (${BUY_DONT_WHEN_LAST_RATE_LOWER_THEN}) met"
# return 1
# fi
# fi
#
#
# # dont buy on negative last result
# if [ "${BUY_DONT_WHEN_LAST_RATE_NEGATIVE}" = true ]
# then
# if echo "${f_price_change}" | grep -q "^-"
# then
# echo " ${f_echo_prefix}BUY_DONT_WHEN_LAST_RATE_NEGATIVE met"
# return 1
# fi
# fi
}

View File

@ -48,9 +48,16 @@ function check_sell_conditions {
echo ${f_BUY_PRICE_LAST_RATE_DIFF} >>${f_TRADE_HIST_FILE_INTERIM}
# run strategies
f_strategy_path=../../strategies
[ -z "${BOT}" ] && f_strategy_path=strategies
for f_strategy in $(find ${f_strategy_path} -name "sell.*.conf" -type f)
# f_strategy_path=../../strategies
# [ -z "${BOT}" ] && f_strategy_path=strategies
if [ -z "$f_sell_strategies_array" ]
then
local f_strategy_path=../../strategies
[ -z "${BOT}" ] && f_strategy_path=strategies
mapfile -t f_sell_strategies_array < <(find ${f_strategy_path} -name "sell.*.conf" -type f)
fi
# for f_strategy in $(find ${f_strategy_path} -name "sell.*.conf" -type f)
for f_strategy in "${f_buy_strategies_array[@]}"
do
f_echo_prefix="SELL ${f_ASSET}@${CURRENCY}:${f_price}:${f_strategy} - "
check_sell_conditions_strategy ${f_ASSET_HIST_FILE} ${f_strategy} ${f_TRADE_HIST_FILE} ${f_TRADE_HIST_FILE_INTERIM} ${f_BUY_PRICE} ${f_BUY_PRICE_LAST_RATE_DIFF}
@ -122,21 +129,22 @@ function check_sell_conditions_strategy {
f_do_sell=""
# run strategy
if [ -s "${f_strategy}" ]
then
[ -z "${BOT}" ] && local f_strategy_name=$(echo ${f_strategy} | cut -d. -f2)
[ -n "${BOT}" ] && local f_strategy_name=$(echo ${f_strategy} | cut -d. -f6)
#if grep -q "buy.${f_strategy_name}.conf" ${f_TRADE_HIST_FILE}
#then
# . "${f_strategy}" || return 0
#fi
else
g_echo_note "${f_echo_prefix}Strategy file not found"
return 1
fi
[ -n "${BOT}" ] && g_echo_note "${f_echo_prefix}Running SELL checks"
# run strategy
# if [ -s "${f_strategy}" ]
# then
# [ -z "${BOT}" ] && local f_strategy_name=$(echo ${f_strategy} | cut -d. -f2)
# [ -n "${BOT}" ] && local f_strategy_name=$(echo ${f_strategy} | cut -d. -f6)
# #if grep -q "buy.${f_strategy_name}.conf" ${f_TRADE_HIST_FILE}
# #then
. "${f_strategy}" || return 0
# #fi
# else
# g_echo_note "${f_echo_prefix}Strategy file not found"
# return 1
# fi
# Check sell signal from strategy
if [ -n "${f_do_sell}" ]
then

View File

@ -16,7 +16,7 @@ function get_vars_from_csv {
# read last 4 lines in array if not given
if [ -z "${f_last_lines_array}" ]
then
mapfile -t f_last_lines_array <<< $(tail -n4 "${f_ASSET_HIST_FILE}")
mapfile -t f_last_lines_array < <(tail -n4 "${f_ASSET_HIST_FILE}")
fi
# if there are not four lines