16. 堆叠(Stacking):连续小单的堆叠,堆叠的方向判断,堆叠后的爆发
做订单流分析久了,你会发现一个很有意思的现象:
大单进场,往往不是直接砸出来的。
真正的主力,不会傻到用一笔大单把价格打穿。他们更喜欢拆单——把一个大单拆成几十笔、上百笔小单,然后连续不断地往一个方向堆。这就是我们今天要聊的堆叠(Stacking)。
核心定义:堆叠,指的是在短时间内,同一方向(全是买单或全是卖单)的小额订单连续出现,形成一种“叠罗汉”式的挂单结构。它反映的是资金的持续流入或流出,而非单次冲击。
16.1 堆叠的本质:拆单的艺术
我刚开始做量化的时候,总盯着大单看。觉得只要抓到一笔500手的买单,行情肯定要涨。结果呢?经常被假突破打脸。
后来我才明白,真正聪明的资金,用的是“蚂蚁搬家”的策略。
你想想看,如果你是一个手握几千万资金的机构,你想买入1000手。你会怎么做?
- 方案A:直接挂一笔1000手的市价单。结果:盘口瞬间被打穿,价格跳涨,你买在了最高点,还暴露了意图。
- 方案B:拆成100笔10手的小单,每隔几秒挂一笔。结果:价格缓慢抬升,市场以为只是散户在买,你悄悄完成了建仓。
堆叠,就是方案B的盘口表现。
我个人习惯:在分析堆叠时,我一般不看单笔成交量的大小,而是看“连续同向小单”的密度和频率。密度越高,频率越快,说明资金越急迫。
16.2 堆叠的方向判断:买堆 vs 卖堆
判断堆叠的方向,其实很简单。你只需要盯着逐笔成交明细或者订单簿的挂单变化。
我总结了一个“三连法则”:
- 连续三笔以上:同一方向的订单,中间没有反向订单打断。
- 单笔量小:每笔单量不超过该品种平均单量的30%。
- 时间间隔短:每笔之间的时间间隔不超过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分钟还没有爆发,说明主力可能改变了计划,或者遇到了更强的对手盘。这时候要警惕反转。
- 陷阱三:忽略大环境。如果整个市场都在下跌,你看到一个买堆就冲进去,很容易被埋。堆叠是微观结构,不能对抗宏观趋势。
总结一句话:堆叠是主力的“脚步声”。听到脚步声,不要急着开门,先听清楚是上楼还是下楼,再决定要不要跟。