第十九章:订单流与盘口深度——将Level 2盘口数据与订单流结合,识别隐藏流动性

说实话,做订单流交易做到一定程度,你会发现一个尴尬的事:

光看逐笔成交和Delta,你只能看到「已经发生的事」。但真正的大资金在动手之前,往往会先「藏」一手。它们把大单拆成小单,挂在盘口的各个价位上,等着你去撞。

这就是隐藏流动性。

我早年做量化的时候,吃过一次大亏。当时一个品种Delta持续为正,我无脑做多,结果被一根大阴线直接打穿止损。后来复盘才发现,盘口的卖二到卖五堆满了挂单,但成交明细里根本看不到大单——人家用的是冰山订单。

从那以后,我就把Level 2盘口数据和订单流绑在一起看了。

19.1 为什么盘口深度能帮你发现「假象」?

Level 2数据,说白了就是能看到「排队的人」。

普通行情只给你看最优买卖价,但Level 2能告诉你:

  • 每个价位上挂了多少钱
  • 这些挂单是主动撤单还是被动成交
  • 大单是真实意图还是虚晃一枪

你想想看,如果卖一挂了100手,卖二挂了500手,卖三挂了2000手。这时候突然卖三的2000手撤了——这不是巧合,这是有人在「试盘」。

核心逻辑:

盘口深度 + 订单流 = 识别「真买真卖」与「假挂假撤」

Delta告诉你谁在主动进攻,盘口告诉你谁在埋伏。

19.2 隐藏流动性的三种常见形态

我根据实战经验,把隐藏流动性归纳为三类。嗯,这里要注意,每种形态对应的策略完全不同。

形态 盘口特征 订单流特征 我的应对
冰山订单 某个价位挂单量突然减少,但成交后挂单量不变 Delta连续为正,但大单不出现 跟随Delta方向,但止损设窄
虚假深度 大单挂出后快速撤单,反复出现 Delta与价格反向 反向开仓,吃撤单的流动性
吸筹式堆积 盘口买卖价差缩小,中间价位挂单密集 小单频繁成交,大单不显 等待突破,跟随堆积方向

我记得有一次做螺纹钢,盘口买二到买五全是1000手以上的挂单,但价格就是不跌。我盯着Delta看,发现虽然卖单主动,但每次打到买二就弹回去。后来我明白了——那些买盘是「真金白银」在接,卖盘是「纸老虎」在吓人。

19.3 如何用Python计算「盘口压力/支撑强度」

光靠肉眼盯盘口,迟早瞎掉。我习惯把盘口数据量化成几个指标:

import pandas as pd
import numpy as np

def calc_depth_pressure(bids, asks):
    """
    bids: 买单深度,格式 [(price, size), ...]
    asks: 卖单深度,格式 [(price, size), ...]
    返回:压力比、支撑比、深度不平衡度
    """
    # 计算前5档的总挂单量
    bid_volume = sum([size for _, size in bids[:5]])
    ask_volume = sum([size for _, size in asks[:5]])
    
    # 压力比 = 卖盘 / 买盘
    pressure_ratio = ask_volume / (bid_volume + 1e-8)
    
    # 支撑比 = 买盘 / 卖盘
    support_ratio = bid_volume / (ask_volume + 1e-8)
    
    # 深度不平衡度:正数表示买盘强,负数表示卖盘强
    imbalance = (bid_volume - ask_volume) / (bid_volume + ask_volume)
    
    return {
        'pressure_ratio': round(pressure_ratio, 2),
        'support_ratio': round(support_ratio, 2),
        'imbalance': round(imbalance, 4)
    }

# 示例数据
bids = [(100.0, 500), (99.9, 800), (99.8, 1200), (99.7, 600), (99.6, 400)]
asks = [(100.1, 300), (100.2, 700), (100.3, 1500), (100.4, 900), (100.5, 200)]

result = calc_depth_pressure(bids, asks)
print(result)
# 输出:{'pressure_ratio': 0.86, 'support_ratio': 1.16, 'imbalance': 0.074}

这个 imbalance 值,我一般设个阈值:超过0.2算强买盘,低于-0.2算强卖盘。但注意,别只看绝对值——趋势中的 imbalance 和震荡中的 imbalance 意义完全不同。

