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