止盈止损互相取消:一组二单在链上的三种实现与断点 图 1
止盈止损互相取消:一组二单在链上的三种实现与断点 · 图 1

再把通知链路也算进这套结构里。一组二单依赖「价格被看到」这件事:触发判断读的是预言机、指数价还是某个第三方喂价,刷新节奏是每分钟还是触发式,决定了你的边界在深夜或周末是否还在执法。有些服务把状态推送到邮箱或即时通讯,但推送只是提醒,撤单与平仓依旧是链上动作——收到通知不等于风险已被处理,处理动作要回到合约层面确认回执。还有一个容易被忽略的对抗面:你的止盈止损挂在公开的触发合约里,等待被价格扫描器翻出来执行,密集的止损位本身就是市场可读的信息,清算密集区与止损密集区叠加的价格带,往往是插针最爱去的地方。把这些链条读完你就会承认:一组二单在链上不是两个数字,而是一整条从喂价、触发、执行到善后的流水线,任何一环用别人的合约,那一环的信任就要单独定价。

在中心化交易所的界面上,止盈单和止损单可以成对挂出、成交一笔自动撤掉另一笔,这套互斥逻辑叫一组二单。链上没有常驻的撮合引擎替你保管这两笔单,也没有人盯着你的仓位帮你做「成交即撤销」的动作,于是这个看似天经地义的功能,在链上变成一个需要重新发明的结构:谁来同时持有这两笔条件单,谁在成交发生时负责关掉另一扇门,关晚了会发生什么。 先想清楚失败剧本。两条腿的订单如果各自独立存在——比如一笔触发式卖单挂在自动执行服务里,另一笔也挂在同一个或不同的服务里——那么最坏情况是行情先扫过止损线、又折回止盈线,两笔单先后被触发,你的仓位先被平掉、又按规则被要求反向开仓,凭空多出一笔你并不想要的敞口;或者反过来,成交了一笔、撤销另一笔的那次调用失败,留下一张「尸体订单」,等下一个价格波动时突然咬人。互斥这件事,在链下是引擎内一个原子操作,在链上是一次跨交易的协调,协调就有窗口,窗口就是风险。 链上实现大致三种形态,风险排序清晰。最弱的是人肉形态:钱包通知加手动操作,价格提醒推给你、撤单靠你自己点,拥堵时段你的撤销交易排在队伍里,形同没有保护。中间形态是机器人代持:你把仓位或授权交给一个自动执行服务,两条规则写在它的合约里,成交回调里顺带撤另一笔;互斥逻辑确实原子化了,但代价是你对外的授权面扩大——它现在既有触发平仓的权力,也有改单撤单的权力,它的密钥与运维成了你风险画像的一部分。最强的是结构内置:协议本身提供「一组二单」对象,两腿写在同一份链上订单结构里,任何一腿被执行时合约在同一笔交易内作废另一腿,不存在跨交易的协调窗口,这类实现通常也要求你把两腿的保证金一次性锁定。 无论哪种形态,有四个细节必须逐条核对。第一,触发价与成交价不是一回事:止盈止损的触发多依赖预言机或外部喂价,实际平仓走的是市场深度,急跌里触发在甲价、成交在乙价是常态,评估时按成交价算账。第二,部分成交怎么办:结构只平掉一半仓位时,另一腿是全额作废、按比例缩减,还是继续挂着,条款答案各不相同。第三,有效期:一组二单不是永久的,链上订单普遍带过期时间,忘了续期的止盈单等于不存在。第四,费用与占用:有些实现两腿都要冻结保证金或手续费预算,挂而不成交也在占资金效率,这与其他 DeFi 仓位是同一笔账。 最后校准预期:一组二单解决的是「你不在场时的纪律」问题,不解决「行情是否尊重你的边界」问题。它把止盈止损之间那段区间变成机器代守,但也把「被针扎一下就出局」的机制风险原样继承下来——触发规则越密、喂价越灵敏,误伤与滑点处置的摩擦越多。下单前把这条链想完整:谁触发、谁执行、谁善后,三个环节各对应一个合约地址或一家服务商,三者都能用区块浏览器查到行为记录,这套结构才算被你真正理解。本文只讨论机制与检查清单,不构成投资建议。