XLab_ZZ: быстрый ЗигЗаг с функцией взятия вершин

Тема в разделе "Индикаторы", создана пользователем loopsider, 18 Апрель 2016.

  1. loopsider

    loopsider Бывалый Команда форума Модератор

    Регистрация:
    13 Ноябрь 2013
    Сообщения:
    4.413
    Симпатии:
    4.023
    Баллы:
    435
    Пол:
    Мужской
    Шустрый однопараметрический ЗигЗаг. Логика построения: новое колено появляется после движения цены в одну сторону на величину ChannelPoints пунктов, задаваемую в настройках. Похож на Пожалуйста, войдите или зарегистрируйтесь для просмотра ссылок.
    Особенность этого ЗигЗага в том, что к нему прилагается код для взятия последних вершин, что актуально для использования в советниках.
    Автор: TheExpert с mql4 форума

    screen_small.png

    Настройки:
    ChannelWidth - порог ЗигЗага в пунктах

    Пример взятия вершин:
    Индикатор, который каждый бар (раз в бар) маркирует 5 последних вершин
    Код:
    extern int ChannelWidth = 100;
    
    #property indicator_chart_window
    #property indicator_buffers 1
    
    #property indicator_color1 Red
    #property indicator_width1 3
    
    datetime LastTime;
    
    int init()
    {
       LastTime = 0;
       
       return(0);
    }
    
    bool GetValue(double dir, int bar, int prevBar, double& peak, int& peakBar, datetime& peakTime)
    {
       if (dir < 0)
       {
          datetime t = iCustom(Symbol(), 0, "XLab_ZZ", ChannelWidth, 2, bar);
          int i = iBarShift(Symbol(), 0, t);
    
          if (i == prevBar)
          {
             t = iCustom(Symbol(), 0, "XLab_ZZ", ChannelWidth, 2, bar + 1);
             i = iBarShift(Symbol(), 0, t);
          }
    
          double v = iCustom(Symbol(), 0, "XLab_ZZ", ChannelWidth, 1, i);
         
          if (v == EMPTY_VALUE)
          {
             t = iCustom(Symbol(), 0, "XLab_ZZ", ChannelWidth, 2, bar + 1);
             i = iBarShift(Symbol(), 0, t);
             v = iCustom(Symbol(), 0, "XLab_ZZ", ChannelWidth, 1, i);
          }
         
          peak = v;
          peakBar = i;
          peakTime = t;
       }
       else if (dir > 0)
       {
          t = iCustom(Symbol(), 0, "XLab_ZZ", ChannelWidth, 3, bar);
          i = iBarShift(Symbol(), 0, t);
    
          if (i == prevBar)
          {
             t = iCustom(Symbol(), 0, "XLab_ZZ", ChannelWidth, 3, bar + 1);
             i = iBarShift(Symbol(), 0, t);
          }
    
          v = iCustom(Symbol(), 0, "XLab_ZZ", ChannelWidth, 0, i);
         
          if (v == EMPTY_VALUE)
          {
             t = iCustom(Symbol(), 0, "XLab_ZZ", ChannelWidth, 3, bar + 1);
             i = iBarShift(Symbol(), 0, t);
             v = iCustom(Symbol(), 0, "XLab_ZZ", ChannelWidth, 0, i);
          }
         
          peak = v;
          peakBar = i;
          peakTime = t;
       }
       else
       {
          return (false);
       }
       
       return (true);
    }
    
    int start()
    {
       if (LastTime == Time[0]) return (0);
       LastTime = Time[0];
       
       double dir = iCustom(Symbol(), 0, "XLab_ZZ", ChannelWidth, 4, 1);
       double rdir = -dir;
    
       if (dir == EMPTY_VALUE) return (0);
       
       double v1, v2, v3, v4, v5;
       int    i1, i2, i3, i4, i5;
       datetime t1, t2, t3, t4, t5;
       
       GetValue(dir, 1, 0, v1, i1, t1);
       GetValue(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);
    
       SetPt("1", v1, t1);
       SetPt("2", v2, t2);
       SetPt("3", v3, t3);
       SetPt("4", v4, t4);
       SetPt("5", v5, t5);
       
       Print(v1, "   ", v2, "  ", v3, "  ", v4, " ", v5, " ", i1, "  ", i2, "  ", i3, " ", i4, " ", i5);
    
       return(0);
    }
    
    void SetPt(string name, double price, datetime time)
    {
       ObjectCreate(name, OBJ_ARROW, 0, time, price);
       ObjectSet(name, OBJPROP_ARROWCODE, 108);
       ObjectSet(name, OBJPROP_PRICE1, price);
       ObjectSet(name, OBJPROP_TIME1, time);
    }
     

    Вложения:

    • XLab_ZZ.mq4
      Размер файла:
      4,6 КБ
      Просмотров:
      10
    • XLab_ZZ.ex4
      Размер файла:
      17 КБ
      Просмотров:
      8
    victor2, bellduke и Hawkwind нравится это.

.

Поделиться этой страницей

translate