
简介这是一份通达信平台主图指标公式源码文档面向股票技术分析爱好者与需要自定义交易信号的中级股民。文档以资金突破ZT主图指标为主线完整提供可直接复制到通达信的公式源码并对关键语句逐条解析涵盖K线与背景绘制、7日/20日/30日均线、五日乖离率、速度与加速度、强势狙击以及加仓/减仓/买入/清仓等多组信号算法。其中涉及操盘线、SAR和压力支撑位模块可辅助识别趋势拐点与资金异动文档还给出了T、T1等参数的建议取值范围方便直接套用。通过阅读可清楚了解均线多头排列与乖离率加速背后的触发条件也能按自身偏好调整参数、优化信号。压缩包内为单个doc文档大小153KB内容精炼、代码清晰已有603人学习下载适合希望提升看盘效率并构建个人交易参考体系的投资者。1. 通达信资金突破ZT主图指标一半是动量系统一半是分形突破通达信里的“资金突破ZT主图指标”名称容易让人以为只是突破画线工具打开源码后会发现它是两套逻辑叠在同一个主图上前一半用均线角度、乖离率、速度加速度组成动量系统输出买入、加仓、清仓、减仓、强势狙击等带仓位含义的文字信号后一半用分形高低点画出突破线和持仓线收盘价站上任意一条就在K线下方标出“资金突破”。这套「方向过滤、动量确认、位置触发」的三层结构值得逐段拆开看但源码里SMALL日期闸门和BACKSET回溯函数有两个坑前者会让信号在新行情里全部失效后者会让盘中看到的突破线在收盘后才会稳定。下面按绘图、动量、信号、分形四条线拆。2. 图表底座与均线体系背景、K线重绘与日期闸门2.1 背景、K线与收盘价标签通达信绘图的三个基础函数DRAWGBK(C0, RGB(01,01,01), RGB(01,01,01), 0, 0, 1); DRAWKLINE(H,O,L,C); MA7:MA(CLOSE,7),COLORRED,LINETHICK2; DRAWNUMBER(ISLASTBAR, C, C),COLORMAGENTA;DRAWGBK的第一个参数C0在正常行情里恒真所以整块主图背景被涂成接近纯黑的RGB(1,1,1)。注意RGB的括号里接收的是十进制0-255这里的01就是数字1不是十六进制颜色显示效果是极暗的黑色底。DRAWKLINE把系统自带K线重画一遍目的是给后面STICKLINE的自定义涂色提供一块干净画布避免重复叠加导致颜色浑浊。MA7是7日均线红色、线宽2作为短线视觉锚点它并没有参与后续任何信号计算。DRAWNUMBER配合ISLASTBAR只在最后一根K线右侧显示收盘价数字复盘截图时可以直接从图上读出最新价不必再低头看报价栏。这四个函数基本构成了通达信主图公式的标准开头先定背景再重绘K线然后画参考线最后标注关键数字。2.2 操盘线与趋势线三重EMA的滤波含义操盘线:EMA(EMA(EMA(CLOSE,2),2),2); 趋势线:(MA(操盘线,5)),COLORGREEN,LINETHICK2;把EMA(C,2)连续做三次得到一条比普通MA更贴价格、但比单根EMA更平滑的曲线再对操盘线取5日均线作为绿色趋势线。三重EMA的权重集中在最近两三天的收盘价上同时三次平滑又把单日毛刺逐级衰减所以它对拐点的反应快于MA8又不会像单根EMA2那样频繁抖动。绿色趋势线的角色是中期方向参考它走平或上行时短期K线回踩到它附近往往进入观察区它下行时所有短期红K线都只能按反弹处理。这套设计与后文VAR1/VAR2的20/30线收敛判断是配套的作者要求短中期方向一致后信号才允许出现。MA05到MA30这四条均线代码简单但要注意MA05被额外加粗并涂成浅蓝色说明它是整个动量系统的核心参考线后面的加仓、买入、清仓条件里MA05的方向出现频率最高而MA10、MA20、MA30更多是作为乖离率的计算底座不直接参与K线着色。2.3 SJTJ日期闸门为什么你的信号可能“过期”SJTJ:DATE1590301;这个变量被拼进后面所有STICKLINE和CROSS条件里作用是在指定日期之前让绘图和信号生效。DATE在不同通达信版本里返回的编码格式并不统一1590301这种写法按常见公式的惯例对应的是相对早期的日期。导入新版软件后如果当前行情日期已经越过这个阈值所有红绿K线着色和DRAWTEXT文字都会消失但均线还在。这里给一个排查口诀K线没有红绿、文字完全不显示先查SJTJ。最稳妥的改法是把1590301改成一个明显大于当前日期的数字或者直接把条件里的 AND SJTJ 全部删掉。公式管理器里做历史评测时这个坑不容易暴露因为评测区间可能被截在阈值之前但挂盘中预警立刻现形。提示历史区间内信号正常、新K线上没有任何信号优先怀疑SJTJ日期条件而不是去改均线参数。2.4 STICKLINE二次着色按EMA方向重绘K线X1:(CLH)/3; X2:EMA(X1,6); X3:EMA(X2,5); STICKLINE(X2X3 AND SJTJ,LOW,HIGH,0,1),COLORRED; STICKLINE(X2X3 AND SJTJ,CLOSE,OPEN,3.2,2),COLORRED; STICKLINE(X2X3 AND SJTJ,LOW,HIGH,0,1),COLORGREEN; STICKLINE(X2X3 AND SJTJ,CLOSE,OPEN,3.2,2),COLORGREEN;X1是典型价格X2是6周期EMAX3是X2的5周期EMA两者构成一条短周期趋势通道。X2大于等于X3时价格重心在上移轨道所有K线实体涂成红色反之涂绿。宽度0的STICKLINE负责画影线部分3.2宽度的负责实体部分这样一根K线的趋势属性完全由EMA状态决定而不是由收阳收阴决定。STICKLINE(CROSS(X3,X2) AND SJTJ,OPEN,CLOSE,3.2,0),COLORGREEN; STICKLINE(CROSS(X2,X3) AND SJTJ,OPEN,CLOSE,3.2,0),COLORRED; STICKLINE((CLOSEOPEN) AND (X2X3) AND SJTJ,CLOSE,OPEN,3.2,2)COLORGREEN; STICKLINE((CLOSEOPEN) AND (X2X3) AND SJTJ,CLOSE,OPEN,3.2,2)COLORRED; STICKLINE((CLOSEOPEN) AND (X2X3) AND SJTJ,CLOSE,OPEN,3.2,0)COLORGREEN; STICKLINE((CLOSEOPEN) AND (X2X3) AND SJTJ,CLOSE,OPEN,3.2,0)COLORRED;CROSS那两行的意义在于交叉当天需要覆盖一次旧颜色否则K线会比实际趋势状态晚一天变色。最有信息量的是后面四组阳线但EMA重心已经转空时阳线实体也涂成绿色这是典型的假阳线预警反过来阴线但EMA还保持多头时阴线实体涂红属于回踩中的强阴线识别。所以看这套公式的K线颜色不能根据收阳收阴判断多空要看实体颜色对应的X2/X3状态。3. 动量维度均线角度、乖离率与速度加速度3.1 均线角度ATAN计算把斜率变成可比较的“度数”BB05:ATAN((MA05/REF(MA05,1)-1)*100)*180/3.1416; BB10:ATAN((MA10/REF(MA10,1)-1)*100)*180/3.1416; BB30:ATAN((MA30/REF(MA30,1)-1)*100)*180/3.1416;BB05计算的是5日均线当日相对前一日的变化率乘100后取反正切再换算成角度。这个做法的核心价值在于归一化10元的股票和100元的股票只要均线斜率形状相同BB值就相同所以阈值可以固定写成30度、45度、60度。如果直接拿MA的涨跌幅做阈值不同价位的标的阈值完全不同参数没法通用。代价是单日换手剧烈时角度会突变。比如某天股价脉冲上涨MA05角度可能瞬间超过60度第二天又回落所以后面的强势狙击信号外层套了FILTER过滤加仓条件里又要求速度和加速度同时配合本质就是防止单根K线把角度打到异常值。3.2 乖离率价格相对均线的“拉力”五日乖离率:(C-MA05)/MA05*100; 三拾日乖离率:(C-MA30)/MA30*100,NODRAW; JC:CROSS(0,五日乖离率) AND 三拾日乖离率REF(三拾日乖离率,1) AND MA10REF(MA10,1);这里对乖离率的使用方式值得注意没有拿BIAS5的绝对值去判断超买超卖而是用CROSS(0,五日乖离率)捕捉“价格从上方向下穿越5日线”那一瞬间同时要求三拾日乖离率仍在回落、MA10还保持上行。组合表达的意思是短期动能刚转弱中期趋势没有被破坏这是减仓而不是清仓的依据。很多新手把乖离率当摆动指标用绝对值大了就抄底这在单边行情里会反复挨打。BIAS的合理区间是随市场波动变化的固定阈值的胜率远不如看穿越方向和均线结构配合。3.3 速度5与加速度5SMA嵌套EMA的双重平滑速度5:SMA(EMA((MA05-REF(MA05,1))/REF(MA05,1),3)*100,3,1); 加速度5:EMA((速度5-REF(速度5,1)),3),NODRAW;速度5先把5日线的日变化率做EMA(3)平滑再用SMA(,3,1)把权重向近期集中。SMA和EMA的区别在于权重分配方式不同SMA(X,3,1)相当于把最近值权重压到接近WMA对突发变化更敏感。加速度5是对速度再做一阶差分和EMA提炼的是“斜率的变化率”。加仓条件里同时要求速度5和加速度5大于前值等于要求上升斜率还在扩张阶段入场而不是等到角度已经走平甚至回落才进场。这两个变量都标记了NODRAW只参与计算不占图上位置。3.4 VAR1/VAR220线与30线的开口方向VAR1:(MA20-MA30)REF((MA20-MA30),1) AND MA20REF(MA20,1) AND MA30REF(MA30,1); VAR2:(MA30-MA20)REF((MA30-MA20),1) AND MA20REF(MA20,1) AND MA30REF(MA30,1);VAR1判断20日均线相对30日线的距离在扩大且两条线都在上行是中期多头排列强化的特征。VAR2完全反向两条线都在下行且间距扩大是空头加速的特征。这个指标在源码里定义了但没有被后面的信号条件引用更像作者留下的思路注释。我一般会把VAR1接进自己的买入条件用于排除均线粘合区的假突破但接上后信号数量会明显下降需要根据自身偏好取舍。指标名计算对象参数要点在信号中的作用BB05/BB10/BB30MA05/MA10/MA30的日变化率ATAN归一化固定阈值30/45/60识别加速段与强势狙击五日乖离率收盘价与5日线差值百分比只看穿越0轴不读绝对值减仓与买入触发三拾日乖离率收盘价与30日线差值百分比NODRAW不显示只参与判断确认中期方向是否同步速度5/加速度55日线变化率的双重平滑SMA权重3,1加仓信号的斜率扩张确认VAR1/VAR220/30线间距变化定义未直接引用中期排列方向的模板逻辑4. 交易信号组装买入、加仓、清仓、减仓与强势狙击4.1 FILTER和COUNT信号清洗机制强势狙击:FILTER(BB3030 AND BB1045 AND CROSS(BB05,60),10); 加仓:FILTER(COUNT(CROSS(BB05,30),5)1 AND MA05REF(MA05,1) AND 三拾日乖离率REF(三拾日乖离率,1) AND MA10REF(MA10,1) AND 加速度5REF(加速度5,1) AND 速度5REF(速度5,1),10);FILTER(X,10)的语义是X为真后的10根K线内不再输出第二次防止连续触发导致信号文字堆叠。COUNT(CROSS(BB05,30),5)1的含义是最近5根K线里5日线角度至少发生过一次从下方穿越30度。把COUNT放进FILTER内部表达的是“近期发生过、但只在当次确认时标一个点”DRAWTEXT不会在5根K线上连续画出多个箭头。4.2 五个信号的触发逻辑与仓位含义买入信号是整套公式里条件最丰富的一个MR:COUNT(CROSS(五日乖离率,0),3)1 AND 三拾日乖离率REF(三拾日乖离率,1) AND MA05REF(MA05,1) AND (C/REF(C,1)-1)*1005 AND REF(C,1)MA30; 买入:FILTER(MR,10);它要求三日内BIAS5从负转正三拾日乖离率在回升MA05在向上当日涨幅超过5%且前一日收盘价仍在MA30下方。核心意图是捕捉“弱转强的第一根大阳线”前一日还压在30日线下面当日突然放量拉起。之所以硬性要求涨幅大于5%是为了过滤震荡市里的小阳线把买点集中在真正的启动日。加仓信号在买入基础上多了一个“5日内5日线角度上穿过30度”的结构同时要求速度5、加速度5、三拾日乖离率、MA10四个维度全部向上表达的是主升段斜率确认。按照文末仓位说明买入信号出现时先进1/3仓加仓信号出现再补1/3剩余仓位留给强势狙击信号。强势狙击是全部信号里最严格的条件组合30日线角度大于30度确认中期趋势、10日线角度大于45度确认短期加速、5日线角度当根上穿60度确认极强斜率。三个角度条件同时满足在历史K线里并不常见所以信号数量少、单次质量相对高。减仓:FILTER(JC,10); 清仓:FILTER(COUNT(CROSS(30,BB05),5)1 AND (CMA30 OR OMA30) AND MA05REF(MA05,1) AND 三拾日乖离率REF(三拾日乖离率,1) AND MA10REF(MA10,1),10);减仓和清仓的区别在于MA10的方向减仓只要求BIAS5死叉0轴、中期乖离率回落MA10仍在上行清仓则要求5日内5日线角度跌穿30度、价格还在MA30上方形成反弹诱多、MA10已经从上行转为下行。趋势级别已经从短线回调扩大为中期转向。信号核心触发条件绘制位置仓位动作买入BIAS5三日内金叉0轴、MA05上行、涨幅5%、前收低于MA30LOW下方黄字买入1/3加仓5日内BB05上穿30度、速度/加速度/乖离率同步上行LOW下方红字加仓1/3强势狙击BB3030、BB1045、BB05上穿60度LOW下方黄字可满仓减仓BIAS5死叉0轴、中期乖离率回落、MA10仍上行HIGH上方青色减仓1/2清仓5日内BB05死叉30度、价格在MA30上方、MA10已下行HIGH上方绿字全部出局4.3 DRAWTEXT输出与信号优先级DRAWTEXT(加仓,LOW*0.98,←加仓)的含义是信号为真时在当根K线最低价下方2%的位置写入带左箭头的文字。同一天可能出现买入和加仓同时成立的情况因为两者的条件集有重叠都要求MA05上行所以实盘执行必须按作者给出的顺序先按买入信号进1/3加仓再补1/3强势狙击出现再考虑满仓。如果减仓和清仓同日出现以清仓为准因为清仓条件包含了MA10下行级别更高。复制源码时还有一个容易忽略的问题变量名“速度 5”和“加速度 5”中间带空格部分通达信版本对变量名内空格敏感导入时报“未定义变量名”的话先把这些空格去掉。5. 资金突破的核心分形高低点识别与突破线、持仓线5.1 分形高低点的定义ZZ1:REF(HIGH,4)HHV(HIGH,2*41); Y1:FILTER(ZZ1,3); C1:BACKSET(Y1,31); D1:FILTER(C1,3);ZZ1判断的是当前K线往前数第4根的HIGH是包含它在内的9根K线里的最高价即以这根K线为中心左右各4根K线的高点都不超过它构成一个标准顶分形。Y1用FILTER把连续出现的分形压到3根K线只保留一次C1用BACKSET把信号位置向前延伸4根D1再做一次FILTER最终得到一个不连续的干净顶分形标记。底分形的A2、V2、C2、D2处理完全对称窗口是7根K线而不是9根。顶部9根、底部7根的不对称设计不是笔误顶部识别更严格能让持仓线不那么频繁切换底部识别更敏感能让突破线及时给出新位置。5.2 E1/E2区间过滤排除横盘纠缠区E1:(REF(LLV(LOW,2*3),1)REF(HHV(HIGH,2*3),1))/2; E2:(HIGHLOW)/2; H2:D1 AND NOT(D2 AND E1E2); L1:D2 AND NOT(D1 AND E1E2);E1取前6根K线的高低区间中值E2是当根K线的中价。H2的含义是这是一个顶分形但当同时存在底分形且近期价格中枢高于当根中价时这个顶不被接纳。这个过滤器针对的是横盘整理区里高低点互相纠缠的情况只有顶底结构关系清晰时分形点才作为后续突破线的锚点。5.3 突破线与持仓线的生成逻辑XX1:REF(BARSLAST(H1),1)1; F1:BACKSET(H1 AND COUNT(L1,XX1)0,LLVBARS(IF(L1,LOW,10000),XX1)); G1:F1REF(F1,1); I1:BACKSET(G1,2); LD:I1REF(I1,1); L2:LD OR ISLASTBAR1 OR BARSCOUNT(CLOSE)1;XX1先求最近一次顶分形到现在的位置F1在顶分形到当前的区间里定位最低的那个底分形用的技巧是把非底分形位置的LOW替换成10000这样LLVBARS找出的就是区间内最低底分形的位置。LD确认最近底分形L2把最后一根K线也纳入边界处理保证序列在K线末端不会断开。XXX2:REF(BARSLAST(L2),1)1; F2:BACKSET(L2 AND COUNT(H2,XXX2)0,HHVBARS(IF(H2,HIGH,0),XXX2)); G2:F2REF(F2,1); I2:BACKSET(G2,2); HD:I2REF(I2,1); UU2:BACKSET(ISLASTBAR1,BARSLAST(HD)1); VV2:UU2REF(UU2,1); WW2:BACKSET(VV2,REF(BARSLAST(HD),1)2); XX2:WW2REF(WW2,1); 突破线:REF(H,BARSLAST(VV2)) COLORMAGENTA,DOTLINE; 持仓线:REF(H,BARSLAST(XX2)) COLORGREEN,DOTLINE;这一段顺着底分形再向上回溯在底到当前区间里找到最高的顶分形HD然后从最后一根K线往回定位最近顶的位置。突破线取最近这个顶分形的HIGH画成紫色虚线持仓线再向前取上一个顶分形的HIGH画成绿色虚线。所以突破线是“最近结构高点”持仓线是“再前一个结构高点”价格刷新最近高点时突破线被突破回踩后站上前高时持仓线成为支撑参考。这套设计和唐奇安通道的区别在于唐奇安用固定周期最高价这里的周期是分形结构动态决定的。横盘震荡时顶分形密集突破线快速切换强趋势中顶分形稀疏突破线能保持较长时间不会因为周期固定而过早触发。5.4 TP1/TP2两次突破机会的捕捉TP1:CROSS(C,突破线); TP2:CROSS(C,持仓线); STICKLINE(TP1,H,L,0,0),COLORYELLOW; STICKLINE(TP1,C,O,3,0),COLORYELLOW; STICKLINE(TP1,C,O,2,0),COLORYELLOW; STICKLINE(TP1,C,O,1,0),COLORYELLOW; DRAWTEXT(TP1,LOW*0.98,资金突破),LINETHICK1,COLORYELLOW;TP1是收盘价向上穿越突破线即第一次站上最近结构高点TP2是回踩后重新站上持仓线通常发生在突破后的回调阶段。后面的STICKLINE连续画了三个不同宽度的黄色柱体从3到1逐层覆盖模拟出高亮效果——通达信没有渐变画笔这是常见的“辉光”替代写法。COLORYELLOW加上LINETHICK1让文字更醒目。注意TP1和TP2共用同一套绘制代码所以图上出现黄色K线和“资金突破”文字时要区分是站上突破线还是站上持仓线前者是首次突破后者是回调再确认两者的后续持仓逻辑不同。6. 实战验证与参数修正6.1 导入后先做三处修正第一处是SJTJ日期闸门。源码里的SJTJ:DATE1590301挂在每个信号条件上不同通达信版本对这个日期编码的解析并不一致导入新版后很容易出现信号全部消失。最省事的处理方式是把条件改成恒真SJTJ:DATE1000000;第二处是BACKSET的未来函数属性。分形顶点需要K线收盘后才会最终确认盘中价格刷新时突破线位置可能发生漂移。做历史复盘没有影响但挂实时预警时必须做收盘确认把触发条件改成前一根K线已确认的写法TP1:REF(CROSS(C,突破线),1) AND CREF(突破线,1);这里REF(CROSS(C,突破线),1)表示上一根K线已经发生上穿再要求当前收盘价仍站在突破线上方双重确认避免盘中抖动反复触发。第三处是参数区定义了T和T1但整个公式里没有引用这两个参数修改它们不会有任何效果。想调节信号密度可以把FILTER的周期参数替换成变量例如把加仓条件里的FILTER(...,10)中的10改成参数T。6.2 快速统计信号质量在主图公式末尾临时加一行可以快速统计指定日期以来的信号次数DRAWNUMBER(ISLASTBAR, LOW*0.8, COUNT(TP1, BARSLAST(DATE20010101))), COLORYELLOW;COUNT的第二个参数统计从2001年之后到当前的K线数量输出结果是这段时间内TP1出现的总次数。把这个数字和肉眼观察到的突破后走势对比就能判断当前市场环境下这套结构是否值得继续使用信号数量明显偏少说明角度阈值偏高可以把CROSS(BB05,60)的60降回45信号太密集则把FILTER周期从10加到15。6.3 把主图当系统而不是当指标看待到这里“资金突破ZT主图指标”的可读性已经很明确它不是单一的突破判断而是一套“方向过滤、动量确认、位置触发”的三层决策系统。实践中最有效的用法不是等它标出“资金突破”再进场而是在它标出买入之后用持仓线作为移动止损参考只要收盘价不跌破绿色持仓线持仓逻辑就不需要推翻这比单独盯MACD或均线死叉更贴合这套主图的设计意图。SJTJ、BACKSET、T参数三个点改完再跑一遍统计这份源码才算真正变成自己的工具。本文还有配套的精品资源点击获取