强度类指标源码
卷八 工具与公式:把方法写成代码 · 第 22 节 / 共 29 节
进入正篇之前,请先把四套基础指标设置好:SSV 指标、RSL 指标、RSR 指标和 RSV 指标。其中 SSV 与 RSL 用成交量加权计算(见本节第三节),RSR 在电脑端用扩展数据、手机端用 RSV 替代(见本节第二节);如果是电脑用户,用扩展数据做 RSR 指标,手机用户则用 RSV 公式平替。欧马模型对基本面是有要求的,可以先用预选股池(见第 24 节)做个过滤,但如果只做堆量模型,对基本面没有要求,这一步可以省略。
基础工作做好以后,就可以用「领先股池」选股器选出当下整体保持强势的所有股票。想进一步缩小清单,就加入短期动量条件,用 OVS 或 RS_D 做低吸股池或突破股池。再结合形态学上的毒股三式,整个选股流程就运转如水了。
这里有个关键的方法论需要点破:对于短期动量的选择有两种思路,第一种着眼于突破,那么在动量上就是「先小后大」;第二种着眼于伏击,那么动量上就是「先大后小」。两者正好相反,但没法说谁对谁错,理论与实战都有人采用。比如信奉口袋支点,本质上就是要求短期动量「由小变大」。
以下是领先股池的三种写法。第一种只适用于电脑、用扩展数据;第二种也只适用于电脑但不需要扩展数据(用 RSV 替代);第三种是手机用户,由于软件限制无法叠加行业强度条件,清单会明显多一些。
RSRHY:=CALCSTOCKINDEX(HYZSCODE,'RSR行业',2);
RSR个股.RSR>85 AND RSL.RSL2>100 AND RSRHY>60;RSVHY:=CALCSTOCKINDEX(HYZSCODE,'RSV',3);
RSV.RSVA>74 AND RSV.RSV1>85 AND RSV.RUN1>=70 AND RSVHY>70;RSV.RSVA>74 AND RSV.RSV1>85 AND RSV.RUN1>=70;
以上两种方式选股会有差异,随着行情起伏,数量也会有增减。手机选股数量明显多一些,毕竟缺少了行业强度约束。
当你了解长周期强度和短周期强度的不同含义之后,选股其实变得非常简单,并不需要太多的形态拟合——可以调节不同的强度阈值得到想要的股票区间。由于猛兽动量体系在形态契合度上远胜于陶派 RPS,基本不用担心漏掉牛股以及牛股的初始启动。
运用短期动量指标,可以从整体强势中切出一个「短期低波动小群」,适合低吸的备选;突破思路则是反过来描述。猛兽动量系统分享过的短期动量指标主要有 OVS 和 RS_D 两种。
低吸股池要求「强势中、短期低波动」:先前的 PV(量价强度)要够大(前置 PV),现在的 PV 要回落到低位(现在 PV 小),RS_D 的背离值 DRA 也要小,同时成交额不能放大(SBL 约束)。
RSVHY:=CALCSTOCKINDEX(HYZSCODE,'RSV',3);
ALLQS:=RSV.RSV>74 AND RSVHY>70;
PV2:=OVS.PV2;
PV3:=OVS.PV3;
PVA:=ABS(PV2);
QZPV:=HHV(PV3,10)>12;{前置PV}
XZPV:=PVA<6;{现在PV}
DR:=RS_D.DR;
DRA:=ABS(DR);
XZDR:=DRA<15;
SBL:=AMO<HHV(AMO,22)*0.6;
ALLQS AND QZPV AND XZPV AND XZDR AND SBL;突破思路的实现就是反过来描述,更直接:前置 PV 取近两日低位、现在 PV 放大。
RSVHY:=CALCSTOCKINDEX(HYZSCODE,'RSV',3);
ALLQS:=RSV.RSV>74 AND RSV.RSV1>85 AND RSVHY>74;
PV2:=OVS.PV2;
PV3:=OVS.PV3;
PVA:=ABS(PV2);
QZPV:=LLV(REF(PVA,1),2)<6;{前置PV}
XZPV:=PV3>12;{现在PV}
ALLQS AND QZPV AND XZPV;
至于枢轴点股池,很多人反映从 M8 调用枢轴点输出选股速度非常慢,最好把枢轴部分单独摘出来建立选股公式(见第 24 节)。堆量模式的选股则是另一套工具。最后再叠加形态学的毒股三式,整个流程就完整了。
RSR 研究最初的动机,是因为陶派 RPS 在长周期上滞后严重,用 20 日、50 日 RPS 拟合之后仍然存在大量信号错位。为了完美解决背景强度指标和形态反转支点之间的契合问题,本 ID 花了很长时间探索,才确定了现在的计算方案。它的核心第一性原理是:单纯认为涨幅越大就越强的思想是错误的,合理的强度计算应该同时考虑上涨和回撤,即多空双方力量的综合;通过大量猛兽股回测证明,标准化强度是最合理有效的表达。
2.0 版只留下了一条扩展数据——只对 SSV 做扩展数据运算,RSV 的横向全局比较采用另外一种办法(见本节第四节)。设置分三步:
- 先建 SSV 基础公式与 RSV 基础公式,供扩展数据与 RSR 指标调用。
- 创建扩展数据:选一条空白数据行(示范用序号 1),按图设置勾选项并刷新。
- 新建「RSR个股」副图指标,粘贴下方代码,公式名须与图一致;行业 RSR 同理用序号 5。
个股 RSR 的算式 RSR:(SSV1*0.6+RSVA*0.4) 试图在稳定和灵敏度之间寻找平衡,两个加权系数可以调节,但加起来必须等于 1。
W1:=EXTDATA_USER(1,0);
SSV1:W1/10,LINETHICK1,COLORLICYAN,NODRAW;
RSVA:RSV.RSVA,COLORLIGREEN,NODRAW;
RSR:(SSV1*0.6+RSVA*0.4),LINETHICK2,COLOR804000;
IF(RSR>=N,RSR,DRAWNULL),LINETHICK2,COLORC080FF;
IF(RSR>=M,RSR,DRAWNULL),LINETHICK2,COLORRED;
MID:50,DOTLINE,COLORGRAY;
行业 RSR 的设置过程和个股几乎一样,但计算品种需要自定义(把行业指数做成自定义板块再导入)。行业 RSR 采用等权相加 RSR:(SSV1+RSVA)/2,也可以改用个股那样的不等权相加。
W1:=EXTDATA_USER(5,0);
SSV1:W1/10,LINETHICK1,COLORBROWN;
RSVA:RSV.RSVA,COLORGRAY;
RSR:(SSV1+RSVA)/2,LINETHICK2,COLOR804000;
IF(RSR>=N,RSR,DRAWNULL),LINETHICK2,COLORC080FF;
IF(RSR>=M,RSR,DRAWNULL),LINETHICK2,COLORRED;
MID:50,DOTLINE,COLORGRAY;上面效果图显示了三条线,如果想只显示一条,只需在相应输出语句后加 NODRAW;反之想显示个股 RSR 的其它输出,去掉 NODRAW 即可。特别注意:公式的名字一定要和图上写成一模一样,否则 M8 或其它公式调用时会报错。
最后补充自定义板块的设置:在通达信界面直接输入字母「BK」回车,就能打开自定义板块设置界面,新建一个可识别的文件夹即创建一个新板块;右键菜单找到「批量处理」把数据导入新板块即可。行业 RSR 还可关联到三级行业(颗粒度更细、更易锁定目标),但难度较高,不建议公式小白尝试。
前面介绍过成交量加权构造移动价格曲线。若用 SUM(AMO,N)/SUM(V,N) 构造,通达信一复权曲线就会飞离 K 线——配送股增发时价格能前后复权、成交量却不能准确跟随。所以沿用《趋势为金》的表达,用 AMO 作为量柱:SUM(AMO*C,N)/SUM(AMO,N),就不怕复权了。
成交量加权均线的物理含义是「真实成本价格」,也即周期内平均持仓成本;如果偏离持仓成本速度越快,也即赚钱或亏钱效应越快,可视为强弱变化的程度,这就是成交量加权相对强度的基本定义。我们保留两种归一化处理方法,得到 SSV:
VWAP:=SUM(AMO*C,N)/SUM(AMO,N);
STDD:=SQRT(SUM(POW((C-VWAP),2),N)/(N-1));
SSV1:(C-VWAP)/VWAP*100;
SSV2:(C-VWAP)/STDD*100,NODRAW;
SSVA:MA(SSV1,13);
ZRO:0,DOTLINE;
更进一步,如果用成交量加权对 RS Line 做同样计算,会得到一个《笑傲牛熊》一书中使用的 RS 曲线,而且比市面流行的 MA 均值处理方式更合理:
RS:=CLOSE/"880003$CLOSE";
VWRS:=SUM(RS*AMO,N)/SUM(AMO,N);
STDD:=SQRT(SUM(POW((RS-VWRS),2),N)/(N-1));
RSL1:(RS-VWRS)/VWRS*100;
RSL2:(RS-VWRS)/STDD*100,NODRAW;
RSLA:MA(RSL1,13);
ZRO:0,DOTLINE;SSV 和 RSL 是典型的动量指标,不仅可以度量当下的强弱程度,也可以利用其峰峰和谷谷背离特性评估趋势转折,其原理和 BIAS 指标完全一样。本次更新隐匿了 SSV2 与 RSL2 输出,增添了 SSV1 与 RSL1 的均值输出。
陶博士称为看家绝技的 RPS 指标有个重大缺陷:长周期上滞后太多。副图那根黄色线就是陶派 RPS,画线周期 250 日、阈值 88,可明显看到强度进入 88 和退出 88 的位置对应股价滞后太多,期间回撤段超过 50% 跌幅,RPS 居然还一直显示在 100 附近,可信度很低。
问题的核心在数学上:陶博士的公式是 EXRT:(C-REF(C,N))/REF(C,N),输出值理论上可无限大也可无限小;而 RSV 公式的输出只在 0~100 之间摆动,且包含了多空双方的力量——当 C-LLV(L,N) 越小时,意味着回撤越大,空方因子被巧妙计算进去。基于信号可信度的思考,计算强度必须考虑空方力量,也就是回撤因子。
EXRT: (C-REF(C,N))/REF(C,N);
RSV: (C-LLV(L,N))/(HHV(H,N)-LLV(L,N))*100;
RSV 表达式源自大名鼎鼎的 KDJ 指标,而 KDJ 又来源于威廉指标——威廉指标计算从最高价下来的回撤,RSV 计算从最低价上来的涨幅,在最大振幅范围内两者本质一样,曲线走向相反,倒过来就完全重合。所以直接采用 RSV 作强度平替,大大降低 RPS 的使用难度和扩展数据运算的麻烦,很简单也同样有效。
做法:新建公式把参数 N 设到 250,强度阈值设为 75 比较合理,暗合趋势理论中「股价要处在一年新高的 75% 以上位置」。区别在于,经扩展数据运算就是全市场比较(外部强度),没经扩展数据只是在个股内部价格运动中比较(内部强度),但两者走向一致性很不错。
如果不做扩展数据,还有一个更直接的平替思路:对 RS Line 做类似 RSV 的归一化再与 RSV 整合,得到 RSVA:=(RSV1+RSV2)/2。RSVA 用紫色表示 >=75、红色表示 >=85,阈值可与 RSR 保持一致,免扩展数据、可盘内实时、手机可用,绝不拖累响应速度。
有了相对强度,自然要问绝对强度有没有、是什么。从陶博士的基础公式说起:EXTR:(C-REF(C,N))/REF(C,N),描述 N 日动态涨幅,涨幅越大当前越强。但 50% 涨幅被认为弱于 100% 涨幅显然不对——涨得越多越强,难道永远涨下去?当股票上涨,获利盘累积越多,卖出倾向也会累积越多,所以越到后期股价波动越大;而低位趋势启动前,波动往往逐渐收窄。也就是说,股价的波动程度和风险有关,上涨的强势因子需要波动带来的风险因子进行惩罚或者奖励。
用标准差描述波动:SD:STD(C,N),股价推升时标准差变大、波动收敛到极限时标准差趋于 0。强度值用线性回归算法的动态斜率定义:SLOP:SLOPE(C,N),斜率有正负值。
方法一,用标准差的倒数去乘强度值作惩罚/奖励:
STR:=SUM(TR,N),NODRAW;
HL:=(HHV(H,N)-LLV(L,N));
CHOP:=LOG(STR/HL)/LOG(N);
SD:=STD(C,N);
SLOP:=SLOPE(C,N);
CPRS:SLOP*CHOP*N*10;
SDRS:SLOP/SD*N*10;
ZERO:0,DOTLINE;SDRS:SLOP/SD*N*10 经过标准差惩罚和奖励之后,低位也可以有高强度,而最高点却出现背离,有不一样的指导意义。方法二借用澳大利亚交易员 E.W. Dreiss 的 CHOP 指标:CHOP:LOG(STR/HL)/LOG(N)*10,先把 N 周期真实波幅累加,再除以 N 周期内最大波动范围——同样的波幅累加值,整体价格波动范围越小输出越大,相当于对强度的鼓励,反之惩罚;它最有意思的是引入了「最大波动范围」这个变量,因为我们平时讲结构紧凑,指的就是整体震荡范围比较窄。CPRS:SLOP*CHOP*N*10 把 CHOP 与 SLOP 结合。

