Hi guys i tru to run this code new order (trade) but return me always {“code”:-1013,“msg”:“Filter failure: LOT_SIZE”}
but i controll also with exchange info and i use a right size (in test new oreder work )
my code
#!/bin/bash
# Dichiarazione di variabili globali
declare -g BinApiKey=""
declare -g BinSecretKey=""
declare -g BinIdApi=""
function _Init_Binance_ApiSecretIDData() {
# Verifica se l'argomento (exchange_name) è stato passato alla funzione
if [ -z "$1" ]; then
echo "Errore: Nome exchange mancante."
return 1
fi
# Nome dell'exchange desiderato
exchange_name="$1"
# Controlla se il secondo parametro è "DEBUG"
if [ "$2" == "DEBUG" ]; then
# Stampa gli echo solo se il secondo parametro è "DEBUG"
echo "Debug mode attivato."
fi
# Nome del file del database SQLite
db_file="ConfigDB.db"
# Query SQL per estrarre i dati dell'exchange specificato
query="SELECT ApiKey, SecreatKey, IDapi FROM key_exchange WHERE exchange = '$exchange_name';"
# Esegui la query sul database e ottieni i risultati
result=$(sqlite3 "$db_file" "$query")
# Verifica se ci sono risultati
if [ -n "$result" ]; then
# Assegna i risultati alle variabili globali
BinApiKey=$(echo "$result" | cut -d '|' -f 1)
BinSecretKey=$(echo "$result" | cut -d '|' -f 2)
BinIdApi=$(echo "$result" | cut -d '|' -f 3)
if [ "$2" == "DEBUG" ]; then
# Stampa gli echo solo se il secondo parametro è "DEBUG"
echo "Dati dell'exchange $exchange_name:"
echo "BinApiKey: $BinApiKey"
echo "BinSecretKey: $BinSecretKey"
echo "BinIdApi: $BinIdApi"
fi
else
echo "Exchange $exchange_name non trovato nel database."
fi
}
ServerBinance="https://api.binance.com/api/v3"
_Bin_New_Order() {
local symbol=""
local URLPART2=""
# Recupero i dati per binance che trovo nelle variabili globali BinApiKey, BinSecretKey, BinIdApi
_Init_Binance_ApiSecretIDData "binance"
local apiUrl="$ServerBinance/"
local RECVWINDOW=5000
RECVWINDOW="recvWindow=$RECVWINDOW"
local TIMESTAMP="timestamp=$(( $(date +%s) *1000))"
# Inizializza valori di default
local side=""
local type=""
local timeInForce=""
local quantity=""
local quoteOrderQty=""
local price=""
local newClientOrderId=""
local strategyId=""
local strategyType=""
local stopPrice=""
local trailingDelta=""
local icebergQty=""
local newOrderRespType=""
# Verifica i parametri opzionali
while [ "$#" -gt 0 ]; do
case "$1" in
"--symbol" )
shift
symbol="$1"
;;
"--side" )
shift
side="$1"
;;
"--type" )
shift
type="$1"
;;
"--time-in-force" )
shift
timeInForce="$1"
;;
"--quantity" )
shift
quantity="$1"
;;
"--quote-order-qty" )
shift
quoteOrderQty="$1"
;;
"--price" )
shift
price="$1"
;;
"--new-client-order-id" )
shift
newClientOrderId="$1"
;;
"--strategy-id" )
shift
strategyId="$1"
;;
"--strategy-type" )
shift
strategyType="$1"
;;
"--stop-price" )
shift
stopPrice="$1"
;;
"--trailing-delta" )
shift
trailingDelta="$1"
;;
"--iceberg-qty" )
shift
icebergQty="$1"
;;
"--new-order-resp-type" )
shift
newOrderRespType="$1"
;;
* )
echo "Errore: Parametro non riconosciuto: $1"
return 1
;;
esac
shift
done
# chiamata standard BUY/SELL limit market etc di una quantita di BNB al prezzo di (importante! quantita si riferisce al primo
# tiker quindi se passi BNB/USDT ,metti la quantita di BNB che vuoi )
# Verifica i parametri obbligatori
if [ "$symbol" ] && [ "$side" ] && [ "$type" ] && [ "$quantity" ] && [ "$price" ]; then
URLPART2="symbol=$symbol&side=$side&type=$type&timeInForce=GTC&quantity=$quantity&price=$price"
# Aggiungi newClientOrderId se presente
if [ "$newClientOrderId" ]; then
URLPART2="$URLPART2&newClientOrderId=$newClientOrderId"
fi
# Aggiungi newOrderRespType se presente
if [ "$newOrderRespType" ]; then
URLPART2="$URLPART2&newOrderRespType=$newOrderRespType"
fi
# for debug
echo "$URLPART2"
fi
# chiamata standard BUY/SELL solo Market al meglio ma di una quantità in dollari
# se hai BNBUSDT se sei BNBETH saranno in ETH
if [ "$symbol" ] && [ "$side" ] && [ "$type" ] && [ "$quoteOrderQty" ]; then
URLPART2="symbol=$symbol&side=$side&type=$type"eOrderQty=$quoteOrderQty"
# Aggiungi newClientOrderId se presente
if [ "$newClientOrderId" ]; then
URLPART2="$URLPART2&newClientOrderId=$newClientOrderId"
fi
# Aggiungi strategyId se presente
if [ "$strategyId" ]; then
URLPART2="$URLPART2&strategyId=$strategyId"
fi
# Aggiungi newOrderRespType se presente
if [ "$newOrderRespType" ]; then
URLPART2="$URLPART2&newOrderRespType=$newOrderRespType"
fi
# for debug
echo "$URLPART2"
fi
# chiamata per iceberg order
if [ "$symbol" ] && [ "$side" ] && [ "$type" ] && [ "$quantity" ] && [ "$price" ] && [ "$icebergQty" ]; then
URLPART2="symbol=$symbol&side=$side&type=$type&timeInForce=GTC&quantity=$quantity&price=$price&icebergQty=$icebergQty"
# Aggiungi newClientOrderId se presente
if [ "$newClientOrderId" ]; then
URLPART2="$URLPART2&newClientOrderId=$newClientOrderId"
fi
# Aggiungi strategyId se presente
if [ "$strategyId" ]; then
URLPART2="$URLPART2&strategyId=$strategyId"
fi
# Aggiungi newOrderRespType se presente
if [ "$newOrderRespType" ]; then
URLPART2="$URLPART2&newOrderRespType=$newOrderRespType"
fi
# for debug
echo "$URLPART2"
fi
# Chiamata per iceberg order con eventuali newClientOrderId e strategyId e stopPrice
if [ "$symbol" ] && [ "$side" ] && [ "$type" ] && [ "$quantity" ] && [ "$price" ] && [ "$stopPrice" ]; then
URLPART2="symbol=$symbol&side=$side&type=$type&timeInForce=GTC&quantity=$quantity&price=$price&stopPrice=$stopPrice"
# Aggiungi newClientOrderId se presente
if [ "$newClientOrderId" ]; then
URLPART2="$URLPART2&newClientOrderId=$newClientOrderId"
fi
# Aggiungi strategyId se presente
if [ "$strategyId" ]; then
URLPART2="$URLPART2&strategyId=$strategyId"
fi
# Aggiungi newOrderRespType se presente
if [ "$newOrderRespType" ]; then
URLPART2="$URLPART2&newOrderRespType=$newOrderRespType"
fi
# for debug
echo "$URLPART2"
fi
# Chiamata per iceberg order con eventuali newClientOrderId, strategyId, stopPrice e trailingStop
if [ "$symbol" ] && [ "$side" ] && [ "$type" ] && [ "$quantity" ] && [ "$price" ] && [ "$trailingStop" ]; then
URLPART2="symbol=$symbol&side=$side&type=$type&timeInForce=GTC&quantity=$quantity&price=$price&trailingStop=$trailingStop"
# Aggiungi newClientOrderId se presente
if [ "$newClientOrderId" ]; then
URLPART2="$URLPART2&newClientOrderId=$newClientOrderId"
fi
# Aggiungi strategyId se presente
if [ "$strategyId" ]; then
URLPART2="$URLPART2&strategyId=$strategyId"
fi
# Aggiungi newOrderRespType se presente
if [ "$newOrderRespType" ]; then
URLPART2="$URLPART2&newOrderRespType=$newOrderRespType"
fi
# for debug
echo "$URLPART2"
fi
QUERYSTRING="$URLPART2&$RECVWINDOW&$TIMESTAMP"
SIGNATURE=$(echo -n "$QUERYSTRING" | openssl dgst -sha256 -hmac $BinSecretKey | cut -c 18-)
SIGNATURE="signature=$SIGNATURE"
PRE_URL="order?"
# Utilizza curl e cattura l'output nella variabile response
# curl with -v for debug
#response=$(curl -v -H "X-MBX-APIKEY: $BinApiKey" -X POST "$apiUrl$PRE_URL$URLPART2&$RECVWINDOW&$TIMESTAMP&$SIGNATURE")
response=$(curl -H "X-MBX-APIKEY: $BinApiKey" -X POST "$apiUrl$PRE_URL$URLPART2&$RECVWINDOW&$TIMESTAMP&$SIGNATURE")
echo "$response"
#for debug
#http_status="${response: -3}"
#echo "Stato della richiesta HTTP: $http_status"
}
#----------------- ESEMPI DI CHIAMATA NEW ORDER (TRADE) ----------------------------------------------------------------------------------------------------------
# chiamata standard BUY/SELL limit market etc di una quantita di BNB al prezzo di (importante! quantita si riferisce al primo
# tiker quindi se passi BNB/USDT ,metti la quantita di BNB che vuoi ) newOrderRespType=Set the response JSON. MARKET and LIMIT order types default to FULL, all other orders default to ACK.
_Bin_New_Order --symbol "BNBUSDT" --side "BUY" --type "LIMIT" --quantity "0.0527" --price "400" --new-order-resp-type "FULL"