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

amazing grace arrows.mq5

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

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

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

О программе

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

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

НастройкаОписание
note1 Разделитель — Текстовый заголовок информационной группы настроек
HighLine_Color Цвет верхней линии — Цвет верхней горизонтальной линии на графике
ZeroLine_Color Цвет нулевой линии — Цвет нулевой горизонтальной линии на графике
LowLine_Color Цвет нижней линии — Цвет нижней горизонтальной линии на графике
Line_Style Стиль линий — Стиль отображения горизонтальных линий
note2 Разделитель цвета — Текстовый заголовок группы настроек цвета
text1Color Цвет текста 1 — Цвет первого текстового элемента на графике
text2Color Цвет текста 2 — Цвет второго текстового элемента на графике
text3Color Цвет текста 3 — Цвет третьего текстового элемента на графике
Shift_UP_DN Вертикальное смещение — Вертикальное смещение текстовых меток
Shift_Left_Right Горизонтальное смещение — Горизонтальное смещение текстовых меток
note3 Разделитель уведомлений — Текстовый заголовок группы настроек уведомлений
MsgAlerts Всплывающие уведомления — Включить или выключить всплывающие сообщения
SoundAlerts Звуковые уведомления — Включить или выключить звуковые оповещения
eMailAlerts Email-уведомления — Включить или выключить отправку email
AlertOnFhoCross Оповещение при пересечении — Уведомление при пересечении сигнальной линии
AlertOnFhoSigCross Оповещение при пересечении сигнала — Уведомление при пересечении сигнала
AlertOnSlopeChange Оповещение при изменении наклона — Уведомление при изменении направления наклона
note4 Разделитель звуков — Текстовый заголовок группы звуковых настроек
FhoSlopeSound Звук изменения наклона — Звуковой файл для оповещения об изменении наклона
AnalyseBuySound Звук покупки — Звуковой файл для оповещения о покупке
AnalyseSellSound Звук продажи — Звуковой файл для оповещения о продаже
FhoCrossSound Звук пересечения — Звуковой файл для оповещения о пересечении
note5 Разделитель меток — Текстовый заголовок группы настроек меток
AnalyzeLabelWindow Окно меток — Номер окна для отображения текстовых меток
AnalyseLabelCorner Угол меток — Угол привязки текстовых меток на графике
AnalyzeLabelonoff Отображение меток — Включить или выключить отображение текстовых меток
noteBox Разделитель параметров — Текстовый заголовок группы прочих параметров
note5a Разделитель баров — Текстовый заголовок группы настроек баров
Fhonum_bars Количество баров — Количество баров для расчёта
note6 Разделитель расхождений — Текстовый заголовок группы настроек расхождений
NumberOfDivergenceBars Баров для расхождений — Максимальное количество баров для поиска расхождений
drawPriceTrendLines Линии тренда цены — Рисовать линии тренда по цене при обнаружении расхождения
drawIndicatorTrendLines Линии тренда индикатора — Рисовать линии тренда по индикатору при обнаружении расхождения
ShowIn1MChart Показать на M1 — Отображать индикатор на графике минутного таймфрейма
note7 Разделитель оповещений — Текстовый заголовок группы настроек оповещений расхождений
EnableAlerts Оповещения расхождений — Включить или выключить уведомления о расхождениях
_Info1 Информация 1 — Информационная строка
_Info2 Информация 2 — Информационная строка
_Info3 Информация 3 — Информационная строка
_Info4 Информация 4 — Информационная строка
_Info5 Информация 5 — Информационная строка
_Info6 Информация 6 — Информационная строка
_Info7 Информация 7 — Информационная строка
_Info8 Информация 8 — Информационная строка
_Info9 Информация 9 — Информационная строка
_Info10 Информация 10 — Информационная строка
_Info11 Информация 11 — Информационная строка
SoundAlertOnDivergence Звук при расхождении — Включить звуковое оповещение при обнаружении расхождения
EmailDivergenceAlerts Email при расхождении — Отправлять email при обнаружении расхождения
note8 Разделитель цветов — Текстовый заголовок группы настроек цвета расхождений
BullishDivergenceColor Цвет бычьего расхождения — Цвет для отображения бычьего расхождения
BearishDivergenceColor Цвет медвежьего расхождения — Цвет для отображения медвежьего расхождения
note9 Разделитель звуков — Текстовый заголовок группы звуковых файлов расхождений
ClassicBullDivSound Звук классического бычьего — Звуковой файл для классического бычьего расхождения
ReverseBullDivSound Звук обратного бычьего — Звуковой файл для обратного бычьего расхождения
ClassicBearDivSound Звук классического медвежьего — Звуковой файл для классического медвежьего расхождения
ReverseBearDivSound Звук обратного медвежьего — Звуковой файл для обратного медвежьего расхождения
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 6
#property indicator_color1 Green
#property indicator_color2 Aqua
#property indicator_color3 Blue
#property indicator_color4 Yellow
#property indicator_color5 Red
#property indicator_width5 2
#property indicator_color6 Lime
#property indicator_width6 2

