一、订单簿基础:限价单与市价单、买卖盘口、深度图、价差与滑点

各位同学,咱们今天聊点实在的。订单簿这东西,说白了就是交易所里那个「谁想买、谁想卖」的实时大名单。我做了这么多年量化,见过太多人一上来就研究什么高级算法,结果连订单簿都读不利索——嗯,这就像开车不看仪表盘,迟早要出事。

1.1 限价单与市价单:两种最基本的武器

先说说最基础的两个概念。你打开任何一个交易软件,下单界面通常就两个选项:限价单和市价单。

限价单,就是你指定一个价格,说「我只在这个价或者更好的价成交」。比如BTC当前报价50000,你挂个49900的买单,那就得等价格跌到49900才能成交。我在项目中遇到过不少新手,喜欢挂个超低价等着捡漏,结果行情一路狂奔,单子永远没成交——这就是典型的「挂单挂到天荒地老」。

市价单就简单粗暴了:不管当前什么价,我就要立刻成交。你点下去,系统直接按当前最优的对手盘价格给你吃掉。好处是快,坏处嘛...你想想看,如果盘口很薄,一个市价单下去可能直接打穿好几个价位,成交均价远高于你的预期。

核心区别一句话:限价单要价格不要速度,市价单要速度不要价格。

我个人习惯是:做策略交易时,90%的情况用限价单。为什么?因为市价单的滑点成本,长期下来能吃掉你一大半利润。我曾经做过一个回测,同样的策略,用市价单执行比用限价单执行,年化收益差了将近8个点——这可不是小数目。

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

订单簿长什么样?我画个简单的示意图你就明白了。

订单簿结构示意图 卖盘(Ask Side) 卖5 价格: 50050 数量: 2.5 BTC 累计: 8.2 BTC 卖4 价格: 50040 数量: 1.8 BTC 累计: 5.7 BTC 卖3 价格: 50030 数量: 1.2 BTC 累计: 3.9 BTC 价差(Spread)= 50020 - 50010 = 10 USDT 买盘(Bid Side) 买1 价格: 50010 数量: 3.0 BTC 累计: 3.0 BTC 买2 价格: 50000 数量: 2.0 BTC 累计: 5.0 BTC 买3 价格: 49990 数量: 1.5 BTC 累计: 6.5 BTC 买1 = 最高买入价,卖1 = 最低卖出价

看到没?左边是卖盘,右边是买盘。卖盘从低到高排列,买盘从高到低排列。中间那个空隙就是价差。买1和卖1之间的差距,就是市场当前的流动性成本。

我记得刚入行那会儿,有个老交易员跟我说:「小伙子,盯盘先盯买1卖1,这两个价格决定了你能不能活着出来。」当时觉得夸张,后来自己做策略回测才发现——价差大的品种,你来回吃几次就亏光了。

1.3 深度图:一眼看穿市场厚度

深度图就是把订单簿可视化。横轴是价格,纵轴是累计挂单量。左边是买盘累积,右边是卖盘累积。中间那个「V」字形的缺口,就是价差。

怎么看深度图?我教你三个要点:

  • 看斜率:曲线越陡,说明这个价位附近挂单越集中,支撑或阻力越强
  • 看深度:曲线延伸得越远,说明市场在更广的价格范围内有流动性
  • 看不对称性:买盘深度远大于卖盘深度,说明买方力量强,反之亦然

实战技巧:我在做拆单算法时,会先拉一下深度图。如果卖盘深度在某个价位突然变薄,我会把大单拆成小单,在那个价位之前分批吃掉——避免一脚踩空把价格打飞。

1.4 价差:流动性的直接体现

价差就是买1和卖1之间的价格差。它直接反映了市场的流动性状况。

市场状态 价差特征 典型场景
高流动性 价差小(如BTC: 0.01%) 主流币种、交易活跃时段
低流动性 价差大(如某些山寨币: 1%+) 冷门品种、深夜时段
剧烈波动 价差瞬间扩大 重大消息发布、插针行情

为什么会这样?你想想看,流动性好的市场,买卖双方都愿意在更窄的范围内报价,价差自然就小。反之,没人交易的品种,你挂个单可能等半天都没人理你,做市商只能把价差拉大来保护自己。

我曾经吃过一次亏:在某个流动性极差的代币上,我挂了个市价单想快速进场,结果直接打穿了5个价位,成交均价比我预期的贵了2.3%。从那以后,我给自己定了个规矩——价差超过0.5%的品种,坚决不用市价单。

1.5 滑点:你的订单和成交价之间的鸿沟

滑点,就是你下单时的预期价格和实际成交价格之间的差值。它分两种:

  • 正向滑点:成交价比预期好(比如你买到了更便宜的价格)
  • 负向滑点:成交价比预期差(最常见的情况)

滑点的来源主要有三个:

  1. 市场波动:从你下单到订单到达交易所,价格已经变了
  2. 流动性不足:你的订单太大,吃穿了盘口
  3. 网络延迟:你的订单比别人慢了一步

避坑指南:我曾经在回测中忽略滑点,结果实盘跑起来直接亏了15%。记住:回测一定要加滑点模型,至少按价差的50%来估算。别问我怎么知道的——都是真金白银换来的教训。

1.6 订单簿的动态博弈:一个简单的例子

咱们用个具体场景来串一下这些概念。假设当前订单簿如下:

卖盘:
  卖1: 100.10  数量 100
  卖2: 100.20  数量 200
  卖3: 100.30  数量 300

买盘:
  买1: 100.00  数量 150
  买2:  99.90  数量 250
  买3:  99.80  数量 400

价差 = 100.10 - 100.00 = 0.10

现在你下了一个市价买单,数量300。会发生什么?

  • 先吃掉卖1的100个,成交价100.10
  • 再吃掉卖2的200个,成交价100.20
  • 总成交均价 = (100×100.10 + 200×100.20) / 300 = 100.1667
  • 滑点 = 100.1667 - 100.10 = 0.0667

看到了吗?一个市价单下去,直接把价格推高了0.0667。这就是市场冲击成本。如果你用的是拆单算法,把这300个单子拆成10笔小单,每笔30个,分批进场,冲击成本就能大幅降低。

核心结论:订单簿不是静止的,它是活的。每一笔订单都在改变盘口结构,而聪明的交易者会利用这种动态变化来优化自己的执行成本。

好了,这一章的内容就到这里。订单簿是拆单算法的地基,地基不牢,上面盖什么楼都得塌。下一章咱们聊聊「时间切片与订单簿快照」,看看怎么把连续的订单簿切成一段一段来分析。


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