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)
关键修改说明
- 参数名修正:将错误的
STOP_MARKET=sl改为stopLossPrice=sl,TAKE_PROFIT_MARKET=tp改为takeProfitPrice=tp,这两个是Binance API官方指定的附加止盈止损的参数。 - 价格方向校验:确保止损/止盈价格与订单方向匹配:
- 开多(BUY):止损价 < 限价单价格,止盈价 > 限价单价格
- 开空(SELL):止损价 > 限价单价格,止盈价 < 限价单价格
额外注意事项
- 确认你的API密钥已开启期货交易权限,否则会触发权限错误。
- 价格参数需符合对应交易对的精度要求,可以通过
client.futures_exchange_info()查询具体规则,避免因价格精度不足导致订单创建失败。 - 如果需要使用限价型止盈止损(而非市价平仓),可以搭配
stopLossLimitPrice、takeProfitLimitPrice以及stopLimitTimeInForce参数实现。
内容的提问来源于stack exchange,提问作者Tejas Singh
相关产品推荐
相关产品推荐

