币安期货多/空仓位平仓方法及代码平仓误开新仓问题咨询
币安期货平仓多头/空头仓位的正确方法
你遇到的问题核心是没指定仅平仓的订单属性,普通的SELL/BUY订单在平掉现有仓位后会自动反向开仓,只需添加reduceOnly=True参数就能解决——该参数会限制订单仅减少现有仓位,不创建新的反向仓位。
核心逻辑
- 持有多头仓位时,用
side="SELL"配合reduceOnly=True平仓 - 持有空头仓位时,用
side="BUY"配合reduceOnly=True平仓
双向持仓模式代码示例
如果你的账户是双向持仓模式(可分别持有多头、空头),仓位信息中的positionSide会明确标记LONG或SHORT,代码如下:
# 假设已获取目标仓位数据 position_side = positions[position]['positionSide'] close_qty = float(positions[position]['origQty']) if position_side == "LONG": # 平多头仓位 client.futures_create_order( symbol=str(tkr), side="SELL", type="MARKET", quantity=close_qty, reduceOnly=True # 核心参数:仅平仓,不开新仓 ) elif position_side == "SHORT": # 平空头仓位 client.futures_create_order( symbol=str(tkr), side="BUY", type="MARKET", quantity=close_qty, reduceOnly=True )
单向持仓模式代码示例
若账户是默认的单向持仓模式,positionSide为BOTH,需通过positionAmt的正负判断仓位方向(正数=多头,负数=空头):
# 假设已获取目标仓位数据 position_amt = float(positions[position]['positionAmt']) close_qty = abs(position_amt) if position_amt > 0: # 平多头仓位 client.futures_create_order( symbol=str(tkr), side="SELL", type="MARKET", quantity=close_qty, reduceOnly=True ) elif position_amt < 0: # 平空头仓位 client.futures_create_order( symbol=str(tkr), side="BUY", type="MARKET", quantity=close_qty, reduceOnly=True )
内容的提问来源于stack exchange,提问作者Alaa Ismail
相关产品推荐
相关产品推荐

