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

如何使用CCXT在ByBit交易所正确平仓现有持仓?

ByBit通过CCXT正确平仓的实现方法

该问题仅出现在ByBit合约交易场景下,现货交易不存在双向持仓逻辑。你遇到的多空仓位同时存在的问题,是因为ByBit合约默认开启双向持仓模式:该模式下同个交易对可同时持有多仓和空仓,直接提交相反方向的订单默认判定为开新仓,而非平仓。

方法1:双向持仓模式下直接平仓(无需修改持仓模式)

不需要调整现有持仓规则,直接在创建平仓订单时添加两个参数即可实现精准平仓,不会误开新仓:

  • positionSide:明确指定要平仓的持仓方向,双向持仓模式下必填
  • reduceOnly:标记该订单仅用于减仓,优先级最高,完全避免开新仓的可能

平多仓代码示例:

symbol = 'SOLUSDT'
# 平1个SOL的多仓
close_long_res = exchange.create_order(
    symbol=symbol,
    type='Market',
    side='Sell',
    amount=1,
    params={
        'positionSide': 'Long',
        'reduceOnly': True
    }
)

平空仓代码示例:

symbol = 'SOLUSDT'
# 平1个SOL的空仓
close_short_res = exchange.create_order(
    symbol=symbol,
    type='Market',
    side='Buy',
    amount=1,
    params={
        'positionSide': 'Short',
        'reduceOnly': True
    }
)

方法2:切换为单向持仓模式(平仓无需额外参数)

如果你不需要同时持有多空双向仓位,可以先将对应交易对的持仓模式切换为单向持仓,之后提交相反方向订单就会直接平仓,不会开新仓。

切换单向持仓模式代码示例:

# hedged=False代表单向持仓,hedged=True代表双向持仓
exchange.set_position_mode(hedged=False, symbol='SOLUSDT')

切换完成后平仓代码和你原来的开仓逻辑一致,平多仓直接提交卖单即可:

symbol = 'SOLUSDT'
close_res = exchange.create_order(symbol, amount=1, type='Market', side='Sell')

注意事项

  • 持仓模式是按交易对独立设置的,切换后仅对当前指定的交易对生效
  • 如果是现货交易遇到相同问题,优先检查是否错误指定了交易类型为合约

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:54:08