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 订单簿的核心逻辑
订单簿的运作机制,其实就是一个「价格发现」的过程。每一笔成交,都是买卖双方博弈的结果。
我画了一张图,帮你理解订单簿的运作逻辑:
这张图展示了订单簿的核心运作方式。买方和卖方各自排队,中间那个「价差」就是市场的摩擦成本。市价单会直接穿透价差,吃掉对手方的最优价格。限价单则老老实实排队,等着别人来吃。
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