夜雨聆风学习资料网

ARTICLE · 1234353

通达信「炸板破位」指标源码解读:摸板未封之后的缩量阴跌破位逻辑

通达信「炸板破位」指标源码解读:摸板未封之后的缩量阴跌破位逻辑

通达信公式源码解读 ·

这个公式叫「炸板破位」,字面已经把两件事说完了:炸板是涨停被砸开、收盘没封住;破位是之后某天收盘第一次跌到炸板那天的收盘价下面。我先说结论:它是卖点,不是买点,名字听着像抓机会,实际用途是提示风险。

更要紧的一点是,我把它放到全市场跑了三年数据,发现它提示得偏晚:炸板当天收盘买入,往后 5 天中位数跌 3.66%;等它这个破位信号出来时,相对炸板日收盘中位只又跌了 1.45%,信号之后再往后 20 天,中位跌 1.27%。换句话说,最疼的那一跌在炸板当天就发生了,这个指标确认的是「已经坏了」,不是「快要坏了」。

一、这个指标在做什么?(整体逻辑速览)

一共 11 行,按语义归成 7 层,从「这个代码能涨多少」一路推到「今天破不破位」:

① 资格层:按代码前缀分三类,决定这只票的涨跌幅幅度是 10%、20% 还是 30%

② 幅度层:用嵌套 IF 把三类落成一个具体百分比,第四档给 100,等于把不认识的代码全部屏蔽掉

③ 标定层:用 ZTPRICE / DTPRICE 算出涨停价、跌停价,再把「涨停」「跌停」「炸板」三个状态标出来

④ 定位层:BARSLAST(ZB) 算出「距今最近一次炸板是几天前」,记为 ZBN

⑤ 破位层:今天收阴,收盘第一次跌到炸板日收盘价下方,并且从炸板后第一天到今天,每一天的量都小于炸板日、每一天的收盘都低于炸板日最高、全程没有涨停也没有跌停;同时把炸板钉在 4 到 14 个交易日这个窗口里

⑥ 阳线层:炸板那天本身必须收阳,把一字板开盘就被砸下来的那种排掉

⑦ 静默层:炸板之前的 10 个交易日里,没有涨停、没有炸板、没有跌停

一句话概括:找那种「冲板没封住、之后缩量阴跌、最后一天跌破炸板日收盘」的票,用来提示走弱,而不是用来找买点。

二、逐层拆解

下面我按语句顺序拆开讲。每处贴出来的代码都是原文里的整行(连续几行就是连着几行),我只做了分段,没有增删任何一个字符、也没有改动行序;完整原文在第七节,要复制请用那一份。

第1层:先判断这票一天能涨多少

SH:=CODELIKE('60') OR CODELIKE('00');SZ:=CODELIKE('30') OR CODELIKE('68');SS:=CODELIKE('9');

三行分别对应三类板块。这里有个容易看错的地方:SH 判的是 60 和 00,SZ 判的是 30 和 68。名字是按「当初写代码的人怎么想的」起的,不是按交易所分的,深市主板的 00 被归到了 SH 名下,沪市的 688 科创板被归到了 SZ 名下。名字无所谓,真正起作用的是那个百分比:主板 10%,创业板和科创板 20%。

第三行 SS 只判「9 开头」,意图应该是北交所的 920 开头,但 900 开头的沪市 B 股也会命中。这一点后面第五节会讲后果。

第2层:把三类落成一个数

X1:=IF(SH,0.1,IF(SZ,0.2,IF(SS,0.3,100)));

嵌套 IF 一路问下去:是 SH 就 0.1,不是再看是不是 SZ,是就 0.2,再不是就看 SS,是就 0.3,最后兜底给 100。

这个 100 不是「100%」,是「永远不可能」。因为下一层会拿昨收乘 1.1 或 1.2 去比,乘 101 倍的价格当然没人能达到,所以任何不在前三类的代码,涨停、跌停、炸板三个状态全是 0,整个公式对它静默。这算是一种便宜的「白名单」写法,比在每个条件后面都加一次代码判断省事。

第3层:标出涨停、跌停、炸板

ZT:=C=H AND C>=ZTPRICE(REF(C,1),X1);DT:=C=L AND C<=DTPRICE(REF(C,1),X1);ZB:=C<H AND H>=ZTPRICE(REF(C,1),X1);

三行结构一样,都是「价格贴着某一边 + 越过阈值」的组合:

ZT 涨停:收盘等于最高(C=H),并且收盘不低于涨停价。两个条件缺一不可,只满足价格不满足封在最高,就不算涨停

