简介这份资源是通达信自定义指标公式的源码文档面向熟悉股票软件操作、希望深入理解技术指标编写的投资者与量化爱好者。它围绕“强弱分析副图指标”展开解决如何量化个股、板块与大盘之间相对强弱关系的问题适合用于趋势判断与辅助决策。压缩包内共1个doc文件约173KB内容以指标源码与变量注释为主可直接在通达信中导入或参考修改。源码中定义了CC、CB、ZD等基础变量并通过DPZ、DBZ计算股票对大盘、股票对板块、板块对大盘的强弱变化再对3日、5日、10日、20日、40日、60日、120日、250日等周期累计求和并加权平均形成股对大盘、股对板块、板块对大盘三条力度线。同时引入上涨比例与A股上涨比例反映市场活跃度并用COLORSTICK柱状图与DRAWTEXT_FIX文字提示直观显示“强于”“弱于”状态。已有159人学习适合想研究指标逻辑、拆解公式结构并自行改写的读者参考。1. 强弱分析副图指标为什么你写的公式总在震荡市里翻车很多人第一次接触通达信指标公式都是从一个副图指标开始的。主图看K线副图看强弱这个需求听起来简单但真正动手写的时候问题就来了同样的参数在单边行情里看着挺准一到震荡市就来回打脸信号密集得像下雨。这不是公式写错了而是强弱分析本身就是一个需要定义清楚“跟谁比、比什么、怎么平滑”的问题。强弱分析副图指标的核心是把价格或动量信息压缩成一条或多条可比较的曲线用来判断当前标的是强于还是弱于某个基准。它适合两类人一是想自己动手改指标、不想被现成公式黑匣子困住的交易者二是需要把强弱逻辑封装成副图、用于盘中快速过滤信号的从业者。这篇笔记不讲玄学只讲怎么从零写一个能跑、能调、能复现的强弱分析副图指标以及那些我踩过的坑。2. 强弱分析副图指标到底在算什么从RSI到相对强弱2.1 强弱分析的三种常见定义方式在动手写代码之前得先想清楚“强弱”到底指什么。常见做法有三种第一种是绝对动量强弱比如RSI、CCI这类只看自身价格变化的速度和幅度不跟别人比。优点是计算简单副图直接画一条线缺点是遇到普涨普跌行情所有标的的RSI都高或都低没有区分度。第二种是相对强弱拿当前标的和基准比如大盘指数、行业指数做比值再对这个比值做平滑或标准化。这是最符合“强弱分析”字面意思的做法副图通常画两条线一条是标的自身走势一条是相对基准的强弱线。第三种是截面强弱在多个标的之间做排名或Z-Score标准化适合做轮动筛选。副图指标一般只处理单标的所以截面强弱更多用在选股公式里副图用得少。我一般会选第二种作为副图指标的主逻辑因为它在震荡市里的稳定性明显好于纯动量指标。下面就以相对强弱为主线讲怎么落地。2.2 通达信公式里实现相对强弱的几个关键函数通达信公式语言里做相对强弱绕不开几个函数INDEXC取对应大盘指数的收盘价这是最常用的基准。EMA/SMA做平滑避免比值线毛刺太多。STD算标准差用于标准化把比值映射到可比较的区间。HHV/LLV找区间高低点用于归一化。一个最简的相对强弱线可以写成{相对强弱副图指标 - 基础版} 基准:INDEXC; {取大盘收盘价} 比值:CLOSE/基准; {标的与基准的比值} 强弱线:EMA(比值,20)*100; {平滑后放大100倍方便观察}这段代码的逻辑很直白先把标的收盘价除以基准收盘价得到一个比值序列再用20周期EMA平滑最后乘100让数值落在更容易看的区间。参数说明20是平滑周期越小越灵敏越大越平滑*100只是视觉缩放不影响信号逻辑。但这样写有个问题比值本身没有上下界不同标的的比值中枢不一样副图上看不出“强”和“弱”的分界线。所以下一步要做标准化。2.3 把比值变成可比较的强弱值标准化与归一化标准化的常见做法是算Z-Score用当前比值减去均值再除以标准差。通达信里可以这样写{相对强弱副图指标 - Z-Score标准化版} 基准:INDEXC; 比值:CLOSE/基准; 均值:MA(比值,60); 标准差:STD(比值,60); Z值:(比值-均值)/标准差; 强弱线:EMA(Z值,5); 零轴:0;逻辑说明MA(比值,60)取60周期均值作为中枢STD(比值,60)取60周期标准差作为波动尺度Z值就是当前比值偏离中枢多少个标准差。再用5周期EMA平滑一下减少毛刺。零轴就是强弱分界Z值大于0说明强于近期中枢小于0说明弱于近期中枢。参数怎么调60是标准化窗口窗口越长中枢越稳定但反应越慢5是平滑周期短线可以调到3波段可以调到8。注意标准差在窗口内如果接近0Z值会爆炸所以实际写的时候要加一个保护标准差:MAX(STD(比值,60),0.001);这个0.001是经验值防止除零导致副图出现异常尖峰。3. 从零写一个能跑的通达信强弱分析副图指标3.1 公式管理器里新建副图指标的完整步骤打开通达信按CtrlF调出公式管理器选“技术指标公式”→“新建”公式类型选“副图”画线方法选“副图”。然后按下面结构填公式名称自定义比如QS_FX。公式描述写清楚这是相对强弱副图。参数设置如果要用外部参数在这里加比如N标准化窗口、M平滑周期。我一般会把参数写进代码里而不是用外部参数因为副图指标调参频率不高写死更省事。但如果你要反复优化建议用外部参数改起来不用动代码。3.2 完整源码结构与逐行注释下面是一个可以直接复制进通达信的完整副图指标源码包含相对强弱线、零轴、超买超卖参考线{强弱分析副图指标 - 完整版} {参数N60, M5, 上限2, 下限-2} 基准:INDEXC; {取大盘收盘价作为基准} 比值:CLOSE/基准; {计算标的与基准的比值} 均值:MA(比值,60); {60周期均值作为中枢} 标准差:MAX(STD(比值,60),0.001); {60周期标准差加保护} Z值:(比值-均值)/标准差; {Z-Score标准化} 强弱线:EMA(Z值,5),COLORWHITE; {5周期平滑白色线} 零轴:0,COLORGRAY; {零轴灰色} 超买线:2,COLORRED; {超买参考线红色} 超卖线:-2,COLORGREEN; {超卖参考线绿色} {填充强弱区域方便视觉判断} DRAWBAND(强弱线,RGB(255,0,0),0,RGB(0,255,0));逐行说明基准取大盘收盘价这是相对强弱的锚点比值是核心输入均值和标准差做标准化Z值是标准化后的强弱值强弱线是最终画在副图上的线零轴、超买线、超卖线是参考线DRAWBAND把强弱线和零轴之间的区域填色红色表示强绿色表示弱。参数说明60是标准化窗口适合日线级别如果是60分钟线可以改成120或2405是平滑周期短线可以改成3波段改成8。2和-2是超买超卖阈值不是固定标准可以根据标的波动特性调整。3.3 参数怎么设窗口、平滑、阈值的取舍窗口N的选择直接决定指标的“性格”。N20时中枢跟着近期走强弱线反应快但震荡市里会频繁穿越零轴N60时中枢更稳定信号少但更可靠N120时适合看大级别强弱但短线几乎没法用。我一般会跑三组参数做对比N20/M3、N60/M5、N120/M8然后在同一段行情里看哪组跟自己的交易周期匹配。不要迷信“最优参数”参数是跟周期绑定的换周期就得重新看。阈值2和-2来自正态分布的经验值Z值超过2的概率大约5%超过-2同理。但金融数据不是正态分布所以这个阈值只能当参考不能当铁律。实际用的时候我会先看强弱线在历史行情里超过2和低于-2的频率如果太频繁就把阈值调到2.5或3。4. 强弱分析副图指标的避坑与排查4.1 副图线突然变成一条直线或尖刺现象副图强弱线在某一段突然变成水平直线或者出现一根巨大的尖刺。原因标准差在窗口内接近0导致Z值计算除零或爆炸。这种情况常见于标的停牌、基准数据缺失、或者窗口内价格几乎没波动。解决在标准差外面套MAX保护比如MAX(STD(比值,60),0.001)。如果还是有问题检查INDEXC是否在对应周期有数据有些冷门标的对应的大盘指数数据可能不全。4.2 强弱线和价格走势完全对不上现象价格明明在涨强弱线却在往下走。原因相对强弱是跟基准比的价格涨但基准涨得更快强弱线就会往下。这不是公式错了是定义决定的。解决先确认你要的是绝对强弱还是相对强弱。如果是绝对强弱把基准改成常数1或者直接用CLOSE做标准化。如果是相对强弱那就接受这个特性它本来就是在过滤“跑输基准”的上涨。4.3 震荡市里信号太密集来回打脸现象强弱线在零轴附近反复穿越按信号操作会连续亏损。原因平滑周期太短或者标准化窗口太短导致强弱线对短期波动过于敏感。解决把M从5调到8或10把N从60调到120。另外可以加一个确认条件强弱线穿越零轴后连续两根K线站在零轴同一侧才视为有效信号。这个确认逻辑可以写在选股公式里副图只负责显示。4.4 不同标的副图形态差异巨大现象同一个公式A标的强弱线在-1到1之间波动B标的在-3到3之间波动。原因不同标的与基准的比值波动率不同标准化窗口内的标准差差异大。解决这是正常现象不需要强行统一。如果要做多标的对比可以在副图里加一条STD(比值,60)的线观察波动率变化。或者改用截面标准化但那就不适合单标的副图了。4.5 公式编译通过但副图不显示现象公式管理器里显示编译成功但副图上什么都没有。原因常见的是画线方法选错了选成了“主图叠加”而不是“副图”或者DRAWBAND的参数顺序写反了。解决检查公式属性里的“画线方法”是否为“副图”检查DRAWBAND的第一个参数是强弱线第二个是颜色第三个是零轴第四个是颜色。如果还是不行把DRAWBAND注释掉先看强弱线能不能出来。5. 把强弱分析副图指标用出实战价值三个进阶技巧5.1 用强弱线背离做提前预警强弱线本身可以看趋势但更有价值的是背离。价格创新高强弱线没创新高说明相对强度在衰减。这个逻辑可以写成副图上的标记{背离标记 - 加在副图指标末尾} 价格新高:CLOSEHHV(CLOSE,60); 强弱未新高:强弱线HHV(强弱线,60); 背离:价格新高 AND 强弱未新高; DRAWICON(背离,强弱线,2);逻辑说明HHV(CLOSE,60)找60周期价格高点HHV(强弱线,60)找60周期强弱线高点。价格新高但强弱线没新高就在强弱线位置画一个图标。参数60可以跟标准化窗口保持一致也可以单独调。注意背离信号只是预警不是入场信号。我一般会等强弱线重新下穿零轴或者价格跌破短期均线才考虑动作。5.2 把副图指标改造成选股条件副图指标看的是单标的但你可以把同样的逻辑写成选股公式。比如筛选“强弱线刚上穿零轴”的标的{选股公式 - 强弱线上穿零轴} 基准:INDEXC; 比值:CLOSE/基准; 均值:MA(比值,60); 标准差:MAX(STD(比值,60),0.001); Z值:(比值-均值)/标准差; 强弱线:EMA(Z值,5); 选股:CROSS(强弱线,0);这段代码跟副图指标的唯一区别是最后一行用CROSS做条件判断。注意选股公式里不要用DRAWBAND和DRAWICON那些是画图函数选股用不上。5.3 多周期共振日线强弱60分钟强弱单周期强弱线容易在震荡市里反复一个过滤方法是看多周期共振。日线强弱线在零轴上方60分钟强弱线也上穿零轴两个条件同时满足才视为有效。实现方式有两种一种是在副图里同时画日线和60分钟两条强弱线但通达信副图跨周期引用需要写CALCSTOCKINDEX或者用扩展数据比较麻烦另一种是分别建两个副图指标手动对照。我一般用第二种简单直接不用折腾跨周期函数。如果你非要写在一个副图里可以用QS_FX.QS_FX#MIN60这种引用方式但要注意引用过来的数据在日线副图上会有对齐问题不是所有版本都支持。5.4 我踩过的最大的坑把强弱线当买卖信号最后说一个血泪经验。我刚开始用强弱分析副图的时候看到强弱线上穿零轴就买下穿零轴就卖结果在震荡市里连续止损。后来才想明白强弱线是状态描述不是 timing 信号。它告诉你当前是强还是弱但不告诉你什么时候进场。正确的用法是强弱线用来过滤方向具体入场还要结合价格结构、成交量、或者均线。比如强弱线在零轴上方只做多不做空强弱线在零轴下方只做空不做多。方向定了再找具体入场点。这个习惯我保持到现在副图指标只做过滤不做触发。触发信号一定来自主图价格行为。希望帮到你。本文还有配套的精品资源点击获取