规则
一张到达的买单先和最低的卖单撮合。在同一个价位内部,挂着的订单按它们的时间戳顺序成交。
Databento 对芝商所 FIFO 算法的描述说得很直白:主动订单在同一价位上按时间优先去撮合挂单,直到成交完毕,而任何剩余数量留在订单簿上。这里要强调的是「同一价位内部」——跨价位时价格优先永远压过时间。
一个算例
| 订单 | 数量 | 到达次序 | 一张 60 手卖单之后 | 再来一张 15 手卖单之后 |
|---|---|---|---|---|
| A | 50 | 第一 | 成交 50 | 已完成 |
| B | 20 | 第二 | 成交 10,剩 10 | 成交 10 |
| 你 | 5 | 第三 | 没有成交 | 成交 5 |
从这条规则能推出什么
- 在一个价格上早到是有价值的。在一个一跳价差的合约上,被动执行的主要困难是队列,而不是价格。
- 你前面的撤单会在没有任何成交打印出来的情况下缩短你的等待。
- 一张以会损失优先权的方式被改过的订单,会回到队列末尾。
- 规模买不来优先权。一张在你之后到达的 500 手订单,在你之后成交。
哪些产品用它
按 Databento 对芝商所撮合算法的汇总,ES、NQ、ZN、ZF、ZB 和 CL 用 FIFO。其他产品用不同的规则:SOFR 期货的单腿用一种带按比例成分的分配算法,部分国债和谷物产品用可配置的混合方式,而好几个期权产品用门槛式按比例。
对某张具体合约来说,交易所的产品参考资料才是权威。算法是按产品设定的,而且可以变——所以这不是一个可以一次记住、永久适用的清单。加密交易所则公布它们自己的撮合规则。
在 Senzoukria 里
DOM 阶梯显示每个价格上显示出来的量:包括你订单前面和后面的整个队列,但不标出你自己在里面的位置。
在 Rithmic 上,逐笔委托数据源被用于 DOM 的冰山标记和流动性追踪器,后者把一个价位上「被撤走的量」和「在那里成交的量」分开。软件不发布对你队列位置的估计;可用的信息是你那个价格上显示的量,以及那个价格上打出来的成交。
相关内容
同一栏目
来源
- Databento: CME matching algorithms explained (2026-09-25)
其他语言版本
常见问题
- 所有芝商所期货都用价格时间优先吗?
- 不是。许多成交最活跃的合约用它,包括 ES、NQ,ZF、ZN、ZB 国债期货和 CL 原油;但 SOFR 期货以及一批期权和农产品用分配、按比例或者混合算法。请为你交易的那张合约查交易所的产品参考资料。
- 我能看到自己在队列里的位置吗?
- 在一个按价位汇总的 DOM 上不能直接看到,它只显示每个价格上的总量。逐笔委托数据源会把每一张挂单分开公布,这让队列变得可观察;但平台通常是从「它知道自己发出去了什么」来显示你自己那张订单,而不是从数据源里认出它。