分享

(8)外汇MT4编程:如何写ZIG函数

 quanshan 2019-05-11

外汇MT4编程:

如何写ZIG函数

(网摘)

ZigZag 指标获得前 N 个折点的函数.
# 一般的MT4中 Custom Indicator 中都有 ZigZag 这个指标.
# 取到这三个之后再配合均线系统,可以进一步归纳主的顶点以便推断后面的调整.的起点.

double GetExtremumZZPrice(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bs=3) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=0; i<k; i++) {
    zz=iCustom(sy, tf, "ZigZag", dp, dv, bs, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(zz);
    }
  }
  Print("GetExtremumZZPrice(): 曲折号",ne,"没有找到");
  return(0);
}

用法.

// zig zag 的三个参数
int    ExtDepth         = 12;
int    ExtDeviation     = 5;
int    ExtBackstep      = 3;


   double room_0 = GetExtremumZZPrice(NULL, 0, 0, ExtDepth, ExtDeviation, ExtBackstep);  // 取当前的顶点.
   double room_1 = GetExtremumZZPrice(NULL, 0, 1, ExtDepth, ExtDeviation, ExtBackstep); // 取前面的折点
   double room_2 = GetExtremumZZPrice(NULL, 0, 2, ExtDepth, ExtDeviation, ExtBackstep); // 取前面的前面的折点.
 
***
    这几天在潜心研究ZigZag的原理,主要想通过这个指标来定制一个自己使用的指标,例如自动画趋势线等。目前主要是看文章:http://articles./691。感觉前半部分写的不错,例如它解释的几个重要的关注点:
    1、ZigZag根据当前的报价(quote)来画图,ZigZag是对当前价格图表的一种紧凑型表示方式。画图时选取的报价的形式(Open或者Close)等会影响线形。
    2、MT4自带的ZigZag主要用于对历史市场趋势的分析,并不是很好的预测功能,因此不建议基于此ZigZag来做EA。(是否可以基于改良的ZigZag来做EA尚待分析确认)
    3、其对比的Fractal定义对理解ZigZag的形成原理有帮助,目前还没有参透二者之间的关系。文章中链接了一个Franctal指标源代码有待分析。地址:http://codebase./ru/3713
    4、ZigZag有重画(re-draw)功能,因此其画线随着新的Fractal的出现会发生变化。

     待分析的问题在于:
(1)Fractal如何确定比较的基数N,即当前Bar需要和前后(N-1)/2个Bar比较,那么N多少为最佳?
(2)如何确定反转?
(3)ZigZag中三个参数的含义分别是什么?
     extern   int      ExtDepth       = 12;
     extern   int      ExtDeviation   = 5;
     extern   int      ExtBackstep    = 3;
 (4)  ZigZag如何用于画趋势线?改良的ZigZag是否可以用于EA以及如何使用?

    上面文章中透露的其他信息作为总结:
1、Fractal的定义和原理:
    探讨fractal的定义,首先来参考Bill Williams的New Trading Dimensions:
    “市场总是朝一个方向(向上或者向下)移动。例如当市场向上移动时,经过一段时间后,所有买方都已经买入,此时市场由于缺乏足够的买方而形成回落。然后市场信息开始影响交易者,随后买方开始重新汇集,此时买卖双方势均力敌,市场仍然向上移动。只要买方的势头和力量足够强大,能够立即突破前一个 fractal,则我们进入市场在前一个fractal的高点开出买单”。
    事实上这个也适用于ZigZag,其在波峰和波谷的形成过程中发现他们。从技术层面可以这样来定义buy fractal:“在最少5个连续的bar序列中,中间bar的最高点比前后两个bar的最高点高。”从相反的角度则可以定义sell fractal。参见下图:
 外汇MT4编程:如何写ZIG函数

2、观察到的ZigZag的重画功能:
   (1)重画前的ZigZag图形;

外汇MT4编程:如何写ZIG函数


    (2)市场形成价格新低后ZigZag发生重画,此时旧的线被删除了。从这里可以看出ZigZag缺乏预测能力,以对历史的分析为主。
 外汇MT4编程:如何写ZIG函数

// 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多