市场微观结构:订单簿深度、订单类型与撮合引擎原理

做高频做市,说白了就是在跟市场微观结构打交道。我刚开始接触这个领域时,总觉得策略逻辑写好了就能赚钱,结果实盘一跑,滑点直接把我打回原形。后来才明白——你不懂订单簿的呼吸节奏,不懂撮合引擎的脾气,策略再漂亮也是纸上谈兵。

这一章,咱们就深入底层,看看订单簿到底长什么样,限价单和市价单在撮合引擎里是怎么「打架」的,以及盘口数据里藏着哪些赚钱的秘密。

订单簿深度:市场的「实时心电图」

订单簿,说白了就是所有挂单的集合。买一、买二、买三……卖一、卖二、卖三……每一档都对应一个价格和对应的挂单量。

我个人习惯把订单簿看作「市场的实时心电图」。为什么这么说?因为每一笔挂单的撤单、新增、成交,都在反映交易者的真实意图。

核心概念:订单簿深度 = 每个价格档位的挂单总量。深度越厚,说明该价格区间流动性越好,大单冲击成本越低。

举个例子,假设 BTC/USDT 的订单簿长这样:

档位 买价 (Bid) 买量 卖价 (Ask) 卖量
1 50000 10.5 50001 8.2
2 49999 15.3 50002 12.1
3 49998 22.0 50003 18.7
4 49997 30.6 50004 25.4
5 49996 45.2 50005 40.0

看到没?买一和卖一之间差了 1 USDT,这就是「价差」。价差越小,市场越活跃。我见过一些冷门币种,价差能大到几十个点,那种市场根本不适合做高频做市。

实战技巧:我一般会监控「订单簿斜率」——也就是从买一到买五的挂单量变化趋势。如果买一突然被吃掉,但买二、买三迅速补上,说明有资金在托底。反之,如果买一被吃掉后买二很薄,那价格大概率要往下走。

订单类型:限价单 vs 市价单

这两种订单,是交易世界最基本的「矛」和「盾」。

限价单(Limit Order):你指定一个价格,只有市场价格到了这个位置才会成交。它提供流动性,但可能无法立即成交。

市价单(Market Order):你不管价格,直接按当前最优价吃掉对手盘。它消耗流动性,但保证立即成交。

嗯,这里要注意——市价单的「立即成交」是有代价的。你想想看,如果你下了一笔大额市价买单,它会一路吃掉卖一、卖二、卖三……直到你的订单被满足。这个过程中,你付出的平均价格可能远高于最初的卖一价。

避坑指南:我曾经在 ETH 上吃过亏。当时想快速建仓,直接下了个 500 ETH 的市价买单。结果卖一到卖五全被吃掉,最后成交均价比卖一高了 0.3%。那笔交易直接亏了 1500 USDT 的滑点。从那以后,大额订单我必用限价单 + 拆单策略。

做市策略的核心,其实就是「挂限价单赚价差,用市价单管理风险」。我习惯在订单簿两侧同时挂限价单,赚取买卖价差。但如果市场突然剧烈波动,我会立刻用市价单平掉风险敞口。

撮合引擎原理:订单的「婚姻介绍所」

撮合引擎,就是交易所后台那个默默牵线搭桥的程序。它的工作逻辑其实很简单:

  1. 收到一笔新订单
  2. 检查它能不能跟订单簿里已有的订单匹配
  3. 如果能,就成交;如果不能,就挂到订单簿上
  4. 重复以上步骤,直到订单完全成交或完全挂单

但这里有个关键点——价格优先、时间优先。什么意思?

  • 价格优先:买单出价高的先成交,卖单出价低的先成交
  • 时间优先:相同价格下,先挂单的先成交

我举个例子你就明白了。假设当前订单簿卖一价 50000,有 10 个 BTC 在排队。这时候你下了一个 50000 的限价买单,但前面已经有 5 个人在 50000 这个价格等着了。那你的订单就得排在第 6 位,等前面 5 个人成交完了才轮到你。

