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

Histogram Divergence Indicator

histogram-divergence-indicator@fxsignalspot.mq5
Вы автор или правообладатель?

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

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

О программе

Histogram Divergence Indicator — индикатор для MetaTrader 4, отображаемый в отдельном окне. Он рассчитывает разницу между двумя экспоненциальными скользящими средними (с периодами 12 и 26) и сигнальной линией (EMA 9 от MACD), формируя гистограмму. Гистограмма разбивается на положительные и отрицательные значения и отображается цветными столбцами.

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

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

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

НастройкаОписание
Line_Distance Line_Distance — Задаёт отступ для отрисовки трендовых линий дивергенций на графике цены.
Max_Bars_Lookback Max_Bars_Lookback — Определяет максимальное количество баров назад, в пределах которых ищутся дивергенции.
Получить полный код

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

/*
   Generated by EX4-TO-MQ4 decompiler FREEWARE V4.0.451.1 [-]
   Website: 
   E-mail : s*****t*@metaquotes.net
*/

#property indicator_separate_window
#property indicator_levelcolor Black
#property indicator_buffers 7
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Green
#property indicator_color4 Red
#property indicator_color5 LimeGreen
#property indicator_color6 Maroon
#property indicator_color7 Black

string gs_76 = "Histogram Divergence Indicator";
bool gi_84 = TRUE;
bool gi_88 = TRUE;
bool gi_92 = FALSE;
string gs_unused_96 = "";
int g_period_104 = 12;
int g_period_108 = 26;
int g_period_112 = 9;
extern int Line_Distance = 1;
extern int Max_Bars_Lookback = 250;
bool gi_124 = TRUE;
bool gi_128 = FALSE;
int gi_132 = 60;
double gd_136 = 0.0;
double gd_144 = 0.0;
bool gi_152 = FALSE;
double gd_156 = 7.0;
double gd_164 = 0.00007;
int gi_172 = 1;
int gi_176 = 6333684;
int gi_180 = 255;
int gi_184 = 64636;
int gi_188 = 32768;
int gi_192 = 2;
int gi_196 = 1;
int gi_200 = 2237106;
int gi_204 = 25600;
bool gi_208 = FALSE;
bool gi_unused_212 = FALSE;
bool gi_unused_216 = FALSE;
double gd_220 = 0.000015;
double gd_228 = 99.0;
double g_ibuf_236[];
double g_ibuf_240[];
double g_ibuf_244[];
double g_ibuf_248[];
double g_ibuf_252[];
double g_ibuf_256[];
double g_ibuf_260[];
string gs_264 = "";
double gd_unused_272 = 0.0004;
double gd_280 = 1.0;
int g_bars_288 = 0;
double gd_292 = 0.0;
double gd_300 = 0.0;
int gi_unused_308 = 0;
int gi_unused_312 = 0;
int gi_316 = 0;
int gi_320 = 0;
int gi_324 = 0;
int gi_328 = 0;
double g_low_332 = 0.0;
double gd_340 = 0.0;
double gd_348 = 0.0;
double gd_356 = 0.0;
int gi_364 = 0;
int gi_368 = 0;
int gi_372 = 0;
int gi_376 = 0;
double g_high_380 = 0.0;
double gd_388 = 0.0;
double gd_396 = 0.0;
double gd_404 = 0.0;
int gi_412 = 0;
int gi_416 = 0;
double gd_420 = 0.0;
double gd_428 = 0.0;
int g_bars_436 = -1;
double gda_440[1][11];
string gs_444 = "Histogram Divergence Indicator";

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

int deinit() {
   string name_0;
   for (int li_8 = ObjectsTotal() - 1; li_8 >= 0; li_8--) {
      name_0 = ObjectName(li_8);
      if (StringSubstr(name_0, 0, StringLen(gs_444)) == gs_444) ObjectDelete(name_0);
   }
   return (0);
}

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

