function binance_get_token_info { g_echo_note "RUNNING FUNCTION ${FUNCNAME} $@" local f_ASSET=$1 local f_CURRENCY=$2 local f_QUANTITY=$3 # cleanup cache [ -s BINANCE_TOKEN_INFO_CMD_OUT ] && find BINANCE_TOKEN_INFO_CMD_OUT -mmin +60 -or -empty -delete #echo "$BINANCE_CLI_CMD info" >BINANCE_TOKEN_INFO_CMD #[ -s BINANCE_TOKEN_INFO_CMD_OUT ] || g_runcmd g_retrycmd sh BINANCE_TOKEN_INFO_CMD >BINANCE_TOKEN_INFO_CMD_OUT if ! [ -s BINANCE_TOKEN_INFO_CMD_OUT ] then binance-api-call GET /api/v3/exchangeInfo >BINANCE_TOKEN_INFO_CMD_OUT cat ${g_tmp}/API_CMD_OUT >BINANCE_TOKEN_INFO_CMD_OUT fi # cut quantity by lot-step-size if ! [ -z "$f_QUANTITY" ] then local f_LOT_STEP_SIZE=$(cat BINANCE_TOKEN_INFO_CMD_OUT | jq -c "[ .symbols[] | select( .symbol==\"${f_ASSET}${f_CURRENCY}\") ]" | jq -c '.[].filters[] | select( .filterType=="LOT_SIZE")' | jq -r '.stepSize' | perl -pe 's/0+$//; s/\.$//') if [ -z "${f_LOT_STEP_SIZE}" ] then g_echo "Got no LOT_STEP_SIZE from BINANCE_TOKEN_INFO_CMD_OUT for ${f_ASSET} - Assuming 0.01" f_LOT_STEP_SIZE="0.01" fi local f_LOT_DIV=$(echo "scale=0; ${f_QUANTITY}/${f_LOT_STEP_SIZE}" | bc -l) f_QUANTITY_LOT_CUT=$(echo "${f_LOT_DIV}*${f_LOT_STEP_SIZE}" | bc -l | sed 's/^\./0./;') fi # get min CURRENCY f_MIN_NOTIONAL=$(cat BINANCE_TOKEN_INFO_CMD_OUT | jq -c "[ .symbols[] | select( .symbol==\"${f_ASSET}${f_CURRENCY}\") ]" | jq -c '.[].filters[] | select( .filterType=="MIN_NOTIONAL")' | jq -r '.minNotional' | perl -pe 's/0+$//; s/\.$//') if [ -z "${f_MIN_NOTIONAL=}" ] then g_echo "Got no LOT_STEP_SIZE from BINANCE_TOKEN_INFO_CMD_OUT for ${f_ASSET} - Assuming 10.00000000" f_MIN_NOTIONAL="10.00000000" fi }