#!/bin/bash function binance_convert_dust { # find BNB Balance of an conversion which ran before - Balance takes a while to be shown on BNB # get BNB balance binance-api-call GET sapi/v1/capital/config/getall local f_bnb_balance=$(cat ${g_tmp}/API_CMD_OUT | jq -r '.[] | .coin + "," + .free' | grep "^BNB," | cut -d, -f2) # convert BNB to $CURRENCY #if echo "${f_bnb_balance}" | egrep -q "[0-9]\.[0-9]" if [ $(echo "${f_bnb_balance} > 0.004" | bc -l) -ne 0 ] then binance-api-call POST /sapi/v1/convert/getQuote "&fromAsset=BNB&toAsset=${CURRENCY}&fromAmount=${f_bnb_balance}&walletType=SPOT&validTime=30s" local f_quoteid=$(cat ${g_tmp}/API_CMD_OUT | jq -r '.quoteId') g_signal-notify "Converting dust from ${f_bnb_balance} BNB to ${CURRENCY} $(cat ${g_tmp}/API_CMD_OUT)" binance-api-call POST /sapi/v1/convert/acceptQuote ""eId=${f_quoteid}" fi # Only run every 6 houres - binance doesn't allow to do it more often [ -s BINANCE_LAST_DUST_RUN ] || date >BINANCE_LAST_DUST_RUN find BINANCE_LAST_DUST_RUN -mmin +362 -delete [ -s BINANCE_LAST_DUST_RUN ] && return 0 date >BINANCE_LAST_DUST_RUN g_echo_note "RUNNING FUNCTION ${FUNCNAME} $@" # find dust local f_dust_assets="" local f_dust binance-api-call POST /sapi/v1/asset/dust-btc # ignore $CURRENCY and assets in open trades for f_dust in $(cat ${g_tmp}/API_CMD_OUT | jq -r '.details[].asset' | egrep -v "${CURRENCY}") do ls trade-histories/trade-*.${f_dust}${CURRENCY}-open.history.csv >/dev/null 2>&1 && continue f_dust_assets="${f_dust_assets},$f_dust" done f_dust_assets=$(echo ${f_dust_assets} | sed 's/^,//') # convert dust to BNB if [ -n "${f_dust_assets}" ] then g_signal-notify "Converting dust from ${f_dust_assets} to BNB" binance-api-call POST /sapi/v1/asset/dust "&asset=${f_dust_assets}" fi }