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

gann_sq9_2.mq5

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

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

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

О программе

Индикатор для MetaTrader 4, который строит ZigZag-линии по экстремумам цены и отображает уровни Ганна (квадрат 9) в виде линий тренда под заданными углами. Вспомогательные функции рисуют горизонтальные и вертикальные линии, а также текстовые подписи с углами и значениями уровней. Все графические объекты удаляются при перерисовке или деинициализации индикатора.

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

НастройкаОписание
angle_up Угол вверх — Угол наклона линий уровней для восходящих уровней Ганна
angle_dn Угол вниз — Угол наклона линий уровней для нисходящих уровней Ганна
Width Толщина линий — Толщина линий уровней Ганна
Style Стиль линий — Стиль линий уровней Ганна
kol_lev Количество уровней — Количество уровней, отображаемых от каждой точки поворота
ResistanceColor Цвет сопротивления — Цвет линий сопротивления
SupportColor Цель поддержки — Цвет линий поддержки
Level_0 Цель базового уровня — Цвет базового горизонтального уровня
lev_V Вертикальные линии — Включает или отключает отображение вертикальных линий от точек поворота
Level_V Цель вертикальных линий — Цвет вертикальных линий
Complect Номер комплекта — Номер группы уровней для разделения наборов
ExtDepth Глубина поиска — Глубина поиска экстремумов при построении ZigZag
ExtDeviation Отклонение — Минимальное отклонение цены для признания точки экстремумом
ExtBackstep Шаг отката — Шаг проверки при отборе экстремумов ZigZag
Получить полный код

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

#property indicator_chart_window
#property indicator_buffers  1
#property indicator_color1 WhiteSmoke

#property indicator_width1 0
#property indicator_style1 2

extern double  angle_up        = 22.5;
extern double  angle_dn        = 22.5;
extern int     Width           = 0;
extern int     Style           = 2;
extern int     kol_lev         = 8;
extern color   ResistanceColor = Brown;
extern color   SupportColor    = Green;
extern color   Level_0         = Gray;
extern bool    lev_V           = true;
extern color   Level_V         = Gray;
extern int     Complect        = 0;
color ????_??????;

extern int ExtDepth=21;
extern int ExtDeviation=5;
extern int ExtBackstep=3;

double ZigZagBuffer[];
int timeFirstBar=0;
int flag;
bool work=true;
double vel_prev;

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

int deinit()
  {

 ObjDel();
 Comment("");

   return(0);
  }  

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

   if (Bars-1<ExtDepth)return(0);

   static int time2,time3,time4;  

   static  double ZigZag2,ZigZag3,ZigZag4;

   int MaxBar,limit,supr2_bar,supr3_bar,supr4_bar,counted_bars=IndicatorCounted();

   if (counted_bars<0)return(-1);

   if (counted_bars>0) counted_bars--;

   int    index, shift, back,lasthighpos,lastlowpos;
   double val,res,TempBuffer[1];
   double curlow,curhigh,lasthigh,lastlow;

   int    metka=0; // =0 - ?? ??????? ???????? ZZ. =1 - ???? ????? ??????????. =2 - ???? ????? ?????????.

   MaxBar=Bars-ExtDepth; 

   if (counted_bars==0 || Bars-counted_bars>2)
     {
      limit=MaxBar;
     }
   else 
     {

      supr2_bar=iBarShift(NULL,0,time2,TRUE);
      supr3_bar=iBarShift(NULL,0,time3,TRUE);
      supr4_bar=iBarShift(NULL,0,time4,TRUE);

      limit=supr3_bar;      
      if ((supr2_bar<0)||(supr3_bar<0)||(supr4_bar<0))
         {
          limit=MaxBar;
         }
     }

   if (limit>=MaxBar || timeFirstBar!=Time[Bars-1]) 
     {
      timeFirstBar=Time[Bars-1];
      limit=MaxBar; 
     } 

if (limit==MaxBar) ArrayResize(TempBuffer,Bars); else  ArrayResize(TempBuffer,limit+ExtBackstep+1);

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

      val=Low[Lowest(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=ZigZagBuffer[shift+back];
               if((res!=0)&&(res>val)) ZigZagBuffer[shift+back]=0.0; 
              }
           }
        }
      if (Low[shift]==val)
        {
         ZigZagBuffer[shift]=val; 

        }
      else ZigZagBuffer[shift]=0.0;

      val=High[Highest(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; back++)
              {
               res=TempBuffer[shift+back]; 
               if((res!=0)&&(res<val)) TempBuffer[shift+back]=0.0; 
              } 
           }
        }
      if (High[shift]==val)
        {
         TempBuffer[shift]=val; 

        }
      else TempBuffer[shift]=0.0;
     }

      lasthigh=-1; lasthighpos=-1;
      lastlow= -1; lastlowpos= -1;

   for(shift=limit; shift>=0; shift--)
     {
      curlow=ZigZagBuffer[shift];
      curhigh=TempBuffer[shift];
      if((curlow==0)&&(curhigh==0)) continue;

      if(curhigh!=0)
        {
         if(lasthigh>0) 
           {
            if(lasthigh<curhigh) TempBuffer[lasthighpos]=0;
            else TempBuffer[shift]=0;
           }

         if(lasthigh<curhigh || lasthigh<0)
           {
            lasthigh=curhigh;
            lasthighpos=shift;
           }
         lastlow=-1;
        }

      if(curlow!=0)
        {
         if(lastlow>0)
           {
            if(lastlow>curlow) ZigZagBuffer[lastlowpos]=0;
            else ZigZagBuffer[shift]=0;
           }

         if((curlow<lastlow)||(lastlow<0))
           {
            lastlow=curlow;
            lastlowpos=shift;
           } 
         lasthigh=-1;
        }
     }

   for(shift=limit; shift>=0; shift--)
     {
       res=TempBuffer[shift];
       if(res!=0.0) ZigZagBuffer[shift]=res;
     }

   int i=0,j=0;
   res=0;
   for (shift=0;i<3;shift++)
     {
      if (ZigZagBuffer[shift]>0)
        {
         i++;
         if (i==1 && ZigZagBuffer[shift]==High[shift])
           {
            j=shift;
            res=ZigZagBuffer[shift];
           }
         if (i==2 && res>0 && ZigZagBuffer[shift]==High[shift])
           {
            if (ZigZagBuffer[shift]>=ZigZagBuffer[j]) ZigZagBuffer[j]=0; else ZigZagBuffer[shift]=0;
            res=0;
            i=0;
            j=0;
            shift=0;
           }
        }
     }

   if (limit<MaxB

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

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

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

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

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

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

Стоимость полного кода
728,20₽ ≈ $8.90