请观看如何免费下载自动交易
请在Telegram上找到我们!
加入我们粉丝页
有趣的脚本?
因此发布一个链接 -
让其他人评价
喜欢这个脚本? 在MetaTrader 5客户端尝试它
显示:
6265
等级:
(47)
已发布:
2014.02.06 07:04
已更新:
2016.11.22 07:33
\MQL5\Include\
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务

注意!该版本ZigZag指标基于ZigZag code,并且得到作者PPC的授权在此发布 。我测试了那个版本并修复了一个算法上的错误。

该指标是MetaTrader 4Zigzag 指标 的MQL5版本。

注意!AlexSTAL_OutsideBar.mqh 库需要放在MetaTrader5终端的  ..\MQL5\Include\ 文件夹下。

就这样?

我认为ZigZag一定程度上类似价格图表的压缩。ZigZag可以使用柱形的价格进行计算(例如,收盘价)或者高/低价(最通常的方式)。

当在处理MetaQuotes提出的标准ZigZag的时候,我发现了些问题。最主要的问题是标准ZigZag无法处理柱形外的情况。

在2007 Rashid Umarov (Rosh) 发布了处理柱形外情况的Zigzag2 R(DRAW_ZIGZAG方式而非DRAW_SECTION)。

让我们定义“正确的”ZigZag实现细节:

  • 高点和低点必须严格的交替;
  • 高点必须比所有右侧柱形更高(或者相等),直到下一个(相对的)低点到来。
  • 低点必须比所有左侧柱形更低(或者相等),直到下一个(相对的)高点到来。

考虑使用如下例子(EURUSD, H1, 2006, December 8-13)。这里我们有2个柱形外的例子。传统deZigZag无法构建“正确”的图形。

图 1. 输入参数为[12;5;3] 和 [12;0;0]的传统ZigZag

Figure 1.输入参数为[12;5;3] 和 [12;0;0]的 传统 ZigZag

图 2. 输入参数为[12;5;3]的Zigzag2 R

Figure 2.输入参数为[12;5;3]的Zigzag2 R


图 3. 输入参数为[12;0;0]的Zigzag2 R

Figure 3. 输入参数为[12;0;0]的 Zigzag2 R

咋一看,正确的图形应该是如Figure 3所示,但是请注意一些细节:

  1. 这里之所以能够正确构建是因为输入参数,但是一般情况下算法应该嫩巩固在任何参数下使用。
  2. 由于柱形高点/低点构成的顺序问题,左侧的外部柱形其实是不正确。


ZigZag必须按如下方式构建。

我测试过如下很多ZigZag算法: ZigZag MT3, ZigZag, Zigzag R, Zigzag2 R, ZigZag_NK, ZigZag_ZUP89_nen, ZigZag_new_nen4, CZigZag, Swing_ZZ_1, DT_ZZ_nen, ZigZag_Talex, Reverse_ZZ, Points_ZZ_1, i_MF_Fractal_ZZ_3in1, ang_Amp_ZZ, ZigzagFr_v1, NonLagZigZag_v2, ZZ_FF_v3, ZigZag Ensign, ZigZag tauber, SQZZ Товаровед, ZZ_2L_nen wellx, Channel ZZ, Azzx_larryzz_3_0, RPoint, RPoint-m v2, ZigZagTF. 但是没有一个很好的解决该问题的。


这里是本指标的图形:

图 4. 输入参数为 [12;0]的专业ZigZag

Figure 4. 输入参数为[12;0]的专业ZigZag

Figure 5. 输入参数为[23;0]的专业ZigZag

Figure 5.输入参数为[23;0]的专业ZigZag


这一版本的一些特点:

  • one-pass 算法
  • 仅仅重新计算和重绘最后一段(该段不能取消除非历史数据更新)
  • 在柱形内部的计算上使用优化算法(如果价格在当前柱形(为完成的)上发生变化或者价格变化小于由输入参数MinMotion定义的阈值时,不会在tick上进行重新计算)
  • 有两种算法来对高/低点的形成进行排序:使用柱形的类型(快速但不精确)使用更低时间框架的数据(需要历史数据,你必须对它的存在和正确性进行检查或者你需要修改OutsideBar 库)
因为MetaTrader 5的报价准确性还未被检查,ProExtra版本没有发布。


这里是一些另外的不正确的ZigZag的例子:

Figure 6. EURUSD, H1, November 29-December 7. (红线:输入参数为[7;0;0]的专业ZigZag。蓝线:输入参数为[7;0;0]的Zigzag2 R)

Figure 6. EURUSD, H1, November 29-December 7. (红线:输入参数为[7;0;0]的专业ZigZag。蓝线:输入参数为[7;0;0]的Zigzag2 R

Figure 7. EURUSD, H1, 2010, November 29 - December 7. ZigZag段的正确构建方法。

Figure 7. EURUSD, H1, 2010, November 29 - December 7. ZigZag段的正确构建方法。


总结

本版本还不是很完美,我正在试图进行优化。

因为通道算法(iHighest/iLowest)的关系,有时候会跳过高点。

若发现本指标的任何bug请联系我。

由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/263

SelfGenerator SelfGenerator

该脚本生成一个源代码的文件(MQL5传统程序的解决办法)。这在研究程序和算法时非常有用。

cIntBMP - 一个用于创建BMP图像的库 cIntBMP - 一个用于创建BMP图像的库

一个用于创建和输出BMP图像的类。

sChartsSynchroScroll_v2 sChartsSynchroScroll_v2

新版sChartsSynchroScroll脚本。

RouletteGame RouletteGame

轮盘赌游戏。