1. 订单簿基础:什么是订单簿?限价单与市价单的区别

1.1 订单簿的本质

订单簿,说白了就是一个「排队簿」。它记录了所有交易者挂出的买卖意愿。我刚开始接触量化交易时,觉得这东西不就是个价格列表吗?后来才发现,订单簿里藏着整个市场的博弈逻辑。

每个交易所都有订单簿。它分两部分:买单和卖单。买单按价格从高到低排,卖单按价格从低到高排。中间那个缝隙,就是当前的最新成交价。

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

卖单(Ask) 价格 数量
卖5 50005 0.5
卖4 50004 1.2
卖3 50003 0.8
卖2 50002 2.0
卖1 50001 1.5
—— 当前价差 ——
买1 50000 1.0
买2 49999 3.0
买3 49998 0.6
买4 49997 1.8
买5 49996 2.2

看到没?买1和卖1之间的价格差,就是「价差」(spread)。价差越小,说明市场流动性越好。我在做高频策略时,最怕的就是价差突然拉大——那意味着流动性枯竭,你的订单可能被「吃」得很惨。

核心要点:订单簿是市场微观结构的「快照」。它反映了当前所有未成交订单的分布情况。你看到的每一笔成交,都是订单簿中买卖双方「碰撞」的结果。

1.2 限价单 vs 市价单

这两种订单类型,是交易中最基础的操作。但很多人用了一辈子,也没搞明白它们的本质区别。

限价单(Limit Order)

限价单,就是你指定一个价格,只有市场达到这个价格时才会成交。说白了,你是在「等」别人来吃你的单子。

我习惯把限价单叫做「挂单」。你挂一个买单在 50000,那只有当卖单价格降到 50000 或更低时,你的单子才会被吃掉。反过来,你挂一个卖单在 50100,那只有当买单价格涨到 50100 或更高时,你的单子才会成交。

限价单的好处很明显:你能控制成交价格。坏处也很明显:可能永远成交不了。我在做套利策略时,经常用限价单来「守株待兔」——挂一个远低于当前市价的买单,等着市场回调时捡便宜。

市价单(Market Order)

市价单,就是「不管价格多少,我现在就要成交」。你下市价买单,系统会从卖1开始,一路吃下去,直到你的订单数量全部成交。

举个例子,你下了一个 2.0 BTC 的市价买单。系统会先吃掉卖1的 1.5 BTC(价格 50001),再吃掉卖2的 0.5 BTC(价格 50002)。你的平均成交价是 (1.5*50001 + 0.5*50002) / 2.0 = 50001.25。

市价单的优点是「成交确定性高」。缺点是「价格不确定性高」。我曾经在流动性差的币种上吃过亏——一个市价单下去,直接把价格拉了好几个点,滑点大得吓人。

我的建议:做高频交易时,尽量用限价单。做趋势交易时,市价单更合适。但无论哪种,都要提前算好滑点成本。

1.3 订单簿的核心逻辑

订单簿的运作机制,其实就是一个「价格发现」的过程。每一笔成交,都是买卖双方博弈的结果。

我画了一张图,帮你理解订单簿的运作逻辑:

订单簿运作逻辑 买方(Bid) 买1: 50000 @ 1.0 买2: 49999 @ 3.0 买3: 49998 @ 0.6 买4: 49997 @ 1.8 买5: 49996 @ 2.2 卖方(Ask) 卖1: 50001 @ 1.5 卖2: 50002 @ 2.0 卖3: 50003 @ 0.8 卖4: 50004 @ 1.2 卖5: 50005 @ 0.5 价差: 1 成交发生 买单吃卖单 / 卖单吃买单 市价单直接与对手方最优价格成交 限价单则等待对手方价格到达指定位置

这张图展示了订单簿的核心运作方式。买方和卖方各自排队,中间那个「价差」就是市场的摩擦成本。市价单会直接穿透价差,吃掉对手方的最优价格。限价单则老老实实排队,等着别人来吃。

1.4 订单簿的深度与厚度

