使用python-binance创建币安ETHUSDT OCO订单触发MIN_NOTIONAL错误如何解决
错误原因说明
你对MIN_NOTIONAL规则的理解完全错误:
MIN_NOTIONAL指的是订单名义价值最小值,单位是交易对的计价货币(ETHUSDT的计价货币是USDT),要求满足下单数量(ETH) * 订单执行价格(USDT/ETH) ≥ 10 USDT,和你以为的「最低10ETH持仓」没有任何关系。
你触发报错的核心原因是OCO订单的规则要求:OCO卖单包含的止盈限价单、止损限价单两个挂单,都需要单独满足MIN_NOTIONAL要求。你按买入价计算0.0028ETH对应价值刚好超过10USDT,但你的止损价设置得较低,止损限价 * 0.0028ETH的结果不足10USDT,就触发了规则校验报错。另外你对价格做round(2)操作的时候,也有可能把止损价凑整后刚好低于阈值,导致名义价值差一点不满足要求。
你填USDT数值报余额不足的原因是:OCO卖单的quantity参数要求传入标的资产(ETH)的数量,你传入USDT数值相当于提交了对应数值的ETH卖单,远超你的持仓量,自然触发余额不足报错。
解决方法
- 先根据你的止损价反推最低下单量:最低下单ETH数量 =
10 USDT / 止损价(USDT/ETH),在此基础上多留0.0001ETH左右的冗余,避免价格凑整后踩线。比如你的止损价是3500USDT,那最低下单量就是10/3500≈0.002857ETH,你填0.0029ETH就能满足要求。 - 处理价格参数时可以不做强制四舍五入,或者给止损限价加0.01USDT的偏移,避免凑整导致名义价值不足。
内容的提问来源于stack exchange,提问作者NikolaTesla
相关产品推荐
相关产品推荐

