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

IP-GDR Fractal Levels

_igdr_fl(1).mq5
Вы автор или правообладатель?

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

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

О программе

Индикатор «IP-GDR Fractal Levels» от GreenDog (2008–2009) работает на платформе MetaTrader 5 и предназначен для автоматического обнаружения фрактальных уровней на ценовых графиках. Он анализирует указанное количество баров, выявляет фракталы верхушек и впадин, а затем группирует близкие уровни в кластеры и выбирает три наиболее частых ценовых уровня.

Результаты отображаются графически: для каждого из трёх ключевых уровней рисуются каналы, трендовые линии и текстовые метки с указанием цены. Информация о текущих уровнях и количестве найденных фракталов выводится в комментарий на графике.

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

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

НастройкаОписание
frNum Количество баров, используемых для определения фрактала. Значение 2 соответствует 5-барному фракталу, 3 — 7-барному.
frType Тип фрактала: 0 — простой (фрактал определяется при равенстве цен), 1 — расширенный (фрактал определяется при строгом превышении цен).
frMode Режим определения фракталов: MODE_LOW (1) — уровень поддержки, MODE_HIGH (2) — уровень сопротивления, 0 — поддержка и сопротивление (S&R).
dlt Допуск (дельта) для кластеризации фрактальных уровней — определяет ценовой диапазон, в пределах которого фракталы считаются принадлежащими одному уровню.
sBars Количество баров, анализируемых индикатором. Минимальное допустимое значение — 200. Если задано 0, используются все доступные бары.
Получить полный код

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

#property indicator_chart_window

extern int frNum = 2;   // ?????????? ????? ????????, 2=5-?????? ???????, 3=7-?????? ? ??
extern int frType = 1;  // ??? ??????????? ???????? 0=???????, 1=?????????
extern int frMode = 0;  // ?????? - MODE_LOW(1)=Sup, MODE_HIGH(2)=Res, 0=S&R
extern double dlt = 0.24;  // ??????????? ?? ?????? ?????? ?????
extern int sBars = 480; // ?????????? ?????, ?????? ?????????????? ?? ????? 200

bool Go = true;
int lastBars=0,lastTime=0;
double aData[240][2],aRes[3][2];
int aCol[6]={MistyRose, OldLace, Honeydew, Red, Gold, Green};

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

int deinit(){
   Comment("");
   for(int i=0;i<3;i++){
      string name="IPGDR_Lv"+i; ObjectDelete(name);
      name=name+"Up"; ObjectDelete(name);
      name=name+"Dw"; ObjectDelete(name);
      name=name+"Tx"; ObjectDelete(name);
   }
}

int start(){
      // код доступен только после оплаты
   }
   if (!Go) { Comment("???????????? ????????? ??????????!"); return(-1); }
   if (Bars<sBars) { Comment("???????????? ????? ?? ???????!"); return(0); }  
   if (Bars==lastBars) return(0); // ??????? ???? ? ?????? ????
   lastBars=Bars;

   int sh=0; ArrayInitialize(aData,0);
   double lastExt=0;
   for(int i=frNum+1;i<sBars-2*frNum;i++){
      if (frMode!=MODE_LOW && upFrac(i)) { // ????????? ??????? [????? ?????? ??????]

         if (!(frType!=0 && lastExt>0 && lastExt==High[i])){
            aData[sh][0]=High[i]; lastExt=High[i]; sh++;
         }
      }
      if (sh>=240) break;
      if (frMode!=MODE_HIGH && dwFrac(i)) {  // ????????? ??????? [????? ?????? ??????]

         if (!(frType!=0 && lastExt>0 && lastExt==Low[i])){
            aData[sh][0]=Low[i]; lastExt=Low[i]; sh++;
         }
      }
      if (sh>=240) break;
   }

   double sHL=0; for(i=1;i<=sBars;i++) sHL=sHL+(High[i]-Low[i]); sHL=sHL/sBars; dlt=sHL*dlt;

   for(i=0;i<sh;i++){
      for(int j=i+1;j<sh;j++){
         if (aData[j][0]>aData[i][0]-dlt && aData[j][0]<aData[i][0]+dlt) { 
            aData[i][1]=aData[i][1]+1; aData[j][1]=aData[j][1]+1;
         }
      }
   }

   double cur[2],tmp[2]; aRes[0][0]=aData[0][0]; aRes[0][1]=aData[0][1];
   for(i=1;i<sh;i++){
      cur[0]=aData[i][0]; cur[1]=aData[i][1];
      if (cur[1]>aRes[0][1]) { // ???? ??????? ?????? 1?? ?????, ?? 1? ????????? ???????
         tmp[0]=aRes[0][0]; tmp[1]=aRes[0][1]; aRes[0][0]=cur[0]; aRes[0][1]=cur[1]; cur[0]=tmp[0]; cur[1]=tmp[1];
      }

      if (cur[1]>aRes[1][1] && (cur[0]<aRes[0

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

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

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

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

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

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

Стоимость полного кода
411,80₽ ≈ $5.03