简介:通达信价格变异率主图指标源码解析文档,面向股票技术分析者与通达信公式编写初学者,重点讲解如何用通达信指标语言计算价格变异率并绘制主图。压缩包内为1个doc文件,整体仅241KB,但内容紧凑,涵盖完整公式源码与逐段说明;文档从指标语言的基本语法切入,逐步拆解SAR、STICKLINE、DRAWTEXT_FIX等函数,以及X_1~X_22等中间变量的定义、赋值与运算逻辑,并结合K线红绿配色、涨跌停标记、放量提示、假阴实顶、回调认同线等主图效果进行解读,帮助读者理清公式编写思路与调试要点。文档同时提示历史数据获取、公式测试与优化等实践注意事项,读者可直接对照源码进行修改验证,并将其作为其他指标的组件来满足不同交易策略需求。已有293人学习下载,尤其适合希望系统掌握通达信指标开发的技术分析入门者。 做技术分析的朋友都清楚,均线系统在趋势行情里很顺手,但一旦进入横盘,均线基本失效,金叉死叉来回打脸。我也试过不少主图指标,折腾一圈后发现,真正能提前察觉“市场要变盘”的,往往不是价格本身,而是价格波动的激烈程度——也就是价格变异率。下面就把通达信里的价格变异率主图指标拆开讲,从原理到完整源码,你直接粘进通达信就能跑。
这个指标适合三类人:刚接触通达信公式、想读懂别人源码的新手;会写基础公式、想完善自己指标体系的进阶用户;以及单纯想找一个能辅助判断变盘窗口的实用主图工具的人。我不会只丢一段源码就完事,公式里的每一行逻辑都会讲清楚,这样你拿到手之后才知道怎么改参数、怎么避坑,而不是只会复制粘贴。
1. 为什么我会盯上价格变异率这个指标
1.1 均线系统的盲区在哪里
均线的本质是过去N日收盘价的平均值,它解决的是“价格站在什么位置”的问题。趋势行情里,价格沿着均线一路走,金叉死叉的位置都很明确;可一旦进入横盘,均线几乎走平,价格在均线上下反复穿越,这时候再去数金叉死叉,只会被市场反复教育。
问题出在哪?均线只反映了“往哪走”,没有反映“走得激不激烈”。比如同样两根大阳线,一段行情里可能是一周调整后的爆发,另一段行情里可能只是随机波动,均线看不出两者的区别。而价格变异率盯的正是这个“激烈程度”,它能提前告诉你市场正在憋大招,还是已经透支了。这个差异,正是我把它单独做成主图指标的原因。
1.2 价格变异率是“波动率的波动率”
说一个生活化的例子。
人发烧的时候,体温计能测出体温高低,但医生更关心的往往是体温的稳定程度。如果体温在37℃和39℃之间来回跳,说明身体状态很不稳定,需要持续观察;如果稳定在38.5℃不动,情况反而可能没那么凶险。
价格变异率做的事,就是把“体温计”再升一级,去测量“波动本身的波动”。比如最近10个交易日,每天波动幅度都在0.3%以内,说明市场分歧极小,能量被压缩在一个很窄的空间里;一旦这个压缩状态被打破,往往就对应变盘的开始。反过来,如果变异率已经连续好几天在极端高位,说明行情已经过度亢奋,随时可能出现冲高回落。
所以这个指标的核心价值不是判断方向,而是判断“方向确定性”和“情绪稳定度”。方向可以交给突破信号,能不能执行好,需要的是对变异率位置的清醒认知。
2. 价格变异率主图指标的核心设计逻辑
2.1 从价格序列到变异率的数学表达
整个指标的计算其实只有三层。
第一层,单日价格变异率。我取的是当日收盘相对昨日收盘的涨跌幅绝对值:
A1:=ABS(CLOSE/REF(CLOSE,1)-1)*100;
ABS取绝对值这个操作不能省。原因很简单:我要观察的是市场“动得有多猛”,而不是“往哪个方向动”。涨2%和跌2%,对波动强度来说同等重要,如果直接取正负号,涨跌会互相抵消,统计就没有意义了。
第二层,变异率的均值。对A1做N日移动平均,得到A2,代表最近一段时间市场的平均波动水平。
第三层,变异率的标准差。用STD(A1,N)得到A3,代表“波动的波动”。A3越大,说明每天的波动幅度忽大忽小,市场情绪不稳定;A3越小,说明每天的波动幅度高度一致,市场处于一种被压制住的平静状态。
这三层算完,才真正有了“变异率”这个核心数据。
2.2 为什么把变异率映射到主图坐标
光有A3还不够,因为A3是一个以“百分比”为单位的数值,如果单独显示副图,你只能在副图上看到它在高低变化,还要回头去K线上比对价格位置,非常别扭。
所以我在主图上做了一层映射:把A3转成价格对应的轨道。具体做法是先取N日收盘均价作为中枢线ZX,然后在中枢线上下分别加减ZX*A3/100*K。这里的K是轨道放大系数,相当于布林通道里的“几倍标准差”。
这样算出来的上轨UP和下轨DN,单位是“元”,可以直接画在K线图上。价格如果在上轨上方运行,说明当前波动幅度已经明显超出近期的正常水平;价格如果压在下轨下方,则说明市场陷入了超常的低波动区间。
实际使用中,我看的最多的不是单根K线,而是UP和DN两条轨道之间形成的“通道嘴巴”。嘴张大,波动放量;嘴收拢,变盘临近。
2.3 和布林通道的核心区别
经常有人问,这不就是个布林带吗?
布林通道同样有中枢、上下轨,也同样用标准差。但布林带的标准差是直接对收盘价计算的,衡量的是“价格离均线有多远”;而我这个指标的标准差是对“每日涨跌幅波动率”计算的,衡量的是“波动本身是否稳定”。
差别在实战中很明显。价格可以在高位横盘很久,布林带因为贴着高价区运行可能一直开口很大,看起来离上轨不远;但如果每天涨跌幅都很小,变异率A3其实已经很低,轨道也会收得很窄。所以变异率轨道反映的是情绪压抑程度,更容易在高位横盘或低位横盘阶段提前给出“变盘预备”的信号。
3. 完整源码的逐段拆解与组装
3.1 参数区:三个变量决定指标性格
N:=14;是变异率的统计周期,决定它看多长一段时间的波动;M:=6;是收缩状态的确认周期,用于判断A3是否创出最近M日新低;K:=2.2;是轨道放大系数,轨道太窄信号频繁,太宽信号迟钝,2.2是我调试下来比较折中的值。
3.2 核心计算:变异率均值与标准差
A1、A2、A3上面已经讲了,对应代码就是那三行。需要注意REF(CLOSE,1)在通达信里表示昨天收盘价,如果遇到第一根K线,计算结果会被系统自动排除,不影响整体。
3.3 轨道构造与信号触发
UP、DN两行输出就是主图的两条轨道。ZT是收缩标记,逻辑是A3创M日新低且前一天没有满足这个条件,避免连续多天重复提示。B1是向上突破信号,条件有两个:价格上穿上轨,同时A3比前一日放大。S1是向下跌破信号,逻辑对称。
为什么要强调A3同步放大?因为单纯的价格突破在震荡市里经常是假突破,只有价格突破和波动放大同时发生,才是真正意义上的“变盘确认”。
3.4 完整源码
我用的版本贴在这里,公式名称可以叫“价格变异率主图”,画线方式记得要选“主图叠加”:
{价格变异率主图指标 演示版} N:=14; M:=6; K:=2.2; A1:=ABS(CLOSE/REF(CLOSE,1)-1)*100; A2:=MA(A1,N); A3:=STD(A1,N); ZX:=MA(CLOSE,N); UP:ZX+ZX*A3/100*K,COLORRED,LINETHICK2; DN:ZX-ZX*A3/100*K,COLORGREEN,LINETHICK2; ZT:=A3<=LLV(A3,M) AND REF(A3,1)>LLV(A3,M); DRAWTEXT(ZT,LOW*0.96,'收缩'),COLOR00FFFF; B1:=CROSS(CLOSE,UP) AND A3>REF(A3,1); S1:=CROSS(DN,CLOSE) AND A3>REF(A3,1); DRAWICON(B1,LOW*0.93,1); DRAWICON(S1,HIGH*1.06,2);3.5 拿到源码后可以怎么改
如果你觉得信号太频繁,优先把K调大,比如2.5,轨道变宽,突破难度增加;如果觉得收缩提示太少,把M调小到4,会更容易触发;如果是做中长线,可以把N调到21或者34,对应的轨道会更平滑。我个人的建议是:先原样跑一周,记录几次信号,再决定调哪个参数,不要一上来就大改。
4. 把指标装进通达信:从新建到验证
4.1 新建公式的具体步骤
第一步,打开通达信,按Ctrl+F打开公式管理器。第二步,在“技术指标公式”分类下点“新建”,弹出一个公式编辑器窗口。第三步,给公式起个名字,比如PVR_MAIN,在“画线方法”里选择“主图叠加”。第四步,把上面的源码整体复制进去,注意不要漏行。第五步,点“确定”保存。
这里最关键的坑是“画线方法”。如果默认的是“副图”,输出就会出现在副图位置。新建时必须手动选“主图叠加”,否则就算源码正确,指标也不会以轨道的形式在K线图上显示。如果忘记选了,后面还能在设置里改,但不如新建时就选对。
4.2 如何让它立刻显示在主图上
保存之后,在任意个股的K线界面,输入PVR_MAIN回车,指标就会叠加到主图上。如果你想让它每次打开股票都自动显示,可以在主图上右键,选“指标”,然后选择“设为常用指标”这类设置,不同版本的通达信叫法略有差异。
如果主图上同时有MA均线,两条轨道的视觉效果会被均线干扰。我的做法是把均线先删掉,只看自己的轨道;等确认信号之后,再临时把MA10调出来参考趋势方向。轨道线颜色如果和你自己的常用指标撞色,可以在代码里把COLORRED和COLORGREEN换成COLORBLUE、COLORYELLOW等,通达信支持常见颜色名称。
4.3 常见报错与排查
我在给别人调试公式时,收集了出现频率最高的几类问题,整理成一个表,遇到问题先对照排查。
| 报错现象 | 原因 | 解决办法 |
|---|---|---|
| 复制后提示语法错误 | 字符串引号是全角中文引号 | 删除报错附近的引号,改用英文单引号或双引号重新输入 |
| 提示“未定义的变量” | 源码粘贴时少了某一行,比如A1没定义 | 回头对照完整源码补上缺少的变量定义 |
| 提示“除数为零” | REF(CLOSE,1)在第一根K线为0等极端情况 | 一般出现在历史数据不全时,补充下载日线数据即可 |
| 指标出来了但没有轨道 | 画线方法没有选“主图叠加” | 重新新建公式,确认画线方法为“主图叠加” |
| 副图出现UP/DN线 | 画线方法选了“副图” | 在公式编辑器中修改画线方法,或者新建一个主图叠加公式 |
如果以上都排查了还是不对,最快的方式是点开公式编辑器,用“测试公式”按钮查看系统返回的错误行。通达信一般会定位到具体行号,对着行号去对比源码,大多数问题都能在几分钟内解决。
5. 参数调优与实战信号判读
5.1 N、M、K三个参数怎么选
参数没有绝对最优,只有适合你的交易周期。我把常用组合整理成一个对照表,你可以先按自己的风格选一组,跑一段时间再微调。
| 使用场景 | N(统计周期) | M(收缩确认周期) | K(轨道宽度) | 适合节奏 |
|---|---|---|---|---|
| 短线/超短线 | 10-14 | 4-6 | 2.0-2.2 | 捕捉单日异动后的快速变盘 |
| 波段操作 | 21 | 6-10 | 2.2-2.5 | 过滤掉大多数日内噪音 |
| 中线趋势 | 34 | 10 | 2.5-3.0 | 更重视轨道方向,不轻易进出 |
N越小,指标对当天的涨跌越敏感,但假信号也越多;K越大,轨道越宽,突破信号越稀少但越可靠。实战中我建议先用波段那一组,等完全理解了这个指标的行为之后,再慢慢改成适合自己的数值。
5.2 三种高价值信号:收缩、突破、延续
第一个信号是“收缩”,也就是代码里DRAWTEXT画出的“收缩”两个字。这个字一出现,不代表要买入,它只代表波动被压到了极低区域,市场随时可能选方向。这时候要做的不是下单,而是把标的翻出来盯盘,等待第二个信号出现。
第二个信号是“向上突破”,当价格收盘站上UP线,并且A3比前一日放大,说明波动重新活跃且选择向上,这才是标准入场观察点。我个人不要求当天一定大阳线,但要求收盘价必须真实站在UP上方,盘中刺穿不算。
第三个信号是“趋势延续”,很多时候价格突破后并不会马上回落,而是贴着UP线持续走。这时候变异率A3保持高位,不要因为涨了一段就急着找卖点;真正要警惕的是A3从高位回落而价格还在高位,那往往是动能衰竭的信号。
5.3 和其他指标搭配使用的思路
单指标的最大问题是没有容错能力,所以我一般会再叠加两个条件做过滤。第一个是成交量,收缩后的首次突破,如果当天成交量显著放大,信号优先级我会提高一档;如果缩量突破,我会当它是诱多,不追。第二个是MACD,让变异率突破信号与MACD金叉尽量对齐,两个独立逻辑同时确认同一个方向,比单一指标可靠得多。
6. 实测中踩过的坑与注意事项
6.1 未来函数:历史信号再好看也别上头
网上很多主图源码会加ZIG、PEAK、BACKSET这类函数,它们的共同特点是会引用未来K线,回溯测试的时候信号完美,但实盘完全对不上。你回看历史它在底部买、在顶部卖,一到真实交易就成反向指标。
上面这个公式可以负责任地说,全部函数只用了REF、MA、STD、LLV、CROSS这些不引用未来数据的函数,不会出现信号漂移。你可以自己检查:在公式编辑器里搜索ZIG、PEAK、BACKSET,只要没有这三个词,基本可以放心。
6.2 震荡行情里的假突破怎么过滤
价格变异率这个指标最大的弱点是方向性。它知道“要变盘了”,但不知道变盘是向上还是向下。收缩之后出现突破,如果没有成交量配合,很容易在3天内冲高回落。我在实战中专门踩过一次:连续两次收缩提示都向上突破,结果都在第二天被打回下轨,后来加了“突破当天成交量必须大于5日均量”的过滤,假信号明显减少。
所以一定要记住,收缩只是一个变盘倒计时,它告诉你“火药已经装好”,至于引信点着之后是放烟花还是哑火,要看突破当天的量价配合和整个市场的环境。
6.3 指标只是工具,不是圣杯
最后说点实际感受。我见过不少朋友把指标当成预言工具,找一个历史回撤最低的参数,然后全仓下单,结果几个月后就发现指标完全失效。原因是任何指标都只在特定市场环境下有效,横盘转趋势的时候价格变异率很好用,单边趋势走完进入阴跌阶段,它一样会给出很多无效信号。
我现在把它当成“变盘预警器”来用,而不是“买卖提示器”。收缩提示出现后,我只做观察;突破信号出现后,再结合成交量、MACD和大盘环境做最终决策。这样用下来,这个主图指标才真正从花架子变成了能落地的决策辅助,而不是装在通达信里偶尔看一眼的装饰线。
本文还有配套的精品资源,点击获取