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

#chaos arrzzx2=.mq4

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

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

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

О программе

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

Основной расчёт основан на линейно-взвешенном скользящем среднем (LWMA) с настраиваемым периодом и выбором цены (Close, Open, Median, Typical, Weighted). Далее выполняется дополнительная сглаживающая обработка с учётом диапазона значений буфера.

Индикатор определяет локальные минимумы и максимумы в заданных интервалах и отображает их в виде стрелок на графике. Дополнительная обработка выделяет точки разворота на основе обнаруженных экстремумов.

Параметр SRZZ задаёт период поиска экстремумов. Остальные параметры жёстко заданы в коде.

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

НастройкаОписание
SRZZ Период поиска экстремумов для вспомогательного расчёта. Используется для определения локальных минимумов и максимумов в буфере сглаженных значений.
Получить полный код

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

/*
   G e n e r a t e d  by ex4-to-mq4 decompiler FREEWARE 4.0.509.5
   Website:  HTtp: / /wWW .M etaq u o tEs . Ne t
   E-mail :  S UPp o R T @m eTaQ uO T ES.NE t
*/

#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 White
#property indicator_color2 Lime
#property indicator_color3 Blue
#property indicator_color4 Blue
#property indicator_color5 Green
#property indicator_color6 MediumVioletRed
#property indicator_color7 LimeGreen
#property indicator_color8 MediumVioletRed

int Gi_76 = 3;
extern int SRZZ = 60;
int Gi_84 = 20;
int Gi_88 = 21;
int Gi_92 = 3;
bool Gi_96 = FALSE;
int Gi_100 = 0;
double G_ibuf_104[];
double G_ibuf_108[];
double Gda_112[];
double Gda_116[];
double G_ibuf_120[];
double G_ibuf_124[];
double G_ibuf_128[];
double G_ibuf_132[];
int Gia_136[6] = {0, 0, 0, 0, 0, 0};
int Gia_140[5] = {0, 0, 0, 0, 0};
int Gi_144;
int Gi_148;
int Gi_152;
int Gi_156;
int Gi_160;
bool Gi_164 = TRUE;
int G_bars_168 = 0;

void MainCalculation(int Ai_0) {
   if (Bars - Ai_0 > Gi_76 + 1) SACalc(Ai_0);
   else Gda_112[Ai_0] = 0;
   if (Bars - Ai_0 > Gi_88 + Gi_76 + 2) {
      SMCalc(Ai_0);
      return;
   }
   Gda_116[Ai_0] = 0;
}

void SACalc(int Ai_0) {
   int Li_4;
   int count_8;
   int Li_12;
   int Li_16;
   double Ld_24;
   switch (Gi_100) {
   case 0:
      Gda_112[Ai_0] = iMA(NULL, 0, Gi_76 + 1, 0, MODE_LWMA, PRICE_CLOSE, Ai_0);
      break;
   case 1:
      Gda_112[Ai_0] = iMA(NULL, 0, Gi_76 + 1, 0, MODE_LWMA, PRICE_OPEN, Ai_0);
      break;
   case 4:
      Gda_112[Ai_0] = iMA(NULL, 0, Gi_76 + 1, 0, MODE_LWMA, PRICE_MEDIAN, Ai_0);
      break;
   case 5:
      Gda_112[Ai_0] = iMA(NULL, 0, Gi_76 + 1, 0, MODE_LWMA, PRICE_TYPICAL, Ai_0);
      break;
   case 6:
      Gda_112[Ai_0] = iMA(NULL, 0, Gi_76 + 1, 0, MODE_LWMA, PRICE_WEIGHTED, Ai_0);
      break;
   default:
      Gda_112[Ai_0] = iMA(NULL, 0, Gi_76 + 1, 0, MODE_LWMA, PRICE_OPEN, Ai_0);
   }
   for (int Li_20 = Ai_0 + Gi_76 + 2; Li_20 > Ai_0; Li_20--) {
      Ld_24 = 0.0;
      Li_4 = 0;
      count_8 = 0;
      Li_12 = Li_20 + Gi_76;
      Li_16 = Li_20 - Gi_76;
      if (Li_16 < Ai_0) Li_16 = Ai_0;
      while (Li_12 >= Li_20) {
         count_8++;
         Ld_24 += count_8 * SnakePrice(Li_12);
         Li_4 += count_8;
         Li_12--;
      }
      while (Li_12 >= Li_16) {
         count_8--;
         Ld_24 += count_8 * SnakePrice(Li_12);
         Li_4 += count_8;
         Li_12--;
      }
      Gda_112[Li_20] = Ld_24 / Li_4;
   }
}

double SnakePrice(int Ai_0) {
   switch (Gi_100) {
   case 0:
      return (Close[Ai_0]);
   case 1:
      return (Open[Ai_0]);
   case 4:
      return ((High[Ai_0] + Low[Ai_0]) / 2.0);
   case 5:
      return ((Close[Ai_0] + High[Ai_0] + Low[Ai_0]) / 3.0);
   case 6:
      return ((2.0 * Close[Ai_0] + High[Ai_0] + Low[Ai_0]) / 4.0);
   }
   return (Open[Ai_0]);
}