需要说明的是,以上绝对强度的思路并未在实战中应用过,只是发表出来供有心人一起研究。
成交量本质上反映的是多空意见的分歧程度和市场流动性,而并非直接指向价格涨跌——成交量的放大缩小和价格涨跌之间并不存在必然关系。最常用的量价指标是 OBV,把每日成交量按涨跌取正负累加:
VA:=IF(CLOSE>REF(CLOSE,1),VOL,-VOL);
OBV:SUM(IF(CLOSE=REF(CLOSE,1),0,VA),0);
WVAD:SUM(VOL*(CLOSE-OPEN)/(HIGH-LOW),N);
VPT:SUM(VOL*(CLOSE-REF(CLOSE,1))/REF(CLOSE,1),N);
MIDA:=CLOSE-MIN(REF(CLOSE,1),LOW);
MIDB:=IF(CLOSE<REF(CLOSE,1),CLOSE-MAX(REF(CLOSE,1),HIGH),0);
WAD:SUM(IF(CLOSE>REF(CLOSE,1),MIDA,MIDB),0);威廉变异离散量(WVAD)的思路和 OBV 一样,不同之处是对每日成交量进行了加权。WVAD 用涨跌幅在整体最大振幅之中的位置比例加权,比 VPT 直接把涨跌幅乘成交量的方式更科学合理。但它有两个问题:一字板时开收高低全相等,分子分母皆 0 无意义;且完全不考虑昨日因素,与理不通(OBV、VPT 都包含了昨日因素)。威廉多空力度线(WAD)引入了昨日收盘价参与最大振幅计算,思路更科学。
综合威廉姆斯的思路改进 OBV:先用加权方式提取日内成交量,再用归一化比例提取多空合力结果作加权值:
HG:=MAX(H,REF(C,1));
LW:=MIN(L,REF(C,1));
OV:SUM(V*(C-REF(C,1))/(HG-LW),0);
MAOV: MA(OV,N1);
N1 参数设置为 30。指标优劣留待自行判断。
威廉姆斯在《选股密码》和《我如何赚取100万美元》中都讲了这个公式,被后人称为百万美元公式。公式先提取当日 K 线的多空力度,乘以当日成交量,再累加。BSR 的分子是收盘价-开盘价,分母是最高价-最低价(战场波及的最大范围),多方获胜则为正、空方获胜则为负;乘以成交量后,正值被吸进去、负值被吐出来,所谓吸筹派发就是这么来的。
威廉姆斯给的加法有两种:从上市第一天累加(OBV 搞法),或取时间区间累加(通达信缺省搞法)。书里没明写,但从实际用法揣摩应该是第二种——搞成 OBV 很难提取背离信号,而背离正是核心用法。改进后的 VAD 画线与原版几乎一样但更准确:
HI:=MAX(H,REF(C,1));
LW:=MIN(L,REF(C,1));
BSR:=(C-REF(C,1))/(HI-LW);
VAD:SUM(BSR*VOL,N);
WOV:WMA(VAD,M);
吸筹派发线最主要用法是取走势背离信号,和动量背离一个意思。尤其熊市期间,如果 RS Line 充分和大盘背离(走势抗跌),再叠加吸筹派发线底背离,上涨概率比较明确。总之,底背离的意思就是机构在吸筹,顶背离的意思就是机构在派发,就这么简单,但还是要提醒一下,不是百分百严丝密缝的。
对买卖时机的研究是这样层层递进的:趋势模板是最基础的前提,然后才是更细节的东西。马克趋势模板的核心就是 C>MA(C,50) 且 C>MA(C,150) 且 C>MA(C,200),即股价在三条均线之上;它只是背景,不排除阶段头部与总头部,买卖时机并未具体定义。
副图中的 RSR 用 RSV 定义,RPS 值 >87 标红;趋势模板赋值 1 表示符合,黄点即口袋支点。RSR 250 周期翻红基本就是全部右侧趋势,均线定义去掉也不影响使用。RSR 反映动量、均线反映成本,交叉定义后更严谨;陶博士的 RPS 难以配合口袋支点,正是这个原因。
标准化强度算法归总也印证了这一点:RSV 解决陶派 RPS 严重滞后,但被认过度削弱涨幅惯性;可取 SCI 为基准(无上下限更侧重涨幅效应)同时兼具 RSV 灵敏度优点,用 RSV 与 SCI 做 233 日周期 RPS 扩展数据。而「下跌凭自重,上升靠推力」的动力学表达把两者分工讲清:SSV 计算自重的动量,RSL 计算自重与外部推力比较后的动量,SSV>0 AND RSL>0 全程限定长期趋势背景——集体下坠时慢者 RSL 可正但仍跌,RSL>0 是假信号,上涨时 RSL>0 才有效过滤。
RS Line 本质是板块指数和大盘指数之间的比值,可反映板块下跌动量趋于衰竭。其底背离——板块跟随大盘下跌但跌幅小于大盘——预示后续反转上行;若 RS Line 持续抬升,说明强势保持,板块横盘也可理解为强势蓄能。此时 RSR 应逐渐攀升超过 90,甚至频频出现在 TOP10 榜单,印证板块走强。通信工程、医药、汽车、减速器等板块均出现过 RS Line 底背离后走强的案例。
熊市末端的研判同样适用:RS Line 与平均股价指数大级别底背离,预示机构逆势建仓;叠加新领导上任与前置动量,大结构第一波涨幅超 50% 为佳(统计一般 40%~120% 不等,多一气呵成)。
强度指标是「骨架」,但绝不可机械套用。RSR、RSV、SSV、RSL 之间要互相印证:行业 RSR 高 + 个股 RSR 高且粘合,说明高 RPS 可靠;若两者分离就要打折扣。把强度当作「身高和身段比例」,再配合下一节的润度(五官轮廓)、下一节的选股公式,才能运转成一套完整的系统。