← К каталогу
Исходный код · ID 4381

ZigZag

zigzag.mq5
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

ZigZag — пользовательский индикатор для MetaTrader 4, предназначенный для построения линий между значительными максимумами и минимумами цены на графике. Индикатор анализирует исторические ценовые данные и выделяет ключевые точки разворота, соединяя их линиями для наглядного отображения структуры цены. Работа индикатора управляется тремя настраиваемыми параметрами, которые определяют глубину поиска экстремумов, допустимое отклонение и фильтрацию повторных сигналов.

Настройки программы

НастройкаОписание
Depth (InpDepth) Глубина — Определяет количество баров, в пределах которых ищется экстремум цены.
Deviation (InpDeviation) Отклонение — Задаёт допустимое отклонение цены от найденного экстремума в пунктах.
Backstep (InpBackstep) Шаг возврата — Определяет количество баров назад, в которых проверяются и при необходимости очищаются предыдущие экстремумы.
Получить полный код

Поиск по коду файла

#property strict

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1  Red

input int InpDepth=12;     // Depth
input int InpDeviation=5;  // Deviation
input int InpBackstep=3;   // Backstep

double ExtZigzagBuffer[];
double ExtHighBuffer[];
double ExtLowBuffer[];

int    ExtLevel=3; // recounting's depth of extremums

int OnInit()
  {
      // код доступен только после оплаты
   }

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
  {
      // код доступен только после оплаты
   }
   int    i,limit,counterZ,whatlookfor=0;
   int    back,pos,lasthighpos=0,lastlowpos=0;
   double extremum;
   double curlow=0.0,curhigh=0.0,lasthigh=0.0,lastlow=0.0;

   if(rates_total<InpDepth || InpBackstep>=InpDepth)
      return(0);

   if(prev_calculated==0)
      limit=InitializeAll();
   else 
     {

      i=counterZ=0;
      while(counterZ<ExtLevel && i<100)
        {
         if(ExtZigzagBuffer[i]!=0.0)
            counterZ++;
         i++;
        }

      if(counterZ==0)
         limit=InitializeAll();
      else
        {

         limit=i-1;

         if(ExtLowBuffer[i]!=0.0) 
           {

            curlow=ExtLowBuffer[i];

            whatlookfor=1;
           }
         else
           {

            curhigh=ExtHighBuffer[i];

            whatlookfor=-1;
           }

         for(i=limit-1; i>=0; i--)  
           {
            ExtZigzagBuffer[i]=0.0;  
            ExtLowBuffer[i]=0.0;
            ExtHighBuffer[i]=0.0;
           }
        }
     }

   for(i=limit; i>=0; i--)
     {

      extremum=low[iLowest(NULL,0,MODE_LOW,InpDepth,i)];

      if(extremum==lastlow)
         extremum=0.0;
      else 
        { 

         lastlow=extremum; 

         if(low[i]-extremum>InpDeviation*Point)
            extremum=0.0;
         else
           {

            for(back=1; back<=InpBackstep; back++)
              {
               pos=i+back;
               if(ExtLowBuffer[pos]!=0 && ExtLowBuffer[pos]>extremum)
                  ExtLowBuffer[pos]=0.0; 
              }
           }
        } 

      if(low[i]==extremum)
         ExtLowBuffer[i]=extremum;
      else
         ExtLowBu

Показано первые 50% кода (символов: 3474)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
347,40₽ ≈ $4.25