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

如何用CCXT(Python)修改币安期货订单的SL/TP(止盈止损)

如何用CCXT Python修改币安期货订单的止盈(TP)/止损(SL)

明确说明:完全可行,币安期货支持对已创建订单追加或修改TP/SL,CCXT提供对应方法实现,以下分两种场景给出实操方案:

场景1:订单创建时未设置TP/SL,后续追加或更新

如果创建订单时未附带TP/SL参数,可通过set_stop_loss和set_take_profit方法为目标订单绑定或修改止损/止盈,核心是传入原订单ID和对应参数:

示例代码

# 先创建原订单,拿到返回的order对象
order = exchange.create_order(symbol=par, type='limit', side=side, price=precio, amount=monto, params={})

# 更新止损(SL)
updated_sl_order = exchange.set_stop_loss(
    symbol=par,
    side=side,
    amount=monto,  # 必须与原订单数量一致
    stop_price=你的新止损价格,
    params={
        'reduceOnly': True,  # 期货必填,确保仅对现有仓位减仓
        'orderId': order['id'],  # 指定要修改的原订单ID
        # 若使用反向合约,需额外添加 'positionSide': 'LONG'/'SHORT'
    }
)

# 更新止盈(TP)
updated_tp_order = exchange.set_take_profit(
    symbol=par,
    side=side,
    amount=monto,
    stop_price=你的新止盈价格,
    params={
        'reduceOnly': True,
        'orderId': order['id'],
        # 反向合约需指定positionSide参数
    }
)

场景2:订单创建时已设置TP/SL,直接修改

如果原订单创建时已附带TP/SL参数,可通过edit_order方法直接更新,注意不能修改原订单的挂单价格和数量:

示例代码

# 修改已带TP/SL的订单
edited_order = exchange.edit_order(
    id=order['id'],
    symbol=par,
    type='limit',
    side=side,
    price=precio,  # 原订单挂单价格,不可修改
    amount=monto,  # 原订单数量,不可修改
    params={
        'stopLossPrice': 你的新止损价格,
        'takeProfitPrice': 你的新止盈价格,
        'reduceOnly': True,
        # 反向合约添加positionSide参数
    }
)

关键注意事项

  • 币安期货强制要求reduceOnly参数设为True,防止误开反向仓位
  • 反向合约必须指定positionSide(LONG/SHORT),正向合约无需此参数
  • 原订单的挂单价格和数量无法修改,仅支持调整TP/SL相关价格
  • 确保使用最新版CCXT,旧版本可能存在参数支持不全的问题,可执行pip install --upgrade ccxt更新

内容的提问来源于stack exchange,提问作者José Rafael

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:40:37