← 返回模块
F1.1.1.2beta 可读 · 未来免费内容校验中内容版本 2026-05-25

订单类型与订单簿

1.1.1 · 市场与微观结构 · 金融与量化投资

09:31:12,上海。一家百亿私募基金的执行交易员盯着 300ETF 的五档行情:买一 3.842 / 卖一 3.843,盘口报价价差正好 1 个最小变动单位(¥0.01)。她接到投资经理的指令——今天午前买入 300ETF 1,200 万元,相对成本最低。她有三个选项:直接挂市价单一次性扫掉对手方深度;在买一价格挂限价单等市场来撮合;或者把单子切成 50 份分钟级 IOC 限价单。每一种选择都是一个权衡:价格确定性、成交确定性、信息泄露、队列位置——一个都不能省。

上一节我们说市场是「撮合 + 结算 + 行情」的流程。这一节把镜头推到撮合引擎正前方:限价订单簿(limit order book)。订单类型是你和撮合引擎对话的语法,订单簿是它当前的状态,撮合规则是状态转换函数。把这三件事拆开看,下一节的买卖价差才有机械层面的根。

1. 订单簿是什么

把所有「我愿意以价格 pp 买入数量 qq」「我愿意以价格 pp 卖出数量 qq」的承诺按价格分桶、桶内按到达时间排队,得到的双边队列就是订单簿(order book)。具体到 SSE 的 300ETF:

卖五  3.847  ×  120,000
卖四  3.846  ×   85,000
卖三  3.845  ×   60,000
卖二  3.844  ×   45,000
卖一  3.843  ×   30,000   ← 最优卖价(best ask)
———————————————————————————
买一  3.842  ×   28,000   ← 最优买价(best bid)
买二  3.841  ×   50,000
买三  3.840  ×   70,000
买四  3.839  ×   95,000
买五  3.838  ×  110,000

读这张深度快照只需要四个数字:

  • ​最优买价(best bid)​​:3.842
  • ​最优卖价(best ask)​​:3.843
  • ​中间价(mid-price)​​:(bid+ask)/2=3.8425(\text{bid} + \text{ask}) / 2 = 3.8425
  • ​买卖价差(bid-ask spread)​​:askbid=¥0.01\text{ask} - \text{bid} = ¥0.01(正好一个最小变动单位 tick size,刚性触底)

这是订单簿的「快照」视图。撮合引擎不存图片,它存的是上面这张表的实时版本,每秒钟可能被几万笔事件改写:新挂单进队、旧挂单成交离开、撤单从中间拔走。

2. 七种基本订单类型

订单类型的本质是一句指令:你告诉撮合引擎「我要做 X,但你不允许 Y」。每一种类型都在「价格确定性」和「成交确定性」之间画线。下表按这个轴排:

