ARTICLE · 1279182
通达信「妖股起爆」指标源码解读:一行 67 句,真正管用的只有 3 个条件
名字里带「起爆」两个字的指标,最容易让人冲动装上去,听着就像能提前一步抓到要拉的那只票。装完打开副图,画面确实热闹:红绿柱子一排,一黄一蓝两条虚线斜着走,隔一阵还蹦出个「起爆」。
这份《妖股起爆》配了一份副图、一份同名选股,两段源码加起来不到 2,900 个字符,方向却很直白:用 MACD 画出波段结构,再叠一个「低位放量启动」的条件打标记。副图和选股用的条件完全一样,区别是副图把 MACD 那一整套画给你看,选股只留条件。
它值得认真拆一遍,原因不在名字,在写法:整份源码压在一行里,67 条语句拿分号隔开。这种写法最容易藏东西:哪几条在算信号、哪几条只是画图,不逐条对上号根本分不清。而这份公式里,画图的部分占了绝大多数。
我拿 513 只票、最近约 6 年日线(合计 67.6 万个交易日)把条件跑了一遍:起爆条件全部满足的只有 6,841 条,平均每只票每年约 2.2 次。更要紧的是,其中一条过滤条件把高价股几乎整个挡在门外。股价 100 元以上的 22 只样本里,有 10 只从来没出过信号。

图 1|600089 特变电工,2026-05 至 2026-10。上:日 K 与两次起爆标记;下:MACD 柱、DIF、DEA。两根竖虚线就是起爆当日的位置
先看一眼信号长什么样。上面这张窗口里只出现过两次「起爆」,相隔一个月,都是在一段下跌之后。副图里 40 条波段连线和 ADX/PDI 虚线属于纯画图语句,这张图没画,第五节会说明它们为什么会重排。
一、一行 67 句,先分清哪些在「算」、哪些在「画」
原文是一整行,拿分号切开是 67 条语句。配套的选股版只有 12 条,把两版逐条比对,差掉的那 55 条一眼就看明白了:MACD 柱、波段连线、前高前低、K 线重绘,全在副图里,选股里一条没有。
换句话说,副图里那 55 条,删掉不会改变任何一次信号。它们只负责把图形画好看。真正决定出不出信号的,只有这 12 条里的一句话:RVL:=X_3 AND GP AND CBT;
这个结构决定了怎么看它:副图是给你看 MACD 的位置和波段结构,选股才是干活的那一份。如果你只想拿到信号,副图那一整行可以不装。
二、信号由三个条件决定,逐个拆
三个条件分别是 X_3(涨幅够不够)、GP(K 线形态对不对)、CBT(位置够不够低),三者同时成立才叫 RVL。
1. X_3:涨幅 ≥5%,但门槛比 5% 低一点点
写法是 (CLOSE-X_2)*100/X_2>=5-0.01*100/X_2,其中 X_2 是昨收。把右边的 0.01*100/X_2 化简就是 1/X_2,两边同乘 X_2、再除以 100,条件就等价于:今收 ≥ 昨收 × 1.05 − 0.01 元。
那 1 分钱是干嘛的?给报价精度留余量。昨收 10.00 元的票,5% 门槛是 10.50;而 10.49 在软件里显示的是 4.9%,看着没到 5%,按这个写法却算成立。差的就是这一分钱,正好卡在「按分报价」的精度边缘上。
顺便说清一件事:它是「涨 5%」,不是「涨停」。主板 10%、创业板科创板 20%,5% 只是「今天明显在动」的下限。
2. GP:一根上影很小的阳线,加上 RSV 在加速
GP 由三个子条件相乘(AND)而成,写在 KVD2、KVD4、KVD5 三条语句里:
KVD2C/P>1.01 AND HIGH/CLOSE<1.010 AND KVD1>0——涨幅超过 1%、上影不到 1%、当天收涨。翻译过来就是「收在高位、几乎没被砸下来」,一根干净的小阳线。
KVD4 先把 34 日 RSV 取 3 日 EMA,再除以 4,得到 KVD3;要求它单日上升超过 1。因为除过 4,换算回 RSV 就是「一天之内 RSV 上升超过 4 个点」。位置在往上抬,而且抬得不慢。那个「除以 4」纯是为了把曲线压进 0~25,画图好看。
KVD5C/REF(C,1)<1.2——当日涨幅不到 20%,把一字板、连板那种当天根本没机会成交的情况排除掉。
IF(...,91,0)>1——91>1 恒真、0>1 恒假,所以这个 IF 就等于条件本身,那个 >1 是多余的;② KVD1 要求「当天收涨」,但 KVD2 已经要求 C/P>1.01,本来就包含了收涨,KVD1 是冗余条件。写法啰嗦,逻辑没错,不影响结果。3. CBT:位置够低,这一行最需要留神
原式是 CBT:=(SMA(DFV,5,1)+2*STD(CLOSE,37))<50。前半截 SMA(DFV,5,1) 是 37 日 RSV 的 5 日均,取值 0~100,含义清楚:价格在最近 37 天区间里偏低。问题出在后半截 2*STD(CLOSE,37):这是收盘价的 37 日标准差,单位是「元」。
一个 0~100 的百分比,加上一个以元为单位、随股价放大的数,再拿去跟 50 比大小。量纲对不上。结果就是:股价越高,这个和式越大,条件越难成立,到某个价位之后干脆永远不成立。
三、实测:这条 CBT 把高价股整个挡在门外
我按价位分了五档,每档统计三件事:该档 2*STD(CLOSE,37) 的中位数、和式的中位数、以及 CBT 实际成立的比例(样本 514 只、最近 1,500 根日线):

