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

gann_sq9_2vbt.mq5

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

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

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

О программе

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

На основе найденных разворотов строятся восходящие и нисходящие линии уровней с заданными углами, а также базовая горизонтальная линия. Линии поддержки и сопротивления отрисовываются разными цветами, к каждому уровню привязана текстовая метка с числовым значением.

Встроенная кнопка на графике позволяет включать и выключать отображение всех уровней без перезагрузки индикатора. При выключении все объекты уровней удаляются с графика.

Дополнительно доступны настройки цвета, толщины и стиля линий, а также возможность отображения вертикальных линий в точках разворота.

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

НастройкаОписание
angle_up Угол восходящих линий — Угол восходящих линий уровней
angle_dn Угол нисходящих линий — Угол нисходящих линий уровней
Width Толщина линий — Толщина линий уровней
Style Стиль линий — Стиль линий уровней
kol_lev Количество уровней — Количество отображаемых уровней от каждой точки разворота
ResistanceColor Цвет сопротивления — Цвет линий сопротивления
SupportColor Цвет поддержки — Цвет линий поддержки
Level_0 Цвет базового уровня — Цвет базовой горизонтальной линии уровня
lev_V Вертикальные линии — Включает или отключает отображение вертикальных линий в точках разворота
Level_V Цвет вертикальных линий — Цвет вертикальных линий в точках разворота
Complect Комплекс уровней — Номер комплекса уровней для визуализации
ExtDepth Глубина ZigZag — Глубина поиска разворотов в ZigZag
ExtDeviation Отклонение ZigZag — Допуск отклонения в алгоритме ZigZag
ExtBackstep Шаг возврата ZigZag — Шаг возврата в алгоритме ZigZag
Button_Settings Текст кнопки — Текстовая метка кнопки на графике
Button Left (X1) Позиция кнопки X — Положение кнопки по горизонтали на графике
Button Top (Y1) Позиция кнопки Y — Положение кнопки по вертикали на графике
ButtonBackColor Цвет фона кнопки — Цвет фона кнопки управления отображением уровней
Получить полный код

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

#property indicator_chart_window
#property indicator_buffers  1
#property indicator_color1 WhiteSmoke

#property indicator_width1 0
#property indicator_style1 2

extern double  angle_up        = 11.5;
extern double  angle_dn        = 11.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=10;
extern int ExtDeviation=3;
extern int ExtBackstep=1;

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

#include <Controls/Button.mqh>
CButton B_Gann;

extern string Button_Settings= "==============";
extern int X1= 220; //Button Left 
extern int Y1=0; //Button Top

int X0,X2,Y2,Gann=0;
extern color ButtonBackColor=clrGreenYellow;
string mMesage=" ";

void ReloadButton(color ccolor)
{
   ObjectDelete(0,"B_Gann"); 
   X2=X1+30;
   Y2=Y1+30;
   B_Gann.Create(0,"B_Gann",0,X1,Y1,X2,Y2);
   B_Gann.Text("GNN");
   B_Gann.ColorBackground(ButtonBackColor);
   B_Gann.ColorBorder(ccolor);
   B_Gann.Color(ccolor);
   ObjectSetString(0,"B_Gann",OBJPROP_TOOLTIP, "Gann SQ9 2");
}

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

int deinit()
  {

 ObjDel();
 Comment("");

   return(0);
  } 

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {

   if(id==CHARTEVENT_OBJECT_CLICK){
      if(sparam=="B_Gann")
        {
          if(Gann==0){
             SetIndexStyle(0,DRAW_SECTION,2);
             Gann=1;
             sStart();
             B_Gann.ColorBorder(clrSeaGreen);
             B_Gann.Color(clrSeaGreen);
             }
          else{
             ObjDel();
             SetIndexStyle(0,DRAW_NONE);
             Gann=0;
             B_Gann.ColorBorder(clrDimGray);
             B_Gann.Color(clrDimGray);
             ChartRedraw();
             }
        }
     }
  }

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

void sStart(){

   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    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

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

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

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

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

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

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

Стоимость полного кода
824,50₽ ≈ $10.08