第一章:市场微观结构基础

做量化交易这些年,我越来越觉得一个道理:不懂订单簿,就别谈高频交易。说白了,订单簿就是市场的「心跳图」。你连心跳都看不懂,怎么判断市场是死是活?

这一章,咱们就聊聊订单簿、买卖盘口、撮合引擎这些最底层的东西。嗯,内容有点干,但都是硬货。

1.1 订单簿(Order Book)原理

订单簿是什么?我习惯把它想象成一个「电子记账本」。所有交易者的挂单,都记在这个本子上。买单记左边,卖单记右边。

举个例子。假设现在有几个人想买BTC:

  • A想以100元买1个
  • B想以99元买2个
  • C想以98元买3个

同时有人想卖:

  • X想以101元卖1个
  • Y想以102元卖2个
  • Z想以103元卖3个

把这些数据排好,就是订单簿。买价从高到低排,卖价从低到高排。为什么?因为买方想低价买,但为了成交,得报高价;卖方想高价卖,但为了成交,得报低价。市场就是这么博弈的。

核心要点:订单簿的本质是「价格-数量」的二维映射。每一档价格对应一个累计委托量。

1.2 买卖盘口(Bid/Ask)机制

盘口,就是订单簿最前面那几档数据。Bid是买方最高价,Ask是卖方最低价。

我刚开始做交易系统时,犯过一个低级错误:只看Bid和Ask的价格,忽略了数量。结果有一次,Bid挂了1000手大单,我以为支撑很强,结果瞬间被砸穿。后来才明白——盘口深度比价格更重要

盘口的关键指标:

  • Bid/Ask价差:价差越小,流动性越好。比如价差0.01元,说明市场很活跃。
  • 盘口深度:每个价位上的挂单量。深度越厚,越不容易被操纵。
  • 买卖比例:买盘总量和卖盘总量的比值。比值大于1,说明买方力量强。

我的经验:做策略时,别只看第一档。我习惯看前五档的累计量。有时候第一档只有10手,但第二档有1000手,那才是真正的支撑位。

1.3 撮合引擎工作流程

撮合引擎,就是交易所的「心脏」。它负责把买单和卖单配对。流程其实不复杂:

  1. 接收订单:用户提交买单或卖单
  2. 价格优先:买单价高者先成交,卖单价低者先成交
  3. 时间优先:同价格,先到先得
  4. 数量匹配:找到对手单,按最小数量成交
  5. 更新订单簿:成交后,删除或修改剩余订单

举个例子。假设当前订单簿:

方向 价格 数量 时间
100 10 09:00:01
99 5 09:00:02
101 8 09:00:03
102 12 09:00:04

现在来了一个买单:价格101,数量5。撮合引擎会怎么做?

它会先看卖一价101,有8个在卖。价格匹配,成交5个。剩余3个继续挂着。就这么简单。

注意:我曾经遇到过一个问题——撮合引擎的延迟。如果延迟超过1毫秒,在高频交易中就可能被套利。所以,撮合引擎必须用C++或Rust写,Java都不行。

1.4 市场深度与流动性

市场深度,说白了就是「你能在不影响价格的情况下,买多少或卖多少」。深度越深,流动性越好。

我习惯用「深度图」来看市场。深度图就是把订单簿的累计量画成曲线。X轴是价格,Y轴是累计量。曲线越陡,说明深度越浅;曲线越平,说明深度越深。

这里我画了一张深度图的SVG,帮你直观理解:

市场深度图示例 累计量 价格 低价 高价 当前价 买方深度 卖方深度 价差

你看这张图。绿色是买方深度,红色是卖方深度。中间那个缺口就是价差。缺口越小,流动性越好。曲线越平缓,深度越厚。

流动性的衡量指标:

  • 买卖价差:越小越好。比如0.01元比0.1元好。
  • 订单簿深度:前五档的总量。总量越大,越不容易滑点。
  • 成交速度:市价单能在多少毫秒内成交。越快越好。

避坑指南:我曾经在流动性差的币种上做策略,结果一个市价单下去,价格直接滑了2%。从那以后,我每个策略都会加一个「最小深度检查」——如果前五档总量小于某个阈值,就拒绝交易。

1.5 实战:如何用订单簿数据做策略

光说不练假把式。我分享一个我常用的策略思路:

订单簿失衡策略

原理很简单:当买盘深度远大于卖盘深度时,说明买方力量强,价格大概率上涨。反之亦然。

具体做法:

  1. 实时获取订单簿前五档数据
  2. 计算买盘总量和卖盘总量
  3. 计算比值:买盘总量 / 卖盘总量
  4. 当比值大于1.5时,做多;小于0.67时,做空

代码示例(伪代码):

def order_book_imbalance(order_book):
    bid_volume = sum(order_book['bids'][i]['qty'] for i in range(5))
    ask_volume = sum(order_book['asks'][i]['qty'] for i in range(5))
    
    ratio = bid_volume / ask_volume
    
    if ratio > 1.5:
        return 'BUY'
    elif ratio < 0.67:
        return 'SELL'
    else:
        return 'HOLD'

这个策略我实盘跑过,胜率大概在60%左右。但要注意,它只适合流动性好的品种。比特币、以太坊这些主流币效果不错,小币种就别用了。

总结一下:订单簿是市场的「显微镜」。看懂它,你就能看到别人看不到的交易机会。但记住——数据是死的,策略是活的。别迷信任何一个指标,多结合盘口变化和成交量来判断。


专注资料整理