第二章:市场微观结构——订单簿基础、限价单与市价单、订单簿的构建与维护、买卖价差与市场深度
做高频交易的人,第一课就是读懂订单簿。
我入行那会儿,带我的老交易员扔给我一句话:「小子,你不懂订单簿,就别谈做市。」当时我不服气,觉得不就是一堆买单卖单嘛。后来真上了实盘,被市场狠狠教育了几次,才明白这玩意儿有多深。
今天咱们就把订单簿这层窗户纸捅破。我会从最基础的概念讲起,结合我踩过的坑,带你真正理解市场微观结构。
2.1 订单簿长什么样?
订单簿,说白了就是交易所用来记录所有未成交订单的电子账本。它分两边:买盘(Bid)和卖盘(Ask)。
我习惯把买盘想象成一群举着牌子的人,上面写着「我想用XX价格买」。卖盘则是另一群人,写着「我想用XX价格卖」。订单簿就是这些牌子的集合。
核心概念:订单簿是市场的「实时供需地图」。每一笔成交,都是买盘和卖盘的一次「碰撞」。
举个例子,假设现在某股票的最新成交价是100.00元。订单簿可能长这样:
| 卖盘(Ask) | 价格 | 买盘(Bid) |
|---|---|---|
| 200股 | 100.05 | |
| 500股 | 100.04 | |
| 300股 | 100.03 | |
| 100.02 | 100股 | |
| 100.01 | 400股 | |
| 100.00 | 600股 |
看到没?卖盘最低价是100.03,买盘最高价是100.02。中间这0.01元的差距,就是买卖价差。
2.2 限价单 vs 市价单
这两种订单类型,是做市商的左右手。我刚开始做策略时,就吃过不懂它们区别的亏。
限价单(Limit Order):你指定一个价格,只有市场达到这个价格时才会成交。说白了就是「我只接受这个价,爱卖不卖」。
- 优点:你能控制成交价格,不会滑点
- 缺点:可能永远成交不了
市价单(Market Order):你不指定价格,直接按当前最优价成交。说白了就是「我要马上成交,价格无所谓」。
- 优点:几乎立即成交
- 缺点:可能吃到大滑点
我的经验:做市策略的核心,就是不断挂限价单提供流动性,同时用市价单吃掉对手的流动性。我曾经有个策略,限价单挂得太激进,结果被高频交易者反复「钓鱼」,一天亏了十几万。后来我学会了在限价单后面加一层「保护单」,才稳住局面。
2.3 订单簿的构建与维护
你可能会想,订单簿不就是个排序列表吗?嗯,原理上没错,但实际实现时坑很多。
我一般用Python的sortedcontainers库来维护订单簿。但如果你追求极致性能,得用C++或者Rust写核心逻辑。
from sortedcontainers import SortedDict
class OrderBook:
def __init__(self):
self.bids = SortedDict() # 买盘,价格降序
self.asks = SortedDict() # 卖盘,价格升序
def add_order(self, side, price, volume):
"""添加订单"""
book = self.bids if side == 'buy' else self.asks
if price in book:
book[price] += volume
else:
book[price] = volume
def remove_order(self, side, price, volume):
"""移除订单"""
book = self.bids if side == 'buy' else self.asks
if price in book:
book[price] -= volume
if book[price] <= 0:
del book[price]
def get_best_bid(self):
"""获取最优买价"""
if self.bids:
return self.bids.peekitem(-1) # 最高买价
return None
def get_best_ask(self):
"""获取最优卖价"""
if self.asks:
return self.asks.peekitem(0) # 最低卖价
return None
避坑指南:我曾经在维护订单簿时,忘记处理「价格相同但订单ID不同」的情况。结果导致同一个价格点的成交量被错误累加,策略直接崩了。记住:每个订单都有唯一ID,不能只按价格聚合。
2.4 买卖价差与市场深度
这两个指标,是做市商最关心的东西。
买卖价差(Bid-Ask Spread):最优卖价减去最优买价。价差越小,说明市场流动性越好。我一般把价差作为策略的「安全垫」——价差太小,利润薄;价差太大,风险高。
市场深度(Market Depth):指在某个价格水平上的订单总量。深度越大,说明这个价格支撑越强。
举个例子,如果买盘在100.00元有10000股,而卖盘在100.05元只有100股,那这个市场就是「买盘深、卖盘浅」。这时候如果你做市,得小心别被大单吃掉。
实战技巧:我习惯用「价差/深度比」来判断市场状态。公式很简单:spread / (bid_depth + ask_depth) * 10000。比值越小,说明市场越健康。我一般设定阈值,超过0.5就暂停做市。
2.5 知识体系总览
下面这张图,是我自己总结的市场微观结构知识框架。你看完应该能有个整体印象。
嗯,这张图基本涵盖了本章的核心内容。你想想看,订单簿就是市场的「骨架」,订单类型是「肌肉」,构建维护是「神经系统」,价差和深度则是「血液指标」。四者缺一不可。
我记得刚做高频做市那会儿,每天盯着订单簿看十几个小时。后来慢慢练出了「盘感」——扫一眼订单簿,就能大概判断出接下来几秒钟的价格走势。这种能力,说白了就是靠大量实战积累出来的。
一个小建议:初学者可以先从模拟盘开始,用Python搭建一个简单的订单簿回测系统。我当年就是这么干的。别一上来就上实盘,那跟送钱没区别。
好了,这一章就到这里。记住:订单簿是你的眼睛,价差是你的尺子,深度是你的盾牌。把这些基础打牢,后面的策略才能站得住脚。
公众号:蓝海资料掘金营,微信deep3321