同一句「振幅大于某值」,两个人写出的结果集可以完全对不上。一个写的是当日振幅,取这一根 K 线自己的最高价与最低价作差;另一个写的是 N 日平均振幅,把窗口内若干根 K 线的波幅先各自算出来再取平均。通达信振幅选股公式的第一道分岔就在这里:不是条件写错了,是分母和窗口不是一回事。下面先拆定义式,再讲窗口的三种取法、与换手率的组合,最后给出把结果集对回来的办法。

一、振幅的定义式:分子固定,分母决定口径

振幅的写法可以统一到一个形状上:

振幅 = (最高 - 最低) / 基准
{ 三种基准的对照:分子同,分母不同 }
振幅前收:(H-L)/REF(C,1);                 { 基准 = 前一收盘 }
振幅均线:(H-L)/MA(REF(C,1),20);          { 基准 = 前收均线 }
振幅均价:(H-L)/(REF(AMOUNT,1)/REF(VOL,1));  { 基准 = 前一均价 }

分子这一层没有争议,都是当日最高价 H 与最低价 L 的差,也就是最高与最低之间的绝对差值。有分歧的是分母。基准选前一收盘、选前收的均线、还是选当日均价,同一个高点算出来的振幅就不是同一个数。

取前一收盘是一个通行写法,用 REF(C,1):它的含义是这一根 K 线的波动相对上一根收盘价展开。取前收均线,分母变成一段时间的收盘均值,单根基准的抖动被抹平,振幅随之变得平稳。取当日均价,用 REF(AMOUNT,1)/REF(VOL,1) 这一类推算,衡量的是相对成交重心的偏离。

基准这一层属于指标口径问题。本篇只用它定条件的分母,不重复展开波动率与标准差的计算。

二、窗口的三种取法:当日、N 日均与区间累计

定了分母之后,第二个岔口是窗口:你是只看当前这一根,还是看一段时间,还是看一整段区间的累计。三种取法回答不同的问题。

当日振幅 (H-L)/REF(C,1) 反映单根 K 线的波动幅度,是一个瞬时量。N 日平均振幅 MA((H-L)/REF(C,1),N) 把窗口内的单根振幅做一次平均,条件命中的是「这一段时间整体波动处在什么水平」,而不是「今天跳了多少」。区间累计振幅 (HHV(H,N)-LLV(L,N))/REF(C,N) 取窗口内最高价的最大值与最低价的最小值作差,再除窗口前一根的收盘价,度量的是整段区间从最高到最低铺开的幅度,与逐根平均是两回事。

{ 窗口三取法 }
振当日:(H-L)/REF(C,1);
振均N:MA((H-L)/REF(C,1),N);
振区间:(HHV(H,N)-LLV(L,N))/REF(C,N);

同一个 N 换档,结果集会跟着换。N 取 5 时窗口短,均值和区间累计都贴合最近的几根 K 线;N 取 20 时窗口最长,单根大波动被摊薄,均振幅的数值被拉低,区间累计的最大最小差反而被拉大。落到结果集上,N 越大,符合条件的 K 线越少,曲线越平滑。

窗口 度量的东西 N 增大时的走向
当日 单根 K 线的波动幅度 不受 N 影响,逐根独立
N 日均 窗口内波幅的平均水平 更平滑,数值被拉低,命中减少
区间累计 区间内最高到最低的总铺开 极差拉大,命中减少

三种取法不必二选一。可以先写一条当日振幅卡当根的瞬时波动,再写一条 N 日均振幅卡这段时间的整体水平。串的时候窗口参数要对齐,混用 N=5 与 N=20 时,记录里要标清哪一条用了哪一档。

三、与换手率的组合:两个维度的叠加

通达信振幅选股公式本身只度量价格这一路。把它与换手率放在一起,是在两个维度上各加一道条件:振幅是价格波幅,换手率是成交占流通盘的比例,前者看波动,后者看成交。两个维度互不替代。

叠加的方式是把两条判定用 AND 连起来,各自给一个阈值。波动这一路用振幅条件,成交这一路用换手率条件,两者同时成立才算命中。得到的结果集是两者的交集,比单用振幅收窄一层。

叠加的顺序不影响交集大小,影响的是排查路径。宽条件先放,例如只判 VOL>0 排除无成交的 K 线;窄条件后放,例如换手率的区间判定。

