对角失衡(diagonal imbalance)

对角失衡是跨两个相邻价位计算的足迹图(footprint)失衡:某个价位上在卖价成交的量,不与同一行的买价成交量比较,而是与下方一跳处在买价成交的量比较。这种与 ATAS 联系在一起的约定,把一笔主动单让市场上移一跳时真正碰到的两笔成交放在了一起。

Senzoukria · 术语表 · 更新于 2026 年 9 月


为什么比较要错开一跳

当一个买方在价位 P 吃掉卖盘、市场随之上移时,最后被打掉的那些卖方,原本挂在下方一跳的买盘上。因此,用 ask(P) 去比 bid(P − 1 跳),恰好把主动方的成交与被它压倒的那一侧的成交并排放在一起。卖方失衡的逻辑完全对称:用 bid(P) 去比 ask(P + 1 跳)。这就是 ATAS 推广开来、Senzoukria 也沿用的对角约定背后的道理。

对角与垂直

两种约定谁也不算错。要紧的是图表、回测和写下来的规则用的是同一种,并且不要把在一种约定下算出的结果,拿去和另一种约定下算出的结果作比较。

两种约定读同一根 K 线的方式并不相同
方面对角(ATAS、Senzoukria)垂直(Sierra Chart Numbers Bars 默认)
比较哪两个格子ask(P) 对 bid(P − 1 跳);bid(P) 对 ask(P + 1 跳)同一行上的 bid(P) 对 ask(P)
没有邻居的那一行最低一行不做买方检验,最高一行不做卖方检验每一行都能检验
对价格合并的敏感度高:重新合并会改变哪些对角关系存在较低,但每一行的合计数同样会变
是否需要最小跳动单位需要,价格网格定义了谁是邻居不需要

在 Senzoukria 里

足迹图会在单元格里高亮对角失衡,「Tape & flow」组中的「Diagonal Imbalances」指标则在自己的副图里画出每根 K 线的对角标记个数,并暴露「Ratio k」和「Min qty」两个参数(默认值 3 和 10)。同一个价位可以同时带上买方和卖方标记,每个标记各记一次。如果品种的最小跳动单位未知,该指标不会去猜一个价格网格,而是直接不给数值,因为没有它就定位不了对角上的邻居。

在脚本方面,「Buy imbalances」模板逐个价位从足迹图里读取对角失衡,可以作为一套按逐价位标记来决策的策略的起点。这样的策略需要逐笔数据流:那些只带 OHLC、成交量和 Delta、却没有足迹价位明细的服务端 K 线,喂不动它。

相信一个标记之前要确认的几件事

  • 这根 K 线的价格合并是每行一跳,或者比值已经按当前使用的合并方式重新推导过。
  • 最小成交量是按正在交易的这个合约设定的,而不是从另一个品种那里沿用下来的。
  • 对于中空的 K 线(价格区间内有些价位根本没有成交),处理办法是按 P 减去一个最小跳动单位来定位,而不是找下一个有成交的行。
  • 数据源提供带主动方标记的成交;只有报价更新的数据源根本产生不了足迹图。

其他语言版本

常见问题

对角失衡需要特定的 K 线类型吗?
不需要。只要一根 K 线在每个价位上都有买价成交量和卖价成交量,检验就能跑,无论它是按时间、按笔数、按成交量还是按区间收线。K 线类型会改变每一列承载的成交量,因而也改变比值被触发的频率,所以换 K 线类型时应当重新审视比值和最小成交量。
同一个价位可以既是买方失衡又是卖方失衡吗?
在对角约定下可以。买方检验拿 P 的卖价成交量去比下方的买价成交量,卖方检验拿 P 的买价成交量去比上方的卖价成交量;两个检验用的是不同的邻居,因此可以同时成立。「Diagonal Imbalances」指标把每个标记分开计数,而「Imbalance Levels」指标把这个价位只算一次。

继续阅读