39 lines
1.7 KiB
Bash
39 lines
1.7 KiB
Bash
|
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
|
||
|
}
|
||
|
|