c# precision is over the maximum defined for this asset

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()}&timestamp={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