Dexalot 支持带有四种到期时间(Time-in-Force)修饰符的限价单和市价单(GTC、IOC、FOK、PO),让交易者能够精确控制每一笔订单如何与订单簿交互。
作者: Gokce Calisan|May 11, 2026|1 分钟阅读
April 09, 2026 | ,
March 28, 2026 | ,
在 AMM 上,你的交易界面是一个“交换(swap)”按钮。在 CLOB 上,则是一个订单票据(order ticket)。订单票据有各种选项,而大多数从 DeFi 过来的交易者并不知道这些选项的作用。他们在所有地方都点击相当于“市价买入(market buy)”的操作,并且假设限价单(limit-order)字段是一种他们不需要的进阶功能。
这种假设会让你花钱。订单类型(order types)才是你在交易所上真正用来控制成交执行(execution)的方式。本帖将带你逐一了解 Dexalot 支持的每一种订单类型,它们各自的用途,以及它们在实际中如何组合使用。
Dexalot 支持两种基础订单类型:限价单(limit orders) 和 市价单(market orders)。其余所有内容都只是建立在这两种类型之上的修饰(modifier)。
限价单(limit order)指定一个价格。你为买入设定最高价(maximum),为卖出设定最低价(minimum),只有当对手方愿意以该价格或更优价格成交时,订单才会成交。如果没有对手方,订单就会在挂单簿(book)中等待,直到出现对手方或你取消它。你的成交价格(fill price)就是你选择的价格。不会有意外。
市价单(market order)指定的是数量(size),而不是价格。它会立即与挂单簿另一侧的最佳可用订单执行。你不选择价格;你接受在执行当下,挂单簿提供的任何价格。只要满足下文所述的安全约束(safety constraints),这就能保证成交(fill),代价是接受当下挂单簿最优(top of book)呈现出来的样子。
从 AMM 转变的思维差异不大,但很重要。在 AMM 上,每一笔交易在功能上都等同于市价单。你点击交换(swap),曲线(curve)为你完成成交,你支付这笔交易造成的任何价格影响(price impact)。在 CLOB 上,你有真正的选择。市价单适用于希望成交执行确定性的交易者。限价单适用于希望成交价格确定性的交易者。大多数有经验的交易者默认使用限价单,并且只有在速度比成交时的价格更重要时,才会使用市价单。
限价单还需要知道它应该存在多久,以及如果它无法在一开始就全部成交时应该如何表现。Time-in-Force 修饰就是用来回答这个问题的。Dexalot 支持其中四种。
GTC(Good-Till-Cancel,直到取消)是默认选项。订单会留在挂单簿中,直到它被完全成交,或你手动取消它。比如你在现货价格为 $3,200 的时候,以 $3,100 对 ETH 挂出买单,GTC 会让这笔买单在过夜、跨越周末、穿越波动(volatility)期间保持有效,直到某个时刻它被成交,或者你改变主意。
IOC(Immediate-Or-Cancel,立即成交并取消)会翻转这种行为。订单会在你指定的价格上立刻尽可能成交,然后取消其他所有未成交部分。以 $3,200 下达一笔 50 ETH 的 IOC 买单,但在该价格下只找到了 30 ETH 的流动性,那么会成交这 30 ETH,并丢弃剩下的 20 ETH。IOC 适用于你希望在你的价格上快速成交,但又不希望之后留下一个挂单等待成交的场景。
FOK(Fill-Or-Kill,全部成交或取消)更严格。整个订单必须立刻以你指定的价格全部成交,否则一个都不成交。不允许部分成交。如果一笔 50 ETH 的 FOK 只能在该价格下获得 30 ETH 的数量,那么它根本不会执行。这是为需要“原子性(atomicity)”的交易者准备的:要么完整仓位打印(prints),要么这笔交易根本不会发生。
PO(仅挂单,Post-Only)是做市商的修饰符。如果订单到达时会与账本(order book)上的现有挂单成交,则该订单会被拒绝。只有当它能够在账本中等待时,才会进入账本。为什么这很重要?因为做市商(maker)和吃单方(taker)支付不同的手续费。若某位做市商不小心穿越了价差(crossed the spread),就会改为支付更高的吃单方手续费,而不是获得交易中做市商的一侧。PO确保你绝不会意外吃掉流动性。
PO还有第二种用途。当Dexalot上有新交易对上线时,账本一开始是空的。仅PO模式允许流动性提供者在开启撮合之前先往账本里填充,确保在第一位吃单方到来之前就已经存在真实的深度。
maker和taker并不是你可以选择的订单类型。它们描述的是:订单到达后与账本互动的方式。
maker订单会提供流动性。它挂在账本上并等待别人来进来“点掉”它。经典案例是那种不会立即成交的GTC限价单(limit order)。它会停留在账本中。当另一位交易者的订单到来并与之成交时,你就收取了这笔交易的maker一侧。
taker订单会消耗流动性。它会击中已有挂单,并将它们从账本中移除。市价单(market orders)永远都是taker。也同样是taker的还有会穿越价差的限价单:如果你在最佳卖一价格为$3,200时下一个限价买单$3,205,你会在$3,200的价格从账本中成交。
同一个订单可能两者兼具。比如在$3,200下一个100 ETH的限价买单,可能会立刻与该价格上已挂着的30 ETH报价成交(其中30 ETH这部分是taker成交),剩余的70 ETH随后再挂到账本中等待(这70 ETH部分就成为maker订单)。手续费结构会反映这种拆分:已成交部分收取taker费,之后从账本里继续成交的部分收取maker费。
对于以规模(size)为导向的交易者来说,这一点很关键。在CLOB里,maker手续费通常只是taker手续费的一小部分,而PO + GTC正是专业做市商确保自己始终站在正确结构一侧的方式。
在AMM上使用市价单,你需要设置滑点容忍度(slippage tolerance)。我们在slippage post里解释过为什么这是一种“虚假的安全”:这个设置并不会降低滑点,它只是定义你愿意接受的最差价格,而更高的容忍度就等同于对“夹击攻击(sandwich-attack)”的邀请。
Dexalot的市价单在交易所本身内置了保护机制。如果某笔市价单在走账本(walks the book)过程中,其任何部分成交的价格相比第一次成交更差超过5%,那么系统会自动取消它剩余未成交的部分。你不需要设置它。你也不需要去思考它。撮合引擎会强制执行。
这在两种场景中很重要。第一种是较大的订单会耗尽最顶层(top-of-book)的深度,从而开始走向更薄的流动性。第二种是订单在快速波动的市场中下达,此时在提交与执行之间账本可能会发生变化。在任一情况下,自动取消都会限制最差情况下的成交。你可能会获得部分成交而不是全部成交,但你不会得到会摧毁你的入场(entry)的成交。
与AMM的滑点容忍度相比,这种差异非常有意义。没有任何设置可以被错误配置,也没有MEV机器人能从mempool里读取到的数值;而且这种保护针对的是来自你自身订单造成的价格冲击(price impact),而不是容忍度设置所引发的对手方价格移动。
Dexalot不提供的订单类型清单,和它提供的清单同样具有信息量。
这是一个设计选择,而不是遗漏。Dexalot 支持的订单类型 — 限价单、市价单,以及四种 TIF 修饰符 — 是任何严肃的订单簿都构建在其上的基础原语。止损单和括号单属于更高级的构造,通常由交易者基于自身逻辑在这些原语之上实现,或由券商层来实现。
通过让撮合引擎聚焦于原语,Dexalot 能保持执行的确定性,并让潜在漏洞的表面范围变小。想要实现止损行为的交易者可以使用监控型限价单来实现,或通过 API 来构建。对大多数用户来说,这些高级类型的缺失甚至不会被注意到:GTC、IOC、FOK 和 PO 覆盖了零售与专业交易者在日常中真正运行的策略。
一些常见的搭配:
这些组合是交易者意图与撮合引擎之间真正的接口。选择合适的组合,是在“按你想要的方式成交”与“按市场想要的方式成交”之间的区别。
在 AMM 上,曲线决定你的交易方式。在 CLOB 上,则由你决定。Dexalot 的订单类型是这一决策的工具箱:限价或市价,并通过 GTC、IOC、FOK 或 PO 进行修饰;根据它们在订单簿中的落点,分别被归类为挂单方(maker)或吃单方(taker)。
每一种做什么只学一次,同一套术语在加密世界乃至其之外的每个订单簿交易场景中都能通用。