1. 订单簿基础:限价单与市价单、买卖盘口、深度图概念

做量化交易这些年,我见过不少新手一上来就盯着K线猛看,却忽略了最底层的东西——订单簿。说白了,订单簿才是市场的「实时心电图」。今天咱们就把这块地基打扎实。

1.1 限价单 vs 市价单:两种核心指令

先问个问题:你下单时,到底是在跟谁做对手盘?

限价单(Limit Order),就是你说「我只愿意在这个价买/卖,高了/低了我不要」。比如BTC当前价格30000,你挂个29900的买单,那就得等价格跌下来才能成交。我在做高频做市时,大部分仓位都是用限价单挂的——说白了,你在给市场提供流动性。

市价单(Market Order),就是「不管什么价,我现在就要成交」。你点一下买入,系统直接吃掉当前卖一、卖二、卖三……直到你的数量满足为止。我记得有一次在币安做套利,市价单滑点直接吃掉了我0.3%的利润——嗯,从那以后我养成了习惯:大单必拆,小单看深度。

核心区别一句话:限价单是「等」,市价单是「抢」。限价单提供流动性,市价单消耗流动性。

1.2 买卖盘口:订单簿的骨架

打开任何一个交易平台的深度图,你会看到左右两列数字:左边是买盘(Bid),右边是卖盘(Ask)。每一行就是一个价格档位,后面跟着挂单数量。

举个例子,假设ETH/USDT的盘口长这样:

买盘(Bid) 价格 卖盘(Ask)
120.5 ETH 1800.00 85.2 ETH
230.1 ETH 1799.50 156.7 ETH
89.3 ETH 1799.00 210.4 ETH

这里有个关键概念叫价差(Spread)——就是卖一价减去买一价。价差越小,说明市场流动性越好。我在做跨市场套利时,价差就是我的「利润空间」和「风险敞口」。你想想看,如果价差只有0.01%,那你的手续费稍微高点就白干了。

我的习惯:每次接入新交易所,第一件事就是拉24小时的价差分布图。价差突然扩大,往往意味着有大行情或者流动性危机。

1.3 深度图:把订单簿画出来

深度图就是把买卖盘口的数据可视化。横轴是价格,纵轴是累计挂单量。买盘从当前价往左延伸(价格越低,累计量越大),卖盘从当前价往右延伸(价格越高,累计量越大)。

我个人习惯把深度图分成三个区域看:

  • 浅层(0-5档):这是「即时战场」,市价单主要在这里消耗。如果浅层挂单稀薄,一个大单就能把价格打穿好几个点。
  • 中层(5-20档):这是「支撑/阻力区」。我在做趋势跟踪时,经常看这里有没有「厚墙」——比如卖盘在某个价位突然堆了上千个BTC,那价格大概率会在这里震荡一下。
  • 深层(20档以上):这是「心理防线」。说实话,很多交易所的深层挂单是虚的——有人故意挂大单吓唬人,临成交前又撤掉。我曾经吃过这种亏,后来加了撤单检测逻辑。
避坑指南:我曾经在BitMEX上看到一个卖盘墙特别厚,以为价格上不去,结果那是个「冰山订单」——表面只显示一部分,实际后面还有巨量。所以看深度图时,别只看第一眼,要结合订单簿的更新频率和撤单率来判断真假。

1.4 多市场订单簿合并:为什么需要?

做单一交易所的订单簿,其实不难。但如果你做跨市场套利、做市或者统计套利,你就得同时盯着好几个交易所的订单簿。这时候问题来了——每个交易所的订单簿结构、价格精度、时间戳都不一样。

我画了一张图,帮你理解多市场订单簿合并的核心逻辑:

多市场订单簿合并核心流程 交易所A Binance 订单簿 交易所B OKX 订单簿 交易所C Bybit 订单簿 数据清洗与标准化 时间戳对齐 | 价格精度统一 | 去重 | 剔除异常挂单 多市场订单簿合并引擎 按价格聚合 | 累计数量 | 实时更新 | 增量合并 统一深度图 / 合并盘口 / 套利信号

你看,整个流程分三步:

  1. 数据采集:同时订阅多个交易所的订单簿增量数据。这里要注意,每个交易所的WebSocket推送频率不一样——有的100ms,有的500ms。我一般会加一个本地时钟,强制对齐到同一个时间基准。
  2. 数据清洗:把价格精度统一到同一个小数点位数。比如Binance的ETH价格是2位小数,OKX是4位,那你就得决定以哪个为准。我个人习惯取最高精度,然后向下取整。
  3. 合并输出:按价格档位聚合所有交易所的挂单量。比如在1800.00这个价位,Binance有50个ETH,OKX有30个,Bybit有20个,那合并后的买一就是100个ETH。
一个小技巧:合并时别傻傻地全量合并。每个交易所的订单簿每秒可能更新几十次,全量合并CPU扛不住。用「增量合并」——只处理有变化的档位。我在一个项目里用这个优化,把延迟从50ms降到了5ms以内。

1.5 深度图的实战解读

有了合并后的深度图,你能看到什么?

  • 流动性分布:哪个价位挂单最厚?如果买盘在某个价位突然堆起一堵墙,那可能是「护盘」行为。我在做空时看到这种墙,会先等等,看它是不是真的能撑住。
  • 买卖力量对比:累计买盘总量 vs 累计卖盘总量。如果买盘总量是卖盘的2倍,那短期偏多。但要注意——有些挂单是「钓鱼单」,挂在那里不成交,专门等人来吃。
  • 深度斜率:深度图越陡峭,说明流动性越集中;越平缓,说明流动性分散。做市商最喜欢陡峭的深度图——价差小,容易做。
再提醒一句:深度图是「快照」,不是「预言」。我见过太多人看着深度图说「这里支撑很强」,结果一个大户的市价单直接打穿。深度图只能告诉你「现在有人挂在这里」,不能告诉你「他们会不会撤单」。

好了,订单簿的基础概念就这些。下一节咱们会深入代码层面,手撸一个多市场订单簿合并器。到时候你会看到,理论跟实践之间,其实就差那么几行关键的代码。


专注资料整理