Binance报价精度超限无法下单:价格和数量怎么取整?

 / 
1

直接结论:price往下取整到tickSize的倍数,quantity也是,别四舍五入。用错方式订单会被系统拒绝。

Binance币安
全球交易量最大的加密货币交易所,安全性与流动性行业领先
新手福利:注册立享20%手续费折扣优惠!

1. 先搞清楚"精度超限"是哪一种

币安订单被拒,通常是因为价格或数量的小数位超过了该交易对允许的范围,俗称"精度超限"。这个限制由PRICE_FILTER和LOT_SIZE两个过滤器控制。

下单前,先确认你的订单触犯了哪条规则:

  • 价格超限:你设置的价格,小数点后的位数比该交易对允许的tickSize更精细。例如,BTCUSDT的tickSize是0.01,你输入的110384.123就是无效的,因为0.123不是0.01的整数倍。

  • 数量超限:你设置的数量,小数点后的位数比该交易对允许的stepSize更精细。

2. 取整的正确方法:向下取整到步长倍数

不少用户误以为"四舍五入"就行,但交易所要求的是订单参数必须是tickSize或stepSize的整数倍。正确做法是向下取整(舍弃多余小数),这样能保证订单参数合法。

2.1 价格的取整规则

  • 做什么:将价格调整到tickSize的整数倍。

  • 怎么做:假设BTCUSDT的tickSize为0.01,你想以60000.123的价格下单,合法价格应为60000.12(保留到分)。

  • 做到什么程度算完成:确保你提交的价格的小数位数,不超过该交易对规定的精度。

2.2 数量的取整规则

  • 做什么:将数量调整到stepSize的整数倍。

  • 怎么做:假设某代币的stepSize为0.001,你想买100.0005个,合法数量应为100.000(保留到小数点后三位)。

  • 做到什么程度算完成:同样,确保你提交的数量的小数位数合规。

3. 实操:如何获取正确的精度参数

不要再靠猜或者试了,币安提供了官方渠道来查询每个交易对的精确规则。

步骤1:通过 API 获取exchangeInfo信息

  • 做什么:在代码或 Postman 中调用GET /api/v3/exchangeInfo,并指定交易对。

  • 怎么做:请求GET /api/v3/exchangeInfo?symbol=BTCUSDT,返回的 JSON 数据中会包含该交易对的详细过滤器。

  • 做到什么程度算完成:你成功获取到包含PRICE_FILTER和LOT_SIZE的响应。

步骤2:解析关键参数

  • 做什么:从返回结果中提取tickSize和stepSize。

  • 怎么做

    • 在filters数组中找到PRICE_FILTER,tickSize就是价格的最小增量。

    • 找到LOT_SIZE,stepSize就是数量的最小增量。

  • 做到什么程度算完成:你明确了当前交易对的精度底线。

步骤3:动态调整订单参数

  • 做什么:在下单前,用你程序里的逻辑将价格和数量"裁剪"到合法的值。

  • 怎么做

    • 计算出价格和数量的小数位数,直接截断到tickSize和stepSize允许的精度。

    • 如果价格/数量低于minPrice/minQty,订单也会被拒,需要一并检查。

  • 做到什么程度算完成:你成功提交了一个不会因精度超限而报错的订单。

Binance币安
全球交易量最大的加密货币交易所,安全性与流动性行业领先
新手福利:注册立享20%手续费折扣优惠!

常见失败原因

直接用网站显示的价格,但 API 报错说精度过高。这种情况常见于对价格非常敏感的订单,比如ORDI/USDT在2025年5月调整后,价格精度从0.01收窄到了0.001。网站前端已适配,但你的API脚本若未同步更新,仍按旧精度下单就会被拒。

风险提醒:精度规则会调整。如果是自动化交易,不要在代码里写死小数位数。每次启动或定期通过API获取最新规则是更稳妥的做法。

做完以上操作,怎么确认自己取整对了?

提交订单后收到-1111错误码并提示"Parameter '%s' has too much precision",说明你的价格或数量没取整到位。调整后再次提交,直到订单成功进入撮合队列。