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

Fibodrawer

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

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

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

О программе

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

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

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

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

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red

extern int ExtDepth=21;
extern int ExtDeviation=13;
extern int ExtBackstep=34;
extern color FibColor1= Green;
extern color FibColor2= RoyalBlue;
extern color FibColor3= Gold;

double ExtMapBuffer[];
double ExtMapBuffer2[];
double posA,posB,posC,posD,posX;
double topA,botA,topB,botB,topC,botC,topD,botD,topX,botX;
double XA,AB,BC,CD;
double XAAB,ABBC,BCCD;
datetime TimeX,TimeA,TimeB,TimeC,TimeD,TS1,TS2,TS3,TT1,TT2,TT3;
double PS1,PT1,PS2,PT2,PS3,PT3;
double Fib1High,Fib1Low,Fib2High,Fib2Low,Fib3High,Fib3Low;
double level_array[13]={0,0.236,0.386,0.5,0.618,0.786,1,1.276,1.618,2.058,2.618,3.33,4.236};
string leveldesc_array[13]={"0","23.6%","38.6%","50%","61.8%","78.6%","100%","127.6%","161.8%","205.8%","261.80%","333%","423.6%"};
int level_count;
string level_name;
double text_y;

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

int deinit() 
{
	ObjectDelete("Fibo1");
	ObjectDelete("Fibo2");
	ObjectDelete("Fibo3");

   ObjectDelete("X");
   ObjectDelete("B");
   ObjectDelete("A");
   ObjectDelete("C");
   ObjectDelete("D");

}

int start()

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

    double Points = MarketInfo (Symbol(), MODE_POINT);
      int    shift, back,lasthighpos,lastlowpos;
      double val,res;
      double curlow,curhigh,lasthigh,lastlow;

      for(shift=Bars-ExtDepth; 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=ExtMapBuffer[shift+back];
               if((res!=0)&&(res>val)) ExtMapBuffer[shift+back]=0.0; 
              }
           }
        } 
      ExtMapBuffer[shift]=val;

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

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

   for(shift=Bars-ExtDepth; shift>=0; shift--)
     {
      curlow=ExtMapBuffer[shift];
      curhigh=ExtMapBuffer2[shift];
      if((curlow==0)&&(curhigh==0)) continue;

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

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

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

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

   for(shift=Bars-1; shift>=0; shift--)
     {
      if(shift>=Bars-ExtDepth) ExtMapBuffer[shift]=0.0;
      else
        {
         res=ExtMapBuffer2[shift];
         if(res!=0.0) ExtMapBuffer[shift]=res;
        }

     }

  	int i=0;
  	int LastZigZag, PreviousZigZag,PreviousZigZag2,PreviousZigZag3,PreviousZigZag4;

   int h=0;
   while ( ExtMapBuffer[h]==0 && ExtMapBuffer2[h]==0) 
         {h++;}
   LastZigZag=h;
   h++;
   while(ExtMapBuffer[h]==0 && ExtMapBuffer2[h]==0) 
         {h++;}
   PreviousZigZag=h;
   h++;
   while(ExtMapBuffer[h]==0 && ExtMapBuffer2[h]==0) 
      {h++;}
   PreviousZigZag2=h;
   h++;
   while(ExtMapBuffer[h]==0 && ExtMapBuffer2[h]==0) 
      {h++;}
   PreviousZigZag3=h;
   h++;
   while(ExtMapBuffer[h]==0 && ExtMapBuffer2[h]==0) 
      {h++;}
   PreviousZigZag4=h;

   topD=High[LastZigZag];
   botD=Low[LastZigZag];
   topC=High[PreviousZigZag];
   botC=Low[PreviousZigZag];
   topB=High[PreviousZigZag2];
   botB=Low[PreviousZigZag2];
   topA=High[PreviousZigZag3];
   botA=Low[PreviousZigZag3];
   topX=High[PreviousZigZag4];
   botX=Low[PreviousZigZag4];
   TimeD=Time[LastZigZag];
   TimeC=Time[PreviousZigZag];
   TimeB=Time[PreviousZigZag2];
   TimeA=Time[PreviousZigZag3];
   TimeX=Time[PreviousZigZag4];
 if(topD>topC)// D IS A PEAK
      {//defining fib1 as CD retracement
         TS1=TimeC;
         PS1=botC;
         TT1=TimeD;
         PT1=topD;
         if (topB<topD)
         {//defining fib2 as BC retracement
            TS2=TimeB;
            PS2=topB;
            TT2=TimeC;
            PT2=botC;
         }
         if (topB>=topD)
         {//defining fib2 as BC extension
            TS2=TimeC;
            PS2=botC;
            TT2=TimeB;
            PT2=topB;
         }
         if (botA<=botC)
         {//defining fib3 as AB retracement
            TS3=TimeA;
            PS3=botA;
       

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

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

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

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

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

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

Стоимость полного кода
820,90₽ ≈ $10.03