DT 跌停:收盘等于最低,并且收盘不高于跌停价

ZB 炸板:收盘低于最高,并且最高摸到了涨停价。也就是「盘中打到过涨停,但没封住」

ZTPRICE(昨收, 幅度) 是通达信自带函数,返回按昨收算出来的涨停价,内部已经做过四舍五入到分,比自己写 昨收*1.1 稳,不会出现 11.0300000001 这种浮点尾巴。我复算时按「昨收×(1+幅) 四舍五入到分」对齐这个口径,全市场 327.1 万根日线跑下来,标出的涨停占 1.17%、跌停占 0.53%、炸板占 0.61%,量级和常识对得上。

第4层:算出炸板过去几天了

ZBN:=BARSLAST(ZB);

BARSLAST(ZB) 给出「最近一次炸板距今天几根」,这个数在公式里被用在三处,改动之前得先分清动的是哪一个:

① 当窗口卡尺:ZBN>3 AND ZBN<15,把可用的炸板限定在第 4 到第 14 个交易日。这是整套条件里唯一管时间的。

② 当回溯偏移:REF(C,ZBN) 取回炸板日收盘价,它是后面判断「有没有跌破」的基准线。这个基准不是均线、不是前高,就是炸板那天的收盘

③ 当区间长度:EVERY(...,ZBN) 检查炸板次日到今天,正好 ZBN 根,不含炸板日本身

三处挂在同一个数上,所以窗口一改是三个地方一起动,不是一个。同一只票如果在窗口内又炸一次板,ZBN 会从 0 重新开始计,前一次作废——BARSLAST 只记最近一次,这是它的定义决定的。

从没炸过板的票不需要额外排除:那种情况下这个取值会让后面两条同时落空,公式自己就把它挡掉了。

第5层:破位那一条,重点是 CROSS 的两条腿

XG:CROSS(REF(C,ZBN),C) AND C<O AND EVERY(V<REF(V,ZBN) AND C<REF(H,ZBN) AND ZT=0 AND DT=0,ZBN) AND ZBN<15 AND ZBN>3

这一行是整个公式的核心,也是最容易看错的一句。前面 CROSS(REF(C,ZBN),C) 字面上像「炸板日收盘上穿今天收盘」,但 CROSS(A,B) 的定义是「A 今天在 B 上方,昨天在 B 下方」,而 A 本身是 REF(C,ZBN),它会随 ZBN 一起动。

关键在于昨天的 ZBN 比今天小 1,所以昨天那根算出来的 REF(C,ZBN) 往回退的格数也少 1,退到最后正好还是炸板日那根收盘。把这层绕过去的算术摊开,这一句等价于:

今天收盘 < 炸板日收盘,并且昨天收盘 > 炸板日收盘

也就是首次跌破,不是「已经在下面」。这也是为什么它不会每天都亮,只在跌破那一下提示一次。如果价格弹回炸板日收盘上方、再跌下来,它还会再提示一次,实测同一个炸板事件最多提示 3 次。

后半段 EVERY(...,ZBN) 是「最近 ZBN 根全部满足」。因为炸板日就在 ZBN 根之前,所以这个区间正好是炸板次日到今天,不含炸板日本身。区间里要求四件事:量小于炸板日、收盘低于炸板日最高、没有涨停、没有跌停。

再往后 C<O 是今天必须收阴,ZBN<15 AND ZBN>3 是把窗口卡在 4 到 14 天,太近(1 到 3 天)不算破位,太远(15 天以上)就说明这事儿已经过去了。

第6层:炸板那天本身得是阳线

AND REF(C>O,ZBN)

REF(C>O,ZBN) 回看炸板日,要求那天收盘高于开盘。这条容易漏读,但它排掉了一类票:一字板开盘就被砸下来的。那种炸板日虽然也摸了板,但收盘远低于开盘,是纯出货形态,跟「冲高回落但仍收阳」不是一回事,公式选择不要。

第7层:炸板之前那 10 天要安静

AND REF(EVERY(ZT=0 AND ZB=0 AND DT=0,10),ZBN+1);

REF(EVERY(...,10),ZBN+1) 这个偏移量要算一下:从今天往回退 ZBN+1 根,正好落在炸板日的前一天;在那一天再看它往前 10 根,就是炸板之前的 10 个交易日。这 10 天里不能有涨停、不能有炸板、不能有跌停。

这条的意思是:炸板要从「平静」里突然冒出来,而不是连续涨了半个月、天天摸板之后的一次炸板。前者是突然启动,后者是击鼓传花的末尾,公式只认前者。

三、把时间轴摊开:信号要求的是哪几天

