一、价格优先与时间优先:撮合引擎的“宪法”

做量化交易这些年,我见过不少新手一上来就研究各种复杂策略,却忽略了最底层的东西——订单簿是怎么撮合的?说白了,你连交易所的“游戏规则”都没搞懂,怎么跟那些高频玩家抢饭吃?

今天咱们就聊聊撮合引擎最核心的两条规则:价格优先时间优先。这两条规则,我称之为订单簿的“宪法”。所有交易行为,都得在这套规则下运行。

1.1 价格优先:谁出价好,谁先成交

先问一个问题:如果你是买方,你希望先跟谁成交?

当然是出价最低的卖家。反过来,如果你是卖方,你希望先卖给谁?出价最高的买家。这就是价格优先的本质——最优价格优先成交

具体来说:

  • 买单:价格高的优先于价格低的。比如有人挂100元买,有人挂99元买,那100元的买单会先被撮合。
  • 卖单:价格低的优先于价格高的。比如有人挂100元卖,有人挂101元卖,那100元的卖单会先被撮合。

核心要点:价格优先是绝对的。只要你的价格更优,你就排在队列最前面。哪怕你只比别人多1分钱,你也比他优先。

我在项目中遇到过一件事:有个同事写策略时,为了省手续费,总是挂限价单,而且价格只比对手方好一点点。结果呢?他的单子经常排了半天也成交不了。为什么?因为市场上总有更激进的人,愿意出更好的价格。你想想看,在流动性好的市场里,价格竞争有多激烈?

1.2 时间优先:同价时,先到先得

价格优先解决了“谁更好”的问题。但如果有两个人出价一样呢?这时候就看时间了——谁先挂单,谁先成交

这就是时间优先原则。它保证了公平性:

  • 同一价格水平下,订单按到达时间排队
  • 先到的订单排在前面,后到的排在后面
  • 撮合时,从队列头部开始匹配

实战技巧:我个人习惯在策略里加入“提前挂单”的逻辑。比如我知道某个价格区间会有大量成交,我会提前几毫秒把单子挂上去。别小看这几毫秒,在流动性好的市场里,可能就决定了你能不能成交。

嗯,这里要注意:时间优先只适用于同一价格水平。如果价格不同,还是价格优先说了算。所以这两条规则是组合使用的:先比价格,价格相同再比时间。

1.3 撮合流程:一张图看懂

说了这么多,咱们用一张流程图把整个过程串起来。我画了个SVG图,你一看就明白:

订单簿撮合引擎核心流程 新订单到达 判断:买单还是卖单? 买单:找最低卖价 卖单:找最高买价 价格比较:是否可成交? 价格比较:是否可成交? 成交 / 进入订单簿排队 成交 / 进入订单簿排队

这张图展示了撮合引擎的基本流程:新订单到达后,先判断是买单还是卖单,然后去对手方队列里找最优价格。如果能成交,就按价格优先、时间优先的原则匹配;如果不能成交,就进入订单簿排队。

1.4 实战中的“坑”

理论说完了,咱们聊聊实战中容易踩的坑。我曾经吃过一次亏,分享出来给你提个醒:

避坑指南:我曾经在写一个高频策略时,忽略了“冰山订单”的存在。什么是冰山订单?就是大单只显示一部分,剩下的藏在下面。结果我的策略看到卖一价格很低,以为能成交,就疯狂买入。结果呢?那个冰山订单的隐藏部分一露出来,直接把价格砸下去了。我的策略亏了不少。

所以,理解价格优先和时间优先只是第一步。你还要知道:

  • 订单类型:限价单、市价单、冰山订单……不同订单类型会影响撮合逻辑
  • 订单簿深度:只看最优价格是不够的,还要看整个订单簿的分布
  • 市场冲击:大单成交时,价格会滑点,不能只看当前价格

1.5 总结一下

价格优先和时间优先,听起来简单,但它是整个交易系统的基石。我建议你:

  1. 写代码前先画流程图:把撮合逻辑理清楚再动手
  2. 多测试边界情况:比如价格相同、数量不同时怎么处理
  3. 关注实际数据:从交易所的订单簿数据里,你能看到真实的撮合过程

好了,这一章就到这里。记住,理解规则才能利用规则。下一章咱们聊聊订单簿的深度分析,看看怎么从订单簿数据里发现交易机会。


公众号:蓝海资料掘金营,微信deep3321