如何使用Python通过CCXT在FTX创建带止盈止损的市价单
带止盈止损的市价单实现方案(适配TradingView警报触发场景)
核心实现逻辑
- 你需要的功能在主流交易所API中通常对应括号订单(Bracket Order),开仓环节走实时市价成交,符合你不需要限价单的要求,开仓成功后交易所会自动绑定两个反向OCO平仓单(一单成交另一单自动作废),分别对应止盈、止损触发条件
- 止盈止损支持设置为市价平仓模式,触发后直接以当前最优价格成交,不需要你额外操作
可直接复用的代码示例(以币安API的Python实现为例,其他交易所仅需调整对应参数名即可)
前提:已安装对应交易所SDK,完成API密钥的初始化配置
from binance.client import Client from binance.enums import * # 初始化API客户端,填入你自己的API密钥 client = Client(api_key='你的API_KEY', api_secret='你的API_SECRET') def place_market_order_with_tp_sl(symbol, side, quantity, tp_price, sl_price): """ 下带止盈止损的市价开仓单 :param symbol: 交易对,比如BTCUSDT :param side: 开仓方向,SIDE_BUY=做多,SIDE_SELL=做空 :param quantity: 开仓数量 :param tp_price: 止盈触发价格 :param sl_price: 止损触发价格 """ # 平仓方向和开仓方向相反 close_side = SIDE_SELL if side == SIDE_BUY else SIDE_BUY # 调用下单接口,类型为带止盈止损的市价单 order = client.futures_create_order( symbol=symbol, side=side, type=ORDER_TYPE_MARKET, quantity=quantity, # 止盈参数 takeProfit='true', tpTriggerPrice=tp_price, tpType='MARKET', # 市价止盈,不需要指定挂单价 # 止损参数 stopLoss='true', slTriggerPrice=sl_price, slType='MARKET', # 市价止损,不需要指定挂单价 # 平仓单模式为OCO,避免重复平仓 closePosition='true', newOrderRespType='RESULT' ) return order # 调用示例:做多BTCUSDT,数量0.001,止盈价70000,止损价60000 # place_market_order_with_tp_sl('BTCUSDT', SIDE_BUY, 0.001, 70000, 60000)
对接TradingView警报的注意事项
- 你的API端点收到TradingView的POST请求后,优先做签名校验,避免恶意请求触发异常下单
- 解析TradingView警报消息中携带的交易对、开仓方向、开仓数量、止盈价、止损价参数,直接传入上述函数即可完成下单
- 若你使用的交易所不支持直接提交括号订单,可以拆分两步执行:第一步下市价开仓单,拿到开仓成功返回的持仓信息后,立刻调用接口提交两个OCO市价平仓单,全流程耗时通常在100ms以内,不会出现漏挂止盈止损的问题
- 建议开启市价单滑点容忍配置,避免极端行情下市价单无法成交的问题
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

