收盘之后想把当天「动静明显大于自身平常水平」的票挑出来放进观察清单,第一件事是把「动静」写成一个数。写不出来,筛选就只能靠翻涨幅榜,翻完也说不清挑的标准是什么。

通达信异动选股公式要解决的就是这一步:把口语里的异动拆成几个能逐日复算的量,再给每个量定一个相对自身的基准。下面按三个量的拆法、阈值的定法、盘中与盘后两条链路的差别讲,最后给一份能直接粘进公式管理器的写法。

一、异动在公式里落成三个可算的量

价格与成交的变化,可以用三个角度描述:变化得快不快、当天摆得宽不宽、量能比平常放大多少。对应的三个量是涨速、振幅、量能比。三个量各自独立,互不替代,一个票可以在振幅很小的情况下量能突然放大,也可以在量能平常的情况下价格短时拉开。

量 算式骨架 回答的问题 依赖的数据
涨速 现价 ÷ N 根前收盘 − 1 价格在短窗口里移动了多少 分钟序列
振幅 (最高 − 最低) ÷ 昨收 当天价格摆动的宽度 当日高低价
量能比 成交量 ÷ 近 N 日均量 成交相对自身平常水平放大了多少 日线成交量

三个量都可以在日线上算,只有涨速必须落到分钟序列上。一条通达信异动选股公式写出来是长是短,取决于你打算把几个量纳入判断,而不是取决于代码的排版。原因很简单:日线一根 K 线已经把一天的波动压成一个收盘价,短窗口的价格移动在日线上被抹掉了。

二、涨速:分子和分母要取同一时点

在 5 分钟周期上写,REF(C,1) 是上一根 5 分钟 K 线的收盘价,也就是 5 分钟前的价格;C 是当前这根已完成 K 线的收盘价。两者相除减一,得到的是 5 分钟窗口的涨速。

{ 5 分钟周期下的短窗口涨速,单位:百分数 }
SPD:=(C/REF(C,1)-1)*100;

窗口拉长就把 REF(C,1) 换成 REF(C,3),得到 15 分钟窗口。这里有一处对称性要守住:分子用已完成 K 线的收盘,分母也用已完成 K 线的收盘。分子改成现价 DYNAINFO(7)、分母仍用上一根收盘,这根 K 线还在走,两次数值就不在同一时点上,算出来的涨速会随刷新跳动。

另一种写法是用行情函数直接取现价与昨收:

{ 以昨收为基准的当日涨速,仅对当日有效 }
SPD2:=(DYNAINFO(7)/DYNAINFO(3)-1)*100;

这一版只在当天有意义,用 DYNAINFO 取的是最新一笔快照,历史 K 线上回看时它返回的是最后一个交易日的值,把序列拉出来看会是一条水平线。做当天盘中筛选可以用,做历史回看不能。

三、振幅:日内高低幅与「相对昨收」是两回事

振幅的常见写法是把当日最高价与最低价相减,再除以昨收:

{ 振幅:日内高低幅相对昨收 }
AMP:(H-L)/REF(C,1)*100;

分母用昨收而不是今开,这一点在跳空开盘的日子差别明显。今天低开 3 个点之后全天在低位窄幅横走,用昨收作分母算出的振幅会把那 3 个点的缺口算进去;用今开作分母,算出来的只是盘中摆动的宽度。两种口径都有人用,混着比较就会得出相反的结论。

还有一种把振幅写成「相对近 N 日均振幅的倍数」,用来描述「今天比平常摆得宽」这件事:

{ 振幅相对近期均值的倍数 }
AMP2:=(H-L)/REF(C,1);
RATIO:AMP2/MA(AMP2,20);

这一版的阈值不能照搬前一种。前一种的数在个位数到十几个点之间浮动,后一种的比值围绕 1 上下摆动,同一个数字放在两套口径里含义完全不同。定阈值之前先把自己用的是哪一版写在公式注释里。

四、量能比:基准日的选择决定结果

成交量放大与否,只有跟自己的过去比才有意义。基准取近 5 日、10 日还是 20 日均量,筛出来的名单能差出几倍。

{ 量能比:当日成交量相对近 N 日均量 }
VR:=V/MA(V,20);

基准窗口短,对突发放量更敏感,也更容易被前几天的异常放量带偏;窗口长,基准更平稳,反应更钝。折中的做法是同时看两个窗口,短窗口放大而长窗口没动,说明这是一次独立的量能变化;两个窗口一起抬起来,说明量能水平整体上了一个台阶,那已经不是单日的异动。

