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

如何用CCXT Python创建带止损与多止盈的币安期货订单?

使用CCXT在Python中为币安期货订单设置止损(SL)与多止盈(TP)

首先明确:币安期货不支持通过edit_order修改已有订单的止损/止盈,必须用独立的条件单绑定主订单,或者开仓时直接同步设置止盈止损。以下是两种可行方案:

方案一:开仓同时设置止损与单个止盈(单TP场景)

通过create_order方法,传入params参数指定止损和止盈价格,需确保客户端切换到期货模式:

import ccxt

# 初始化币安期货客户端
binance = ccxt.binance({
    'apiKey': 'YOUR_API_KEY',
    'secret': 'YOUR_API_SECRET',
    'enableRateLimit': True,
    'options': {
        'defaultType': 'future',  # 切换至期货交易模式
    }
})

# 做多开仓+同步绑定SL/TP
symbol = 'ETH/USDT'
side = 'buy'  # 做空替换为'sell'
amount = 0.01
entry_price = 1200  # 开仓限价

# 止损、止盈价格设置
sl_price = 1180
tp_price = 1250

# 发送开仓订单并绑定SL/TP
order = binance.create_order(
    symbol=symbol,
    type='limit',
    side=side,
    amount=amount,
    price=entry_price,
    params={
        'stopPrice': sl_price,
        'takeProfitPrice': tp_price,
        'timeInForce': 'GTC'  # 订单有效期限,可按需调整
    }
)

print(f"开仓订单ID: {order['id']}")

方案二:开仓后创建多止盈+止损条件单(多TP场景)

若需要多个止盈位,需等待主开仓订单成交后,分别创建独立的止盈、止损条件单:

# 执行开仓订单(与你现有代码一致)
entry_order = binance.create_limit_order(
    symbol='ETH/USDT',
    side='buy',
    amount=0.01,
    price=1200
)
entry_order_id = entry_order['id']

# 轮询等待开仓订单成交
while True:
    order_status = binance.fetch_order(entry_order_id, symbol=symbol)
    if order_status['status'] == 'closed':
        print("开仓订单已成交")
        break

# 创建止损条件单(方向与开仓相反)
sl_order = binance.create_order(
    symbol=symbol,
    type='stop_market',  # 可选stop_limit用限价平仓
    side='sell',  # 做空止损替换为'buy'
    amount=0.01,
    params={
        'stopPrice': 1180,
        'closePosition': True,  # 触发时平仓全仓
        'timeInForce': 'GTC'
    }
)
print(f"止损订单ID: {sl_order['id']}")

# 创建第一个止盈条件单(半仓止盈)
tp1_order = binance.create_order(
    symbol=symbol,
    type='take_profit_market',  # 可选take_profit_limit用限价平仓
    side='sell',
    amount=0.005,
    params={
        'takeProfitPrice': 1230,
        'timeInForce': 'GTC'
    }
)
print(f"止盈订单1 ID: {tp1_order['id']}")

# 创建第二个止盈条件单(剩余半仓止盈)
tp2_order = binance.create_order(
    symbol=symbol,
    type='take_profit_market',
    side='sell',
    amount=0.005,
    params={
        'takeProfitPrice': 1260,
        'timeInForce': 'GTC'
    }
)
print(f"止盈订单2 ID: {tp2_order['id']}")

关键注意事项

  • 币安期货的止损/止盈是独立订单,需主订单成交后才会生效
  • 条件单类型:stop_market触发后以市价平仓,stop_limit触发后以指定限价平仓;止盈同理对应take_profit_market/take_profit_limit
  • 确保API已开启期货交易及条件单权限
  • 仓位方向对应:做多的止损/止盈为卖出单,做空则为买入单

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:48:21