第一章:订单簿的微观结构

做套利这么多年,我越来越觉得——订单簿才是市场最真实的语言。K线可以骗人,指标可以滞后,但订单簿上的每一笔挂单,都是真金白银的态度。今天我们就来拆解这个核心工具。

1.1 限价单与市价单的生命周期

先问个问题:你下的单子,到底经历了什么?

限价单(Limit Order)和市价单(Market Order),说白了就是两种完全不同的性格。

  • 限价单:你指定价格,挂上去等。不着急,但可能永远成交不了。
  • 市价单:你不管价格,直接吃掉对手盘。成交快,但可能滑点让你肉疼。

我刚开始做高频的时候,总觉得限价单安全。直到有一次,我在BTC永续合约上挂了个深度限价单,结果行情瞬间跳水,我的单子成了别人的逃生通道。嗯,从那以后我学会了加止损。

生命周期流程

一个限价单的完整生命周期是这样的:

  1. 你提交订单 → 进入交易所撮合引擎
  2. 引擎检查价格是否与对手盘匹配
  3. 匹配成功 → 立即成交(部分或全部)
  4. 匹配失败 → 进入订单簿排队
  5. 排队期间可能被撤销、修改、或者被吃掉
  6. 最终:成交、撤销、或者过期

市价单就简单多了:进来就吃,吃完就撤。但这里有个坑——市价单的成交价格取决于订单簿的深度。如果盘口薄,一个市价单可能吃掉好几个价位,滑点大到你想哭。

核心要点:限价单提供流动性,市价单消耗流动性。做市商赚的就是这个价差。

1.2 订单簿的构建与动态更新

订单簿长什么样?说白了就是一个价格-数量的映射表。买盘(Bid)从高到低排,卖盘(Ask)从低到高排。

我习惯用Python模拟一个简单的订单簿,你感受一下:

class OrderBook:
    def __init__(self):
        self.bids = {}  # 买盘:价格 → 数量
        self.asks = {}  # 卖盘:价格 → 数量
    
    def add_order(self, side, price, qty):
        if side == 'buy':
            self.bids[price] = self.bids.get(price, 0) + qty
        else:
            self.asks[price] = self.asks.get(price, 0) + qty
    
    def remove_order(self, side, price, qty):
        if side == 'buy':
            self.bids[price] -= qty
            if self.bids[price] <= 0:
                del self.bids[price]
        else:
            self.asks[price] -= qty
            if self.asks[price] <= 0:
                del self.asks[price]
    
    def get_top(self, n=5):
        # 返回前n档买卖盘口
        bid_levels = sorted(self.bids.items(), reverse=True)[:n]
        ask_levels = sorted(self.asks.items())[:n]
        return bid_levels, ask_levels

这段代码虽然简单,但核心逻辑都在了。实际生产环境中,订单簿每秒可能更新上千次,所以数据结构的选择很关键。我个人推荐用红黑树或者跳表,Python里可以用sortedcontainers库。

小技巧:做回测时,别用真实订单簿的全部数据,太慢了。我一般只保留前10档,效果已经足够。

1.3 买卖盘口深度分析

盘口深度,就是看买卖双方的力量对比。我常用的几个指标:

指标 计算公式 含义
买卖比 总买量 / 总卖量 >1 表示买方强势
加权深度 ∑(价格 × 数量) / ∑数量 实际成交均价
价差 卖一价 - 买一价 流动性越好,价差越小
深度斜率 相邻档位的数量变化率 判断支撑/阻力强度

举个例子。假设某币的订单簿如下:

卖五: 100.50  200个
卖四: 100.40  150个
卖三: 100.30  300个
卖二: 100.20  100个
卖一: 100.10  50个
-------------------
买一: 100.00  80个
买二:  99.90  200个
买三:  99.80  150个
买四:  99.70  100个
买五:  99.60  50个

你看,卖一只有50个,买一有80个。如果这时候来一个大的市价买单,50个卖一被吃掉后,价格直接跳到100.20。这就是为什么盘口薄的时候,价格波动特别大。

我曾经在ETH上吃过这个亏。当时看到买盘很厚,以为支撑很强,结果一个大户直接砸了5000个ETH的市价单,买盘瞬间被打穿,价格跌了2%。从那以后,我每次看盘口都会算一下「吃掉前3档需要多少资金」。

避坑指南:别只看买一卖一。我曾经以为某币流动性很好,结果发现买一后面全是小单,大单都在更深处。真正的深度要看累计量。

知识体系图

下面这张图,是我自己总结的订单簿微观结构核心逻辑:

订单簿微观结构核心逻辑 订单类型 限价单 市价单 订单簿构建 买盘(Bid) 卖盘(Ask) 动态更新 盘口深度分析 买卖力量对比 流动性评估 买卖比 加权深度 价差 深度斜率 核心逻辑:订单类型 → 订单簿构建 → 动态更新 → 深度分析 关键指标:买卖比、加权深度、价差、深度斜率

这张图把整个逻辑串起来了。你从订单类型出发,经过订单簿构建,再到动态更新,最后落到深度分析。每一步都有对应的指标和策略。

嗯,今天就先聊到这儿。订单簿这东西,越挖越深。你如果刚开始接触,建议先拿模拟盘练手,别一上来就实盘。我见过太多人,连盘口都没看懂就冲进去,结果被市场教育得明明白白。

一句话总结:订单簿是市场的骨架,读懂它,你就能看到资金流动的方向。


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