一、订单簿基础:什么是订单簿?
订单簿,说白了就是交易所用来记录所有买卖挂单的电子账本。我刚开始接触量化交易时,总觉得这东西就是个简单的价格列表,后来才发现——它其实是市场微观结构的核心,是高频交易者眼中的「战场地图」。
你打开任何一个交易软件的深度图,看到的那一列列买一买二、卖一卖二,背后就是订单簿在实时运转。它记录了所有交易者挂出的限价单,按价格从高到低排列,等着被成交。
限价单 vs 市价单:两种最基本的武器
这两个概念,我见过太多新手搞混。其实很简单:
- 限价单:你指定一个价格,只有市场到了这个价才成交。比如你挂单买BTC,价格设50000,那只有卖单降到50000或更低时才会成交。优点是价格可控,缺点是不一定能成交。
- 市价单:你不关心价格,只求尽快成交。系统会按当前最优价格帮你吃掉对手盘。优点是成交快,缺点是可能滑点严重——尤其是流动性差的时候。
我个人的经验:做高频策略时,市价单用得少,因为滑点会吃掉利润。限价单才是主力,但要注意挂单深度——我曾经在某个小币种上挂了一笔限价单,结果流动性太差,挂了半小时才成交,错过了最佳时机。
订单簿的构成要素:价格、数量、时间优先级
订单簿的核心要素就三个:价格、数量、时间。嗯,这里要注意,这三个要素共同决定了订单的「优先级」——也就是谁先成交。
| 要素 | 说明 | 优先级规则 |
|---|---|---|
| 价格 | 买方愿意支付的最高价 / 卖方愿意接受的最低价 | 价格优先:买价越高越优先,卖价越低越优先 |
| 数量 | 该价格上的挂单总量 | 不影响优先级,但影响成交深度 |
| 时间 | 订单进入订单簿的时间戳 | 时间优先:同价格下,先挂单的先成交 |
为什么会这样设计?你想想看,如果只看价格,那所有人都去抢最优价,市场就乱了。加上时间优先级,才能保证公平——先到先得。
避坑指南:我曾经在实盘中吃过亏——以为挂单价格最优就能立刻成交,结果忽略了同一价格上前面还有几百手的挂单。后来我养成了习惯:挂单前先看该价位的累计深度,估算一下排队时间。
订单簿的微观结构:买盘与卖盘
订单簿分为两部分:买盘(Bid)和卖盘(Ask)。买盘从高到低排列,卖盘从低到高排列。中间那个价差,就是买卖价差(Spread)——这是高频交易者最关注的指标之一。
举个例子,假设当前订单簿长这样:
卖盘:
卖五:100.50 200股
卖四:100.40 150股
卖三:100.30 300股
卖二:100.20 100股
卖一:100.10 250股
--------------------
买一:100.00 180股
买二:99.90 220股
买三:99.80 400股
买四:99.70 150股
买五:99.60 300股
买盘:
这里买一和卖一之间的价差是0.10元。如果价差突然缩小,说明市场流动性变好;如果价差扩大,说明市场可能出现了恐慌或流动性枯竭。
订单簿的动态变化:不只是静态数据
订单簿每时每刻都在变化。新订单进来、旧订单撤单、成交发生——这些事件都会实时更新订单簿。高频交易策略的核心,就是预测这些变化并提前布局。
我记得有一次做回测,发现某个策略在模拟环境里表现很好,但一上实盘就亏钱。后来排查发现,模拟环境里的订单簿更新频率是100ms一次,而实盘是1ms一次——微观结构完全不同。说白了,订单簿的「时间分辨率」决定了你能看到多细的市场博弈。
注意:订单簿数据量极大,尤其是高频场景下。如果你直接订阅全量订单簿,带宽和计算压力会非常大。我建议先订阅增量更新(只推送变化的部分),再本地维护一个全量订单簿副本。
知识体系总览
下面这张图,是我自己整理订单簿知识时画的框架。它把订单簿的核心概念、构成要素、动态变化串在了一起,方便你快速建立整体认知。
这张图把订单簿拆成了三个层次:核心要素(价格、数量、时间)、订单类型(限价单 vs 市价单)、以及动态变化。你每次分析订单簿时,都可以从这三个维度入手,不会漏掉关键信息。
总结一下:订单簿不是死的数据,它是市场参与者博弈的实时投影。理解它的微观结构,是走向高频交易的第一步。我个人建议你花时间手动模拟一下订单簿的更新过程——拿纸笔或者写个小脚本都行,亲自动手比看一百遍理论都管用。