一、订单簿是什么
订单簿是按价格排序的两个队列:
- 1.买盘(Bid):按价格从高到低排序——出价最高的优先成交
- 2.卖盘(Ask):按价格从低到高排序——要价最低的优先成交
买盘最高价(best bid)和卖盘最低价(best ask)之间的差,叫"价差"(spread)。

二、撮合的基本规则
新订单进来时,撮合引擎做一件事:看能不能立即成交。
- 1.买单价 ≥ 卖盘最低价 → 立即成交,按卖盘最低价
- 2.卖单价 ≤ 买盘最高价 → 立即成交,按买盘最高价
- 3.都不行 → 挂进订单簿,等对手单
关键规则:新订单永远以"对手方的价格"成交,不是自己挂的价格。这保证了价格的连续性。

三、价格-时间优先
当多个订单同价时,谁先成交?规则是:
- 1.价格优先:更优价格优先(买单更高、卖单更低)
- 2.时间优先:同价时,先到先得
这就是为什么高频交易者要把服务器放在交易所机房旁边——延迟一毫秒,可能就排到后面去了。

四、不同订单类型
基础的有两种:
- 1.市价单(Market):不指定价格,立即按对手盘最优价成交
- 2.限价单(Limit):指定价格,能成交就成,不能就挂单等
衍生出的有 IOC(立即成交未成部分撤销)、FOK(全成交或全撤)、Post-Only(只挂单不主动吃单)等。

五、撮合性能的真实瓶颈
撮合本身计算量不大,瓶颈在于:
- 1.订单簿的数据结构:高频增删查改,红黑树 / 跳表是主流
- 2.持久化:每一笔订单都要落盘,做崩溃恢复
- 3.下游通知:成交通知要广播给行情、清算、风控等下游系统
- 4.风控前置:所有订单进撮合前要过风控检查
真正决定撮合系统性能的,不是算法的"快",是整个订单生命周期的工程能力。



