使用Python pybit库在Bybit创建订单失败(错误码130021)求助
问题描述
使用pybit库创建Bybit USDT永续合约限价卖单时触发ErrCode: 130021错误,调整订单数量和价格后问题仍存在。
代码示例
from pybit.usdt_perpetual import HTTP session_auth_ = HTTP( endpoint='https://api.bybit.com', api_key=api_key, api_secret=secret_key ) res = session_auth_.place_active_order( symbol='LTCUSDT', side='Sell', order_type='Limit', qty=1, price=56.01, time_in_force='GoodTillCancel', reduce_only=False, close_on_trigger=False )
错误信息
pybit.exceptions.InvalidRequestError: Oc_diff[568068600], new_oc[568068600] with ob[0]+ab[0] (ErrCode: 130021) (ErrTime: 20:24:51). Request → POST https://api.bybit.com/private/linear/order/create: {'api_key': '.........', 'close_on_trigger': False, 'order_type': 'Limit', 'price': 56.1, 'qty': 1, 'recv_window': 5000, 'reduce_only': False, 'side': 'Sell', 'symbol': 'LTCUSDT', 'time_in_force': 'GoodTillCancel', 'timestamp': 1666815890695, 'sign': 'cf8c055049303634c8c6aa17077689ddb6d8ca490302e392b0590b3dbd02ca19'}.
解决方案
Bybit错误码130021本质是订单开仓资金需求与账户可用保证金不匹配,可按以下步骤排查:
- 核实可用保证金:USDT永续合约开仓保证金计算公式为
(qty * price) / 杠杆率,确保账户可用USDT余额≥该计算值。若余额不足,需转入资金或减少下单数量。 - 检查杠杆设置:默认杠杆可能过低导致保证金需求过高,可通过pybit设置合适杠杆:
# 设置LTCUSDT买卖杠杆为10x(可按需调整) session_auth_.set_leverage( symbol="LTCUSDT", buy_leverage=10, sell_leverage=10 ) - 确认订单精度合规:LTCUSDT永续合约最小下单数量为0.01,价格最小变动单位为0.01,你的参数看似合规,但需确保价格未超出当前盘口合理范围(极端偏离市价的订单可能触发风控限制)。
- 排查现有持仓/挂单:若账户已有LTCUSDT持仓,需计算总持仓的保证金占用,确保新增订单后总保证金未超过账户承受上限。
内容的提问来源于stack exchange,提问作者Алексей Скоробогатов
相关产品推荐
相关产品推荐