void SMCalc(int Ai_0) {
   double Ld_4;
   double Ld_12;
   for (int Li_20 = Ai_0 + Gi_76 + 2; Li_20 >= Ai_0; Li_20--) {
      Ld_4 = Gda_112[ArrayMaximum(Gda_112, Gi_88, Li_20)];
      Ld_12 = Gda_112[ArrayMinimum(Gda_112, Gi_88, Li_20)];
      Gda_116[Li_20] = ((Gi_92 + 2) * 2 * Gda_112[Li_20] - (Ld_4 + Ld_12)) / 2.0 / (Gi_92 + 1);
   }
}

void LZZCalc(int Ai_0) {
   int Li_8;
   int Li_12;
   int Li_16;
   int index_20;
   int Li_4 = Ai_0 - 1;
   int Li_24 = 0;
   int Li_28 = 0;
   while (Li_4 < Gi_144 && Li_16 == 0) {
      Li_4++;
      G_ibuf_108[Li_4] = 0;
      Li_8 = Li_4 - Gi_84;
      if (Li_8 < Ai_0) Li_8 = Ai_0;
      Li_12 = Li_4 + Gi_84;
      if (Li_4 == ArrayMinimum(Gda_116, Li_12 - Li_8 + 1, Li_8)) {
         Li_16 = -1;
         Li_24 = Li_4;
      }
      if (Li_4 == ArrayMaximum(Gda_116, Li_12 - Li_8 + 1, Li_8)) {
         Li_16 = 1;
         Li_28 = Li_4;
      }
   }
   if (Li_16 != 0) {
      index_20 = 0;
      if (Li_4 > Ai_0) {
         if (Gda_116[Li_4] > Gda_116[Ai_0]) {
            if (Li_16 == 1) {
               if (Li_4 >= Ai_0 + Gi_84 && index_20 < 5) {
                  index_20++;
                  Gia_136[index_20] = Li_4;
               }
               Li_28 = Li_4;
               G_ibuf_108[Li_4] = Gda_116[Li_4];
            }
         } else {
            if (Li_16 == -1) {
               if (Li_4 >= Ai_0 + Gi_84 && index_20 < 5) {
                  index_20++;
                  Gia_136[index_20] = Li_4;
               }
               Li_24 = Li_4;
               G_ibuf_108[Li_4] = Gda_116[Li_4];
            }
         }
      }
      if (Li_4 < Gi_160 || index_20 < 5) {
         while (true) {
            G_ibuf_108[Li_4] = 0;
            Li_8 = Li_4 - Gi_84;
            if (Li_8 < Ai_0) Li_8 = Ai_0;
            Li_12 = Li_4 + Gi_84;
            if (Li_4 == ArrayMinimum(Gda_116, Li_12 - Li_8 + 1, Li_8)) {
               if (Li_16 == -1 && Gda_116[Li_4] < Gda_116[Li_24]) {
                  if (Li_4 >= Ai_0 + Gi_84 && index_20 < 5) Gia_136[index_20] = Li_4;
                  G_ibuf_108[Li_24] = 0;
                  G_ibuf_108[Li_4] = Gda_116[Li_4];
                  Li_24 = Li_4;
               }
               if (Li_16 == 1) {
                  if (Li_4 >= Ai_0 + Gi_84 && index_20 < 5) {
                     index_20++;
                     Gia_136[index_20] = Li_4;
                  }
                  G_ibuf_108[Li_4] = Gda_116[Li_4];
                  Li_16 = -1;
                  Li_24 = Li_4;
               }
            }
            if (Li_4 == ArrayMaximum(Gda_116, Li_12 - Li_8 + 1, Li_8)) {
               if (Li_16 == 1 && Gda_116[Li_4] > Gda_116[Li_28]) {
                  if (Li_4 >= Ai_0 + Gi_84 && index_20 < 5) Gia_136[index_20] = Li_4;
                  G_ibuf_108[Li_28] = 0;
                  G_ibuf_108[Li_4] = Gda_116[Li_4];
                  Li_28 = Li_4;
               }
               if (Li_16 == -1) {
                  if (Li_4 >= Ai_0 + Gi_84 && index_20 < 5) {
                     index_20++;
                     Gia_136[index_20] = Li_4;
                  }
                  G_ibuf_108[Li_4] = Gda_116[Li_4];
                  Li_16 = 1;
                  Li_28 = Li_4;
               }
            }
            Li_4++;
            if (Li_4 > Gi_144) return;
            if (Li_4 < Gi_160 || index_20 < 5) continue;
            break;
         }
      }
      Gi_152 = Bars - Gia_136[5];
      G_ibuf_108[Ai_0] = Gda_116[Ai_0];
      return;
   }
}

void SZZCalc(int Ai_0) {
   int Li_8;
   int Li_12;
   int Li_16;
   int index_20;
   int Li_4 = Ai_0 - 1;
   int Li_24 = 0;
   int Li_28 = 0;
   while (Li_4 <= Gi_160 && Li_16 == 0) {
      Li_4++;
      G_ibuf_132[Li_4] = 0;
      G_ibuf_128[Li_4] = 0;
      G_ibuf_124[Li_4

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

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

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

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

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

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

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