这就是为什么做市策略里,撤单重挂是个常见操作。如果你发现自己的订单排得太靠后,可以撤掉重新挂,利用时间优先规则抢到前面去。当然,撤单重挂也有风险——万一在你撤单的瞬间,价格跑掉了呢?

核心洞察:撮合引擎的「价格优先」规则,决定了做市策略的核心逻辑——你必须在最优价格上挂单,才能第一时间成交。而「时间优先」规则,则催生了各种抢单技巧,比如低延迟网络、FPGA 加速等。

盘口数据解析:从原始数据到交易信号

盘口数据,就是交易所通过 WebSocket 实时推送的订单簿快照。一个典型的盘口数据包长这样:

{
  "type": "snapshot",
  "bids": [
    [50000.0, 10.5],
    [49999.0, 15.3],
    [49998.0, 22.0]
  ],
  "asks": [
    [50001.0, 8.2],
    [50002.0, 12.1],
    [50003.0, 18.7]
  ]
}

拿到这些数据后,我们怎么用?我个人习惯计算以下几个指标:

指标 计算公式 含义
价差 (Spread) 卖一价 - 买一价 市场流动性指标,价差越小越好
订单簿不平衡 (OBI) (买盘总量 - 卖盘总量) / (买盘总量 + 卖盘总量) 正值表示买方力量强,负值表示卖方力量强
加权平均价格 (VWAP) ∑(价格 × 数量) / ∑数量 反映真实成交价格水平
深度加权价差 考虑多档深度的加权价差 比简单价差更能反映真实冲击成本

举个例子,如果 OBI 突然从 -0.2 跳到 +0.5,说明买盘在快速堆积。这时候我会考虑调整我的做市策略——比如把买单挂得更激进一些,或者减少卖单的挂单量。

我的经验:单纯看 OBI 还不够。我一般会结合「订单簿斜率变化率」来判断。如果 OBI 在上升,但斜率在下降,说明买盘虽然多但增长乏力,可能是假突破。这个细节,我在实盘里验证过很多次,准确率还不错。

知识体系总览

下面这张图,是我自己梳理的市场微观结构知识框架。你可以把它当作本章的「地图」:

市场微观结构知识体系 订单簿深度 • 买一至买五 / 卖一至卖五 • 深度 = 各档位挂单总量 • 价差 = 卖一价 - 买一价 • 订单簿斜率:挂单量变化趋势 • 深度加权价差:真实冲击成本 订单类型 • 限价单:指定价格,提供流动性 • 市价单:立即成交,消耗流动性 • 止盈止损单:条件触发型 • 冰山订单:隐藏真实挂单量 • 做市策略:限价挂单赚价差 撮合引擎原理 • 价格优先:高价买单先成交 • 时间优先:同价先挂先成交 • 连续竞价 vs 集合竞价 • 撤单重挂:抢时间优先位置 • 部分成交与完全成交 盘口数据解析 • WebSocket 实时推送快照 • 价差 (Spread) 监控 • 订单簿不平衡 (OBI) • 加权平均价格 (VWAP) • 斜率变化率:判断真假突破 四者联动:深度影响订单执行,撮合规则决定策略,盘口数据驱动决策

这张图把四个核心模块串起来了。你想想看——订单簿深度决定了你的限价单能不能挂到好位置,订单类型决定了你用什么工具去执行,撮合引擎的规则决定了你的订单什么时候能成交,而盘口数据则是你实时调整策略的依据。四者缺一不可。

重要提醒:不同交易所的撮合引擎细节可能不同。比如币安的撮合引擎对冰山订单的处理方式就跟 OKX 不一样。我建议你在实盘前,先用模拟盘摸清目标交易所的「脾气」。我曾经因为没注意某个交易所的撤单延迟,导致策略在极端行情下连续吃瘪,亏了不少钱。

好了,市场微观结构这块,咱们就聊到这儿。记住一句话:做市不是猜方向,而是吃透规则、利用规则。下一章,我们会把这些知识落地到具体的策略代码里。


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