设炸板日为第 -ZBN 天,信号日为第 0 天,公式要的形态是这样:

第 -ZBN-10 天 ~ 第 -ZBN-1 天:安静期。10 个交易日里没有涨停、没有炸板、没有跌停

第 -ZBN 天(炸板日):盘中摸到涨停价,收盘没封住(收盘低于最高),但当天仍是阳线;这一天放出的量,是后面所有天的比较基准

第 -ZBN+1 天 ~ 第 -1 天:回调期。每天的成交量都小于炸板日,每天的收盘都低于炸板日最高价,全程没有涨停也没有跌停。这段时间里价格可以在炸板日收盘上方晃,也可以已经跌破,公式不管

第 0 天(信号日):收阴,并且收盘第一次跌到炸板日收盘价下方。昨天收盘还在上方,今天到下方,这一下才算成立

ZBN 只能取 4 到 14。也就是说炸板之后第 1、2、3 天跌破不算,第 15 天及以后跌破也不算。这个窗口是公式的硬设定,我原样复现,没有改动。

顺带说一句:这个形态在时间上有个隐含的不对称。炸板日之后最多可以磨 14 天,而公式要求这 14 天里一天都不能放量。一旦某天量超过炸板日,这只票就直接被排除,后面再跌破也不算信号。所以真正能走到信号这一步的样本,本来就少。

四、实践图鉴:1012 次信号长什么样

5,583 只票、327.1 万根日线逐根跑完,一共出 1,012 次信号。下面 4 张图全部原样取自这些信号,涨的和跌的都在,没有只挑好看的。

图 1|1,012 次信号按月分布

它不是只在暴涨月才冒出来的东西。31 个月里几乎月月都有,最多的是 2024-12 的 76 次,最少只有 1 次,前三个月加起来也只占全部的 20%。这一点和很多形态类指标不一样,那些指标在大盘普涨时会出现几百次,平时一次没有,本质是在追同一个日子。

但分年看差别很大:2024 年 268 次、20 日后的中位 -3.67%;2025 年 477 次、中位 +0.52%;2026 年 251 次、中位 -2.38%。同一个形态,2025 年之后用和 2024 年用,结果不一样。所以这个指标单独看信号是不够的,还得看当年是不是在做多头。

下面三张图,每张只讲一件事。看图时留意三个标注:① 橙色虚线是炸板日,② 蓝色虚线是出信号那天,③ 橙色点线是炸板日收盘价,也就是「跌破」这条线本身。

图 2|中视传媒 600088,2024-12-04,收盘 17.74 元

一次标准形态。11-22 摸到涨停后没封住,当天收盘 17.78 元,量放到 35 万手左右,是前后两周里最大的一根。之后一路缩量横着走,每天的收盘都压在炸板日的最高价之下。12-04 收阴、跌破 17.78,当天量只有炸板日的 30.8%。八天后才破位,正好落在 4 到 14 天窗口的中间。

图 3|电光科技 002730,2024-12-13,收盘 8.32 元

这一张要说的是「缩量」有多要紧。炸板日收 8.43 元,之后的 11 个交易日收盘都压在炸板日最高价 8.84 元之下,量也一路收了下来。12-13 破位那天,成交量只剩炸板日的 19.6%,是整段里最干的一天。之后 20 个交易日涨了 67.43%,20 日内最高收盘比信号日高 105%。这是 1,012 次里排得上号的一次。

图 4|长海股份 300196,2026-06-29,收盘 29.16 元

同样的形态,破位那天带着量,结果反过来了。炸板日收 31.90 元,之后回调期间量始终没真正缩下去,破位那天成交量还有炸板日的 71.2%,收盘 29.16 元,已经比炸板日低了 8.59%。后面 20 个交易日跌了 41.56%,一路上没有像样的反弹。

图 3 和图 4 并排放,形态几乎一样:都是摸板未封、都是回调后收阴跌破、都落在 4 到 14 天窗口内。唯一的硬差别就是破位那天缩没缩量。形态成立不等于会涨,这条比形态本身更值得记住。

图 5|按破位当日量能分三组,信号后 20 日的中位涨跌

一张图说不算,把全部信号摊开分三组,方向是一致的:破位当天量缩到炸板日 30% 以下的 240 次,20 日后中位 +0.57%、上涨占比 52.5%;30% 到 45% 的 445 次,中位 -0.63%;超过 45% 的 311 次,中位 -3.09%、上涨占比只有 38.3%。三档单调,中间没有跳档。

