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

xigxag.mq5

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

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

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

О программе

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

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

НастройкаОписание
ExtDepth Глубина поиска — Определяет максимальное количество баров, в пределах которых ищется экстремум цены для построения точки ZigZag.
ExtDeviation Отклонение — Задаёт минимальное отклонение цены в пунктах, необходимое для того, чтобы новый экстремум считался значимым и был принят во внимание.
ExtBackstep Шаг возврата — Определяет количество баров назад, в пределах которых проверяется и при необходимости отменяется ранее найденный экстремум при обнаружении более подходящего.
Получить полный код

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

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;
double ZigzagBuffer[];
double HighMapBuffer[];
double LowMapBuffer[];
int level=3;
bool downloadhistory=false;

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

int start()
  {
      // код доступен только после оплаты
   }
   int i,counted_bars=IndicatorCounted();
   int limit,counterZ,whatlookfor;
   int shift,back,lasthighpos,lastlowpos;
   double val,res;
   double curlow,curhigh,lasthigh,lastlow;

   if(counted_bars==0 && downloadhistory)
     {
      ArrayInitialize(ZigzagBuffer,0.0);
      ArrayInitialize(HighMapBuffer,0.0);
      ArrayInitialize(LowMapBuffer,0.0);
     }
   if(counted_bars==0)
     {
      limit=Bars-ExtDepth;
      downloadhistory=true;
     }
   if(counted_bars>0)
     {
      while(counterZ<level && i<100)
        {
         res=ZigzagBuffer[i];
         if(res!=0) counterZ++;
         i++;
        }
      i--;
      limit=i;
      if(LowMapBuffer[i]!=0)
        {
         curlow=LowMapBuffer[i];
         whatlookfor=1;
        }
      else
        {
         curhigh=HighMapBuffer[i];
         whatlookfor=-1;
        }
      for(i=limit-1;i>=0;i--)
        {
         ZigzagBuffer[i]=0.0;
         LowMapBuffer[i]=0.0;
         HighMapBuffer[i]=0.0;
        }
     }

   for(shift=limit; shift>=0; shift--)
     {
      val=Low[iLowest(NULL,0,MODE_LOW,ExtDepth,shift)];
      if(val==lastlow) val=0.0;
      else
        {
         lastlow=val;
         if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0;
         else
           {
            for(back=1; back<=ExtBackstep; back++)
              {
               res=LowMapBuffer[shift+back];
               if((res!=0) && (res>val)) LowMapBuffer[shift+back]=0.0;
              }
           }
        }
      if(Low[shift]==val) LowMapBuffer[shift]=val; else LowMapBuffer[shift]=0.0;
      val=High[iHighest(NULL,0,MODE_HIGH,ExtDepth,shift)];
      if(val==lasthigh) val=0.0;
      else
        {
         lasthigh=val;
         if((val-High[shift])>(ExtDeviation*Point)) val=0.0;
         else
           {
            for(back=1; back<=ExtBackstep; bac

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

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

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

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

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

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

Стоимость полного кода
307₽ ≈ $3.75