欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

理想之字转向 - MetaTrader 4脚本

author emer | 896 人阅读 | 0 人评论 |

Ideal ZigZag - indicator for MetaTrader 4

Ideal ZigZag - indicator for MetaTrader 4

Ideal ZigZag - indicator for MetaTrader 4

Ideal ZigZag - indicator for MetaTrader 4

Ideal ZigZag - indicator for MetaTrader 4

1.内存要求。该指标使用 5 个缓冲区,而不是其他类似实现中的 2 个(甚至 1 个)。但是(恕我直言)对于优势#6和#7来说,这是一个很好的价格。我见过的快速 ZigZags 都无法在不完全重建的情况下处理历史插入。我的就是这么做的。而且它以有效的方式做到这一点

2. 可以使用附加线路。这是使数据对任何外部代码可见所必需的。这些线永远不应该是可见的。

ZZ是根据通道原理绘制的。

通道宽度可以以点 (XLab_ZZ) 或百分比 (XLab_ZZP) 为单位定义

外部的 整数通道宽度 =100;#property Indicator_chart_window
#属性indicator_buffers1

#property Indicator_color1 红色
#属性indicator_width13

日期时间最后一次;整数初始化()
{
   上次时间=0;
   
  返回0);
}布尔值获取值(双倍的目录,整数酒吧,整数上一篇吧,双倍的& 顶峰,整数& 峰吧,日期时间和高峰时间)
{
  如果(目录 <0)
   {
      日期时间t =定制象征(),0,“XLab_ZZ”, 通道宽度,2, 酒吧);
      整数我=iBarShift象征(),0,t);

      如果(i == 上一个栏)
      {
         t =定制象征(),0,“XLab_ZZ”, 通道宽度,2, 条 +1);
         我=iBarShift象征(),0,t);
      }

      双倍的v =定制象征(),0,“XLab_ZZ”, 通道宽度,1, 我);
      
      如果(v==空_VALUE)
      {
         t =定制象征(),0,“XLab_ZZ”, 通道宽度,2, 条 +1);
         我=iBarShift象征(),0,t);
         v =定制象征(),0,“XLab_ZZ”, 通道宽度,1, 我);
      }
      
      峰值=v;
      峰值栏 = i;
      峰值时间 = t;
   }
  别的 如果(目录>0)
   {
      t =定制象征(),0,“XLab_ZZ”, 通道宽度,3, 酒吧);
      我=iBarShift象征(),0,t);

      如果(i == 上一个栏)
      {
         t =定制象征(),0,“XLab_ZZ”, 通道宽度,3, 条 +1);
         我=iBarShift象征(),0,t);
      }

      v =定制象征(),0,“XLab_ZZ”, 通道宽度,0, 我);
      
      如果(v==空_VALUE)
      {
         t =定制象征(),0,“XLab_ZZ”, 通道宽度,3, 条 +1);
         我=iBarShift象征(),0,t);
         v =定制象征(),0,“XLab_ZZ”, 通道宽度,0, 我);
      }
      
      峰值=v;
      峰值栏 = i;
      峰值时间 = t;
   }
  别的   {
      返回(错误的);
   }
   
  返回(真的);
}整数开始()
{
  如果(上次时间 == 时间[0])返回0);
   上次时间 = 时间[0];
   
  双倍的目录=定制象征(),0,“XLab_ZZ”, 通道宽度,4,1);
  双倍的rdir = -dir;

  如果(目录==空_VALUE返回0);
   
  双倍的v1、v2、v3、v4、v5;
  整数    i1、i2、i3、i4、i5;
  日期时间t1、t2、t3、t4、t5;
   
   获取值(目录,1,0, v1, i1, t1);
   获取值(rdir,i1,0, v2, i2, t2);
   GetValue(dir, i2, i1, v3, i3, t3);
   GetValue(rdir, i3, i2, v4, i4, t4);
   GetValue(dir, i4, i3, v5, i5, t5);

   设置点(“1”, v1, t1);
   设置点(“2”, v2, t2);
   设置点(“3”, v3, t3);
   设置点(“4”, v4, t4);
   设置点(“5”, v5, t5);
   
  打印(v1,“   ”, v2,“  ”, v3,“  ”, v4,” “, v5,” “, i1,“  ”, i2,“  ”, i3,” “, i4,” “, i5);

  返回0);
}空白设置点(细绳姓名,双倍的价格,日期时间时间)
{
  对象创建(姓名,OBJ_箭头,0、时间、价格);
  对象集(姓名,OBJPROP_ARROWCODE,108);
  对象集(名称,OBJPROP_PRICE1,价格);
  对象集(名称,OBJPROP_TIME1,时间);
}

此示例是一个标记(每条柱一次)前五个峰值(包括当前形成)的指标

注意力!如果打开 0th Bar 模式,此代码可能无法正常工作

用 DrawZeroBar 变量设置。默认关闭。

不建议使用此选项,特别是当该指标用于 EA 时

享受使用它的乐趣;)。如有任何问题,请随时提出。

如果发现任何错误,请报告我。谢谢。


附件下载

📎 XLab_ZZ.mq4 (4.6 KB)

📎 XLab_ZZP.mq4 (4.62 KB)

Source: MQL5 #10671

🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录