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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.