另有一处细节:MA(V,20) 里包含当日。当日放量会把均值本身抬高,量能比被压小一档。想排除当日的影响,把均值改成 REF(MA(V,20),1),用截至昨日的 20 日均量作分母。

量比与量能比不是同一个东西。量比的分母是「过去 5 日平均每分钟成交量 × 当日累计开市分钟数」,带时间进度;量能比的分母是整日均量,不带时间进度。盘中十点半看到量比 3,不代表全天成交量会是均量的 3 倍,那根线还会往下走。

五、把三条并成一组条件

下面这段放在条件选股公式里用,日线周期,三条里满足任意一条就进结果集。它是通达信异动选股公式的一个最小可用版本,只含筛选口径,不含方向判断,也不对结果做排序之外的加工。

{ 异动筛选:振幅、量能、价格移动三条取并集 }
N:=20;
AMP:=(H-L)/REF(C,1)*100;
VR:=V/REF(MA(V,N),1);
SPD:=(C/REF(C,1)-1)*100;
COND:AMP>4 OR VR>2 OR SPD>5;

三处写法值得说明。中间量全部用 :=,不进输出区,选股器只认最后那条 COND。三条之间用 OR 取并集,改成 AND 就变成「同时满足」,筛出的数量会掉一个量级。阈值 4、2、5 是示例值,AMP 与 SPD 的单位是百分数,VR 是无量纲倍数,三类数字不能互换位置。

想按强度排序而不是只取并集,可以把三条换成加权求和,输出一个综合分:

{ 综合异动分:三项各自归一后相加 }
SC:=AMP/4+VR/2+ABS(SPD)/5;
COND:SC>1;

归一化的分母就是各自的阈值,这样三项在「刚好触线」时都贡献 1 分。这种写法的好处是能排序,代价是权重是人定的,换一组分母就是另一套排序,别把分数当成客观刻度。

六、盘中链路与盘后链路

盘中使用,数据源是实时快照加当日已生成的分钟线,DYNAINFO 系列可用,涨速那一条能取到最新的;盘后使用,实时快照停在收盘那一刻,DYNAINFO 返回的就是收盘值,这时用日线字段算更稳。

盘后复盘的落地方式是这样:收盘后跑一遍条件,把结果导成一份名单,与前一日的名单并排,看新进与退出。条件选股 结果窗口支持把结果送到板块或导出,具体入口在不同版本里位置不完全一样,找一个能落地成文件的方式即可。名单进观察清单之后,第二天用同一套条件再跑一遍,观察的是名单的留存,不是单只票的涨跌。

站内 复盘方法与数据工具 里讲名单维护的节奏,通达信选股公式与预警 讲条件选股器的调用与结果落地,两篇与本篇是前后关系。

七、失效场景与边界

停牌复牌的当日。停牌期间没有 K 线,复牌首日的 REF(C,1) 取到的是停牌前最后一个交易日的收盘,中间隔了多久不影响取值。算出来的振幅与涨速会把整段停牌期间的累积变化压进一天,这个数字描述的不是一天的波动。

除权除息日。不复权数据下,除权当日的昨收还是除权前的价格,价格被折算下来,涨速会算成一个很大的负数;振幅与量能比不受这一项影响。做历史回看时把除权日标出来,或者统一切到前复权序列再算。

新股与次新股。上市初期没有 20 日均量,MA(V,20) 在数据不足时返回无效值,量能比那条恒不成立,只剩振幅在起作用。结果集里会混进一批只靠振幅进来的票。

阈值随市场状态漂移。同一组阈值在成交整体萎缩的区间会把结果集缩得很小,在成交放大的区间会膨胀。这不是公式的问题,是固定阈值本身的局限。要缓解,把阈值改成相对全市场同日分布的分位数,代价是公式复杂度上一个台阶。

通达信异动选股公式给出的是「按你定的口径,今天哪些票偏离了自身基准」。它不解释偏离的原因,也不判断偏离之后会怎样。把三个量的口径与基准写进注释,隔一个月回头看还能复算出同样的名单,这套条件才算站住了。

延伸阅读:量价形态与信号拆解 讲量价关系的分解方式,通达信公式编写教程 讲中间量输出与参数化的写法。

本文只作技术研究口径,内容是指标字段的取数与条件写法,不涉及也不构成对任何标的的判断。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。