类型价格保证成交保证主要风险
市价单(market)强(只要簿中有量)跨过未知深度,跌穿多档
限价单(limit)强(不会差于 pp弱(可能不成交)队列里排到尾巴,被反向行情冲走
停损单(stop)触发后等同市价触发后强触发瞬间的滑点
停损限价(stop-limit)触发后等同限价触发后弱触发但限价不到,挂着不成交
冰山单(iceberg / hidden)同限价同限价显示量小,可能错过快速行情
IOC(immediate-or-cancel)同限价立即成交可成交部分,剩余撤单信息泄露:未成交部分暴露意图
FOK(fill-or-kill)同限价全成交或全撤单任何缺口都触发整单撤销

A 股的市价单实际上是限价单的封装。SSE / SZSE 提供五种市价子类型——本方最优价(按本方对手方)、对手方最优价、最优五档即时成交剩余撤销、最优五档即时成交剩余转限价、全额成交或撤销——每一种都是一句更精确的「我要市价,但你不许跨过这个保护带」。境内现货 A 股不原生支持停损单,券商在客户端模拟:客户端持续轮询行情,触发条件后再向交易所发限价单或市价单。

美股 NYSE / NASDAQ 提供原生市价、限价、停损、停损限价、按盯(peg,挂在 NBBO 上 / 中 / 下)、收盘市价(market-on-close)、收盘限价(limit-on-close)、储备单(reserve / iceberg,显示量 + 隐藏量)。Reg NMS Rule 612 规定股价 ≥ 1.00时最小变动单位为1.00 时最小变动单位为 0.01,禁止次美分价格挂单。

3. 价格-时间优先(price-time priority)

撮合引擎面对的核心问题:当一笔买入市价单进来要吃 25,000 股,订单簿上的卖一 30,000 股是 4 笔挂单组成的队列,谁先成交?

A 股、NYSE、NASDAQ 现货股票几乎都用同一条规则:​​价格优先,时间优先​​(price-time priority)。

  • 价格优先:买方按价格从高到低排,卖方按价格从低到高排——一个 3.844 的限价买单一定排在 3.842 之前。
  • 时间优先:同价位上,先到的先成交,后到的排在它后面——这就是队列位置(queue position)。

队列位置决定成交概率。同样挂在卖一 3.843 的 30,000 股深度里,如果你的 5,000 股是当天第三个到的,前面已经有 12,000 股;那么必须先让市场吃掉这 12,000 股,你的 5,000 才能开始成交。如果中间行情上行,3.843 这一档撤单或被吃完,你的整单可能根本不成交。

注意一个反例:部分期货市场(包括 CME 部分合约、CFFEX 主力合约的一些时段)使用​​按比例分配(pro-rata)​​——同价位上按挂单量比例分配进单。这意味着挤队列不再有意义,但深度伪装变成了新的策略空间。本课只在 A 股 / 美股现货语境下讨论,记住「价格-时间优先是默认,pro-rata 是少数例外」即可。

A 股的集合竞价是另一种特例。09:15–09:25 和 14:57–15:00 期间所有订单进入同一个池子,9:25 / 15:00 一次性以「最大成交量价格」撮合——这一秒里所有买卖单​​同时​​比较价格,不存在时间优先。集合竞价产生的开盘价 / 收盘价由全市场单次撮合确定,是订单簿日内连续撮合两端的特殊节点。

4. 一笔市价买单的逐档成交

回到开头那位执行交易员。她最终决定先发一笔 25,000 股的市价买单试盘。市价单进入撮合引擎的瞬间,引擎按下面的顺序执行:

订单簿初始状态(卖方):

卖一  3.843  ×  30,000   (队列:8000 + 12000 + 5000 + 5000)
卖二  3.844  ×  45,000
卖三  3.845  ×  60,000

她的市价买单 25,000 股,没有价格上限(按 A 股语义是「对手方最优价 + 保护带」,本例假设保护带足够宽,等同于扫盘):

  1. 撮合引擎检查卖一 3.843:可用 30,000 股 > 待买 25,000。
  2. 按时间优先消化卖一队列:吃掉 8,000(第 1 笔)+ 12,000(第 2 笔)+ 5,000(第 3 笔)= 25,000 股。
  3. 这笔市价单全部以 3.843 成交。整单的成交均价 = ¥3.843,对应通知 = 4 笔成交回报(每一笔来自卖一队列的一段挂单)。
  4. 行情磁带(tape)输出 25,000 股 × ¥3.843 的成交记录。

成交后的订单簿(卖方):

卖一  3.843  ×   5,000   (只剩第 4 笔的 5000 股)
卖二  3.844  ×  45,000
卖三  3.845  ×  60,000

买方一侧无变化。最优买卖价 = 3.842 / 3.843,盘口报价价差仍是 1 tick。注意三件事:

  • 这笔市价单​​没有改变最优卖价​​,只是吃薄了卖一深度。
  • 如果待买的是 35,000 股,撮合会跨档:先扫光卖一 30,000 股 @ 3.843,再吃卖二 5,000 股 @ 3.844;成交均价 = (30000×3.843+5000×3.844)/350003.84314(30000 \times 3.843 + 5000 \times 3.844) / 35000 ≈ 3.84314,新的最优卖价变成 3.844——这就是市价单的「价格滑点」。
  • 成交均价对买方而言是​​深度加权价(depth-weighted price)​​,是评估单笔执行的标准基准。

5. 限价单的另一面:你在买队列位置

把场景翻过来:同一位交易员决定不扫盘,而是挂限价买单 25,000 股 @ 3.842。订单进入买一队列尾部:

买一  3.842  ×  53,000   (原 28,000 + 新 25,000;你的 25,000 排在 28,000 之后)

你换来了价格确定性(最多付 3.842,比扫盘的 3.843 省一档),代价是成交确定性的丧失。你的 25,000 股有没有机会成交,取决于两件事:

  1. 在 3.842 这档上​​有多少卖方愿意主动来打你​​——这是被动等成交。
  2. 行情会不会下行让 3.842 变成新的最优卖价——如果行情不动,你只是被动等卖方市价单上门。

如果在你等待期间出现 35,000 股市价卖单到达买一:

  1. 吃掉队列前端的 28,000(不是你的)。
  2. 继续吃掉你队列里的前 7,000 股。
  3. 剩 18,000 仍排队。

你​​部分成交​ 7,000 股 @ 3.842。这就是队列位置的价值:同样挂在 3.842,先到的人成交了 28,000 股,你只成交了 7,000 股。

6. 练习

Exercise

下面是 SSE 上 300ETF 的一个五档快照:

卖五  3.847  ×  120,000
卖四  3.846  ×   85,000
卖三  3.845  ×   60,000
卖二  3.844  ×   45,000
卖一  3.843  ×   30,000  (时间顺序:A=10000, B=8000, C=12000)
———————————————————————————
买一  3.842  ×   25,000  (时间顺序:D=10000, E=15000)
买二  3.841  ×   50,000
买三  3.840  ×   70,000

按下面顺序事件分别发生,请逐笔回答 (a) 是否成交、成交多少股、成交均价多少;(b) 事件结束后新的最优买价 / 最优卖价;(c) 用一句话解释为什么。

  1. 一笔市价买单 18,000 股到达。
  2. 接着一笔限价买单 12,000 股 @ 3.844 到达。
  3. 接着一笔市价卖单 40,000 股到达。
提示

按价格优先 → 时间优先两步走:先看待入单是买还是卖,再决定从订单簿的哪一侧吃起;同价位上严格按队列前后顺序消化。事件 2 的限价买单 @ 3.844 进入时会立刻和卖一对撞,因为它的买价 ≥ 卖一的 3.843。

提示

事件 3 的市价卖单 40,000 股要跨档:买一 3.842 的剩余深度只够吃一部分(注意事件 2 的影响可能改变了买一深度),剩下要吃买二 3.841。成交均价是深度加权价,不是最低成交价。事件后的最优买价会跌到买二原本的价位(如果买一被扫光)。

7. 下一节:价格形成与买卖价差

到这里你能读懂订单簿、说出每一种订单类型的取舍、按价格-时间优先预测撮合结果。我们一直把买卖价差当作「最优卖 - 最优买」的算术结果,但下一节要问的是经济学问题:为什么会有价差?谁在维持它?做市商挂在两边赚的是什么钱?同一只标的的价差为什么有时 1 tick 触底,有时撑到 5 tick 宽?答完这些,你才真正理解订单簿背后的价格形成过程。