1. 订单簿基础:限价单与市价单、买卖盘口深度、订单簿动态更新机制
做量化这些年,我见过太多人一上来就研究各种高阶策略,结果连订单簿都没搞明白。说实话,这就像还没学会走路就想跑马拉松。订单簿是市场的骨架,你所有的交易决策,最终都要落在这个结构上。今天我们就把它彻底讲透。
1.1 限价单与市价单:两种最基础的武器
先问个问题:你下单的时候,到底是在跟谁做对手盘?
答案很简单——要么你挂单等着别人来吃,要么你直接吃掉别人的挂单。这就是限价单和市价单的本质区别。
限价单(Limit Order),说白了就是「我出这个价,爱卖不卖」。你指定一个价格,挂到订单簿上等着。有人愿意按你的价格成交,那就成交;没人愿意,那就等着。我个人习惯把限价单叫做「被动单」,因为你是在提供流动性。
市价单(Market Order),就是「不管多少钱,我现在就要成交」。你直接跟当前最优的对手盘成交,吃掉订单簿上最前面的单子。我管它叫「主动单」,因为你是在消耗流动性。
嗯,这里要注意一个关键点:市价单没有价格限制,只有数量限制。你下100个BTC的市价买单,系统就会从卖一、卖二、卖三……一路吃下去,直到吃够100个BTC为止。这就会产生滑点。
核心区别总结:
- 限价单:指定价格,等待成交,提供流动性
- 市价单:立即成交,吃掉对手盘,消耗流动性
- 限价单可能不成交,市价单一定成交(除非市场深度不够)
我在项目中遇到过一件事:有个策略在流动性极差的币对上用了市价单,结果一笔交易直接把价格打穿了3%。从那以后,我对市价单的使用就格外谨慎了。
1.2 买卖盘口深度:读懂市场的「供需地图」
订单簿的买卖盘口,其实就是一张实时的供需地图。买盘(Bid)是所有人愿意买入的价格和数量,卖盘(Ask)是所有人愿意卖出的价格和数量。
我习惯把买盘叫做「支撑区」,卖盘叫做「压力区」。你想想看,如果买盘堆积如山,价格想跌都难;如果卖盘层层叠叠,价格想涨也费劲。
盘口深度通常用「深度图」来展示。横轴是价格,纵轴是累计挂单量。买盘在左侧,卖盘在右侧,中间就是当前的最新成交价。
我的个人经验:
看盘口深度时,别只看第一档。我习惯看前10档甚至前20档的累计深度。有时候第一档只有几个BTC,但第二档突然堆了几百个BTC,那才是真正的「墙」。
举个例子,假设当前BTC价格是30000 USDT:
| 档位 | 买盘价格 | 买盘数量 | 卖盘价格 | 卖盘数量 |
|---|---|---|---|---|
| 1 | 29990 | 5.2 BTC | 30010 | 3.8 BTC |
| 2 | 29980 | 12.1 BTC | 30020 | 8.5 BTC |
| 3 | 29970 | 45.0 BTC | 30030 | 22.3 BTC |
| 4 | 29960 | 8.7 BTC | 30040 | 6.1 BTC |
| 5 | 29950 | 3.2 BTC | 30050 | 4.9 BTC |
看到没?买盘在29970这个位置有45个BTC的堆积,这就是一个明显的支撑位。如果价格跌到29970,这45个BTC会形成很强的买盘支撑。卖盘在30030也有22.3个BTC的压力。
我曾经靠这个判断躲过一次暴跌。当时看到卖盘在某个价位突然堆了上千个BTC,而买盘却稀稀拉拉,我果断减仓。半小时后价格果然崩了。
1.3 订单簿动态更新机制:市场在「呼吸」
订单簿不是静止的,它每时每刻都在变化。每一次下单、撤单、成交,都会改变订单簿的形态。我把它比作市场的「呼吸」——有节奏,有规律,但偶尔也会剧烈波动。
订单簿的更新机制其实很简单,就三种操作:
- 新增订单:有人挂了新的限价单,订单簿上多了一笔记录
- 撤销订单:有人撤回了未成交的限价单,订单簿上少了一笔记录
- 成交订单:市价单吃掉了限价单,或者两个限价单相遇了,订单簿上的数量减少或消失
交易所会通过WebSocket实时推送这些变化。我建议你关注的是「增量更新」而不是「全量快照」。全量快照每次推送整个订单簿,数据量大、延迟高;增量更新只推送变化的部分,效率高得多。
避坑指南:
我曾经在对接某个交易所API时,只订阅了全量快照,结果每次更新都要解析几千条数据,延迟直接飙到500ms以上。后来改成增量更新,延迟降到了10ms以内。记住:做高频交易,增量更新是标配。
订单簿的动态更新还有一个重要概念——订单簿不平衡(Order Book Imbalance)。简单说就是买盘和卖盘的力量对比。如果买盘总量远大于卖盘总量,说明买方力量强,价格大概率要涨。反之亦然。
我常用的一个指标是:
// 订单簿不平衡指标
imbalance = (bid_volume - ask_volume) / (bid_volume + ask_volume)
// 取值在 -1 到 1 之间
// 正值表示买方占优,负值表示卖方占优
// 绝对值越大,力量越悬殊
嗯,这个指标虽然简单,但非常实用。我见过很多策略就是靠这个指标做高频交易的。
下面这张图展示了订单簿的核心结构和工作流程:
最后说一个实战技巧。我每次看订单簿,都会关注「挂单撤单比」。如果某个价位频繁出现挂单又撤单,那很可能是有人在「钓鱼」——挂个假单诱导市场,然后迅速撤掉。遇到这种情况,我一般会多留个心眼,不轻易跟单。
实战小技巧:
用WebSocket订阅订单簿增量更新时,记得维护一个本地订单簿副本。每次收到增量数据,更新本地副本即可。这样你随时可以查询任意价位的挂单情况,而不需要每次都请求全量数据。
订单簿这东西,看着简单,但里面的门道其实不少。你花时间把基础打牢了,后面学什么策略都会顺手很多。