单看一只标的的区间涨跌幅,说明不了它是强还是弱。强弱是比较出来的产物,拿谁做基准,结论就跟着换。通达信强弱度指标公式要把这一步写成可计算的横截面口径:先定基准,再选比值型或排名型,最后落到一张按周维护的记录表。下面按基准选择、两种口径、公式写法、记录模板、常见误用、下一步动作六节展开。
一、基准选择:大盘指数、行业指数与自选池均值
基准是强弱口径里的第一个变量。同一个区间里,把基准从大盘指数换成行业指数,再换成一批自选对象的均值,同一批对象的相对位置会重新排一遍。基准一变,强弱排序跟着变,这是横截面口径的固有性质,与计算步骤是否写对无关。三种基准各自回答一个不同的问题,选哪一种由观察目的决定,不由读数大小决定。
大盘指数做基准,回答的是对象相对整个市场的区间表现。它的取数口径统一,跨对象可比,适合看对象与整体环境偏离了多少;代价是行业之间的差异被抹平,处在整体偏弱环境里的对象会被基准抬到一个偏高的位置。
行业指数做基准,回答的是对象相对本行业的位置。行业整体的涨落先被扣掉,剩下的差额更接近对象在行业内部的相对位置;代价是行业划分与指数编制口径要固定下来,同一条记录不能中途更换行业归属,否则前后两段落在不同的分母上,读出来的数值不可比。
自选池均值做基准,回答的是对象相对一批自定义对象的位置。均值由使用者自己算,池子成分一变,基准就变,历史记录的可比性随之下降;好处是池子可以按同一个观察目的来组,排名型的口径天然落在池子层面。
三种基准的用法是先固定一种、写进记录表,换基准时另开一列,不要在原来的序列上覆盖数值。
二、两种口径:比值型与排名型
通达信强弱度指标公式在算出基准之后要选一种口径,比值型与排名型回答的是两个不同的问题。
比值型把对象的区间涨跌幅与基准的区间涨跌幅相减或者相除。相减得到区间相对差额,单位与涨跌幅一致,正负号说明跑在前面还是落在后面;相除得到一个比值,跨区间长度比较时更稳定,代价是基准涨跌幅接近零时读数会被放大。
排名型把同一池子里的对象按区间涨跌幅排一遍,再看目标对象排在第几位、落在什么分位上。它回答的是在这批对象里处在什么位置,与基准本身涨了多少无关;池子成分调整之后名次跟着变,前后两期不能直接比。
两者的取舍按问题来定:要知道相对基准差了多少,用比值型;要知道在池子里排第几,用排名型。两类读数各占一列,不要拿比值型的数值去补排名型空缺的那一格。
三、公式写法:基准取数、区间起点与归一化
通达信强弱度指标公式落到源码,是三件事:基准怎么取、区间起点怎么取、归一化怎么做。基准取数用取大盘指数的函数写法,例如 INDEXC 一类,函数名与参数以本机函数说明为准,不要照抄别处的版本写法。
区间起点用 REF 往前取 N 根。REF 的第二个参数写 20,表示往前 20 根 K 线;对象与基准共用同一个 N,两边区间长度才对得上,否则差值里混进了长度差。
归一化把两边的量纲拉齐。对象与基准都写成「当前值减起点值,再除以起点值」,结果是小数形式的区间涨跌幅;两者相减得到强弱读数,末尾乘一个常数把读数放到便于观察的量级,输出成一条线。
{通达信强弱线:基准取数 + 区间起点 + 归一化输出}
N := 20; {区间长度:对象与基准共用同一个 N}
JD := INDEXC; {基准取数:取大盘指数收盘,写法以本机函数说明为准}
JD0 := REF(JD, N); {基准区间起点:往前取 N 根}
BZDF := (JD - JD0) / JD0; {基准区间涨跌幅,写成小数}
C0 := REF(C, N); {对象区间起点:同一个 N}
BDDF := (C - C0) / C0; {对象区间涨跌幅,写成小数}
QR := BDDF - BZDF; {比值型口径:对象减基准}
QRX : QR * 100; {归一化输出一条强弱线,零轴为分界}
末尾乘的这个常数只改变读数的量级,不改变相对位置,写 100 与不写常数,顺序结果一致。写完先在公式管理器里点「测试公式」,确认编译通过;再把它挂到副图,与直接在主图上算出的两条区间涨跌幅对照一遍,看读数是否一致。INDEXC 在不同版本里的支持范围有差异,取不到基准数据时改为在主图加载对应指数,具体以本机函数说明为准。公式文件位于本机公式目录 T0002 之下,改名或者删除后引用处随之失效。
四、复盘记录模板:字段与两列分开
记录表要让两次观察之间的变化能被单独读出来。字段分成两类:一类描述当次的横截面状态,一类描述相对上一次记录的变化,两类各占自己的列。
| 日期 | 基准 | 对象区间涨跌幅 | 基准区间涨跌幅 | 差值(当次) | 分位(当次) | 较上次变化方向 |
|---|---|---|---|---|---|---|
| 2026-03-06 | 行业指数 | 0.041 | 0.012 | 0.029 | 0.82 | — |
| 2026-03-13 | 行业指数 | 0.017 | 0.026 | -0.009 | 0.63 | 下降 |
| 2026-03-20 | 行业指数 | 0.055 | 0.021 | 0.034 | 0.90 | 上升 |
表头的读法要固定下来。差值(当次)与分位(当次)是当次记录的值,较上次变化方向是相邻两期之间的方向,两者分列,不把当前值与变化量写进同一格。日期列按周递增,基准列只在切换的那一行改字,同一列里不允许前一半写行业指数、后一半写大盘指数。同一行里两列的来源也要各记一份,分位列来自公式输出,变化方向列来自与上一行的回填对照,来源不同就不合并。
区间长度也要写进表头或者备注。区间长度相同的两行,差值可以直接横向比较;起点不同的两行放进同一张表,读出来的变化里混着区间长度的影响。做法是把 N 写进表头,两行的 N 不一致就先补齐长度再比较。
五、常见误用:三种会让序列失真的做法
强弱读数是相对位置,不是方向信号。把一条落在零轴上方的强弱线当成方向信号,是把横截面口径当成了时间序列上的走向读数,两者用的数据不同;强弱线只回答相对基准处在什么位置。
中途更换基准会让序列断成两段。前一段按行业指数算,后一段按自选池均值算,两段的零轴含义不同,连起来会看到一个并不存在的跳变。处理办法是换基准时另起一列或者另起一张表,并在记录里注明切换日期。
区间起点不同却放在一张表里比较,是第三种。差值本身带着区间长度的信息,起点从月初挪到月中,读数会跟着挪;要做横向比较,先把 N 固定成同一个值,再排进同一列。
六、把这张表按周固定下来
下一步动作:把这张记录表按周固定下来,每周同一时间取一次数,先跑一遍历史区间核对口径。做法是挑一段已经走完的历史区间,用同一组参数把基准取数、区间起点、归一化三步各跑一遍,把结果与用行情数据手工算出的区间涨跌幅逐行对照;对不上的行先查基准取数是否取到了对应指数,再查 REF 的 N 与表头的区间长度是否一致。
核对通过之后,记录表按周追加行,基准一列只在切换时改字,差值列与分位列分开填写,变化方向一列只写相邻两期之间的方向。这样一张表读下来,任意一周的位置与这一周相对上一周的变化可以拆开看。通达信强弱度指标公式要做的是把这一步变成可以复算的写法,表能不能用,取决于基准与区间这两处口径有没有一直保持一致。
本文只作技术研究口径,不涉及也不构成对任何标的的判断。
站内还有 复盘方法与数据工具 的条目,指标原理 里讲基准与取数的机制,公式编写教程 里讲 REF 与输出语句的写法,可对照查看。
