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

gartley reversal auto.mq5

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

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

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

О программе

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

Параметры позволяют настроить количество анализируемых баров, чувствительность ZigZag, размер шрифта меток и поведение удаления графических объектов при деинициализации индикатора. Переключатель maf определяет, используется ли дополнительная логика поиска точек разворота.

Индикатор работает в окне графика MetaTrader 4 и выводит результат не в виде буферов на цене, а через графические объекты (горизонтальные линии и текстовые аннотации), что делает его удобным для визуального анализа ключевых ценовых уровней.

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

НастройкаОписание
BarsCount Количество баров — Количество баров, анализируемых при поиске точек разворота.
depth Глубина ZigZag — Параметр depth для индикатора ZigZag, задающий минимальную глубину разворота.
deviation Отклонение ZigZag — Параметр deviation для индикатора ZigZag, задающий допустимое отклонение в пунктах.
backstep Backstep ZigZag — Параметр backstep для индикатора ZigZag, задающий количество баров для пропуска при поиске разворотов.
maf Режим поиска точек — Переключатель логики поиска точек разворота: 0 — без дополнительного условия, 1 — с использованием дополнительной проверки.
info Информация — Параметр информационного вывода.
FontSize Размер шрифта — Размер шрифта текстовых меток на графике.
DeleteType Тип удаления объектов — Режим удаления графических объектов при деинициализации: 0 — удалить все объекты, 1 — оставить все, 2 — оставить целевые уровни, 3 — оставить целевые и разворотные уровни.
Получить полный код

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

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Yellow

extern int BarsCount=300;
extern int depth=16;
extern int deviation=5;
extern int backstep=3;
extern int maf=1;
extern int info=0;
extern int FontSize=8;
extern int DeleteType=0; /*0-delete all objects, 1-keet all*, 2-keep targets, 3-keep targets and reverses*/

double    PointX=0;
double    PointA=0;
double    PointB=0;
double    PointC=0;
double    PointD=0;

double ReversalRangeMax=0;
double ReversalRangeMin=0;

double D_Revers1=0;
double D_Revers3=0;
double D_Revers2=0;

double Target1=0;
double Target3=0;
double Target2=0;

double    zz=0;
double    zzp=0;

int shift=0, Bars_=200, k=0, cnt=0;
bool ft=true; 
bool ftp=true;

double RevPoint[];

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

int deinit()
  {

   if (DeleteType==0)
   {
    ObjectDelete("D_Revers1");
    ObjectDelete("D_Revers2");
    ObjectDelete("D_Revers3");
    ObjectDelete("D_Revers1_txt");
    ObjectDelete("D_Revers2_txt");
    ObjectDelete("D_Revers3_txt");

    ObjectDelete("ReversalRangeMax");
    ObjectDelete("ReversalRangeMin");
    ObjectDelete("ReversalRangeMax_txt");
    ObjectDelete("ReversalRangeMin_txt");

    ObjectDelete("Target1");
    ObjectDelete("Target2");
    ObjectDelete("Target3");
    ObjectDelete("Target1_txt");
    ObjectDelete("Target2_txt");
    ObjectDelete("Target3_txt");
   }
   if (DeleteType==2)
   {
    ObjectDelete("D_Revers1");
    ObjectDelete("D_Revers2");
    ObjectDelete("D_Revers3");
    ObjectDelete("D_Revers1_txt");
    ObjectDelete("D_Revers2_txt");
    ObjectDelete("D_Revers3_txt");

    ObjectDelete("ReversalRangeMax");
    ObjectDelete("ReversalRangeMin");
    ObjectDelete("ReversalRangeMax_txt");
    ObjectDelete("ReversalRangeMin_txt");

   }
if (DeleteType==3)
   {
    ObjectDelete("D_Revers1");
    ObjectDelete("D_Revers2");
    ObjectDelete("D_Revers3");
    ObjectDelete("D_Revers1_txt");
    ObjectDelete("D_Revers2_txt");
    ObjectDelete("D_Revers3_txt");
   }   

   Comment("");
   return(0);
  }

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

   int    counted_bars=IndicatorCounted();
   int limit; // ???????????? ????????

   if (counted_bars==0)   limit=Bars-1; // ??????????? ????? ??? ???, ????? ??????? ? ?????? ??????
   if (counted_bars>0)   limit=Bars-counted_bars-1; // ?????? ?? ????? ????????? ????? ?????????? 

   if (ftp) {Comment(" "); ftp=false; }

   for(shift=limit; shift>0; shift--)   
   {
      if (maf==0) {PointX=0;}
      zz=iCustom(NULL, 0, "ZigZag",depth,deviation,backstep,0,shift);
      if ((ft) || (zz!=0)) 
      {
         k=0;
         for(cnt = shift; cnt<BarsCount; cnt++)
         {
            zzp=iCustom(NULL, 0, "ZigZagE",depth,deviation,backstep,0,cnt);
            if ((zzp!=0) && (k==4) && (maf==1)) {PointX=zzp;RevPoint[cnt]=zzp;break;}
            if ((zzp!=0) && (k==3)) {k=k+1;PointA=zzp;RevPoint[cnt]=zzp;}
            if ((zzp!=0) && (k==2)) {k=k+1;PointB=zzp;RevPoint[cnt]=zzp;}
            if ((zzp!=0) && (k==1)) {k=k+1;PointC=zzp;RevPoint[cnt]=zzp;}
            if ((zzp!=0) && (k==0)) {k=k+1;PointD=zzp;RevPoint[cnt]=zzp;}

         }

      }

   }

ReversalRangeMax=NormalizeDouble(PointA+(PointX-PointA)*0.786,4);
ReversalRangeMin=NormalizeDouble(PointA+(PointX-PointA)*0.618,4);

D_Revers1=NormalizeDouble(PointC+(PointB-PointA),4);
D_Revers3=NormalizeDouble(PointC+(PointB-PointC)*1.618,4);
D_Revers2=NormalizeDouble(PointC+(PointB-PointC)*1.272,4);

Target1=NormalizeDouble(PointD-(PointD-PointC)*0.618,4);
Target3=PointD-(PointB-PointC);
Target2=NormalizeDouble(PointD-(PointD-PointC)*0.786,4);

if ((zz!=0) || (ft))
{

  if (ObjectFind("ReversalRangeMax") != 0) 
         {
            ObjectCreate("ReversalRangeMax",OBJ_HLINE,0,Time[25],ReversalRangeMax,Time[1],ReversalRangeMax);
            ObjectCreate("ReversalRangeMax_txt",OBJ_TEXT,0,Time[40],ReversalRangeMax,Time[1],ReversalRangeMax);
            ObjectSet("ReversalRangeMax",OBJPROP_COLOR,Red);
            ObjectSet("ReversalRangeMax",OBJPROP_WIDTH,1);
            ObjectSet("ReversalRangeMax",OBJPROP_STYLE,STYLE_SOLID);
            ObjectSetText("ReversalRangeMax_txt", "ReversalRangeMax "+DoubleToStr(ReversalRangeMax,4), FontSize, "Tahoma", Red);
         }
      else 
         {
            ObjectMove("ReversalRangeMax", 0,Time[1],ReversalRangeMax);
            ObjectMove("ReversalRangeMax_txt", 0,Time[40],ReversalRangeMax);
         }
      if (ObjectFind("ReversalRangeMin") != 0) 
         {
            ObjectCreate("ReversalRangeMin",OBJ_HLINE,0,Time[25],ReversalRangeMin,Time[1],ReversalRangeMin);
            ObjectCreate("ReversalRangeMin_txt",OBJ_TEXT,0,Time[40

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

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

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

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

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

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

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