通达信RPS变红指标公式源码 – 扩展数据从搭建到每日刷新

通达信没有内置 RPS 指标,那条会变红的相对强度线要自己搭:先建涨幅公式,再用扩展数据生成横向排名,最后把零到一千的排名值除以十画成曲线。本文给出可直接粘贴的源码、参数设置口径、变红的两种写法,以及每天收盘后必须走完的刷新步骤。

结论先行:RPS 是拼出来的,软件不自带

在通达信里输入「RPS」,默认什么都不会出现。这个指标要靠三步拼装:先用一个公式算出每只股票的区间涨幅,再用扩展数据把全市场(或自定义板块)的涨幅横向排名、归一化成零到一千,最后用一个显示公式把排名值除以十,画成零到一百的曲线,超过阈值的那一段染成红色。

通达信RPS变红指标公式源码 - 扩展数据从搭建到每日刷新

三步缺一不可。只写显示公式,取不到数据;只做扩展数据,K 线图上什么都看不见;忘了每天刷新,看到的还是昨天的排名。下面按顺序拆开讲。

三步结构对照

步骤做什么关键设置产出
一、涨幅公式算个股区间涨跌幅参数 N 对应周期一个可被引用的技术指标
二、扩展数据对板块内全部品种算该指标并排名精确复权、生成横向排名、零到一千归一化零到一千的排名值
三、显示公式引用排名值并画线EXTDATA_USER 序号对应数据行零到一百的 RPS 曲线
四、选股公式批量筛出强势股阈值判断条件选股结果

第三、四步建立在第二步之上,序号对不上就会取到别的数据。这是新手最容易出错的地方。

第一步:建涨幅指标

打开公式管理器(快捷键 Ctrl+F),选技术指标公式,新建,名称随意,比如 EXTRS,画线方法选副图,参数区加一个参数 N,最小 1,最大 250,缺省 120。代码只有一行:

ZF:(C-REF(C,N))/REF(C,N);

含义是当前收盘价减去 N 日前的收盘价,再除以 N 日前的收盘价,得到区间涨跌幅。这个值本身有正有负,还不能叫 RPS,它只是排名的原料。

有人会把它写成百分比形式再乘一百,没必要。扩展数据只关心排序,量纲不影响名次。

第二步:扩展数据,把涨幅变成排名

在键盘上输入 .902,进入扩展数据管理器。选中第一行,点修改,逐项设置:

技术指标公式选刚建好的 EXTRS;计算参数填 120,对应半年;计算时段选本地所有数据;计算品种选自定义板块里的「上市一年以上」(没有就自己建一个,把新股排除掉);勾选精确复权;勾选生成横向排名数据;排名方法选零到一千归一化顺序。

设完第一行,用同样的办法设第二行,参数改成 250,对应一年。想要更短的周期,再加一行填 20。三组数据必须各占一行,不能挤在同一行里改参数,否则后设的会覆盖前设的。

「计算品种」这一项决定了排名的比较范围。选全市场,得到的是全 A 排名;选自定义板块,得到的是板块内排名。两者的数值不能混着看,一个 RPS 九十在全 A 里和在某个小板块里,含金量完全不同。

「精确复权」必须勾。除权除息的股票如果不复权,涨幅会被除权缺口拉出一个假跌,排名自然失真。

「零到一千归一化顺序」也必须选。选成自然顺序,得到的是名次本身(比如第三百名),除以十以后是三十,画出来的线完全没有意义。

第三步:显示公式,让线变红

再新建一个技术指标公式,名称比如「股价相对强度」,画线方法选副图。最简版本是这样:

U1:=EXTDATA_USER(1,0); RPS120:U1/10,LINETHICK2,COLORWHITE; U2:=EXTDATA_USER(2,0); RPS250:U2/10,LINETHICK2,COLORYELLOW;

EXTDATA_USER 的第一个参数是扩展数据的行号,第二行写 2,第三行写 3,必须与第二步的设置一一对应。第二个参数写 0 表示取当天的值。

除以十是因为扩展数据存的是零到一千的归一化排名,十除以十得一百,正好落在零到一百的常用刻度上。如果第二步选了零到一百的归一化,就不用再除,两个口径不能混用,混用会画出「RPS 等于九百多」这种明显不合理的线。

变红的两种写法

第一种是条件染色,只把超过阈值的那一段画成红色:

RPS120:U1/10,LINETHICK2,COLORWHITE; IF(RPS120>=90,RPS120,DRAWNULL),LINETHICK2,COLORRED;

DRAWNULL 的意思是「这里不画」,所以线在九十以下保持白色,一旦上穿九十就变红,跌破又恢复。这种写法的好处是拐点一目了然。

第二种是画参考线,在图上加几条水平虚线:

强势线90:90,COLORRED,DOTLINE; 中位线50:50,COLORGRAY,DOTLINE;

