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

Binance Futures Python API:如何为限价单同步设置TP/SL

解决Binance期货限价单无法同步设置止盈(TP)止损(SL)的问题

你的代码核心问题是参数名使用错误,Binance Futures Python SDK的futures_create_order方法并不支持直接传入STOP_MARKET或TAKE_PROFIT_MARKET作为参数,这导致止盈止损订单没有被触发创建。

修正后的代码

from binance.client import Client

# 替换为你的Binance API密钥和密钥
api_key = BINANCE_API_KEY
api_secret = BINANCE_SECRET_KEY

# 初始化客户端
client = Client(api_key, api_secret)

def place_order_with_tp_sl(symbol, side, quantity, price, sl_price, tp_price):
    try:
        order = client.futures_create_order(
            symbol=symbol,
            side=side,
            type='LIMIT',
            timeInForce='GTC',
            quantity=quantity,
            price=price,
            stopLossPrice=sl_price,  # 正确的止损触发价参数
            takeProfitPrice=tp_price  # 正确的止盈触发价参数
        )
        print("订单及附加止盈止损创建成功!")
        print(order)
    except Exception as e:
        print(f"创建订单失败: {e}")

# 自定义参数
symbol = 'KNCUSDT'
side = 'BUY'  # BUY为开多,SELL为开空
quantity = 11
price = 0.71  # 限价单价格
sl_price = 0.68  # 止损价格(多单需低于限价,空单需高于限价)
tp_price = 0.75  # 止盈价格(多单需高于限价,空单需低于限价)

place_order_with_tp_sl(symbol, side, quantity, price, sl_price, tp_price)

关键修改说明

  1. 参数名修正:将错误的STOP_MARKET=sl改为stopLossPrice=sl,TAKE_PROFIT_MARKET=tp改为takeProfitPrice=tp,这两个是Binance API官方指定的附加止盈止损的参数。
  2. 价格方向校验:确保止损/止盈价格与订单方向匹配:
    • 开多(BUY):止损价 < 限价单价格,止盈价 > 限价单价格
    • 开空(SELL):止损价 > 限价单价格,止盈价 < 限价单价格

额外注意事项

  • 确认你的API密钥已开启期货交易权限,否则会触发权限错误。
  • 价格参数需符合对应交易对的精度要求,可以通过client.futures_exchange_info()查询具体规则,避免因价格精度不足导致订单创建失败。
  • 如果需要使用限价型止盈止损(而非市价平仓),可以搭配stopLossLimitPrice、takeProfitLimitPrice以及stopLimitTimeInForce参数实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:15:38