所以这个指标真正能用的地方不在「破位」两个字,而在于破位那天有没有量。同一套条件筛出来的票,缩量的和放量的,后面完全是两回事。这一点公式本身没有区分,得自己加一层。

还有一件必须提前说清楚的事:均值和中位数是反的。1,012 次信号往后看 20 个交易日,中位是 -1.27%,均值却是 +1.09%。差这么多,是右尾太长:涨幅最大的那两次(+158.41% 和 +137.82%)都在放量破位那一档,但把它们剔掉,均值也只从 +1.09% 降到 +0.80%,离中位 -1.27% 还很远——顶起均值的是整条右尾,不是这两笔。按中位数读,它是偏负的;按均值读,好像还能赚。这种分布下均值没有参考价值,看中位数。

五、实测数据与使用注意(必看)

5.1 多少炸板能走到破位

取本地通达信日线:沪市主板与科创板 2,323 只、沪市 9 字头 44 只、深市主板 1,498 只、创业板 1,413 只、北交所 357 只,剔除上市不足 60 根日线的,实际参与 5,583 只、327.1 万根日线,每只取最近 600 根。逐根复算结果:

层
命中
说明
炸板(ZB 为真)
19,502
占全部日线的 0.61%,这是分母
落在 4~14 天窗口内
174,402
炸板后第 4 到第 14 天的「天数」累计,不是事件数
+ 全程缩量且无涨跌停
81,816
砍掉 53%
+ 收阴且首次跌破
2,060
再砍掉 97%,破位这一条最狠
+ 炸板日是阳线
1,573
再砍 24%
+ 前置 10 天安静
1,012
最终信号数,对应 835 个不同的炸板事件

换个角度算:19,502 次炸板里,只有 835 次的后续走势符合这套条件,占 4.3%。剩下 95.7% 的炸板,要么量没缩下来,要么在窗口内没跌破,要么跌破时不够干净(区间里又出了涨停跌停)。

5.2 信号出在什么位置,之后怎么走

1,012 个信号的时点特征:

相对炸板日收盘:中位 -1.45%,25% 分位 -2.59%,75% 分位 -0.67%;80.3% 的信号跌破幅度在 3% 以内,多数只是「刚破一点」

信号日成交量 / 炸板日成交量:中位 37.7%,量已经缩到炸板日的三分之一

距 20 日均线乖离:中位 +2.65%,也就是破位时价格还在 20 日均线上方

前 60 日涨幅:中位 +9.48%,25% 分位 -2.63%,75% 分位 +25.75%,炸板之前多数已经涨过一段

信号之后的收益,和另外两组做对照(单位 %,中位数):

组
样本
5 日
10 日
20 日
20 日上涨占比
全样本日线
3,237,261
-0.22
-0.22
-0.20
49.0%
全部炸板日收盘买入
19,353
-3.66
-4.37
-4.19
38.1%
其中「后来真出了信号」的那 835 次
835
-1.16
-1.80
-2.27
39.7%
炸板破位信号日
1,011
-0.33
-0.06
-1.27
45.5%

这张表是我看完之后最想让你记住的东西。炸板当天收盘买入,往后 20 天中位跌 4.19%,只有 38.1% 能上涨,这是「炸板」这件事本身的平均伤害。但能走到信号的那 835 次炸板,同样在炸板日买入,20 天中位只跌 2.27%,本身就比全部炸板抗跌一半。再到信号日买入,20 天中位只跌 1.27%。

三段连起来读:伤害最大的那一段在炸板之后、信号出现之前,而这一段指标不会提示你。等这七层条件全凑齐、信号亮起来,跌得最狠的时候已经过去了。所以它更像「事后确认」,不是「事前预警」。

5.3 使用注意

1. 这是卖出/回避信号。20 日中位 -1.27%、上涨占比 45.5%,都弱于全样本的 -0.20% 和 49.0%,方向对,但幅度有限。别把它当抄底信号用,也别在它亮起来的时候去接。

2. 主板 ST 股不出信号。主板 ST 的涨跌幅是 5%,公式给 60 和 00 开头一律按 10% 算,5% 的涨幅永远碰不到 10% 的涨停价,所以 ZB 恒为 0,这是结构性盲区。创业板 ST 不一样:注册制之后涨跌幅仍是 20%,公式给的也是 0.2,涨停价算得对,照样能出信号。我没有把 ST 单独拆出来统计,所以这里不给具体数字。

3. 北交所大部分代码被屏蔽。SS:=CODELIKE('9') 只认 9 开头,所以北交所只有 920 开头的票能命中,43、83、87、88 开头的全部落到 X1=100 那一档,涨停价算成 101 倍,静默处理。