这种写法不改变曲线颜色,只给一个视觉标尺。两种可以同时用,也可以把整条线固定染成红色——那只是换个颜色常量,与「变红」的判断逻辑无关。

阈值取多少没有统一标准,八十、八十五、九十都有人用。欧奈尔原著里的相对强度用的是百分位排名,一年期为主,国内常见的做法是加一条一百二十日线做中期参考。

顺带配一个选股公式

显示公式只管看,想批量筛出来还得建条件选股公式。在公式管理器里选条件选股公式、其他类型、新建,代码一行就够:

EXTDATA_USER(1,0)>900;

这里写九百而不是九十,因为选股公式直接读扩展数据的原始值,没有经过显示公式里的除以十。写成九十,等于把门槛降到 9 分,全市场几乎都能选出来,这是很常见的低级错误。

要长短周期共振,就用 AND 连起来:

EXTDATA_USER(1,0)>900 AND EXTDATA_USER(2,0)>900;

建好之后走「条件选股」,选公式、选板块、执行,结果会列在选股结果窗口里。选股只是把候选缩到几十只,后面还得自己看形态和基本面。

为什么每天都要刷新

扩展数据是本地计算的结果,不会自动跟着行情更新。收盘后的固定顺序是:先在系统菜单里做盘后数据下载,补齐当日日线;再进 .902 点全部刷新;刷新完成后打开个股 K 线,副图才是当天的最新排名。

三步的顺序不能颠倒。先刷新后下载,算的是旧数据;下载了不刷新,图上还是昨天那条线。很多人说「RPS 不准」,一半以上是漏了这一步。

第一次搭建时还要注意历史数据长度。扩展数据要覆盖「本地所有数据」,如果本地只有一两年日线,算二百五十日排名时早期的值会缺失,表现为一串零或空白。先去盘后数据下载里把起始时间往前调,一次性补足。

参数与读法

二十日、一百二十日、二百五十日三条线,分别对应短、中、长三个观察窗口。常见读法是:短线快速上穿九十,说明近期资金关注度突然抬升;长线稳定在九十上方,说明这只票在过去一年里持续跑赢绝大多数标的;三条线同时站上九十,属于长短周期共振,趋势的稳定性相对更高。

读的时候要记住一件事:RPS 描述的是「过去一段时间的相对涨幅排名」,它不含任何对未来方向的判断。排名高只说明过去强,不说明接下来还会强;排名低也只说明过去弱,不代表一定反弹。把它当强度尺,不要当买卖信号。

常见问题

1. 刷新后 RPS 全是零或空白怎么办?

先查两处:本地日线数据是否足够长,扩展数据有没有勾「生成横向排名数据」。前者导致早期值缺失,后者导致整列没有结果。

2. 数值波动很大、明显不准是什么原因?

多数是没勾精确复权,除权除息把涨跌幅算歪了;其次是排名方法选成了自然顺序,或者计算品种选错,把不同板块混在一起排。

3. 换了电脑,指标全没了?

扩展数据存在本地,不随公式一起同步。换机器或重装软件后要重新设置 .902 的每一行,再重新刷新。公式本身可以导出备份。

4. 能不能不建扩展数据,直接写公式算排名?

不能。普通指标公式只能逐只股票计算,拿不到全市场的横向排序;横向排名必须借助扩展数据这个功能。

5. 选全 A 还是自定义板块?

看用途。做全市场强度排序选全 A;做行业内比较,把板块设成对应行业,得到的是行业内的相对强度。两者别混用,也不要拿不同板块的数值横向对比。

避坑:五个容易踩的坑

第一,行号错位。显示公式里写 EXTDATA_USER(1,0),扩展数据第一行却放的是二百五十日参数,画出来的线和预期对不上。

第二,口径混用。扩展数据用零到一千归一化,显示公式却按零到一百处理,或者反过来,数值会差十倍。

第三,板块里混进新股与退市股。新股上市初期涨幅极端,会把排名整体推高;建议单独建「上市一年以上」的板块作为计算品种。

第四,加入未来函数。有人为了让曲线好看,套用 ZIG、BACKSET 这类会引用未来数据的函数,回测漂亮,实盘全废。RPS 本身只需要历史涨幅,用不上这些。

第五,把它当交易依据。指标只描述历史强弱,仓位、止损、基本面判断都不在它的职责范围内。看到「RPS 九十以上就能买」这类说法,先想想它在震荡市里的表现。

最后提醒一句:所有参数都要自己动手设一遍,别指望复制一段源码就完事。源码只管画线,排名数据来自扩展数据,两者对不上,图上的线再漂亮也是错的。

版权声明:本站文章大部分为原创,有小部分整理于自互联网。主要目的在于分享信息,版权归原作者所有,内容仅供读者参考。如有侵权请发送邮件至shenma006@gmial.com删除。备案号:晋ICP备2023001592号-1
赞 (0)

相关推荐

发表回复

登录后才能评论