图 3|同一组数据画成柱状:蓝柱是该价位档 CBT 成立的天数占比,红柱是「几乎不再出信号」的股票占比,横轴下方是各档样本只数
两列分开看:一是该档 CBT 成立的天数占比,二是「几乎不再出信号」(成立比例低于 2%)的股票占比。同一档里 2*STD(CLOSE,37) 的中位数从 0.39 一路涨到 38.09,和式中位数从 41.56 涨到 87.85。
5 元以下到 30 元的票,CBT 大约一半到六成的日子成立;一旦股价过百,只剩 17.5%,而且近一半的票从此基本静默。
极端的例子更直白。样本里股价最高的几只,2*STD(CLOSE,37) 的中位数到了 266 甚至 421,光这一项就把和式顶到 300 以上,CBT 的成立比例是 0.0%,装上去永远不会打「起爆」。
为什么会这样:股价翻倍,标准差也翻倍
收盘价的 37 日标准差,量级本来就是「股价的百分之几」。股价 10 元的票,日波动 2%~3%,37 日标准差常在 1~2 元;股价 100 元的票,同样的波动率,标准差就是 10~20 元。乘 2 之后,光后半截就已经吃掉 50 的预算。而公式还要它加上一个 0~100 的 RSV 均值再小于 50。
CBT:=(SMA(DFV,5,1)+2*STD(DFV,37))<50,让两项都用 RSV 的波动率,量纲就统一了;或者干脆把后半截去掉,只留 SMA(DFV,5,1)<50,含义变成「5 日均 RSV 在中位以下」。改哪一版都行,但改完就不是原来那份指标了,信号数量和分布都会变——这一点得说在前面。四、条件漏斗:每一条砍掉多少
把五个条件按顺序套上去,看每一层剩多少。样本 513 只、最近 1,500 根日线(约 6 年),合计 675,527 个交易日:

