量化喵是独立第三方信息站,与任何交易所都没有隶属关系。本页不含推广链接与邀请码。 完整披露 →

欧易 · API 下单

attachAlgoOrds 里的止盈止损要等母单成交才会生效

用欧易 API 下单时顺手带上止盈止损,是在下单接口 POST /api/v5/trade/order 的请求体里加一个 attachAlgoOrds 数组。止盈填 tpTriggerPx(触发价)和 tpOrdPx(委托价),止损填 slTriggerPx 和 slOrdPx,委托价写 -1,触发后按市价执行。要分几批止盈,就往数组里放几个对象,每个对象带自己的数量。

这样挂上的止盈止损跟着母单走。想让它不依附任何一笔新单单独存在,用策略委托接口 POST /api/v5/trade/order-algo 另下。

止盈止损的触发价和委托价要成对填

触发价和委托价是一对:填了 tpTriggerPx 就必须填 tpOrdPx,止损那边同理。只有限价止盈例外,它只填委托价,不需要触发价。触发价还有一种比例写法,适用范围见下表。

字段用途怎么填
attachAlgoClOrdId自定义的策略订单 ID字母和数字,1 到 32 位
tpTriggerPx / tpOrdPx止盈触发价 / 止盈委托价条件止盈两个都填;限价止盈只填 tpOrdPx;委托价 -1 为市价止盈
tpTriggerRatio止盈触发比例只用于交割、永续;和 tpTriggerPx 只能传一个
slTriggerPx / slOrdPx止损触发价 / 止损委托价填一个就必须填另一个;委托价 -1 为市价止损
slTriggerRatio止损触发比例只用于交割、永续;和 slTriggerPx 只能传一个
tpOrdKind止盈订单类型condition 条件单(默认)或 limit 限价单
tpTriggerPxType / slTriggerPxType触发价类型last、index、mark 三选一
sz这一笔止盈的数量只用于多笔止盈的止盈单,用时必填
amendPxOnTriggerType开仓价止损只用于分批止盈的止损单;0 不开启(默认),1 开启
callbackRatio / callbackSpread / activePx移动止盈止损只用于 ordType = move_order_stop
欧易 API v5 文档下单接口的请求参数表,列出 attachAlgoOrds、attachAlgoClOrdId、tpTriggerPx、tpTriggerRatio、tpOrdPx 几行的类型、是否必填和说明
attachAlgoOrds 以对象数组传入,其中 attachAlgoClOrdId 限 1 到 32 位字母或数字,tpTriggerRatio 在 2026 年 10 月的文档里填 0.3 表示 30%。

给永续开多单附上止盈和止损的请求体这样写

下面这段在 BTC-USDT-SWAP 上挂一张限价开多单,成交后带一组止盈、一组止损,两边都按标记价判断触发、按市价执行。价格和张数都是占位,换成你自己的。

{
  "instId": "BTC-USDT-SWAP",
  "tdMode": "cross",
  "side": "buy",
  "posSide": "long",
  "ordType": "limit",
  "px": "60000",
  "sz": "1",
  "clOrdId": "open001",
  "attachAlgoOrds": [
    {
      "attachAlgoClOrdId": "tpsl001",
      "tpTriggerPx": "66000",
      "tpOrdPx": "-1",
      "tpTriggerPxType": "mark",
      "slTriggerPx": "57000",
      "slOrdPx": "-1",
      "slTriggerPxType": "mark"
    }
  ]
}

不分批时,止盈和止损按理可以写在同一个对象里:51076 的单向限制只针对分批止盈。

外层几项要和账户设置对上。side 填 buy、posSide 填 long,在开平仓模式下就是买入开多;账户是买卖模式的,posSide 不传或传 net。全仓永续的 tdMode 填 cross。永续的 sz 是合约张数,填 1 就是 1 张。

发出去以后先看返回:code 为 0 只说明请求成功,这笔单下没下成,要看 data 里的 sCode,为 0 才算成功,不为 0 时读 sMsg 和 subCode。被拒的单在脚本里怎么接住、别让循环原样重发,见OKX API 自动交易风控:仓位上限、防重单与异常处理。这段请求先用模拟盘的 Key 发一遍,再换实盘 Key;模拟盘怎么开,见欧易模拟盘怎么用:先拿假钱把策略跑通(ccxt 实操)。

母单没成交就被撤时附带的止盈止损会一起丢掉

附带的止盈止损在母单成交后才生成并激活。母单在任何成交之前被撤,它们一并丢弃。

