关于现货API,数量的精度问题

根据接口获得到的参数,和实际使用的对不上

币种 tickSize stepSize 价格位数 数量位数
BTCUSDT 0.01 0.00001 2 6
ETHUSDT 0.01 0.0001 2 5
XRPUSDT 0.0001 1 4 1
TRXUSDT 0.00001 0.1 5 1

价格的位数没看到问题,但是数量上是对不上的,前面3种比获取到的多以为,TRX又是正常的,还有试过一些其他的币,都对不上,这个数量的精度应该是怎么获取的,看了论坛其他人的一些提问,感觉好像也没有明确

以 BTCUSDT为例, 数量的精度是到小数点后5位。 可以看接口 /exchangeInfo下面的 filters:

"filters": [
                {
                    "filterType": "PRICE_FILTER",
                    "minPrice": "0.01000000",
                    "maxPrice": "1000000.00000000",
                    "tickSize": "0.01000000"
                },
                {
                    "filterType": "PERCENT_PRICE",
                    "multiplierUp": "5",
                    "multiplierDown": "0.2",
                    "avgPriceMins": 5
                },
                {
                    "filterType": "LOT_SIZE",
                    "minQty": "0.00001000",
                    "maxQty": "9000.00000000",
                    "stepSize": "0.00001000"
                },
                {
                    "filterType": "MIN_NOTIONAL",
                    "minNotional": "10.00000000",
                    "applyToMarket": true,
                    "avgPriceMins": 5
                },
                {
                    "filterType": "ICEBERG_PARTS",
                    "limit": 10
                },
                {
                    "filterType": "MARKET_LOT_SIZE",
                    "minQty": "0.00000000",
                    "maxQty": "416.13477412",
                    "stepSize": "0.00000000"
                },
                {
                    "filterType": "TRAILING_DELTA",
                    "minTrailingAboveDelta": 10,
                    "maxTrailingAboveDelta": 2000,
                    "minTrailingBelowDelta": 10,
                    "maxTrailingBelowDelta": 2000
                },
                {
                    "filterType": "MAX_NUM_ORDERS",
                    "maxNumOrders": 200
                },
                {
                    "filterType": "MAX_NUM_ALGO_ORDERS",
                    "maxNumAlgoOrders": 5
                }

其中的LOT_SIZE中的

stepSize : 0.00001000

所以如果你下单卖 1.00001个btc,系统不会报错。

不过如果你下单卖0.00001个btc,这样又不行了。因为没有通过MIN_NOTIONAL的检查。
当前价 btcusdt = $20330, $20330 x 0.00001 = $0.2033 < $10.

总结一下:

  • LOT_SIZE 定义了下单的数量精度和最大最小数量要求。
  • 所有过滤器都需要满足
  • 如果服务器报错,可以根据具体错误来定位具体问题。

先感谢您的回复,可能是我的问题没有描述清楚,那我这边根据您这个例子进行解释

  1. BTCUSDTstepSize0.00001,我能否理解为数量的精度最多到小数点后5位,但是实际情况是我可以购买1.000001个,也就是6位
  2. 然后是XRPUSDTstepSize是1,TRXUSDTstepSize是0.1,但是实际情况他们的数量精度都是小数点后一位
  3. 然后是为什么会有这个问题呢,刚好是因为算法中需要用到这个精度是几位,在这种情况下,无法确定

顺便能问下,测试网下单后,限价订单还挂在上面,没有结束,但是实际情况价格应该已经满足了,这个是什么原因呢,十分感谢

这个不可以,我上面的解释没说6位可以啊。

XRPUSDT 不可以下单子的数量带小数点的。

现货还是合约的?

需要把订单的详细信息发出来。然后为什么你认为应该满足了?
你这个问题单独开个帖子说吧。 一个帖子说一个问题最好。