diff --git a/dabo/functions/order.sh b/dabo/functions/order.sh index 8a0d3c7..49eea20 100644 --- a/dabo/functions/order.sh +++ b/dabo/functions/order.sh @@ -27,7 +27,10 @@ function order { local f_amount=$2 # amount in $CURRENCY / if crypto_amount:XXX then amount in crypto local f_side=$3 # buy/sell long/short local f_price=$4 # price for limit order - if not given do market order - local f_params f_type + local f_stoploss=$5 + local f_takeprofit=$6 + local f_params="params={" + local f_type ### validity checks ### @@ -78,14 +81,24 @@ function order { f_ccxt "$STOCK_EXCHANGE.setLeverage($LEVERAGE, '$f_symbol')" || return 1 # define margibn mode isolated/cross - f_params="params={'marginMode': '$MARGIN_MODE'}" + f_params="${f_params}'marginMode': '$MARGIN_MODE', " + else # short/sell not possible in spot market [[ $f_side =~ ^sell$ ]] || return 1 fi + # Add stoploos and take profit if available + [ -n "$f_stoploss" ] && f_params="${f_params}'stopLossPrice': '$f_stoploss', " + [ -n "$f_takeprofit" ] && f_params="${f_params}'takeProfitPrice': '$f_takeprofit', " + + # end up params syntax with "}" + f_params="${f_params}}" + # do the order - f_ccxt "print($STOCK_EXCHANGE.createOrder(symbol='${f_symbol}', type='$f_type', price=$f_price, amount='${f_amount}', side='${f_side}', ${f_params}))" || return 1 + local f_order="symbol='${f_symbol}', type='$f_type', price=$f_price, amount='${f_amount}', side='${f_side}', ${f_params}" + echo "$f_order" | notify.sh -s "ORDER" + f_ccxt "print($STOCK_EXCHANGE.createOrder(${f_order}))" || return 1 # refresh positions get_positions