You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Binance Python API如何根据订单ID以市价平仓合约订单

问题结论

币安官方合约API不存在原生的futures_close_order(orderId=xxx)接口,你可以通过标准API组合实现完全一致的市价平仓效果。

具体实现方法

方法1:已知开仓参数时的最简实现

如果你确认该笔开仓订单对应的持仓没有后续加减仓操作,直接发送反向同数量市价单即可完成平仓。对应你给出的开仓代码,平仓代码如下:

from binance.enums import *
# 原开仓为long(多)方向,平仓交易方向取反为SELL,平仓数量和开仓数量保持一致
close_order = client.futures_create_order(
    symbol=symbol,
    side=SIDE_SELL,
    type=ORDER_TYPE_MARKET,
    quantity=quantity,
    # 如需自定义平仓单的客户端订单ID,可自行添加该参数
    # newClientOrderId="close_test_order"
)

注意:如果你的账户开启了双向持仓(对冲)模式,平多单时需要额外传入positionSide="LONG"参数;默认单向持仓模式不需要传该字段。

方法2:查询实时持仓后平仓(避免数量偏差)

如果开仓后你对该品种同方向仓位做过其他加减仓操作,不要硬编码平仓数量,先查询对应品种的实时可平持仓量再发反向单,避免平仓数量和实际持仓不匹配:

from binance.enums import *

# 查询BTCUSDT品种的实时持仓信息
positions = client.futures_position_information(symbol="BTCUSDT")
# 筛选出多单持仓
long_position = next(pos for pos in positions if pos["positionSide"] == "LONG")
hold_quantity = abs(float(long_position["positionAmt"]))

# 持仓量大于0时才发送平仓委托
if hold_quantity > 0:
    close_order = client.futures_create_order(
        symbol="BTCUSDT",
        side=SIDE_SELL,
        type=ORDER_TYPE_MARKET,
        quantity=hold_quantity
    )
补充说明
  • 传入原开仓的orderId无法直接关联平仓操作:币安U本位合约默认同方向同品种持仓是合并计算的,系统不会单独标记某笔开仓订单对应的独立仓位,因此不存在“按订单ID平仓”的底层逻辑支持。
  • 如果你想要类似futures_close_order的简洁调用体验,可以自行封装工具函数,把「查询持仓方向/可平数量」「发送反向市价单」的逻辑封装进去即可。
  • 市价平仓不需要传入价格参数,系统会按当前最优盘口价格立刻撮合成交,实现快速全额平仓。

内容的提问来源于stack exchange,提问作者xyz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 04:45:37