如何用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
相关产品推荐
相关产品推荐