拿下面这张表对一下自己的情况:

你的情况attachAlgoOrdsorder-algo
开仓单成交后要自动带上止盈止损,开仓单撤了它也不用留适用不必
止盈止损要独立于开仓单存在不适用用它另下
币币市价买单,tgtCcy 为 base_ccy不支持用它另下
币币市价卖单,tgtCcy 为 quote_ccy不支持用它另下

tgtCcy 两个取值分别让 sz 按什么单位算,见欧易 API 市价单 sz 填币数还是 USDT。order-algo 的 ordType 等参数不在下单接口的说明里,要到文档里 order-algo 自己那一节去查。

分批止盈怎么填才不报 51076、51083 这类错?

分批止盈就是在 attachAlgoOrds 里放多个止盈对象,每个对象带 sz,止损最多再加一个对象。限价止盈和触发止盈都能分批,填错时接口直接返回对应的错误码:

要求不满足时的错误码
每个对象只能单向:止盈一组或止损一组,不能两组都填51076
各笔止盈的触发价类型(tpTriggerPxType)一致51080
各笔止盈的触发价不能相等51081
每笔止盈的数量不能为空51089
各笔止盈数量之和等于母单的委托数量51083
止盈委托不超过 10 笔51079
止损委托不超过 1 笔51084
各笔止盈的类型一致51091
各笔止盈的委托价不能相等51092
限价止盈的委托价不能填 -151093
币币、杠杆、期权不支持限价止盈51094
币币、杠杆不支持开仓价止损51077
开了开仓价止损(amendPxOnTriggerType = 1),止盈至少 2 笔51085

开仓价止损的意思是:第一笔止盈触发时,止损触发价移到开仓均价。开启时止损触发价不能为空。

把上一节那张开多单改成 2 张、分两批止盈,再加一个开仓价止损,attachAlgoOrds 这样写:

"sz": "2",
"attachAlgoOrds": [
  { "attachAlgoClOrdId": "tp001", "tpTriggerPx": "64000", "tpOrdPx": "64000", "sz": "1" },
  { "attachAlgoClOrdId": "tp002", "tpTriggerPx": "68000", "tpOrdPx": "68000", "sz": "1" },
  { "attachAlgoClOrdId": "sl001", "slTriggerPx": "57000", "slOrdPx": "-1", "amendPxOnTriggerType": "1" }
]

逐条对一下:两笔止盈数量 1 + 1 = 2,等于母单的 2 张(51083);止盈 2 笔,开仓价止损的下限刚好够(51085);两笔触发价 64000 和 68000 不同(51081);触发价类型都用默认值,类型一致(51080);止损对象只有一个,只填止损一组(51084、51076)。两笔止盈的委托价都填 -1 算不算「相等」,文档里找不到说明,示例里填了两个不同的价格,不去碰 51092。

风险提示:止盈止损触发以后按什么价成交,下单那一刻定不下来;止盈止损字段写错的脚本,会让同一个错误随每次自动下单重复出现。本文是接口参数说明,不构成投资建议;合约与杠杆交易可能亏掉全部本金,请只用你能承受全部损失的闲钱,并遵守所在地的法律法规。

止盈止损按哪种价触发、现货能否按比例、怎么单独编号

止盈止损默认按最新价还是标记价触发?

不传 tpTriggerPxType、slTriggerPxType 时按最新价(last)触发。这两个字段还可以选 index(指数价格)和 mark(标记价格)。做分批止盈时,同一笔订单上各笔止盈的触发价类型必须一致,否则报 51080。

现货单能按百分比设止盈止损吗?

tpTriggerRatio、slTriggerRatio 只适用于交割和永续合约,现货单要写 tpTriggerPx、slTriggerPx 这样的具体价格。比例用小数表示,0.3 代表 30%,和对应的触发价只能传一个。主单是买单时,tpTriggerRatio 要大于 0,slTriggerRatio 在 0 到 1 之间;主单是卖单时,tpTriggerRatio 在 -1 到 0 之间,slTriggerRatio 大于 0。

下单时传的 clOrdId 能查到附带的止盈止损吗?

clOrdId 不会传到附带的止盈止损策略订单上。要给它们单独编号,填 attachAlgoClOrdId:订单完全成交、下附带策略委托单时,这个值会传给 algoClOrdId。tpOrdKind 为 limit 且只有一笔单边止盈时,attachAlgoClOrdId 还能当作 clOrdId 在获取订单信息接口里查。