19.4 订单流 + 盘口深度的「双确认」信号

我个人最常用的策略,是等两个条件同时满足才动手:

  1. 订单流信号:Delta连续3根K线为正,且累积Delta突破前高
  2. 盘口信号:卖盘压力比持续下降,且买一挂单量开始增加

为什么会这样?因为大资金进场前,通常会先「清场」——把对手方的挂单吃掉,然后自己再挂上新的单子。如果你只看到Delta为正就追进去,很可能追在高点。

实战技巧:

我曾经在股指期货上吃过这个亏。后来我加了一个过滤条件:只有当盘口「卖一」的挂单量小于「买一」挂单量的80%时,才考虑进场。这个简单的规则,帮我过滤掉了至少30%的假突破。

19.5 识别「虚假深度」的算法

虚假深度是高频做市商常用的手法。它们会在某个价位挂出大单,吓唬散户,然后迅速撤单。怎么识别?

我写了个简单的检测函数:

def detect_fake_depth(depth_snapshots, threshold=0.3):
    """
    depth_snapshots: 连续的快照数据,每个快照包含 bids 和 asks
    threshold: 挂单存活时间阈值(秒)
    返回:疑似虚假深度的价位列表
    """
    fake_levels = []
    
    for i in range(1, len(depth_snapshots)):
        prev = depth_snapshots[i-1]
        curr = depth_snapshots[i]
        
        # 检查卖盘:上一秒有大单,下一秒消失了
        for price, size in prev['asks']:
            if size > 500:  # 大单阈值
                # 检查当前快照中该价位是否还存在
                curr_sizes = [s for p, s in curr['asks'] if abs(p - price) < 0.01]
                if not curr_sizes or curr_sizes[0] < size * 0.1:
                    fake_levels.append({
                        'price': price,
                        'removed_size': size,
                        'type': 'ask_fake'
                    })
        
        # 同理检查买单
        for price, size in prev['bids']:
            if size > 500:
                curr_sizes = [s for p, s in curr['bids'] if abs(p - price) < 0.01]
                if not curr_sizes or curr_sizes[0] < size * 0.1:
                    fake_levels.append({
                        'price': price,
                        'removed_size': size,
                        'type': 'bid_fake'
                    })
    
    return fake_levels

这个算法不复杂,但很实用。我把它跑在历史数据上,发现大部分虚假深度出现在开盘前15分钟和收盘前15分钟——嗯,这两个时间段流动性最差,也最好骗。

19.6 知识体系总览

下面这张图,是我自己整理的知识框架。每次做策略迭代前,我都会拿出来看一眼,防止自己跑偏。

订单流 + 盘口深度:隐藏流动性识别框架 Level 2 盘口数据 订单流数据 (Delta) 挂单量分布 撤单频率检测 累积Delta 压力比 / 支撑比 深度不平衡度 隐藏流动性识别:冰山 / 虚假深度 / 吸筹堆积 双确认交易信号 → 执行

19.7 避坑指南

最后,说几个我踩过的坑:

⚠️ 我曾经犯过的错:

  • 别迷信盘口挂单量:有一次我看到买一挂了3000手,以为支撑很强,结果那是人家用程序挂的「托单」,一成交就撤。后来我加了「挂单存活时间」这个维度,低于3秒的挂单直接忽略。
  • Delta和盘口要同步看:单看Delta容易追涨杀跌,单看盘口容易被假深度骗。我现在的策略是:Delta给出方向,盘口给出「这个方向是否可信」的验证。
  • 注意时间窗口:同样的盘口结构,在开盘、盘中、收盘意义完全不同。我习惯把一天分成4个时段,分别训练不同的参数。

隐藏流动性这个东西,说白了就是大资金和散户之间的信息差。你如果能通过Level 2数据把它识别出来,就等于戴了一副透视眼镜在看市场。嗯,剩下的就是纪律和执行力了。

我的建议:

刚开始练的时候,别急着实盘。找一段历史数据,把盘口快照和订单流回放出来,手动标记「疑似隐藏流动性」的位置。练上100个案例,你自然就有感觉了。


无相订单流研究社 微信Lucian808555