4. 9 开头有个误判。沪市 900 开头的 B 股也会命中 SS,被按 30% 算涨停价,而 B 股实际是 10%。结果是 B 股一律不出信号。对做 A 股的人没影响,但你如果拿它去扫全市场,这两类会静默消失,别以为是数据缺了。

5. 创业板按 20% 算,只适用于 2020-08-24 之后。在那之前创业板是 10%,拿老数据回测会漏掉大量炸板。我这轮取最近的 600 根日线,不涉及这段历史。

6. 同一个炸板事件最多提示 3 次。835 个事件里有 164 个提示了 2 到 3 次,原因是价格弹回炸板日收盘上方之后又跌破了一次。如果你拿它做条件选股,同一天同一只票只会出现一次,不用担心重复,但统计信号数时会重复计数。

7. 没有未来函数。全篇只用 REF、BARSLAST、EVERY 这类只看历史的函数,CROSS(REF(C,ZBN),C) 里的 ZBN 也是当天就能确定的,不存在引用未来数据。

8. 窗口上限 14 天,超时不再提示。但破位之后继续跌的情况当然存在,公式只是把「确认点」放在 4 到 14 天这个区间里。超过 14 天才跌破的票,形态上已经很弱,公式不再管。

9. 复制时数一下行数。最后那句 XG 在原文里被拆成三行、末尾用 AND 连着,粘进通达信时容易在换行处丢字符。粘完数一遍:一共 11 行,最后一行以分号收尾。

六、这套写法里值得单独记住的四点

1. ZTPRICE / DTPRICE 代替手算涨跌停价:这两个函数内部已按交易所口径取整到分,自己写乘 1.1 很容易在第三位小数上判错,尤其是低价股,一分钱的误差就让涨停判不出来。

2. 嵌套 IF 用一个极大的兜底值实现白名单:最后一档给 100,等于把不认识的代码全部关掉,比在每条后面加代码判断干净得多。这招在任何需要「只对某类标的生效」的指标里都能用。

3. BARSLAST 定位事件,比 HHVBARS 更直白:前者是「上次条件成立距今几根」,后者是「上次极值距今几根」,要做事件驱动型的条件,用 BARSLAST 不用绕。

4. 量能比较的基准要选对:这里用 REF(V,ZBN),即「炸板那一天的量」,而不是「昨天的量」。缩量这件事,跟自己比一天说明不了问题,跟事件当天比才有意义。

七、完整源码(原样,复制前先对照上方解读)

选股+副图一体化源码,共 11 行。放进「条件选股公式」盘后海选,或放进「技术指标公式 - 副图」看图,都是这一份。

SH:=CODELIKE('60') OR CODELIKE('00');SZ:=CODELIKE('30') OR CODELIKE('68');SS:=CODELIKE('9');X1:=IF(SH,0.1,IF(SZ,0.2,IF(SS,0.3,100)));ZT:=C=H AND C>=ZTPRICE(REF(C,1),X1);DT:=C=L AND C<=DTPRICE(REF(C,1),X1);ZB:=C<H AND H>=ZTPRICE(REF(C,1),X1);ZBN:=BARSLAST(ZB);XG:CROSS(REF(C,ZBN),C) AND C<O AND EVERY(V<REF(V,ZBN) AND C<REF(H,ZBN) AND ZT=0 AND DT=0,ZBN) AND ZBN<15 AND ZBN>3AND REF(C>O,ZBN)AND REF(EVERY(ZT=0 AND ZB=0 AND DT=0,10),ZBN+1);

以上为原文原样,未改一字、未动一行、未并句。最后那句 XG 在原文里就是断成三行的,我照着保留了。复制进通达信后如果出现问号或乱码,说明中间被编辑器吃掉了字符,请重新复制。

互动问答:

使用指标时遇到任何问题(如安装、信号解读等),欢迎在留言区提问,我会第一时间解答。

也可以说说:你会在什么情况下把这类「确认型」信号接在自己的离场规则后面。

制作不易,麻烦点亮右下角的 "赞" + "在看" 支持一下。

转发给身边朋友,一起交流进步。

喜欢我的分享,记得关注我,持续更新干货。

免责声明

本文所有源码及解读内容仅为通达信公式编程教学,目的在于帮助读者理解指标编写逻辑和函数用法。文中提到的任何指标名称、信号条件、参数设置均不构成任何投资建议。

指标是辅助分析工具,其信号仅反映特定数学条件是否满足,不代表对未来走势的预测。实际使用时请务必结合自身判断和其他分析方法,理性决策。

相关学习资料