hello,
i get the precision for quantity before i try this (for example AVAXUSDT) and the result i get is 2. which means i can set a quantity like 3.25. but still i get this error: precision is over the maximum defined for this asset.
the string i send is:
string signature = CreateSignature(SecretKey, $“symbol={symbol}&side={positionSide}&type=LIMIT&timeInForce=GTC&quantity={quantity}&price={price}&leverage={leverage}&isIsolated={isIsolated.ToString().ToLower()}×tamp={timestamp}”);
i tried string and decimals but no luck. when i use int it works but then i cannot order precise quantities i want. any ideas?
For USD Futures, use /fapi/v1/exchangeInfo
hello thanks for your reply. i use exchangeInfo to get quantity precision and i’m loyal to that precision while opening new orders. for example i get 2 for AVAXUSDT. but when i try to send order commands i still get this error. can it be related to c#? it doesn’t make sense.
I figured out the core problem:
when i request the precision for quantity for BTCUSDT, i get “5” from binance API (/fapi/v1/exchangeInfo).
but this information is wrong. you cannot use 5 digits after dot for quantity, even in the application. what i realized is, the app lets you to use 3 digits after dot. like this: 0.004. and when i hard code “3” for quantity precision for BTCUSDT it works perfectly.
so it’s clear that the API sends wrong information for some assets.
so i hope this helps to fellows who have this issue.
https://fapi.binance.com/fapi/v1/exchangeInfo
This gives:
{
"symbol": "BTCUSDT",
"pair": "BTCUSDT",
"contractType": "PERPETUAL",
"deliveryDate": 4133404800000,
"onboardDate": 1569398400000,
"status": "TRADING",
"maintMarginPercent": "2.5000",
"requiredMarginPercent": "5.0000",
"baseAsset": "BTC",
"quoteAsset": "USDT",
"marginAsset": "USDT",
"pricePrecision": 2,
"quantityPrecision": 3,
"baseAssetPrecision": 8,
"quotePrecision": 8,
"underlyingType": "COIN",
"underlyingSubType": [
"PoW"
],
"settlePlan": 0,
"triggerProtect": "0.0500",
"liquidationFee": "0.012500",
"marketTakeBound": "0.05",
"maxMoveOrderLimit": 10000,
"filters": [
{
"minPrice": "556.80",
"maxPrice": "4529764",
"filterType": "PRICE_FILTER",
"tickSize": "0.10"
},
{
"stepSize": "0.001",
"filterType": "LOT_SIZE",
"maxQty": "1000",
"minQty": "0.001"
},
...
}
Look at LOT_SIZE filter, the stepSize is “0.001”. There’s no issue with the API endpoint.
I think you’ve probably used Spot’s exchangeInfo instead of the Futures one for the stepSize checking.
that’s a very good point. i wasn’t careful about it. thank you for your help. now my problem is completely solved.
1 Like