16. 堆叠(Stacking):连续小单的堆叠,堆叠的方向判断,堆叠后的爆发

做订单流分析久了,你会发现一个很有意思的现象:

大单进场,往往不是直接砸出来的。

真正的主力,不会傻到用一笔大单把价格打穿。他们更喜欢拆单——把一个大单拆成几十笔、上百笔小单,然后连续不断地往一个方向堆。这就是我们今天要聊的堆叠(Stacking)

核心定义:堆叠,指的是在短时间内,同一方向(全是买单或全是卖单)的小额订单连续出现,形成一种“叠罗汉”式的挂单结构。它反映的是资金的持续流入或流出,而非单次冲击。

16.1 堆叠的本质:拆单的艺术

我刚开始做量化的时候,总盯着大单看。觉得只要抓到一笔500手的买单,行情肯定要涨。结果呢?经常被假突破打脸。

后来我才明白,真正聪明的资金,用的是“蚂蚁搬家”的策略。

你想想看,如果你是一个手握几千万资金的机构,你想买入1000手。你会怎么做?

  • 方案A:直接挂一笔1000手的市价单。结果:盘口瞬间被打穿,价格跳涨,你买在了最高点,还暴露了意图。
  • 方案B:拆成100笔10手的小单,每隔几秒挂一笔。结果:价格缓慢抬升,市场以为只是散户在买,你悄悄完成了建仓。

堆叠,就是方案B的盘口表现。

我个人习惯:在分析堆叠时,我一般不看单笔成交量的大小,而是看“连续同向小单”的密度和频率。密度越高,频率越快,说明资金越急迫。

16.2 堆叠的方向判断:买堆 vs 卖堆

判断堆叠的方向,其实很简单。你只需要盯着逐笔成交明细或者订单簿的挂单变化

我总结了一个“三连法则”:

  1. 连续三笔以上:同一方向的订单,中间没有反向订单打断。
  2. 单笔量小:每笔单量不超过该品种平均单量的30%。
  3. 时间间隔短:每笔之间的时间间隔不超过3秒。

满足这三点,基本就可以判定为一次堆叠行为。

堆叠类型 盘口表现 市场含义
买堆(Buy Stack) 连续出现主动买入的小单,卖一价被不断吃掉,价格缓慢上移。 主力正在吸筹,后续大概率上涨。
卖堆(Sell Stack) 连续出现主动卖出的小单,买一价被不断砸穿,价格缓慢下移。 主力正在出货或砸盘,后续大概率下跌。
假堆(False Stack) 看似连续同向,但中间夹杂着大单反向对冲。 可能是对倒或洗盘,需要警惕。

我曾经踩过的一个坑:有一次我看到连续10笔买单堆叠,以为要爆发了,直接追了进去。结果价格没涨,反而跌了。后来复盘发现,那10笔买单虽然方向一致,但每笔的挂单价格都在不断抬高,而且卖盘上出现了更大的挂单。这其实是主力在“诱多”——用小单拉高价格,吸引跟风盘,然后大单砸盘出货。

教训:堆叠的方向判断,不能只看成交方向,还要看挂单的厚度变化。如果买堆出现时,卖盘挂单反而在增加,那就要小心了。

16.3 堆叠后的爆发:量变到质变

堆叠本身不是交易信号,它只是“蓄力”的过程。真正的爆发,发生在堆叠结束的那一刻。

为什么会爆发?

因为堆叠消耗了对手方的流动性。当买单连续堆叠时,卖一、卖二、卖三的挂单会被一点点吃掉。等到卖盘被吃得差不多了,只要再来一笔稍微大点的买单,价格就会瞬间跳空。

我把它叫做“弹簧效应”

  • 堆叠的过程,就像在压弹簧。你每压一下(每笔小单),弹簧就收紧一点(流动性减少)。
  • 当弹簧压到极限(卖盘被吃光),只要轻轻一松手(一笔大单),弹簧就会弹飞(价格爆发)。

