为何调整Binance保证金下单量后仍触发APIError(code=-3006)?
Binance逐仓API错误(code=-3006)原因解析
问题代码
info = client.get_isolated_margin_account(symbol='BTCUSDT') totalAssetOfBtc = float(info['totalAssetOfBtc']) precision = 5 totalBTC = "{:0.0{}f}".format(totalAssetOfBtc, precision) order = client.create_margin_order( symbol='BTCUSDT', side=SIDE_SELL, type=ORDER_TYPE_MARKET, sideEffectType="MARGIN_BUY", quantity=totalBTC )
错误表现
执行代码时,哪怕把下单量降到当前BTC资产的2%,依然触发:
BinanceAPIException: APIError(code=-3006): Your borrow amount has exceed maximum borrow amount
原因拆解
- 参数逻辑完全错误:
sideEffectType="MARGIN_BUY"的作用是下单时自动借贷资金完成买入操作,但你当前的订单方向是SIDE_SELL(卖出BTC)。卖出操作本身不需要借贷,错误的参数让系统误以为你要发起借贷请求,直接触发了借贷额度校验,自然报错。 - 逐仓模式的参数适配问题:在逐仓保证金下,每个交易对的借贷逻辑独立,
MARGIN_BUY仅适用于买入场景(比如你要做多,用借贷资金买BTC),卖出场景下如果需要自动偿还借贷,应该用AUTO_REPAY,不需要的话可以直接省略该参数(默认是NO_SIDE_EFFECT)。 - 精度问题不是核心诱因:你做的精度格式化可能会导致微小的数值偏差,但-3006错误明确指向借贷额度超限,和可卖出资产的精度无关,优先解决参数错误。
修复方案
修改或移除错误的sideEffectType参数:
# 方案1:移除参数,仅完成卖出交易 order = client.create_margin_order( symbol='BTCUSDT', side=SIDE_SELL, type=ORDER_TYPE_MARKET, quantity=totalBTC ) # 方案2:如果有未偿还的BTC借贷,用卖出收益自动偿还 order = client.create_margin_order( symbol='BTCUSDT', side=SIDE_SELL, type=ORDER_TYPE_MARKET, sideEffectType="AUTO_REPAY", quantity=totalBTC )
内容的提问来源于stack exchange,提问作者user566657
相关产品推荐
相关产品推荐