订单簿的「深度」和「厚度」是两个容易被混淆的概念。我简单解释一下:

  • 深度(Depth):指某个价格水平上的订单数量。深度越大,说明这个价格上有更多的「弹药」。
  • 厚度(Thickness):指订单簿中所有价格水平上的订单总量。厚度越大,说明市场整体流动性越好。

我在做订单簿分析时,最关注的是「深度分布」。如果某个价格附近突然出现大量订单,那很可能是一个「支撑位」或「阻力位」。嗯,这里要注意——有时候这些订单是「幽灵单」,挂上去又撤掉,专门用来迷惑散户的。

避坑指南:我曾经在分析订单簿时,看到某个价格附近堆了上千个 BTC 的买单,以为是个强支撑。结果价格一跌到那里,那些单子瞬间全撤了。后来我才知道,这是做市商在「挂假单」诱导市场。所以,看订单簿不能只看静态数据,还要看动态变化。

1.5 限价单与市价单的实战选择

到底该用限价单还是市价单?我个人的经验是:

场景 推荐订单类型 原因
做市策略 限价单 赚取价差收益,需要精确控制入场价格
趋势突破 市价单 追求成交速度,避免错过行情
套利交易 限价单 需要锁定利润空间,滑点会吃掉收益
大额交易 限价单(分批) 避免一次性冲击市场,降低滑点
止损平仓 市价单 止损时速度优先,价格次要

你想想看,如果你做的是高频做市策略,每笔交易只赚 0.01 个点。这时候用市价单,滑点可能直接吃掉你一周的利润。所以,做市商几乎清一色用限价单。

反过来,如果你看到某个币种突然放量突破,这时候还在那挂限价单等成交,行情早就跑远了。该用市价单的时候,别犹豫。

1.6 订单簿的实时更新机制

订单簿不是静态的。每一秒都有成千上万的订单在变化。交易所通过「增量更新」的方式,把变化推送给客户端。

一个典型的订单簿更新消息长这样:

{
  "type": "snapshot",    // 快照或增量
  "bids": [
    [50000, 1.0],       // [价格, 数量]
    [49999, 3.0]
  ],
  "asks": [
    [50001, 1.5],
    [50002, 2.0]
  ]
}

如果是增量更新,格式类似:

{
  "type": "update",
  "bids": [
    [50000, 0]          // 数量为0表示删除该价格
  ],
  "asks": [
    [50003, 0.8]        // 新增或更新
  ]
}

我建议你在做量化系统时,一定要处理好「快照」和「增量」的同步。否则,本地订单簿和交易所的订单簿会出现偏差,导致策略误判。我曾经因为这个 bug,让策略在错误的价格上挂了一堆单子,亏了不少钱。

小技巧:每次收到快照后,先清空本地订单簿,再重新构建。增量更新时,按价格排序插入。如果发现增量序号不连续,立即请求新的快照。

1.7 订单簿的「冰山订单」

冰山订单,就是只显示一部分数量的订单。比如你实际想买 1000 个 BTC,但只显示 10 个。剩下的 990 个藏在「水下」。交易所只展示冰山的一角。

为什么要用冰山订单?说白了,就是不想让别人知道你的真实意图。如果你直接挂 1000 个 BTC 的买单,市场看到这么大的买盘,可能会把价格推高。用冰山订单,可以「偷偷」建仓。

我在做机构级策略时,经常用冰山订单来隐藏大额交易。但要注意,有些交易所会限制冰山订单的最小显示数量。嗯,这个细节很容易被忽略。

1.8 总结

订单簿是市场的「心电图」。限价单和市价单,是交易中最基本的两种工具。理解它们的区别,是量化交易的第一步。

我个人习惯把订单簿看作一个「博弈场」。每一笔订单背后,都是一个交易者的决策。限价单代表「等待」,市价单代表「行动」。两者没有绝对的好坏,关键看你的策略和场景。

记住一句话:限价单控制价格,市价单控制时间。你不可能同时控制两者。想清楚你要什么,再下单。


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