爆发点识别:

  • 堆叠后的第一笔大单:如果堆叠结束后,紧接着出现一笔超过平均单量3倍以上的同向大单,这就是爆发信号。
  • 盘口厚度突变:堆叠过程中,如果对手方的挂单突然变薄(比如从100手变成10手),说明流动性枯竭,爆发一触即发。
  • 时间窗口:堆叠持续的时间越长,爆发后的力度越大。但超过30秒的堆叠,反而可能失效(主力在拖延时间)。

16.4 实战案例:一次完整的堆叠爆发

我记得有一次做螺纹钢期货的夜盘,当时价格在3800附近震荡。我注意到一个现象:

  • 从21:30开始,连续出现了12笔主动买单,每笔只有5-10手。
  • 卖一价从3800被慢慢吃到3798,但价格并没有快速下跌。
  • 我看了下卖盘的挂单,发现卖二到卖五的挂单量在逐渐减少。

嗯,这就是典型的买堆。我当时判断,主力在吸筹。

果然,到了21:35,最后一笔10手买单吃掉卖一后,紧接着一笔200手的买单直接打穿了卖二和卖三。价格瞬间从3798跳到了3810。

这就是堆叠后的爆发。

我的操作习惯:遇到这种堆叠结构,我不会在堆叠过程中进场。我会等堆叠结束,看到那笔“引爆大单”出现后,再追进去。虽然成本高了一点,但确定性更高。

16.5 堆叠的量化识别(代码示例)

下面是一个简单的堆叠识别逻辑,用Python伪代码表示。实际使用时,你需要根据品种调整参数。

def detect_stacking(trade_ticks, window=5, volume_threshold=0.3):
    """
    检测堆叠行为
    :param trade_ticks: 逐笔成交数据,每笔包含 [时间, 价格, 成交量, 方向(1买/-1卖)]
    :param window: 连续同向笔数阈值
    :param volume_threshold: 单笔量阈值(相对于平均单量)
    :return: 堆叠信号列表
    """
    signals = []
    consecutive_count = 0
    current_direction = 0
    avg_volume = calculate_avg_volume(trade_ticks)
    
    for i in range(len(trade_ticks)):
        tick = trade_ticks[i]
        direction = tick['direction']
        volume = tick['volume']
        
        # 判断是否同向
        if direction == current_direction and volume < avg_volume * volume_threshold:
            consecutive_count += 1
        else:
            # 重置计数
            if consecutive_count >= window:
                signals.append({
                    'start_index': i - consecutive_count,
                    'end_index': i,
                    'direction': current_direction,
                    'count': consecutive_count
                })
            consecutive_count = 1
            current_direction = direction
    
    return signals

注意:这个代码只是一个基础框架。在实际交易中,你还需要考虑:

  • 过滤掉盘口撮合时的“被动成交”(比如你的挂单被吃掉,不算主动堆叠)。
  • 结合订单簿的挂单变化,判断堆叠是否有效。
  • 不同品种的参数差异很大。螺纹钢的堆叠阈值和股指期货完全不同。

16.6 堆叠的常见陷阱

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

  • 陷阱一:只看堆叠,不看位置。堆叠在支撑位和阻力位的意义完全不同。在支撑位出现买堆,是强信号;在阻力位出现买堆,可能是诱多。
  • 陷阱二:堆叠时间过长。如果堆叠持续超过1分钟还没有爆发,说明主力可能改变了计划,或者遇到了更强的对手盘。这时候要警惕反转。
  • 陷阱三:忽略大环境。如果整个市场都在下跌,你看到一个买堆就冲进去,很容易被埋。堆叠是微观结构,不能对抗宏观趋势。

总结一句话:堆叠是主力的“脚步声”。听到脚步声,不要急着开门,先听清楚是上楼还是下楼,再决定要不要跟。

堆叠(Stacking)核心逻辑流程图 连续小单堆叠 方向判断 买堆(Buy Stack) 卖堆(Sell Stack) 卖堆(Sell Stack) 流动性枯竭 + 对手盘挂单变薄 价格爆发(Breakout) 堆叠 → 方向判断 → 流动性消耗 → 爆发