通达信艾略特波浪划线指标公式源码:ZIG折点、浪序标注与未来函数排错

发布时间:2026/9/17 8:04:34
通达信艾略特波浪划线指标公式源码:ZIG折点、浪序标注与未来函数排错 简介这是一份面向股票技术分析爱好者与通达信公式编写者的指标源码文档围绕艾略特波浪理论实现主图五浪划线帮助使用者在看盘时快速识别趋势的推进与调整阶段。文件为单个 doc 文档压缩包约 118KB内容以可直接粘贴到通达信公式管理器的源码为主包含变量定义、公式注释与绘制逻辑说明。源码以 5 期与 10 期移动平均线M5、M10的交叉为起点借助 BARSLAST、SUMBARS 计算交叉计数再通过 HHV、LLV 及 CONST、REF 函数回溯近高、中高、远高与近低、中底、远底六个关键价位并用 DRAWLINE 绘制 12 条浪形连线上涨段以品红色标示、下跌段以绿色标示。此外还输出中区价位水平虚线及文字标注并以 NODRAW 形式给出各关键高低点数值方便叠加其他指标做二次判断。目前已有 259 人学习适合想理解波浪结构量化表达、并对照源码改造为自己交易系统的读者参考。1. 搜“艾略特波浪划线通达信指标公式源码”的人真正想要的是什么半夜改公式的人常遇到这一幕把 ZIG 的参数从 5 改成 8整条浪线塌了昨天标好的 3 浪变成一根没意义的折线。找“艾略特波浪划线通达信指标公式源码”本质不是找一份能预测行情的圣杯而是找一套把自己脑子里的浪型结构翻译成通达信公式语言的方法。落地对象很具体主图一条折线折点上带 1、2、3、4、5 和 A、B、C 标注再配几条 0.382、0.618 的回撤位水平线。适合有公式基础、愿意自己调转向阈值的技术型交易者也适合想把主观浪型拆成可统计特征的研究者。真正的难点不在理论而在通达信公式语言只能拿到 OHLCV 和有限时序函数怎么把“浪”这种带结构的形态压缩成可计算的转向点。2. 艾略特波浪在通达信公式里怎么变成可计算量2.1 从浪型规则里抽出可判定的约束条件艾略特波浪的原始形态是主观画法落到公式里必须变成能用 OHLCV 判断的硬约束。常见做法是只保留三条最稳的浪 2 回撤不能超过浪 1 的 100%即浪 2 低点不跌破浪 1 起点浪 3 不能是浪 1、3、5 中最短的一段实务里常要求浪 3 长度不低于浪 1 的 1 倍浪 4 与浪 1 一般不重叠终结楔形和引导楔形是例外。再叠加斐波那契比例作为软约束浪 2 常回撤浪 1 的 0.382 到 0.618浪 3 常是浪 1 的 1.618 或 2.618 倍浪 4 常回撤浪 3 的 0.236 到 0.382浪 5 与浪 1 等长或为 0.618 倍。这些数字在公式里全是加减乘除关键是先有个能输出浪点坐标的东西。2.2 ZIG 转向阈值就是浪级旋钮通达信里能给出折线的就是 ZIG写法是ZIG(K,N)。K 决定用哪个价格0 开盘、1 最高、2 最低、3 收盘N 是转向百分比价格逆向运动超过 N% 才确认转向。把 N 理解成浪级旋钮最直观N 越小折线越碎抓的是日内小波动N 越大折线越粗抓的是一段主升浪。N 取值折点数量对应浪级日线适合的观察周期3多次小浪5 到 15 分钟5中小浪60 分钟到日线8中少中浪日线波段13少大浪日线到周线20很少循环浪周线以上N 不是越大越好。太大一个完整的 5 浪推动会被压成一个折点1、3、5 全丢太小浪 1 内部又被拆成一堆次级别小浪浪序标注随即失效。常见做法是同一张图上叠两条不同 N 的 ZIG粗线定大浪框架细线找浪内结构。2.3 PEAK 与 TROUGH 的坐标语义ZIG 只给折线不给浪序要标浪号得靠 PEAK 和 TROUGH写法是PEAK(K,N,M)和TROUGH(K,N,M)。K、N 含义与 ZIG 一致M 是第几个折点从右往左数1 表示最近一个已确认折点。PEAK(1,5,1)是最近一个 5% 转向的最高价波峰TROUGH(2,5,2)是倒数第二个 5% 转向的最低价波谷。M 不能写 0 或负数通达信只接受从 1 开始的正整数这是新手最容易卡住的编译错误。还有一条要提前记住PEAK 返回的不是某个固定历史点。当最新波峰还没被反向走够 N% 确认时它返回的是当前浮动的跟踪值这根 K 线读到的 PEAK 和下一根可能不同这正是后文要专门处理的未来函数问题。2.4 斐波那契回撤位在公式里的算式有了浪点坐标回撤位就是纯算术。设浪 1 起点价 S1、终点价 E1浪 2 的常见支撑位就是这几个S1:TROUGH(2,5,5); {浪1起点倒数第5个谷} E1:PEAK(1,5,4); {浪1终点倒数第4个峰} FB382:E1-(E1-S1)*0.382; FB500:E1-(E1-S1)*0.5; FB618:E1-(E1-S1)*0.618;M 的取值取决于图上要回溯到第几浪这里的 5 和 4 只是示意。扩展位同理E3:S2(E1-S1)*1.618是最常见的第 3 浪目标算式S2 是浪 2 低点。到这一步波浪理论里可量化的部分就抽干净了折点靠 ZIG浪序靠 PEAK/TROUGH 的 M 参数比例靠四则运算剩下的全是画线。3. 通达信艾略特波浪划线指标公式源码骨架3.1 主图叠加公式的参数声明与变量约定在公式管理器里新建指标时先选“主图叠加”不要选副图否则折线会和 K 线错开无法对照。公式名建议用拼音加英文混写例如ELW_ZIG方便在公式管理器 6.06 这类版本的列表里检索。参数区建议暴露三个NZIG 转向阈值默认 5KD取价源默认 3收盘可切到 1最高观察极端点LWD线宽默认 2。变量命名上有一条经验所有中间变量用短名因为通达信公式的变量表在公式较长时会变难维护。凡是画折线用的变量加ZZ前缀画回撤位的加FB前缀画标注的加TX前缀日后改参数时一眼能找到。3.2 DRAWLINE 与 POLYLINE 该怎么选通达信能画线的函数不止一个选错会让代码量翻好几倍函数适用场景优点局限ZIG(K,N)直接输出折线本体一行搞定不能分段控制颜色POLYLINE(COND,PRICE)在满足条件的点上连续成线适合稀疏折点条件为假的位置会断开DRAWLINE(C1,P1,C2,P2,E)两点之间单段连线能精确控制起止每段都要写一条DRAWTEXT/DRAWNUMBER浪号标注支持文字和数字不参与计算如果只是把整段折线画出来直接输出ZIG(3,N)最省事如果想给推动浪和调整浪分色就得用DRAWLINE一段一段连代码会长很多但视觉上最容易读出浪型。3.3 一份可以直接编译的最小划浪源码下面这份代码是骨架态编译能过能在主图画出折线和折点标记{艾略特波浪划线 - 主图最小版} N:5; ZZ:ZIG(3,N); {折线一阶差分用来判断折点} DIR:ZZ-REF(ZZ,1); TOP:REF(DIR,1)0 AND DIR0; {由升转降顶部折点} BOT:REF(DIR,1)0 AND DIR0; {由降转升底部折点} {折线本体} ZIG(3,N),COLOR00C8FF,LINETHICK2; {折点标注上下偏移避免压住K线} DRAWTEXT(TOP, ZZ*1.01, H),COLORYELLOW; DRAWTEXT(BOT, ZZ*0.99, L),COLORGREEN;3.4 逐行逻辑与参数替换说明ZIG(3,N)用收盘价算折线折线在每一个已确认的转向点取真实价格两点之间做线性插值所以折线看起来是直的但采样点就是 K 线。DIR是折线的一阶差分上升段为正、下降段为负。TOP判断前一根在升、当前在降就是顶部折点BOT反过来。需要改的地方有三处N换成 8 或 13 就切换浪级ZZ*1.01和ZZ*0.99是文字偏移比例K 线密集时改成 1.005 和 0.995 能少压线COLOR00C8FF属于 BGR 顺序的色值想换色直接改六位十六进制即可。注意这份最小版会随 ZIG 的重绘而重排最后一到两个折点不稳定只适合看历史形态不能当作当期信号。4. 通达信画浪把 1-2-3-4-5 与 A-B-C 标到主图上4.1 折点识别与浪序编号折点识别在第 3 章已经完成浪序编号要另外做。这里必须说清一件事折点的自动识别是可靠的浪序的自动判断不可靠。1-2-3-4-5 和 A-B-C 需要满足第 2.1 节的约束条件通达信公式只能做近似过滤绝大多数能搜到的“艾略特波浪源码”给出的都是折点序号而不是真正的浪号。比较务实的做法是把折点按从右往左的顺序编号再人工套浪型。{折点序号从最近折点往前累加} CTOP:BARSLAST(TOP); CBOT:BARSLAST(BOT); DRAWNUMBER(TOP, ZZ*1.02, CTOP1),COLORYELLOW; DRAWNUMBER(BOT, ZZ*0.98, CBOT1),COLORGREEN;BARSLAST(TOP)返回上次顶折点到当前的 K 线根数加 1 就是间隔。DRAWNUMBER把数字写到折点旁边比DRAWTEXT更适合编号因为数字会随 K 线更新自动变化。4.2 主图画浪与副图浪级同步主图看结构副图看力度两图用同一个N才对齐。副图里常画折线的斜率或每段浪的涨跌幅{副图每段浪的涨跌幅} SEG:ZZ-REF(ZZ,1); RATE:SEG/REF(ZZ,1)*100; STICKLINE(SEG0, 0, RATE, 3, 0),COLORRED; STICKLINE(SEG0, 0, RATE, 3, 0),COLORGREEN;SEG是折线的每根 K 线增量RATE换成百分比。STICKLINE的第四个参数是柱宽第五个参数填 0 表示实心。这样做出来的副图能直接看出哪一段浪最长对照第 2.1 节的“浪 3 不能最短”规则肉眼就能筛掉一批不成立的标注。4.3 斐波那契回撤位与第 3、5 浪目标位回撤位在主图上通常画成水平线最省事的写法就是把它当普通输出变量H1:PEAK(1,N,1); L1:TROUGH(2,N,1); RNG:H1-L1; FB382: H1-RNG*0.382, COLORGRAY, DOTLINE; FB500: H1-RNG*0.5, COLORGRAY, DOTLINE; FB618: H1-RNG*0.618, COLORGRAY, DOTLINE;每个输出变量本身就是一条水平线加上DOTLINE变成虚线不遮挡 K 线。扩展位同理H1(H1-L1)*1.618就是常见的第 3 浪或第 5 浪目标位放在同一组里一起输出主图会同时出现支撑和目标两个区域。4.4 参数表与调参思路参数含义常用取值调大后的影响NZIG 转向阈值3 / 5 / 8 / 13 / 20折点变少浪级变粗KD取价源3 收盘 / 1 最高 / 2 最低极值点位置偏移LWD折线线宽1 到 3只影响观感OFF标注偏移0.005 到 0.02文字离 K 线距离EXT扩展位系数1.618 / 2.618目标位高低调参顺序建议固定先定 N 定浪级再调 KD 看极值点位置最后调 OFF 让标注不压线。反过来调会白折腾因为 N 一变所有折点和回撤位都会重算。5. 通达信艾略特波浪公式中未来函数造成的重绘与排错5.1 ZIG、PEAK、TROUGH 为什么天然是未来函数这几个函数要判断“转向”就必须等到价格反向走够 N%也就是需要未来的 K 线才能确认当前的折点。这意味着两件事一是最后一两个折点会随新 K 线不断移动今天看到的 3 浪高点明天可能被推翻二是回测时如果按折点位置进场胜率会被严重高估因为回测引擎读到的折点是“事后才知道”的。{这段代码的 TOP 信号会重绘因为依赖 ZIG} DIR:ZZ-REF(ZZ,1); TOP:REF(DIR,1)0 AND DIR0;TOP只用了 REF 引用过去数据表面上没有未来函数但ZZ本身来自 ZIG所以 TOP 继承了重绘特性。判断一个画浪指标有没有未来函数看它是否引用 ZIG、PEAK、TROUGH、REFX、BARSNEXT 中的任意一个就够了。5.2 用 REF 与 BARSLAST 冻结已确认的历史浪点想拿来做记录而不是实时信号可以只保留已经“走够反向幅度”的折点。做法是给折点加一个距离约束要求折点之后已经走过至少 M 根 K 线FROZEN:TOP AND BARSLAST(TOP)10; DRAWICON(FROZEN, ZZ*1.03, 1);BARSLAST(TOP)10表示折点至少已经过去 10 根 K 线此时折点被后续行情推翻的概率下降但仍不归零。DRAWICON的第三个参数是图标编号通达信有内置图标库1 号通常是向上箭头换成 2 就是向下箭头。用图标区分“已冻结”和“未确认”两类折点图上信息量会明显提升。5.3 tn6 与 txt 格式的导入导出与公式管理器在公式管理器里保存的公式默认是内部格式导出时常见两种一种是 tn6 加密格式用于在别的机器上导入一种是纯文本 txt便于改动和版本管理。tn6 导入时不会显示源码只显示公式名和参数需要重新编辑就导 txt。公式管理器 6.06 这类版本在“公式导入导出”菜单下同时提供两种选项选错会得到一个打不开的文件。做版本管理时建议只存 txttn6 作为分发用因为 tn6 一旦公式名重复会直接覆盖不带提示。现象可能原因处理方式导入后公式为空选成了 tn6 加密包重新导出 txt 再导入编译报错“参数错误”PEAK/TROUGH 的 M 写了 0 或负数改成从 1 开始的正整数主图看不到折线公式类型选成了副图改成主图叠加折线错位KD 取价源与看盘习惯不一致统一改成 3 收盘5.4 画线错位、不显示与编译报错的排查路径排查顺序建议从下往上先看公式类型和参数再看变量名是否有重复最后才怀疑函数用法。通达信公式的变量在同一公式内重名不会报错而是后者覆盖前者这类问题最难查典型症状是画出来的线在某个位置突然跳到另一条水平线上。另一个高频问题是用DRAWLINE时起点条件在整段 K 线里从未满足结果是整条线都不画但编译不报错。遇到这种情况先把起点条件单独输出成副图柱子看它有没有在图上出现过。6. 进阶通达信多浪级嵌套的艾略特波浪划线复用单层 ZIG 只能给一个浪级真正的波浪结构是嵌套的大浪里套中浪中浪里套小浪。通达信里做嵌套的可行做法是并行跑三条不同 N 的折线再用位置关系做交集判断Z5 : ZIG(3,5); Z13: ZIG(3,13); Z20: ZIG(3,20); BIG : Z20-REF(Z20,1); MID : Z13-REF(Z13,1); SMALL: Z5-REF(Z5,1); {同向共振三个浪级方向一致} RESO: (BIG0 AND MID0 AND SMALL0) OR (BIG0 AND MID0 AND SMALL0); DRAWICON(RESO AND REF(RESO,1)0, L*0.99, 1);Z20、Z13、Z5分别代表循环浪、中浪、小浪RESO是三者方向一致的共振条件REF(RESO,1)0表示共振刚发生的那一根。这种写法能过滤掉大量单级别误报代价是信号更少。更实用的一步是把划线复用起来把折点坐标抽成公共变量主图、副图、回撤位三处共用同一套PEAK/TROUGH结果改一次 N 全图同步刷新避免出现主图用的是 5、回撤位用的是 8 这种自相矛盾的情况。做多周期分析时还可以把同一份折点坐标用在不同公式里日线取中浪、60 分钟取小浪注意区分分钟级公式的 ZIG 阈值通常要比日线低一档例如日线用 8、60 分钟用 5这样两级折点的数量级才匹配。最后一个容易被忽略的细节浪线除了看方向也要看时间。把折点之间的 K 线根数用BARSLAST算出来和价格比例一起看第 3 浪常表现为价格幅度最大同时耗时适中而第 5 浪常表现为幅度缩短但耗时拉长这条时间维度的差异比单纯看价格画线更能区分真假突破。本文还有配套的精品资源点击获取