图 2|五道条件逐层过滤,条长按剩余条数等比缩放。第一刀砍掉九成半,最后一刀(CBT)砍掉一半多
两个数字值得记住。第一,「涨幅 5%」这一个条件就砍掉 94.9%,它决定了信号的上限;第二,CBT 砍掉 56.6%,是第二大过滤器。也就是说,这条件不是「稍微收紧一点」,而是直接决定了六成的去留。偏偏它又是量纲有问题的那一条,这一点值得心里有数。
最终 6,841 条信号落在 501 只票上(占样本 97.7%),平均每只 13.3 条 / 6 年 ≈ 每年 2.2 条;单票最多 64 条,中位 13 条。这个密度适合做选股,一天全市场也就几十条,看得过来;不适合当盯盘提示音。
上面这组数字还有一个口径要交代:全部用本地 vipdoc 日线的原始价、没做除权处理跑的。同一套条件换成前复权数据,最终是 7,167 条、年均 2.3 条,比这里多 4.6%。差别来自等差前复权本身是减法:派息 1 元、原价 10 元,复权后历史价变 9 元,同样涨 5 毛,不复权算 5.0%、复权算 5.6%,更容易碰上 5% 这道门槛。两种口径的层级结构完全一样,结论不受影响,但你自己复现时数字会对不上,先知道原因。
关于 XG 最后那一步
副图里 XG 写的是 BARSSINCEN(RVL,5)=0。BARSSINCEN 的作用是在 N 个周期的窗口里做「首次成立」判定,换成白话:同一个位置连着几天都满足 RVL,只在第一天挂标记,不重复刷屏。不同版本的通达信对这个函数返回值 0 的边界解释略有出入,你装上以后拿几只票对一下标记位置就能确认,但「5 日窗口去重」这个作用是确定的。
如果你自己写选股,XG 直接换成 RVL 也可以,区别只是同一个位置会连续选出来几天。
五、还有一处会变:前高前低跟着新信号挪位置
前面四节说的都是条件:哪三条在算、哪条把高价股挡住了、每条砍掉多少。这一节换个方向,说的是画图。副图里那 40 条 DRAWLINE 靠四个「前高」、四个「前低」定位,而这八个变量是这么算出来的:
基准:=CONST(SUM(VA2,0))——把整段历史上 VA2 成立的次数累加成常数;然后 前高:=基准=SUM(VA2,0) AND VA2 是「最新那个高点」,前高1:=基准-1=SUM(VA2,0) AND VA2 是「倒数第二个」,往后依次类推。
问题在于:只要来一个新的高点,基准就加 1,所有的「前高 1~4」整体往前挪一格,靠它们连出来的黄绿线段会跟着重画。这不是未来函数(每一步都没用到明天),但它意味着你昨天截图上的那条斜线,今天可能已经不在原来的位置了。拿它做形态复盘的话,务必看一下图形是不是被重排过。
同一类的还有 ADX 和 PDI 两条虚线。它们画到 ISLASTBAR 为止,起点的纵坐标是最近一个波段高(低)点的 MACD 值,终点的纵坐标取的是同一个值(REF(MACD,BARSLAST(VA2))),所以这两条线其实是水平的——高度不变,只是末端每天往后延一个交易日,长度会变。看的时候别把它当成「跟着最新价走」的压力位。
六、怎么用:三句话
① 想拿信号,只用选股版。12 条语句,装进「条件选股」;副图那 55 条是画 MACD 波段结构的,跟你今天买不买没关系。
② 高价股自己改 CBT。如果你常做的票在 100 元以上,原样装上去大概率的体验是「一条信号都没有」,先按第三节那两种改法之一动手,再用自己的票池对比信号数量。
③ 别直接把「起爆」当买点。这三个条件只说明「今天涨了 5%、上影很小、RSV 在加速、位置不高」,是一组描述当前状态的数学条件,不是对未来走势的判断。本文也没做收益统计:本地日线没做除权处理,直接算未来涨幅会失真,这种数字不如不给。要评效果,用你自己常做的票池重跑一遍才作数。
七、完整源码
① 副图(67 条语句,一整行)
原文就是一行,由分号分隔,没有做任何断行处理:
② 选股(12 条语句,一整行)
同一套条件,去掉全部画图部分:
' 起' 和 ' 爆' 引号里的空格是原样保留的排版占位,作用是把三个字摆到同一行的不同位置,别手动删掉,删了字会挤在一起。互动问答
使用指标时遇到任何问题(如安装、信号解读等),欢迎在留言区提问,我会第一时间解答。
也可以说说:像 CBT 这种「量纲对不上」的写法,你在别的指标里还见过哪些?
制作不易,麻烦点亮右下角的 "赞" + "在看" 支持一下。
转发给身边朋友,一起交流进步。
喜欢我的分享,记得关注我,持续更新干货。
免责声明
本文所有源码及解读内容仅为通达信公式编程教学,目的在于帮助读者理解指标编写逻辑和函数用法。文中提到的任何指标名称、信号条件、参数设置均不构成任何投资建议。
指标是辅助分析工具,其信号仅反映特定数学条件是否满足,不代表对未来走势的预测。实际使用时请务必结合自身判断和其他分析方法,理性决策。















































