int f0_5(int ai_0) {
   int li_4;
   int li_8;
   int li_12 = -1;
   int li_16 = -1;
   int li_ret_20 = -1;
   gi_316 = f0_10(ai_0, ai_0 + 1, gi_172, 1, 0);
   gi_320 = -1;
   if (gi_316 > -1) {
      if (gi_316 == ai_0) {
         if (gi_92 == TRUE)
            if (NormalizeDouble(Close[gi_316 - 1], Digits) < NormalizeDouble(Open[gi_316 - 1], Digits)) gi_320 = -2;
         if (gi_320 != -2) gi_320 = f0_2(gi_316, gi_316 + 1);
      } else {
         if (gi_316 == ai_0 + 1) {
            if (gi_92 == TRUE)
               if (NormalizeDouble(Close[gi_316 - 1], Digits) < NormalizeDouble(Open[gi_316 - 1], Digits)) gi_320 = -2;
            if (gi_320 != -2) {
               for (int li_24 = ArrayRange(gda_440, 0); li_24 >= 0; li_24--)
                  if (gda_440[li_24][10] == Time[ai_0 + 1]) gi_320 = -2;
            }
            if (NormalizeDouble(Close[gi_316 - 1], Digits) < NormalizeDouble(Open[gi_316 - 1], Digits) && NormalizeDouble(Close[gi_316 - 2], Digits) < NormalizeDouble(Open[gi_316 - 2],
               Digits)) gi_320 = -2;
            if (gi_320 != -2) gi_320 = gi_316;
         }
      }
      if (gi_320 > -1) {
         g_low_332 = Low[gi_316];
         gd_348 = g_ibuf_260[gi_320];
         gi_324 = -1;
         gd_340 = 0;
         if (gi_124 == TRUE) {
            if (NormalizeDouble(gd_348, 6) < NormalizeDouble(0.0, 6)) gi_416 = 5;
            else gi_416 = 2;
            gi_412 = 1;
            gd_420 = 0;
            for (li_24 = ai_0 + 4; li_24 <= Max_Bars_Lookback; li_24++) {
               if ((NormalizeDouble(gd_220, 6) < NormalizeDouble(g_ibuf_260[li_24], 6) && NormalizeDouble(g_ibuf_260[li_24 - 1], 6) <= NormalizeDouble(gd_220, 6)) || (NormalizeDouble(g_ibuf_260[li_24],
                  6) < NormalizeDouble(gd_220, 8) && NormalizeDouble(gd_220, 6) <= NormalizeDouble(g_ibuf_260[li_24 - 1], 6))) {
                  gi_412++;
                  if (gi_416 < gi_412) break;
               }
               if (NormalizeDouble(g_ibuf_260[li_24], 6) < NormalizeDouble(gd_420, 6)) {
                  gd_420 = g_ibuf_260[li_24];
                  gd_340 = 99999;
                  li_4 = f0_10(li_24 - 2, li_24 + 2, gi_172, 2, g_low_332);
                  if (li_4 > -1 && li_4 - gi_320 > 5) {
                     gi_328 = f0_2(li_4 - 2, li_4 + 2);
                     if (gi_328 > -1) {
                        gd_356 = g_ibuf_260[gi_328];
                        if (NormalizeDouble(gd_356, 6) < NormalizeDouble(0.0, 6) && NormalizeDouble(gd_300, 6) <= NormalizeDouble(gd_348 - gd_356, 6)) {
                           if (NormalizeDouble(gd_292 * gd_280 * Point, Digits) <= NormalizeDouble(gd_340 - g_low_332, Digits))
                              if (f0_11(gd_340, g_low_332, li_4, gi_316) == 0) gi_324 = li_4;
                        }
                     }
                  }
               }
               if (gi_324 != -1) break;
            }
            if (gi_324 != -1) {
               li_12 = f0_9(gi_324, gi_316, gd_340, g_low_332, "Low", 11, ai_0, gi_328, gi_320);
               li_ret_20 = li_12;
            }
         }
         if (gi_128 == TRUE) {
            if (NormalizeDouble(gd_348, 6) < NormalizeDouble(0.0, 6)) {
               gi_416 = 3;
               gi_412 = 1;
               for (li_24 = ai_0 + 4; li_24 <= Max_Bars_Lookback; li_24++) {
                  if ((NormalizeDouble(gd_220, 6) < NormalizeDouble(g_ibuf_260[li_24], 6) && NormalizeDouble(g_ibuf_260[li_24 - 1], 6) <= NormalizeDouble(gd_220, 6)) || (NormalizeDouble(g_ibuf_260[li_24],
                     6) < NormalizeDouble(gd_220, 6) && NormalizeDouble(gd_220, 6) <= NormalizeDouble(g_ibuf_260[li_24 - 1], 6))) {
                     if (gi_416 < gi_412) break;
                     gi_412++;
                  }
                  if (NormalizeDouble(gd_348 * gd_228 / 100.0, 6) < NormalizeDouble(g_ibuf_260[li_24], 6)) {
                     li_4 = f0_10(li_24 - 2, li_24 + 2, gi_172, 2, gd_348);
                     if (li_4 > -1 && li_4 - gi_320 > 5) {
                        gi_328 = f0_2(li_4 - 2, li_4 + 2);
                        if (gi_328 > -1) {
                           gd_356 = g_ibuf_260[gi_328];
                           if (NormalizeDouble(gd_356, 6) < NormalizeDouble(0.0, 6) && (gi_152 == FALSE && NormalizeDouble(gd_348, 6) <= NormalizeDouble(gd_356, 6)) || (gi_152 == TRUE && NormalizeDouble(gd_164,
                              6) <= NormalizeDouble(gd_356 - gd_348, 6))) {
                              gd_340 = Low[li_4];
                              if ((gi_152 == FALSE && NormalizeDouble(gd_340, Digits) <= NormalizeDouble(g_low_332, Digits)) || (gi_152 == TRUE && NormalizeDouble(gd_156 * gd_280 * Point, Digits) <= NormalizeDouble(g_low_332 - gd_340,
                                 Digits)))
                                 if (f0_11(gd_340, g_low_332, li_4, gi_316) == 0) gi_324 = li_4;
                           }
                        }
                     }
                     if (gi_324 != -1) break;
                  }
               }
               if (gi_324 != -1) {
                  li_16 = f0_9(gi_324, gi_316, gd_340, g_low_332, "Low", 14, ai_0, gi_328, gi_320);
                  li_ret_20 = li_16;
                  if (li_16 > -1) {
                     if (li_12 == 11 && li_16 == 14) li_ret_20 = 15;
                     else
                        if (li_12 == 12 && li_16 == 14) li_ret_20 = 16;
                  }
               }
            }
         }
         if (li_ret_20 > -1) return (li_ret_20);
      }
   }
   gi_364 = f0_3(ai_0, ai_0 + 1, gi_172, 1, 0);
   gi_368 = -1;
   if (gi_364 > -1) {
      if (gi_364 == ai_0) {
         if (gi_92 == TRUE)
            if (NormalizeDouble(Open[gi_364 - 1], Digits) < NormalizeDouble(Close[gi_364 - 1], Digits)) gi_368 = -2;
         if (gi_368 != -2) gi_368 = f0_0(gi_364, gi_364 + 1);
      } else {
         if (gi_364 == ai_0 + 1) {
            for (li_24 = ArrayRange(gda_440, 0); li_24 >= 0; li_24--)
               if (gda_440[li_24][10] == Time[ai_0 + 1]) gi_368 = -2;
            if (gi_368 != -2) {
               if (gi_92 == TRUE) {
                  if (NormalizeDouble(Open[gi_364 - 1], Digits) < NormalizeDouble(Close[gi_364 - 1], Digits) && NormalizeDouble(Open[gi_364 - 2], Digits) < NormalizeDouble(Close[gi_364 - 2],
                     Digits)) gi_368 = -2;
               }
               if (gi_368 != -2) gi_368 = gi_364;
            }
         }
      }
      if (gi_368 > -1) {
         g_high_380 = High[gi_364];
         gd_396 = g_ibuf_260[gi_368];
         gi_372 = -1;
         gd_388 = 0;
         if (gi_124 == TRUE) {
            if (NormalizeDouble(0.0, 6) < NormalizeDouble(gd_396, 6)) gi_416 = 5;
            else gi_416 = 2;
            gi_412 = 1;
            gd_428 = 0;
            for (li_24 = ai_0 + 3; li_24 <= Max_Bars_Lookback; li_24++) {
               if ((NormalizeDouble(-1.0 * gd_220, 6) < NormalizeDouble(g_ibuf_260[li_24], 6) && NormalizeDouble(g_ibuf_260[li_24 - 1], 6) <= NormalizeDouble(-1.0 * gd_220, 6)) ||
                  (NormalizeDouble(g_ibuf_260[li_24], 6) < NormalizeDouble(-1.0 * gd_220, 6) && NormalizeDouble(-1.0 * gd_220, 6) <= NormalizeDouble(g_ibuf_260[li_24 - 1], 6))) {
                  gi_412++;
                  if (gi_416 < gi_412) break;
               }
               if (NormalizeDouble(gd_428, 6) < NormalizeDouble(g_ibuf_260[li_24], 6)) {
                  gd_428 = g_ibuf_260[li_24];
                  gd_388 = 0;
                  li_8 = f0_3(li_24 - 2, li_24 + 2, gi_172, 2, g_high_380);
                  if (li_8 > -1 && li_8 - gi_364 > 5) {
                     gi_376 = f0_0(li_8 - 2, li_8 + 2);
                     if (gi_376 > -1) {
                        gd_404 = g_ibuf_260[gi_376];
                        if (NormalizeDouble(0.0, 6) < NormalizeDouble(gd_404, 6) && NormalizeDouble(gd_300, 6) <= NormalizeDouble(gd_404 - gd_396, 6)) {
                           if (NormalizeDouble(gd_292 * gd_280 * Point, Digits) <= NormalizeDouble(g_high_380 - gd_388, Digits))
                              if (f0_7(gd_388, g_high_380, li_8, gi_364) == 0) gi_372 = li_8;
                        }
                     }
                  }
               }
               if (gi_372 != -1) break;
            }
            if (gi_372 != -1) {
               li_12 = f0_9(gi_372, gi_364, gd_388, g_high_380, "High", 21, ai_0, gi_376, gi_368);
               li_ret_20 = li_12;
            }
         }
         if (gi_128 == TRUE) {
            if (NormalizeDouble(0.0, 6) < NormalizeDouble(gd_396, 6)) {
               gi_416 = 3;
               gi_412 = 1;
               for (li_24 = ai_0 + 4; li_24 <= Max_Bars_Lookback; li_24++) {
                  if ((NormalizeDouble(-1.0 * gd_220, 6) < NormalizeDouble(g_ibuf_260[li_24], 6) && NormalizeDouble(g_ibuf_260[li_24 - 1], 6) <= NormalizeDouble(-1.0 * gd_220, 6)) ||
                     (NormalizeDouble(g_ibuf_260[li_24], 6) < NormalizeDouble(-1.0 * gd_220, 6) && NormalizeDouble(-1.0 * gd_220, 6) <= NormalizeDouble(g_ibuf_260[li_24 - 1], 6))) {
                     if (gi_416 < gi_412) break;
                     gi_412++;
                  }
                  if (NormalizeDouble(g_ibuf_260[li_24], 6) < 

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

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

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

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

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

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

Стоимость полного кода
2 229,90₽ ≈ $27.25