资讯动态

通达信主图指标:自动标注W底与平台突破的无未来函数实现

发布时间:2026/10/9 6:59:12 来源:尧图企业网站定制
大家看盘的时候是不是经常这样打开通达信看到一只票走出了一个疑似W底的形态于是手动拉了两条线放在那儿结果过了两天形态又变了线还得重新画。群里也经常有人问有没有能自动把W底、平台突破这些形态标出来的主图指标。我过去一年多一直在做这类形态自动标注的指标公式踩了不少坑今天把这套主图指标的设计思路、核心代码和容易踩雷的地方完整拆一遍给同样在搞通达信公式的朋友做个参考。先说清楚这个指标能干什么它叠加在K线主图上能自动识别几类常见形态并标注文字和图标——W底突破、平台突破、均线金叉死叉、顶底背离拐点。对盯盘多、复盘量大的人来说最大的价值不是预测而是帮你把成千上万根K线里符合某种结构特征的位置快速筛出来省掉大量手动划线和翻历史K线的时间。全文讲的是无未来函数的实现方案不会出现信号漂移那种坑这个后面会专门重点说。1. 为什么我会想写一个自动标注形态的主图指标1.1 手动标注的三个真实痛点先说手动画形态的体验。老股民应该都有感受费时间。复盘一只票先把日K拉出来肉眼扫描哪里像双底、哪里像平台突破。一只票画完至少五分钟一天复盘几十只几个小时就没了。标准不一致。同样是双底你觉得左低点要够低才算我觉得回踩不破颈线就算。没有统一标准复盘结果就很难复用。盘中无法实时盯。手动画线只能事后走查等形态走完再画已经晚了。真正到了突破那一刻手动根本来不及。我自己最开始写自动标注指标就是想解决这三个问题标准统一、实时计算、批量筛选。指标把形态翻译成可计算的规则用通达信公式语言去扫每一根K线满足条件就在主图对应位置打上标记。这个思路虽然不是什么新技术但做顺了以后「形态公式条件可视化标注」这个框架可以延伸到很多场景比如期货分钟线的日内高低点标注、涨停板后的回踩形态识别等等。1.2 自动标注到底能帮你什么很多人对自动标注抱有不切实际的期待以为它像AI一样能理解K线语义。实际上通达信公式能做的是把形态拆成一组离散的、可回溯的K线特征然后按特征组合去匹配。它的优势在于同一套规则跑一万只票结果口径完全一致不存在今天我觉得像、明天我觉得不像的问题。信号触发即标注盘中挂机就能看着主图冒出新标记盯盘效率高很多。复盘可追溯任何标注都能对应到明确的触发条件不会出现当时为什么画这条线的迷惑。说直白点自动标注指标相当于一个形态扫描器而不是交易圣杯。理解了这层定位后面设计规则的时候就不会盲目追求高胜率而是追求规则清晰、信号可靠、无未来函数。2. 通达信公式语言里形态识别的能力边界与设计前提2.1 通达信公式能做什么、不能做什么动手写之前先必须清楚通达信公式语言的边界。它有下面这些能力和限制能力说明常用函数示例序列计算对收盘价、最高价、最低价、成交量做逐K线计算MA、HHV、LLV、REF交叉检测两条线相交的瞬间CROSS回溯查找找上一次满足某条件的K线距今距离BARSLAST条件组合多个条件AND/OR组合IF、AND、OR可视化画线、标文字、画图标DRAWTEXT、DRAWICON、STICKLINE未来索引不能直接取未来第N根的值无不能用未来数据通俗理解通达信公式是基于过去和当前K线的规则引擎它逐根K线计算每一根K线只知道从起点到当前的序列数据。所以它能识别当前价突破了最近30日的最高点、5日均线从下往上穿越10日均线这类结构但它做不到识别复杂的谐波形态、看懂K线形态背后的市场含义更不会提前告诉你明天会怎样。2.2 主图指标的设计前提延迟确认还是即时触发这是整个指标设计里最关键的取舍。形态识别有一个天然的矛盾K线没走完你就无法100%确认形态成立。比如W底左边低点出现了后面可能直接跌下去不构成W底要等到价格反弹、再回踩、再突破颈线W底才算完整走完。如果在一开始就像用ZIG这类函数回头看标出W底信号确实完美但那是把未来信息用在历史标注上回看时样样都对实盘中一个信号都抓不到。所以我在这套指标里定的设计原则是所有形态标注必须等到确认条件被触发后才在K线图上标出来。就比如W底标注不标疑似W底正在形成只标W底突破确认。这意味着标注时间会比形态真正走完晚一两根K线但换来的是信号不会漂移历史信号和实盘信号完全一致。这个原则贯穿下文所有代码。3. 形态识别的语句翻译W底与平台突破的完整逻辑3.1 先把形态定义成数学条件再翻译成公式写通达信公式最难的不是记函数而是把肉眼看的形态翻译成程序能算的条件。以W底为例经典的W底肉眼特征是价格先下跌形成一个低点A反弹到一定高度后再次下跌在A点附近形成另一个低点BB略高于A或与A相近随后放量向上突破A、B之间的反弹高点。翻译成程序语言核心就是三步找到一个经过确认的近期低点位置计算该低点到当前K线之间的反弹高点当前价格向上突破这个反弹高点时触发W底突破标注。这里有个细节所谓经过确认的低点我用的是过去N周期的最低价位置且当时左侧K线的收盘价都高于它。这个条件在低点出现的那一刻就能成立不需要等右侧K线走出来所以不涉及未来函数。但为了确保低点确实已经走出来了我还限制当前K线距离低点至少5根K线以上这就相当于给了右侧确认时间。3.2 W底识别核心代码逐段拆解下面这段就是我在主图指标里用的W底识别逻辑代码可以直接粘进通达信公式编辑器看效果{---均线组---} MA5:MA(CLOSE,5),COLORWHITE; MA10:MA(CLOSE,10),COLORYELLOW; MA20:MA(CLOSE,20),COLORMAGENTA; MA60:MA(CLOSE,60),COLORGRAY; {---参数区---} N:20; M:5; {---低点确认条件---} 低点条件:LOWLLV(LOW,N) AND REF(LOW,1)LOW; 低点距离:BARSLAST(低点条件); 有效距离:IF(低点距离30,30,IF(低点距离5,5,低点距离)); {---W底突破条件---} W底低点:REF(LOW,有效距离); 反弹高点:HHV(HIGH,有效距离); W底突破:低点距离5 AND 低点距离30 AND CROSS(CLOSE,反弹高点) AND 反弹高点/W底低点1.02;这段代码的逻辑我拆成几个点解释低点条件当前K线最低价是最近N周期最低并且前一根K线最低价比当前高。用来定位阶段低点这根K线。低点距离记录这根低点K线离当前有多少根K线用BARSLAST找最近一次成立的距离。有效距离为了防止低点太近或太远导致计算失真把距离钳制在5到30之间。低点太近说明形态没走完太远说明形态已经过时。反弹高点从低点位置到当前K线的最高价这就是颈线。W底突破用CROSS判断收盘价是否上穿颈线同时要求低点到当前的距离在5到30根K线之间并且反弹幅度至少要2%——太窄的波动算不上W底。这里用CROSS而不用CLOSE反弹高点是防止突破后连续标注。CROSS只在上穿那一根K线条件为真后面的K线只要还在颈线上方CROSS就不会再次成立天然起到防重作用。3.3 平台突破识别结构更简单但过滤坑更多平台突破比W底好识别结构上就是价格长时间在一个窄幅区间内震荡然后某天突然放量突破区间上沿。逻辑如下{---平台突破条件---} 区间上沿:REF(HHV(HIGH,30),1); 区间振幅:HHV(HIGH,30)/LLV(LOW,30); 平台整理:区间振幅1.08 AND COUNT(区间振幅1.08,30)30; 放量:VOLREF(VOL,1)*1.5; 平台突破:CROSS(CLOSE,区间上沿) AND 平台整理 AND 放量;这里有几个容易出问题的细节区间上沿取的是前30日最高价用REF排除当前这根K线。如果不用REF当前K线自己创出新高就会同时抬高上沿导致永远无法突破。平台整理要求过去30根K线都在8%的振幅以内。8%这个数值是需要按品种调的——日线股票可以放到10%到15%期货分钟线可能3%以内就算平台这个后面参数优化部分会说。放量用了1.5倍量比。纯形态突破很容易假突破加一个量能过滤条件可以挡掉一部分无量虚破。3.4 金叉死叉和顶底极点标注形态标注不只有W底和平台突破我也会在主图把均线金叉死叉、阶段顶底极值顺手标出来这样一张图上信息更全{---金叉死叉---} 金叉:CROSS(MA5,MA10); 死叉:CROSS(MA10,MA5); {---阶段极值---} 阶段顶:HIGHHHV(HIGH,10) AND REF(HIGH,1)HIGH; 阶段底:LOWLLV(LOW,10) AND REF(LOW,1)LOW;阶段顶底的逻辑和前面低点确认一脉相承当前最高价是过去10根K线的最高且前一根最高价高于当前这样标出的顶底是左侧确认的极值点不依赖右侧数据。4. 标注层的呈现技巧文字、图标、画线的组合实战4.1 DRAWTEXT、DRAWICON、STICKLINE到底怎么配才好看识别逻辑只是第一步标注位置和样式直接决定这个指标好不好用。通达信里最常用的三个标注函数是DRAWTEXT(条件, 价格, 文字)在指定价格位置显示文字。适合标注W底突破这种带名称的信号。DRAWICON(条件, 价格, 图标编号)在指定位置显示内置小图标比如向上向下箭头。适合标金叉死叉。STICKLINE(条件, 价格1, 价格2, 宽度, 0)在价格1和价格2之间画柱线。适合给信号区域加底色强调。我在这套指标里的实际用法DRAWTEXT(W底突破,LOW*0.98,W底突破),COLORRED; DRAWTEXT(平台突破,LOW*0.97,平台突破),COLORYELLOW; DRAWICON(金叉,LOW*0.99,1); DRAWICON(死叉,HIGH*1.01,2); STICKLINE(W底突破,LOW*0.98,LOW*0.97,2,0),COLORRED;几个要点位置偏移标注文字不要直接压在K线实体上否则会挡住价格。我用LOW*0.98和LOW*0.97相当于在最低价下方2%到3%的位置标注不同价位股票都能自适应。图标选择通达信内置图标编号从1开始不同版本编号对应的图形可能不一样。实测下来编号1通常是向上箭头2是向下箭头具体以你版本显示为准。建议先标一个试一下。柱线宽度STICKLINE的宽度参数用0到3之间太宽会糊成一片太窄看不见。我习惯用2并且用空心柱最后一个参数0表示空心。4.2 标注防重与位置重叠的处理自动标注最烦人的问题就是信号重复标、文字叠成一团。实际写的时候我发现了几个规律用CROSS代替连续判断前面W底和平台突破都用了CROSS这是最简单有效的防重手段。不同信号错位标注如果W底突破和平台突破同时触发这种情况并不少见W底突破本身就可能是平台突破两个DRAWTEXT会在同一天出现并重叠。我的处理是给不同信号分配不同Y轴位置W底标在最低价下方3%平台突破标在最低价下方5%用位置错开避免遮挡。文字数量控制主图不是信息越密越好标太多反而看不清。实践中我把文字类标注限制在两个以内其他信号全部用图标表达。5. 无未来函数自动标注指标最容易踩的坑与自查方法5.1 什么是未来函数为什么自动标注指标特别容易踩通达信公式里的未来函数指的是在计算当前K线信号时用到了当前K线之后的数据。典型如ZIG、PEAK、TROUGH这类拐点函数它们会回头看数据寻找拐点。这类函数有个致命特征信号会随K线增加而漂移。比如你在2024年1月1日打开某只票看到ZIG在某个位置标了一个顶觉得很准但等到2024年1月10日再打开同一位置可能就不再是顶了因为后面的K线改变了拐点计算。对复盘来说这完全失去了参考价值。更严重的是如果用这种指标做历史回测回测胜率会虚高得离谱——因为它等于先看到答案再答题。自动标注形态的指标为什么特别容易踩这个坑因为大多数形态都需要右肩走完才能确认头肩顶如果程序想提前在形态形成初期就标注出来就只能偷看未来的K线。我当时第一版W底标注也犯过这个毛病用ZIG找拐点回看历史图怎么标怎么准一上实盘就懵了信号根本不触发或者触发了之后跳来跳去。后来才彻底明白形态识别的标注时间必须晚于形态确认时间这是铁的纪律。5.2 自查未来函数的三种方法网上很多指标源码说无未来函数但实际并不干净。我自己总结了三招自查方法实测很有效换加载位置对比法把同一只股票分别滚动到不同日期加载指标。如果历史标注位置在不同日期下发生变化说明有未来函数。源码函数检索法在源码里搜索ZIG、PEAK、TROUGH、BACKSET、FFT、XMA这些已知会在不同程度上使用未来数据的函数。出现即高度警惕。需要说明的是并不是用了这些函数就一定漂移但绝大多数情况下它们都和未来数据有关。信号触发时机验证法只看当前K线有没有信号触发而不是看历史标注。如果当前这根K线之前的信号数量和形态都稳定说明无未来数据参与如果出现当前开始标注历史K线的现象就说明用了未来数据。5.3 我如何把无未来落实在代码里这套指标里每一个形态标注都用到了右侧确认的思路W底突破不标形成W底只标突破颈线确认W底。突破这个动作发生时右侧信息已经出现不需要偷看未来。平台突破要求当前K线上穿区间上沿区间上沿是过去30日的最高点不包含当前K线所以也不涉及未来。金叉死叉CROSS天然只判断当前这根K线的交叉关系不涉及未来。一句话总结我在无未来函数上的原则宁可信号晚两天不让信号漂一分。这套指标在实盘里跑历史标注和盘中触发是一致的回看什么样当时就什么样。6. 完整主图指标源码与参数调优方案6.1 完整可用的主图指标源码下面给出完整源码通达信公式编辑器里新建一个主图指标把代码粘进去选主图叠加就能用。为了照顾不同版本函数都用最基础的写法。{形态自动标注主图指标 无未来函数版} {均线组} MA5:MA(CLOSE,5),COLORWHITE,LINETHICK1; MA10:MA(CLOSE,10),COLORYELLOW,LINETHICK1; MA20:MA(CLOSE,20),COLORMAGENTA,LINETHICK1; MA60:MA(CLOSE,60),COLORGRAY,LINETHICK1; {参数区} N:20; M:5; 振幅度:8;{平台振幅参数单位%} 量比:1.5;{放量倍数参数} {---W底识别---} 低点条件:LOWLLV(LOW,N) AND REF(LOW,1)LOW; 低点距离:BARSLAST(低点条件); 有效距离:IF(低点距离30,30,IF(低点距离5,5,低点距离)); W底低点:REF(LOW,有效距离); 反弹高点:HHV(HIGH,有效距离); W底突破:低点距离5 AND 低点距离30 AND CROSS(CLOSE,反弹高点) AND 反弹高点/W底低点1.02; {---平台突破识别---} 区间上沿:REF(HHV(HIGH,30),1); 区间振幅:HHV(HIGH,30)/LLV(LOW,30); 平台整理:区间振幅(振幅度/100) AND COUNT(区间振幅(振幅度/100),30)30; 放量:VOLREF(VOL,1)*量比; 平台突破:CROSS(CLOSE,区间上沿) AND 平台整理 AND 放量; {---金叉死叉---} 金叉:CROSS(MA5,MA10); 死叉:CROSS(MA10,MA5); {---阶段极值---} 阶段顶:HIGHHHV(HIGH,M) AND REF(HIGH,1)HIGH; 阶段底:LOWLLV(LOW,M) AND REF(LOW,1)LOW; {---标注部分---} DRAWTEXT(W底突破,LOW*0.98,W底突破),COLORRED; DRAWTEXT(平台突破,LOW*0.97,平台突破),COLORYELLOW; DRAWICON(金叉,LOW*0.99,1); DRAWICON(死叉,HIGH*1.01,2); STICKLINE(W底突破,LOW*0.98,LOW*0.97,2,0),COLORRED; STICKLINE(平台突破,LOW*0.97,LOW*0.96,2,0),COLORYELLOW;我把平台振幅和量比单独设成了参数这样不用改代码就能做不同品种适配。你在通达信里打开指标参数面板就能直接调整振幅度和量比。6.2 参数调优不同品种、不同周期的适配思路参数不是死的我实际跑下来不同场景最好这样调场景参数建议原因股票日线振幅度8~12量比1.5~2日线波动天然大于分钟线振幅太窄会筛掉大多数平台期货5分钟振幅度2~4量比1.3期货分钟线平台更紧凑放量倍率不用太高股指期货1分钟振幅度2~3量比1.2分钟周期信号密集严格过滤避免噪音指数/ETF振幅度5~8量比1.5指数波动相对平缓振幅阈值居中N参数决定低点确认的观察窗口股票日线建议20周期越短建议越小比如分钟线设10到15。这些参数没有绝对正确答案建议先用默认参数跑历史再根据标的波动特性微调。6.3 多周期适配经验这套指标我试过日线、周线、60分钟、5分钟、1分钟都可以正常跑。但从使用效果看有几个规律日线和周线信号数量适中标注比较可靠适合做中级别波段复盘。分钟线信号数量明显增多尤其是阶段顶底和金叉死叉几乎天天有这时候建议只保留形态突破类标注把金叉死叉的DRAWICON注释掉。期货日内如果用在1分钟级别平台突破的30根K线窗口要改成20根甚至15根因为1分钟线30根才半小时平台时间跨度太短意义不大。7. 实测复盘与使用建议7.1 从历史案例看标注的实际效果我用这套指标复盘过几段典型行情举一个印象比较深的例子。某只股票在低位连续横盘了将近一个月区间振幅大概只有6%期间均线逐渐粘合。指标在第20个交易日前后触发了平台突破信号同时MA5上穿MA10主图上同时出现了平台突破文字和向上箭头图标。后面价格确实走了一波主升浪。同样一段行情里另一只股票也有一个平台突破信号但由于当时是缩量突破量比只有1.1倍没有达到1.5的过滤阈值指标没有标注。事后看那次突破确实是假突破第二天就跌回平台内。这验证了量能过滤在减少假信号上的价值。7.2 指标是工具不是圣杯——三条使用建议第一形态标注信号更适合做初筛而不是直接买入信号。我会把标注出来的形态加入自选池再结合基本面、板块热度、大周期趋势做二次判断。形态标注帮你省的是盯盘时间不是决策过程。第二遇到极端行情要人工判断。比如连续涨停后的平台突破因为涨停板的特殊机制平台振幅和量比参数都可能失真。这时候标注条件不一定成立但形态可能仍然有效需要手动识别补刀。第三参数不要天天改。指标参数一旦根据历史行情调到完美适配过去通常就对未来失效了。我自己经历过反复调参后发现默认参数跑稳定品种的效果往往比天天调参的效果更好。这个指标目前还在持续迭代下一步我打算把背驰判断也整合进来把MACD顶底背驰和形态突破做二次共振确认。平时我在实际使用中最大的体会是通达信公式的价值不在于多花哨而在于规则能落地、信号能复现、代码无未来函数。只要守住这三条底线一个看似普通的自动标注主图指标也能在复盘和盘中盯盘里实实在在帮你省下大量时间。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