string Gs_unused_76 = "*";
string Gs_unused_84 = "*";
string Gs_unused_92 = "*";
string Gs_unused_100 = "*";
string Gs_unused_108 = "*";
string Gs_unused_116 = "*";
int Gi_124 = 20;
int Gi_128 = 35;
extern string note1 = "*Inform*";
extern color HighLine_Color = DarkGray;
extern color ZeroLine_Color = DarkGray;
extern color LowLine_Color = DarkGray;
extern int Line_Style = 2;
extern string note2 = "*Colors*";
extern color text1Color = Silver;
extern color text2Color = Silver;
extern color text3Color = Green;
extern int Shift_UP_DN = 10;
extern int Shift_Left_Right = 50;
extern string note3 = "* Alert You *";
extern bool MsgAlerts = FALSE;
extern bool SoundAlerts = FALSE;
extern bool eMailAlerts = FALSE;
extern bool AlertOnFhoCross = FALSE;
extern bool AlertOnFhoSigCross = FALSE;
extern bool AlertOnSlopeChange = FALSE;
extern string note4 = "*Sounds*";
extern string FhoSlopeSound = "***Exit***";
extern string AnalyseBuySound = "***Buy***";
extern string AnalyseSellSound = "***Sell***";
extern string FhoCrossSound = "***cross***";
extern string note5 = "=Alarm labels=";
extern int AnalyzeLabelWindow = 0;
extern int AnalyseLabelCorner = 1;
extern bool AnalyzeLabelonoff = FALSE;
extern string noteBox = "Other Parameters";
double Gd_284 = 0.0;
extern string note5a = "=Bars=";
extern int Fhonum_bars = 750;
int Gi_304 = 0;
int Gi_308 = 0;
double Gd_312 = 1.2;
double G_ibuf_320[];
double G_ibuf_324[];
double G_ibuf_328[];
double G_ibuf_332[];
double G_ibuf_336[];
double G_ibuf_340[];
double Gd_344;
double Gd_352;
int G_bars_360;
string Gs_364;
string Gs_372;
datetime G_time_380;
datetime G_time_384;
extern string note6 = "*** Divergence Settings ***";
extern int NumberOfDivergenceBars = 500;
extern bool drawPriceTrendLines = FALSE;
extern bool drawIndicatorTrendLines = FALSE;
extern bool ShowIn1MChart = TRUE;
extern string note7 = "--- Divergence Alert Settings ---";
extern bool EnableAlerts = FALSE;
extern string _Info1 = "";
extern string _Info2 = "------------------------------------";
extern string _Info3 = "SoundAlertOnDivergence only works";
extern string _Info4 = "when EnableAlerts is true.";
extern string _Info5 = "";
extern string _Info6 = "If SoundAlertOnDivergence is true,";
extern string _Info7 = "then sound alert will be generated,";
extern string _Info8 = "otherwise a pop-up alert will be";
extern string _Info9 = "generated.";
extern string _Info10 = "------------------------------------";
extern string _Info11 = "";
extern bool SoundAlertOnDivergence = FALSE;
extern bool EmailDivergenceAlerts = FALSE;
extern string note8 = "--- Divergence Color Settings ---";
extern color BullishDivergenceColor = DodgerBlue;
extern color BearishDivergenceColor = FireBrick;
extern string note9 = "--- Divergence Sound Files ---";
extern string ClassicBullDivSound = "CBullishDiv";
extern string ReverseBullDivSound = "RBullishDiv";
extern string ClassicBearDivSound = "CBearishDiv";
extern string ReverseBearDivSound = "RBearishDiv";
double G_ibuf_576[];
double G_ibuf_580[];

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

int deinit() {
   DeleteObjects("BC");
   Comment("");
   return (0);
}

void drawLine(string A_name_0, double A_price_8, color A_color_16, int A_style_20) {
   if (WindowFind(Gs_372) > -1) {
      ObjectDelete(A_name_0);
      ObjectCreate(A_name_0, OBJ_HLINE, WindowFind(Gs_364), Time[0], A_price_8);
      ObjectSet(A_name_0, OBJPROP_STYLE, A_style_20);
      ObjectSet(A_name_0, OBJPROP_COLOR, A_color_16);
      ObjectSet(A_name_0, OBJPROP_WIDTH, 1);
   }
}