换手率的取数口径与流通盘的来源站内另有文章讲过,本篇不重复。这里只把它当成与振幅并列的另一路条件,组合写法与前面一致。

还有一层要留意:两条条件的窗口要对齐。振幅用 20 周期时,换手率的均线窗口也取同一档;一边用 5、一边用 20,结果集里会混进「短期活跃但长期平淡」与「长期活跃但短期平淡」两类,实际口径已经不一致。

四、结果集复核:先挂副图,再逐条对

条件选股跑完,结果集只是一行行的代码。要确认它真的对上,把振幅条件挂到副图上看。做法是自己画一条振幅线,用 : 输出,让它变成副图上一条可见的曲线;再把条件写得窄一点,只让振幅落在区间内的 K 线取真值,一条真假线同样输出。两条线叠在同一张副图上,就能看到命中信号落在哪几根 K 线上。

{ 副图复核用:一条振幅线 + 一条真假线 }
振值:(H-L)/REF(C,1);
达标线:振值>0.03 AND 振值<0.08;

读这张副图时看三件事:真假线取真值的位置是不是落在振幅曲线的区间里;区间的上下沿是不是你设定的那个数;相邻两根 K 线之间有没有整段的空白。

接下来与条件选股的结果集逐条对照。把副图上取真值的那几根 K 线的日期抄下来,再去条件选股的结果列表里比对,两边同一天的根数应当一致。对不上时,问题出在三个位置:窗口参数、数据范围、复权设置。

不一致的表现 先查哪一处 核对办法
副图上一段连续 K 线都达标,选股结果里只有零散几根 窗口参数 对比副图用的 N 与选股公式里的 N 是否为同一档
某段时间副图有值、选股结果里整段空白 数据范围是否含停牌 看那段区间有没有停牌日,停牌日的 K 线在选股里是否被排除
同一根 K 线两边数值对不上 是否复权 把副图与选股的复权设置统一,再重跑一次

数据范围这一项容易被跳过。条件选股里可以限定市场、板块与上市时间,这些限定同样会改动结果集;副图不带这些限定,两边不对等时,先看条件选股的范围设置。复权设置同理:前复权与不复权跑同一组条件,最高价与最低价的取值不同,振幅跟着变。

五、边界声明:阈值是过滤口径的选择

把上面几层收一收。通达信振幅选股公式的用法,归到一句话:先定分母,再定窗口,最后把参数写进记录。三处里任何一处改动,结果集都会换一批。振幅是波动幅度的度量,它回答的只有一个问题:这段价格有没有落在你设定的波动区间里。阈值定得宽还是窄,是过滤口径的选择,跟任何标的都没有关系。

条件成立与否,说的是波动落在区间内还是区间外,不指向方向。参数这一层要写得住:同一段行情里,当日振幅与 20 日均振幅给的是两套数,一个逐根跳动、一个抹平抖动。把 N 的取值、分母的取法、组合里其余条件的窗口一起记下来,换一台机器重跑,才能得到同一批结果。

下面这段把三种写法与一组组合条件放在一起,可以整段贴进公式编辑器编译。三处除法都做了防零:REF(C,1) 为 0 时用 IF 兜住,分母换成一个极小值,避免除零结果把整条线打成空值。

{ 通达信振幅选股公式:三种窗口 + 组合条件 }
N:=20;
基准:=MAX(REF(C,1),0.001);
振当日:(H-L)/基准;
振均N:MA((H-L)/基准,N);
振区间:(HHV(H,N)-LLV(L,N))/MAX(REF(C,N),0.001);
振达标:振均N>0.02 AND 振均N<0.06;
选条件:振达标 AND VOL>0;

四种表达式里,前三条分别对应当日、N 日均与区间累计三取法,第四条把均振幅的区间判定与成交量非零的判定连起来。要落到条件选股里跑,把最后一行改成一行布尔表达式;要挂副图看曲线,保留前面的 : 输出行。

本文只作技术研究口径,不涉及也不构成对任何标的的判断。

站内相关内容:通达信选股公式与预警(条件筛选、结果集复核与预警用法)、通达信指标原理(口径、均值与分母的取法)、通达信信号拆解(把条件拆成中间量逐级核对)。

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