diff --git a/dabo/functions/check_buy_conditions.sh b/dabo/functions/check_buy_conditions.sh index 8f5fd22..3a007b7 100644 --- a/dabo/functions/check_buy_conditions.sh +++ b/dabo/functions/check_buy_conditions.sh @@ -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 - } diff --git a/dabo/functions/check_sell_conditions.sh b/dabo/functions/check_sell_conditions.sh index 19140b6..0fb719e 100644 --- a/dabo/functions/check_sell_conditions.sh +++ b/dabo/functions/check_sell_conditions.sh @@ -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 diff --git a/dabo/functions/get_vars_from_csv.sh b/dabo/functions/get_vars_from_csv.sh index 7c95bec..12fbcee 100644 --- a/dabo/functions/get_vars_from_csv.sh +++ b/dabo/functions/get_vars_from_csv.sh @@ -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