void DeleteObjects(string As_0) {
   string name_8;
   for (int Li_16 = ObjectsTotal() - 1; Li_16 >= 0; Li_16--) {
      name_8 = ObjectName(Li_16);
      if (StringFind(name_8, As_0) > -1) ObjectDelete(name_8);
   }
}

int start() {
      // код доступен только после оплаты
   }
   double Ld_0;
   string Ls_8;
   string Ls_unused_16;
   if (WindowFind(Gs_372) > -1) {
   }
   if (Period() == PERIOD_M1) Ld_0 = 0.00018;
   if (Period() == PERIOD_M5) Ld_0 = 0.00025;
   if (Period() == PERIOD_M15) Ld_0 = 0.0005;
   if (Period() == PERIOD_M30) Ld_0 = 0.008;
   if (Period() == PERIOD_H1) Ld_0 = 0.0012;
   if (Period() == PERIOD_H4) Ld_0 = 0.003;
   if (Period() == PERIOD_D1) Ld_0 = 0.005;
   if (Period() == PERIOD_W1) Ld_0 = 0.08;
   if (Period() == PERIOD_MN1) Ld_0 = 0.015;
   if (Gd_284 > 0.0) Ld_0 = Gd_284;
   double Ld_24 = Ld_0;
   double Ld_32 = -1.0 * Ld_0;
   if (WindowFind(Gs_372) > -1) {
      drawLine("BC" + "line_HL", Ld_24, HighLine_Color, Line_Style);
      drawLine("BC" + "line_ZL", 0, ZeroLine_Color, Line_Style);
      drawLine("BC" + "line_LL", Ld_32, LowLine_Color, Line_Style);
   }
   int Li_40 = 0;
   double Ld_44 = 0;
   double Ld_52 = 0;
   double Ld_unused_60 = 0;
   double Ld_68 = 0;
   double Ld_76 = 0;
   double Ld_84 = 0;
   double Ld_92 = 0;
   double Ld_100 = 0;
   double Ld_108 = 0;
   double Ld_116 = 0;
   double Ld_124 = 0;
   double Ld_132 = 0;
   double Ld_140 = 0;
   double Ld_148 = 0;
   double Ld_156 = 0;
   double Ld_164 = 0;
   double Ld_172 = 0;
   double Ld_180 = 0;
   double Ld_188 = 0;
   double Ld_196 = 0;
   double Ld_204 = 0;
   double Ld_212 = 0;
   double Ld_220 = 0;
   double Ld_228 = 0;
   double Ld_236 = 0;
   double Ld_244 = 0;
   double Ld_252 = 0;
   double Ld_260 = 0;
   double Ld_268 = 0;
   double Ld_276 = 0;
   double Ld_284 = 0;
   double Ld_292 = 0;
   double Ld_300 = 0;
   double Ld_308 = 0;
   double Ld_316 = 0;
   double Ld_324 = 0;
   double Ld_332 = 0;
   double Ld_340 = 0;
   double Ld_348 = 0;
   double Ld_356 = 0;
   double Ld_364 = 1;
   double Ld_372 = 0;
   double bars_380 = 0;
   double Ld_388 = 0;
   double Ld_396 = 0;
   double Ld_404 = 0;
   double Ld_412 = 0;
   string Ls_420 = "*";
   int ind_counted_428 = IndicatorCounted();
   bool Li_432 = TRUE;
   Ld_396 = Fhonum_bars + Gi_124 + Gi_304 + Gi_128 + Gi_308 + Gd_312;
   if (Ld_396 == Ld_404 && Ls_420 == Symbol() && Ld_412 == Time[4] - Time[5] && Bars - bars_380 < 2.0) Ld_388 = Bars - bars_380;
   else Ld_388 = -1;
   Ls_420 = Symbol();
   Ld_412 = Time[4] - Time[5];
   bars_380 = Bars;
   Ld_404 = Ld_396;
   if (Ld_388 == 1.0 || Ld_388 == 0.0) Ld_372 = Ld_388;
   else Ld_364 = 1;
   if ((!ShowIn1MChart) && Period() == PERIOD_M1) Li_432 = FALSE;
   if (Ld_364 == 1.0) {
      Ld_348 = Gd_312 * Gd_312;
      Ld_356 = Ld_348 * Gd_312;
      Ld_132 = -Ld_356;
      Ld_140 = 3.0 * (Ld_348 + Ld_356);
      Ld_148 = -3.0 * (2.0 * Ld_348 + Gd_312 + Ld_356);
      Ld_156 = 3.0 * Gd_312 + 1.0 + Ld_356 + 3.0 * Ld_348;
      Ld_308 = Gi_124;
      if (Ld_308 < 1.0) Ld_308 = 1;
      Ld_308 = (Ld_308 - 1.0) / 2.0 + 1.0;
      Ld_316 = 2 / (Ld_308 + 1.0);
      Ld_324 = 1 - Ld_316;
      Ld_308 = Gi_128;
      if (Ld_308 < 1.0) Ld_308 = 1;
      Ld_308 = (Ld_308 - 1.0) / 2.0 + 1.0;
      Ld_332 = 2 / (Ld_308 + 1.0);
      Ld_340 = 1 - Ld_332;
      G_ibuf_320[Fhonum_bars - 1] = 0;
      Ld_260 = 0;
      Ld_268 = 0;
      Ld_276 = 0;
      Ld_284 = 0;
      Ld_292 = 0;
      Ld_300 = 0;
      G_ibuf_332[Fhonum_bars - 1] = 0;
      Ld_164 = 0;
      Ld_172 = 0;
      Ld_180 = 0;
      Ld_188 = 0;
      Ld_196 = 0;
      Ld_204 = 0;
      Ld_372 = Fhonum_bars - 2;
      Ld_364 = 0;
   }
   for (Li_40 = Ld_372; Li_40 >= 0; Li_40--) {
      if (Gi_304 == 1) Ld_212 = Ld_316 * Open[Li_40] + Ld_324 * Ld_260;
      else Ld_212 = Ld_316 * Close[Li_40] + Ld_324 * Ld_260;
      Ld_220 = Ld_316 * Ld_212 + Ld_324 * Ld_268;
      Ld_228 = Ld_316 * Ld_220 + Ld_324 * Ld_276;
      Ld_236 = Ld_316 * Ld_228 + Ld_324 * Ld_284;
      Ld_244 = Ld_316 * Ld_236 + Ld_324 * Ld_292;
      Ld_252 = Ld_316 * Ld_244 + Ld_324 * Ld_300;
      Ld_44 = Ld_132 * Ld_252 + Ld_140 * Ld_244 + Ld_148 * Ld_236 + Ld_156 * Ld_228;
      if ((Ld_388 == 1.0 && Li_40 == 1) || Ld_388 == -1.0) {
         Ld_260 = Ld_212;
         Ld_268 = Ld_220;
         Ld_276 = Ld_228;
         Ld_284 = Ld_236;
         Ld_292 = Ld_244;
         Ld_300 = Ld_252;
      }
      Ld_84 = Ld_332 * Close[Li_40] + Ld_340 * Ld_164;
      Ld_92 = Ld_332 * Ld_84 + Ld_340 * Ld_172;
      Ld_100 = Ld_332 * Ld_92 + Ld_340 * Ld_180;
      Ld_108 = Ld_332 * Ld_100 + Ld_340 * Ld_188;
      Ld_116 = Ld_332 * Ld_108 + Ld_340 * Ld_196;
      Ld_124 = Ld_332 * Ld_116 + Ld_340 * Ld_204;
      Ld_68 = Ld_132 * Ld_124 + Ld_140 * Ld_116 + Ld_148 * Ld_108 + Ld_156 * Ld_100;
      if (Gi_308 == 1) {
         G_ibuf_320[Li_40] = (Ld_44 - Ld_52) / Ld_52 + (Ld_68 - Ld_76) / Ld_76;
         G_ibuf_332[Li_40] = (Ld_44 - Ld_52) / Ld_52;
         Gd_352 = G_ibuf_332[Li_40];
      } else {
         if (Ld_76 > 0.0 && Ld_52 > 0.0) {
            G_ibuf_320[Li_40] = (Ld_68 - Ld_76) / Ld_76;
            G_ibuf_332[Li_40] = (Ld_44 - Ld_52) / Ld_52;
            Gd_352 = G_ibuf_332[Li_40];
         }
      }
      G_ibuf_324[Li_40] = EMPTY_VALUE;
      G_ibuf_328[Li_40] = EMPTY_VALUE;
      if (G_ibuf_320[Li_40 + 1] < G_ibuf_320[Li_40]) {
         if (G_ibuf_324[Li_40 + 1] == EMPTY_VALUE) G_ibuf_324[Li_40 + 1] = G_ibuf_320[Li_40 + 1];
         G_ibuf_324[Li_40] = G_ibuf_320[Li_40];
      } else {
         if (G_ibuf_320[Li_40 + 1] > G_ibuf_320[Li_40]) {
            if (G_ibuf_328[Li_40 + 1] == EMPTY_VALUE) G_ibuf_328[Li_40 + 1] = G_ibuf_320[Li_40 + 1];
            G_ibuf_328[Li_40] = G_ibuf_320[Li_40];
         }
      }
      G_ibuf

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

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

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

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

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

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

Стоимость полного кода
1 545,10₽ ≈ $18.88