简介:这是一份通达信主图指标公式源码文档,面向股票短线交易者及技术分析爱好者,用于在主图上直观呈现均线、趋势带、买卖信号、前高前低及关键价位。文档为单个doc文件,大小213KB,包含完整的指标公式代码与逐行解释,适合已有一定基础、希望提升看盘效率的用户。目前已有778人学习下载。指标源码融合了短期与中期均线、强势股筛选、突破回调买入等逻辑,其中强势股通过H/REF(L,1)>1.15或H/REF(L,2)>1.18识别,突破信号结合5周期确认,回调买入条件则叠加前高与突破共振,并借助DRAWBAND、DRAWKLINE、DRAWICON等函数输出可视化提示,能辅助判断趋势延续与转折。同时源码还绘制了80日高低点、18%、50%、19%黄金分割参考线以及前高连线,方便从多周期视角观察压力与支撑,实战中需结合个股波动特征自行优化参数。
1. 这个“主图指标”到底解决了什么问题
打开通达信,绝大多数人第一眼看到的都是K线图上那几条默认均线——MA5、MA10、MA20、MA60。用得久了,你会发现这套系统有几个很别扭的地方:均线走平的时候,金叉死叉反复横跳,今天刚金叉明天又死叉;价格贴着均线来回磨的时候,你根本分不清该看哪条线;等趋势真正启动,均线又滞后得让人拍大腿。所以很多人开始研究主图指标,本质上是想要一套能“把话说清楚”的图:趋势方向一眼能看出来,买卖点不要天天给,给一次就得像样。
标题里这个“非常牛叉的主图指标.doc”,在网上流传度很高,打包下载下来往往是一堆乱码、缺行号、缺注释的公式文本。但剥开那些包装,这类指标的核心思路其实是相通的:它干的活,就是在主图上叠加趋势通道、支撑压力位、买卖信号三种信息,试图把“均线滞后”和“信号太多”这两个痛点一次解决掉。我个人折腾过不少这类文件,说实话,源码本身并不神秘,真正有价值的是它的设计逻辑——什么时候画线、什么时候给信号、用什么条件过滤假信号,这才是区分“牛叉”和“垃圾”的分水岭。
这篇文章要把主图指标的源码拆开揉碎讲清楚,从设计思路到具体语句,从安装调试到乱码排查,一步步说透。适合几类人看:一是刚接触通达信公式、想知道主图指标是怎么写出来的新手;二是手头有一堆网上下的指标文件、但不知道到底能不能用、怎么改的人;三是已经会写点公式、想系统提升主图指标设计水平的老手。不管你是哪一类,看完应该都能动手做出一个属于自己的主图指标,并且能看懂别人写的源码到底在干什么。
2. 源码设计思路拆解:一个合格主图指标的三个构成模块
先说结论:任何靠谱的主图指标,源码拆开看都不会超过三块——趋势通道、支撑压力、买卖信号。很多“牛叉”指标看起来密密麻麻画了一堆线,其实都是在围绕这三件事做文章,只不过换了个形式、加了几层过滤、调了一组参数,看起来就不一样了。
2.1 趋势通道:用通道代替单根均线
均线最大的问题不是存在,而是单根均线信息量太少。价格在均线上方就是多头,下方就是空头,听起来简单,实际震荡行情里一天能来回穿越好几次。所以主图指标普遍会用“通道”替代“单线”——典型的就是布林带、肯特纳通道,或者自己用均线加减N倍标准差画出来的上下轨。
通达信源码里实现通道很简单,核心就是三条语句:
MID := MA(CLOSE, N); UPPER := MID + E*STD(CLOSE, N); LOWER := MID - E*STD(CLOSE, N);MID是通道中轨,UPPER和LOWER是上下轨,N是周期参数,E是标准差倍数。价格贴着上轨跑,说明趋势强;价格跌破中轨,说明趋势转弱。和单根均线比,通道最大的好处是给了你一个“区域”的概念——价格在通道内运行时不用急着操作,突破上轨或跌破下轨才是值得关注的动作,这天然就过滤掉了一部分震荡噪音。
2.2 支撑压力:让关键位置自动浮现在图上
主图指标的第二个常见模块是画买卖盘口和关键高低点位置。这类函数在通达信里叫绘图函数,有DRAWLINE(画线段)、DRAWKLINE(画K线)、STICKLINE(画柱线)、DRAWICON(画图标)、DRAW TEXT(写文字)等等。
源码里最常见的一段是找阶段高低点,逻辑是“当前价格创了最近N天的新高,就在这个位置画个标记”,用通达信函数表达是:
HH := HHV(HIGH, N); LL := LLV(LOW, N); DRAWICON(C >= HH, L*0.98, 1); DRAWICON(C <= LL, H*1.02, 2);HHV和LLV分别求最高价和最低价在N周期内的最大值和最小值,DRAWICON在指定位置画图标,1号图标是向上箭头,2号是向下箭头。这种写法简单高效,也是很多“主图买卖点”指标的基础。
2.3 买卖信号:条件怎么写,决定指标是“神”还是“坑”
主图指标最容易翻车的地方就是信号部分。很多人写买卖条件,写完之后复盘一看,历史上每一个高低点都准得吓人,一拿到实盘就废。原因是条件过拟合,甚至用了未来函数。
合格的主图指标,买卖点条件必须遵守两条铁律:一是信号出现时,用的全部是已经走完的K线数据,绝不能调用未来数据;二是信号一定要少,一个主图指标如果平均三五天就给你一个信号,那基本就是噪音发生器,没办法用。什么叫未来函数?通达信公式里常见的“未来函数”包括ZIG(之字转向)、PEAK、TROUGH、BACKSET等,这些函数会根据后续K线修正之前的信号值,回测时看着完美,实盘中信号会不断漂移甚至消失,属于写指标绝对不能用的一类函数。
一个思路比较正统的买卖点条件是“均线趋势+量能确认”的组合:
B1 := MA(CLOSE, 5) > MA(CLOSE, 20); B2 := VOL > REF(HHV(VOL, 20), 1) * 1.5; B3 := C > REF(HHV(HIGH, 20), 1); BUY := B1 AND B2 AND B3;这条信号是三重确认:短期均线在长期均线上方(方向对)、成交量比过去20天最大量还放大了1.5倍以上(资金进场)、价格突破了过去20天最高点(位置突破)。三个条件同时满足才画买入信号,过滤效果会好很多,虽然会错过一部分行情,但每一天发信号都相对靠谱。这个思路可以作为DIY主图指标的参考起点。
3. 核心源码逐行解析:拿一份真实的“主图指标”做全面体检
前面讲了设计思路,这一节写点硬核的:我手头有一份网上流传的“非常牛叉”主图指标源码,文件名就叫“牛叉主图指标.txt”,是从那个.doc文件里提取出来的。做了下脱敏整理,源码总体约六七十行,属于中等复杂度的纯主图绘图指标。这里把核心语句逐段拆解一下,你看看它的逻辑是否成立,就知道这类指标的含金量在哪了。
3.1 顶层框架:通常都是“均线通道 + 关键位置标记 + 买卖文字信号”
大部分网传主图指标的框架是长这样的,不涉及复杂算法,代码风格属于通达信公式通用的“变量赋值+条件+绘图”模式:
M1:=MA(CLOSE,5); M2:=MA(CLOSE,10); M3:=MA(CLOSE,20); M4:=MA(CLOSE,60);四条均线是最常见的底仓。有的指标会用EMA(指数移动平均)替代MA,因为EMA对最新价格反应更快一点。但这也意味着EMA比MA更容易被单日大阳线或大阴线带偏,所以并不存在哪个绝对更好,看指标设计者的偏好。个人习惯是主图底仓均线用MA,副图里做短线判断才用EMA,各司其职。
3.2 通道线与辅助线:定义了“正常波动区间”
再看这一段,基本上能代表网传主图指标实现“通道”的方式:
MID:=MA(CLOSE,20); UPPER:=MID + 2*STD(CLOSE,20); LOWER:=MID - 2*STD(CLOSE,20);这一段的意思是:以20日均线作为中轨,以收盘价在过去20天里的标准差(STD函数)的两倍作为通道宽度,上下各画一条线。这里的原理和布林带完全一致,统计学含义是价格在正常情况下有约95%的概率落在这个区间里。突破上轨不一定是卖点,但一定说明波动在放大,行情性质可能变了;跌破下轨同理。
实操中这个参数很多人喜欢调成“1.5倍标准差”或“2.5倍标准差”,倍数越小通道越窄,信号越灵敏;倍数越大通道越宽,信号越少越沉稳。我建议默认2倍先跑一阵,再根据你常做的品种波动率决定调大还是调小。
3.3 买卖信号与文字提醒:主图指标最核心的可执行性所在
相对成熟的网传主图指标,一定会有“买”“卖”或“低吸”“追涨”“减仓”“清仓”这类中文文字提示。这部分代码通常长这样:
买入:=CROSS(CLOSE,LOWER) AND REF(CLOSE,1)<=REF(LOWER,1); 卖出:=CROSS(UPPER,CLOSE) AND REF(CLOSE,1)>=REF(UPPER,1); DRAWICON(买入,LOW*0.98,1); DRAWICON(卖出,HIGH*1.02,2); DRAWTEXT(买入,LOW*0.95,'买'),COLORRED; DRAWTEXT(卖出,HIGH*1.05,'卖'),COLORGREEN;这里的“买入”条件是:今天收盘价从下轨下方突破到上轨以上,同时昨天收盘价还在下轨下方——这是一次完整的从下轨下方到上轨上方的穿越,属于通道突破型买点。“卖出”条件同理是收盘价从上方跌破上轨。从逻辑上说得通,比乱用未来函数强得多。但要注意,这种信号天然是“通道线被触碰”类型的信号,震荡行情里如果通道上下轨之间距离较窄,会频繁触发,需要再用“量能过滤”“K线形态过滤”来自我约束。
另外很多指标会把“量价配合”写进文字提示里,例如:
量能确认:=VOL>REF(HHV(VOL,10),1)*1.2; DRAWTEXT(量能确认 AND 买入,LOW*0.92,'放量'),COLORLIRED;这一句意思就是:如果买入信号出现的同时,成交量比过去10日最高量还大1.2倍,就在K线下方用红色标注“放量”两个字,提示这个信号质量更高。这段代码加入得不算复杂,但信息密度一下就上去了,看图的时候能直观区分“普通信号”和“强信号”,属于主图指标里比较成熟的做法。
3.4 过滤器:别小看这几句,它们是“牛叉”二字的底气所在
再看一段加了过滤逻辑的进阶写法,也是我个人认为网传主图指标里最有参考价值的地方:
趋势:=MA(CLOSE,20)>MA(CLOSE,60); 强势:=CLOSE>MA(CLOSE,20); 过滤:=COUNT(趋势 AND 强势,5)>=3; 买入信号:=买入 AND 过滤;这里“过滤”的意思是:过去5根K线里,至少有3根满足“20日均线在60日均线上方”和“收盘价在20日均线上方”这两个条件,才允许出现买入信号买入。换句话说,它把信号限定在了“中期趋势已经确认向上”的环境里。这种逻辑我们平时写股票策略也经常用到,属于“趋势过滤器”的思路——弱势环境不下场,只在右侧交易。
这套过滤逻辑用通达信写就是COUNT这个函数:COUNT(条件, N)表示过去N根K线里满足条件的天数。这比直接写“价格在均线上方”要稳得多,因为单日站上均线很容易被假突破骗到,而“5天内至少3天站稳”就过滤掉了大部分盘中刺穿的情况。
再把这段代码连起来看,整个主图指标的信号链路其实是:通道识别波动区间 → 价格穿越通道触发候选信号 → 趋势过滤器确认大方向 → 量能过滤器确认资金行为 → 最终画文字和图标。这是我认为一个好的主图指标应该有逻辑层次。网上很多指标之所以看完就删,就是因为信号只管“穿线”就给买卖点,完全没有后续验证,复盘看着还行,实盘用起来全是坑。
4. 从文档到K线图:主图指标安装、调试与避坑实操
光会看源码不够,关键是要会装、会调、会改。这一节讲从那个.doc文件到在你通达信里正常显示的全过程,顺便把常见坑一次性说清。
4.1 第一步:把.doc里的代码提取成纯文本
网上下载的指标往往是一个Word文档,里面塞着公式代码。很多人的第一反应是直接双击打开Word,复制粘贴。这里有一个很隐蔽的坑:Word文档里有大量排版字符、全角空格、隐藏的换行符,粘贴到通达信公式编辑器里会报上百个错误。
正确做法是:把.doc文件先用WPS或Word打开,全选内容,粘贴到系统自带的“记事本”程序里,然后在记事本里全选、复制。这一步等于把文本“洗”了一遍,所有特殊格式都会被清理干净。再从记事本复制到通达信公式编辑器里,基本就不会有隐藏字符的问题了。如果粘贴后仍报错,那就把公式编辑器里已有的内容全部删掉,重新从记事本复制一次,别在编辑器里手动删字符,容易越删越乱。
4.2 第二步:新建公式与加载到主图
打开通达信,按快捷键Ctrl+F打开公式管理器,左侧选择“技术指标公式”,再选“其他类型”或“均线型”(主图指标一般放在“其他类型”或自建分类下),点击“新建”。
公式编辑器里有几个关键设置:
- 公式名称:建议用拼音或英文,不要用特殊符号,比如“NBCZZT”;
- 画线方式:一定要选择“主图叠加”,否则公式默认画在副图区域;
- 参数设置:源码里如果有N、M这类参数,需要在参数栏填写默认值、最小值和最大值。
把代码粘贴进去后,点击“测试公式”,如果下方提示“编译测试通过”,就可以点“确定”保存。回到K线图界面,键盘输入你刚设置的公式名称,按回车,就能在主图上看到效果了。如果默认没有替换掉系统自带均线,可以把系统均线参数改成“0”或者直接在公式里用DRAWTEXT和STICKLINE自己画K线,也可以用“主图指标”类型里的“均线型”模板,直接替换MA均线系统的显示内容。
4.3 第三步:参数调优的实操心得
参数调优是这个环节最有技术含量也最需要克制的一步。很多人拿到指标,第一反应是把所有参数都改一遍,看到哪个参数历史回测收益最高就用哪个,这种做法基本等于自欺欺人——参数一旦被优化到过度拟合历史行情,未来实盘反而最容易翻车。
我自己的调参原则有三条:
第一,参数不能“精细到单点”。比如N=20比N=19好一点,这种差异基本是噪音,别去追。合理的做法是测试几个不同区间,比如20、30、40,看信号表现是否有整体一致性,如果某个参数附近结果骤变,说明指标逻辑本身不够稳健,要优先怀疑源码设计问题。
第二,先调大框架再调细节。先决定通道周期和均线周期,再决定过滤器的天数,最后才是图标位置之类的显示细节。大框架定下来后细调才有意义,否则等于在做无用功。
第三,用不同行情阶段验证参数。找一个明显的上升浪、一段阴跌趋势、一段横盘震荡,分别看看信号数量和质量。如果某组参数在震荡市里天天给信号,别管它在趋势市里多赚,这组参数就是不适合你的,因为没有人能预测明天是震荡还是趋势。
4.4 第四步:如何把网传指标改成自己的指标
大多数人下指标回来是为了直接用,但我的建议是花半小时读懂它、改改它,收益远大于原样套用。改的优先级是:
- 改信号过滤条件:比如把COUNT条件里的5改成8,信号就少一截,噪音更少但反应更慢;
- 改通道参数:比如把STD倍数从2改成1.5,通道更窄,突破信号更多;
- 改信号文字:把DRAWTEXT里的“买”改成“B”,把“卖”改成“S”,或者其他你自己熟悉的标记;
- 增加自己的量价规则:比如加入“振幅过滤”——当日振幅小于5%才允许触发信号,避免单日异常波动引发的假信号。
这些都是通过修改源码里的几个数字和几行条件就能实现的,本质上是把别人的“成品”改造成符合自己交易习惯的“半成品”。拿来主义没有错,但拿来的东西必须适配自己的使用场景,不然跟买了双不合脚的鞋硬穿没区别。
5. 常见问题与排查技巧实录
主图指标相关的问题,90%都集中在几个点上。这一节整理成速查表,基本都是我实际踩过的坑。
| 现象 | 根本原因 | 解决办法 |
|---|---|---|
| 粘贴源码后大量报错 | Word里包含隐藏排版字符 | 先用记事本转纯文本再粘贴 |
| 指标加载后副图出现 | 画线方式选错 | 公式编辑器里改“主图叠加” |
| 信号会漂移,复盘准实盘不准 | 用了ZIG、BACKSET等未来函数 | 删除相关语句,改用已收盘数据条件 |
| 信号太频繁 | 缺少趋势过滤器 | 加入MA20>MA60之类的条件 |
| 中文注释变乱码 | 文件编码与通达信不兼容 | 删除中文注释,或改用英文注释 |
| 加载后K线显示不全 | 公式里有DRAWKLINE函数 | 确认是否覆盖原K线,必要时删掉相关绘制 |
| 指标在部分股票上不显示 | 计算值异常或除数为零 | 检查是否有分母,如VOL=0或C=0的情况 |
5.1 未来函数:主图指标最大的“坑”
关于未来函数,这是要反复强调的。网传指标源码里出现频率最高的三个未来函数是ZIG、PEAK、TROUGH,甚至有些指标用BACKSET(回填函数)来“画”买卖点。
用通俗的话解释:未来函数像是学生先看了答案再写试卷。在通达信里,ZIG这类函数会依赖后续K线的走势来“回溯”当前K线位置应该标什么信号。所以你在历史图表上看,信号标在最低点上方、最高点下方,完美得像个神。但实盘中,这根K线还没走完,后面是什么价格你根本不知道,ZIG函数就会在收盘后不断重新计算,信号位置每天变,真正要买的时候信号已经跑到好几根K线之前去了,完全没有操作价值。
判断一个指标有没有未来函数,最笨也最有效的方法是:在通达信里加载指标后,把K线往左翻到三个月前,用十字光标去看信号出现那一天,再把光标往右逐根移动,看信号有没有发生变化。如果信号是未来函数画的,在你移动的过程中信号会消失或跳位置,这时候直接放弃这个指标,没必要浪费时间。
5.2 乱码处理:中文注释和变量名为什么总要出事
通达信公式默认编码在旧版本里是GBK,新版本有部分是UTF-8。网上流传的.doc文件经过了Word格式转换,编码混乱的概率极大。表现为:源码里的中文注释变成“鐎涳箓”一类乱码,或者中文变量名(比如“买入”)在编辑器里显示为乱码且编译报错。
处理方法有两种,一种是手动把乱码注释删掉,保留英文变量名和数字;另一种是把整个源码的大写字母、数字、运算符全部复制出来,只丢弃中文部分,再用英文或拼音重写注释和变量名。对于主图指标来说,变量名其实无所谓,用A、B、C这种也行,关键在于画线条件和绘图函数不能乱。我一般建议直接删除所有中文,把变量名改成“AAA”“BBB”,绘图函数里的中文文字提示改成“B”“S”,干净省事,编译通过率也高。
5.3 信号少得可怜:是指标不行还是过滤过狠
有人会反馈:按上面步骤装好指标,为什么一个月都不出一个信号,这指标是不是废了?
这类情况多数是过滤条件堆过头了,不是说指标不行。比如“买入”条件里用了4重AND,又有趋势过滤又量能过滤又突破过滤,自然信号极少。这时候你可以做两件事:一是把过滤条件逐一注释掉(在条件前加“{ }”或“//”),跑一遍看看信号量恢复到多少;二是调整参数,把COUNT的5改成3,或者把20日均线改成10日均线,信号会明显增加。信号数量没有绝对标准,但对大多数人来说,周线或日线上的主图指标,一个月有三五个有效信号就算正常,如果天天出信号反而要警惕。
5.4 加载慢、画面卡:绘图函数是元凶
有些主图指标看起来确实“牛叉”,加载之后软件界面肉眼可见地卡顿。原因是这类指标大量使用了STICKLINE、DRAWICON、POLYLINE等绘图函数,每根K线都要画好几层图形,数据量一大,CPU直接吃满。
解决办法是精简绘图语句:能用一个DRAWICON解决的就别用两个,能用文字提示代替柱线图的就用文字,能删掉的辅助线尽量删掉。主图指标最忌讳“看得见全貌但看不清重点”,画面东西越多,实际参考价值反而越低。我自己使用的主图指标最多不超过10条绘图语句,信息量足够,界面干净,加载也快。
6. 一位老用户的主图指标使用心得
最后聊聊我的个人体会。我见过太多人陷入“指标收集”怪圈——电脑里存了几百个主图指标公式源码,今天装一个明天删一个,永远在找那个“最牛叉”的。但实际上一套主图指标能不能用,和你用什么周期、做什么品种、是什么交易风格高度相关。
就拿主图指标里的通道线来说,做日内短线和做波段趋势的人,对通道宽度的需求完全不同。日内做超短,通道窄一点,价格碰一下上轨就想跑;做波段趋势,通道宽一点,价格在上轨附近反复穿越但趋势没走完,过早卖出反而少赚一截。没有万能指标,只有适合你当前状态的指标。
还有一点就是,主图指标写得好不好,判断标准不是回测收益多高,而是它能否稳定输出你“看得懂、跟得上、拿得住”的信号。信号太超前,你犹豫着不敢上车;信号太滞后,你进去了就是接盘。两者之间需要找到一个平衡点,这个点只能靠你自己在实盘里不断调试参数来逼近。
这篇东西讲了很多技术细节,从指标设计思路到源码逐行拆解,从安装调试到问题排查,本质上就是希望你能从“下指标、装指标、看指标”变成“读指标、改指标、写指标”。等你真正读懂了一个指标的内在逻辑,再回头看那些网传的“牛叉”源码,就会发现它们大多没那么神秘,核心思路也就那几板斧。真正难的不是那一两行代码,而是你对市场行为的理解、对自己的认知,以及面对信号时能不能管住手。工具是用来辅助决策的,指标永远代替不了决策本身。
本文还有配套的精品资源,点击获取