MultiZigZag简介
MultiZigZag基于2005-2006年MetaTrader 4中提供的ZigZag算法。这一算法非常出色,许多自定义指标都是基于此算法开发的。最初,这个算法由Rosh翻译成MQL4,非常感谢他的贡献!如果有人知道这个算法的发明者,请在评论中告诉我他们的名字或昵称。同时,我也很想知道这个算法最初是用什么语言编写的,以及在哪个平台上使用过。
初版ZigZag的缺点
- 1) 处理器负担过重:由于每个tick都要重新计算ZigZag,低配电脑在市场剧烈波动时几乎会卡死。
- 2) 绘制不准确:ZigZag的折线有时会“悬空”,没有绑定到K线的最高点或最低点。但ZigZag应该准确地显示图表上的最低点和最高点。
- 3) 历史回溯时的悬浮:如果尝试回滚历史,ZigZag会出现悬浮现象,且没有与图表进行视觉绑定。
MultiZigZag的优势
与之前版本相比,这个ZigZag解决了上述所有缺点。只有最后三个ZigZag波段会被重新计算,而重新计算只在价格突破零条的计算部分时发生。也就是说,当零条的最低或最高值被归零,或有新K线出现时,或历史数据加载时,才会进行重新计算。
每一个ZigZag使用两个缓冲区,一个用于最高点,一个用于最低点。这使得可以在同一根K线上同时显示最高和最低。还有两个空的缓冲区,想要的朋友可以编写代码,插入第四个代码实例。这对于初学MQL4的程序员来说是个不错的练习,或者可以用空缓冲区来完成其他任务,以便将ZigZag插入到开发的系统中。
高级计算功能
来自更大时间框架的ZigZag的计算和绘制不再使用icustom()函数。为自动化目的,我们可以省略指标缓冲区。在这种情况下,我们可以同时计算所有时间框架的ZigZag,也可以处理多个交易品种,只要有足够的内存。没有使用icustom()函数的实现使得我们可以在当前时间框架以及其他选定的时间框架和多个时间框架上搜索图形模式(如Gartley等)。
参数设置
大部分外部参数是字符串变量。用逗号分隔的参数写在每个ZigZag的字符串变量中。第一个数字对应第一个ZigZag,第二个对应第二个,第三个对应第三个,依此类推。
ExtDepth、ExtDeviation和ExtBackstep是ZigZag的标准参数。如果将ExtDepth=0,则相应的ZigZag将不会显示。
ExtMaxBar - 将计算的ZigZag的K线数量。GrossPeriod - 用于ZigZag计算的图表周期(以分钟为单位)。如果指定0,ZigZag将在当前时间框架上计算。
可以指定以下值:0-1-5-15-30-60-240-1440-10080-43200。ExtReCalculate - 从0开始重新计算的ZigZag极值数量,适用于来自更大时间框架的ZigZag。建议不要更改此参数。
默认情况下,ZigZag会从H1、H4和D1显示。ZigZag会从1分钟时间框架显示到日线时间框架。每天只会显示一条由D1时间框架数据绘制的ZigZag。只有基于更大或当前时间框架的ZigZag会被绘制。
下图示例:H1的ZigZag用青色绘制,H4用红色绘制,D1用黄色绘制。
