take profit and take loss sell checks; strategies match on buy and sell strategy name
This commit is contained in:
parent
9b8bc1f05f
commit
36029642f5
@ -133,8 +133,12 @@ function check_sell_conditions_strategy {
|
||||
|
||||
# run strategy
|
||||
if [ -s "${f_strategy}" ]
|
||||
then
|
||||
local f_strategy_name=$(echo ${f_strategy} | cut -d. -f2)
|
||||
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
|
||||
@ -199,6 +203,43 @@ function check_sell_conditions_strategy {
|
||||
fi
|
||||
|
||||
|
||||
# Take profit after positive results
|
||||
if [ -n "${TAKE_PROFIT_CHECK_AFTER_POSTITIVE_RESULTS}" ] && [ -n "${TAKE_PROFIT_CHECK_AT_FEE_PLUS}" ] && [ -n "${TAKE_PROFIT_CHECK_AT_FACTOR}" ]
|
||||
then
|
||||
if [ $(grep -v "^-" ${f_TRADE_HIST_FILE_INTERIM} | wc -l) -ge ${TAKE_PROFIT_CHECK_AFTER_POSTITIVE_RESULTS} ]
|
||||
then
|
||||
# Only if result larger then fee
|
||||
if [ $(echo "${f_BUY_PRICE_LAST_RATE_DIFF} > (${FEE}+${TAKE_PROFIT_CHECK_AT_FEE_PLUS})" | bc -l) -ne 0 ]
|
||||
then
|
||||
# Take profit if interim result falls over 20% (/1.25) from the highest result
|
||||
local f_highest_profit=$(grep -v "^-" ${f_TRADE_HIST_FILE_INTERIM} | LANG=en_US.UTF-8 sort -n | tail -n1)
|
||||
local f_take_profit=$(echo "${f_highest_profit} / ${TAKE_PROFIT_CHECK_AT_FACTOR}" | bc -l)
|
||||
[ $(echo "${f_BUY_PRICE_LAST_RATE_DIFF} < ${f_take_profit}" | bc -l) -ne 0 ] && f_SELL="taking profit"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
# Take loss
|
||||
if [ -n "${TAKE_LOSS_CHECK_AFTER_NEGATIVE_RESULTS}" ] && [ -n "${TAKE_LOSS_CHECK_AT_FEE_PLUS}" ] && [ -n "${TAKE_LOSS_CHECK_AT_FACTOR}" ]
|
||||
then
|
||||
if [ $(tail -n${TAKE_LOSS_CHECK_AFTER_NEGATIVE_RESULTS} ${f_TRADE_HIST_FILE_INTERIM} | grep "^-" | wc -l) -ge ${TAKE_LOSS_CHECK_AFTER_NEGATIVE_RESULTS} ]
|
||||
then
|
||||
# if result larger then fee
|
||||
if [ $(echo "${f_BUY_PRICE_LAST_RATE_DIFF} > (${FEE}+${TAKE_LOSS_CHECK_AT_FEE_PLUS})" | bc -l) -ne 0 ]
|
||||
then
|
||||
f_SELL="taking profit by loss before"
|
||||
else
|
||||
# on loss
|
||||
local f_highest_loss=$(grep "^-" ${f_TRADE_HIST_FILE_INTERIM} | LANG=en_US.UTF-8 sort -n | head -n1)
|
||||
local f_take_loss=$(echo "${f_highest_loss} / ${TAKE_LOSS_CHECK_AT_FACTOR}" | bc -l)
|
||||
[ $(echo "${f_BUY_PRICE_LAST_RATE_DIFF} > ${f_take_loss}" | bc -l) -ne 0 ] && f_SELL="taking loss"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# hold on negative result
|
||||
if [ "${SELL_HOLD_IF_RESULT_NEGATIVE}" -gt 0 ]
|
||||
then
|
||||
|
Loading…
Reference in New Issue
Block a user