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

FTX CCXT:仓位平仓后如何单独取消对应止损/止盈订单?

解决FTX TP/SL订单与仓位解绑的管理方案

因为FTX的TP/SL订单不与仓位绑定,且仓位采用聚合式统计,官方未提供直接关联机制,核心解决思路是自行在本地维护订单与仓位的映射关系,具体实现步骤如下:

1. 开仓时建立订单-仓位关联

每次开仓并挂好TP、SL订单后,在本地存储(内存字典、轻量数据库均可)中记录关联信息,至少包含:

  • 仓位核心信息:交易对、方向(多/空)、开仓量、开仓订单ID
  • 对应TP订单的ID
  • 对应SL订单的ID

示例伪代码:

# 开仓并挂好TP/SL后,构建映射条目
position_link = {
    "symbol": "ETH/USD",
    "side": "short",
    "size": 0.5,
    "open_order_id": "open_789",
    "tp_order_id": "tp_123",
    "sl_order_id": "sl_456"
}
# 存入本地活跃仓位列表
active_position_links.append(position_link)

2. 监听订单触发事件并取消对应挂单

通过FTX的WebSocket接口监听订单状态更新(重点关注filled状态的订单):

  • 当捕获到TP或SL订单被完全/部分平仓的事件时,提取该订单的ID、交易对、方向等信息
  • 遍历本地维护的active_position_links,匹配到关联的仓位条目
  • 取出该条目中未触发的另一订单ID(比如触发了TP,就取SL订单ID)
  • 调用FTX的cancel_order接口,传入目标订单ID完成取消

3. 平仓后的映射清理

当TP/SL触发导致对应仓位完全平仓时,从本地active_position_links中移除该条目,避免后续误操作;如果是部分平仓,可根据剩余仓位量调整映射中的仓位大小,或重新计算TP/SL价格并更新订单(按需处理)。

4. 异常情况处理

  • WebSocket断线重连后,需调用FTX的API拉取当前所有活跃订单和仓位,重新构建本地映射关系,避免关联信息丢失
  • 取消订单前,先调用get_order接口确认目标订单仍处于open状态,防止重复取消导致报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 16:20:48