auto-trend-lines-channels-indicator@lifeindreamsworld.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «auto-trend-lines-channels-indicator@lifeindreamsworld.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный индикатор представляет собой многофреймный инструмент анализа ZigZag для платформы MetaTrader 5. Он обрабатывает данные ценовых баров по 9 настраиваемым уровням, каждое из которых может использовать отдельный таймфрейм. Основная задача — определение точек разворота цены ( swing high и swing low ) с заданной глубиной, отклонением и шагом возврата.
Индикатор отрисовывает линии ZigZag на графике через 8 буферов (4 пары «низ/верх» для разных уровней анализа). Пользователь может выбирать режим отображения: линии-зигзаг или стрелки-маркеры. Цвета и видимость каждого уровня настраиваются индивидуально.
Помимо ZigZag, индикатор может создавать на графике объекты Fibonacci Fan и Fibonacci Channel между найденными ключевыми точками. Параметры этих объектов (уровни, цвета, стили, ширина) настраиваются через соответствующие параметры. Дополнительно имеется параметр сортировки уровней анализа.
Настройки программы
| Настройка | Описание |
|---|---|
| ExtDepth | Глубина поиска разворотов для каждого из 9 уровней (задаётся через запятую). |
| ExtDeviation | Допустимое отклонение при построении ZigZag для каждого уровня (задаётся через запятую). |
| ExtBackstep | Количество баров для возврата при поиске разворотов каждого уровня (задаётся через запятую). |
| ExtMaxBar | Максимальное количество баров для анализа каждого уровня (задаётся через запятую). |
| GrossPeriod | Таймфреймы для каждого из 9 уровней анализа (задаётся через запятую в минутах: 1,5,15,30,60,240,1440,10080,43200). |
| zzVisible | Флаг видимости ZigZag для каждого из 9 уровней (1 — видим, 0 — скрыт). |
| zzColor | Цвета ZigZag-линий для каждого из 9 уровней (задаются через запятую). |
| extColor | Цвета для дополнительных элементов (3 значения через запятую). |
| fibofan | Переключатель отрисовки Fibonacci Fan на графике (TRUE — включено, FALSE — выключено). |
| fanVisible | Флаг видимости веера для каждого из 9 уровней (1 — видим, 0 — скрыт). |
| fanStyle | Стиль линий веера для каждого из 9 уровней (задаётся через запятую). |
| fanWidth | Ширина линий веера для каждого из 9 уровней (задаётся через запятую). |
| FiboFreeFan | Список уровней Фибоначчи для веера (задаётся через запятую, например: 0.382,0.618,0.786). |
| fiboChannel | Переключатель отрисовки Fibonacci Channel на графике (TRUE — включено, FALSE — выключено). |
| ChannelVisible | Флаг видимости каналов для каждого из 9 уровней (1 — видим, 0 — скрыт). |
| ChannelWidth | Ширина линий канала для каждого из 9 уровней (задаётся через запятую). |
| ChannelStyleLevel | Стиль линий уровней канала для каждого из 9 уровней (задаётся через запятую). |
| ChannelWidthLevel | Уровни ширины канала для каждого из 9 уровней (задаётся через запятую). |
| FiboFreeChannel | Список уровней Фибоначчи для канала (задаётся через запятую, например: -2,-1.1,-0.9,-0.1,0.1,1). |
| ExtProcedureOfPayments | Переключатель порядка сортировки уровней анализа: TRUE — по возрастанию, FALSE — по убыванию. |
| showZigZag | Режим отображения ZigZag: 0 — линии-зигзаг, 1 — стрелки (символ 116), 2 — стрелки (символ 159). |
| ExtReCalculate | Параметр пересчёта, определяющий количество дополнительных баров для пересчёта ZigZag. |
| ExtComplect | Целочисленный идентификатор сложности, используемый как префикс для именования объектов на графике. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 Black
#property indicator_color2 Black
#property indicator_color3 Black
#property indicator_color4 Black
#property indicator_color5 Black
#property indicator_color6 Black
#property indicator_color7 Black
#property indicator_color8 Black
extern string ExtDepth = "12,12,12,0,12,12,12,12,12";
extern string ExtDeviation = "5,5,5,0,5,5,5,5,5";
extern string ExtBackstep = "3,3,3,0,3,3,3,3,3";
extern string ExtMaxBar = "5000,1000,350,350,350,350,350,350,350,350";
extern string GrossPeriod = "1,5,15,30,60,240,1440,10080,43200";
extern string zzVisible = "1,1,1,1,1,1,1,1,1";
extern string zzColor = "Tan,RoyalBlue,Brown,Blue,Red,GreenYellow,Magenta,IndianRed,MediumGreen";
extern string extColor = "Indigo,Olive,Teal";
extern bool fibofan = FALSE;
extern string fanVisible = "1,1,1,1,1,1,1,1,1";
extern string fanStyle = "2,2,2,2,2,2,2,2,2";
extern string fanWidth = "0,0,0,0,0,0,0,0,0";
extern string FiboFreeFan = "0.382,0.618,0.786";
extern bool fiboChannel = TRUE;
extern string ChannelVisible = "1,1,1,1,1,1,1,1,1";
extern string ChannelWidth = "2,2,2,2,2,2,2,2,2";
extern string ChannelStyleLevel = "2,2,2,2,2,2,2,2,2";
extern string ChannelWidthLevel = "0,0,0,0,0,0,0,0,0";
extern string FiboFreeChannel = "-2,-1.1,-0.9,-0.1,0.1,1";
extern bool ExtProcedureOfPayments = FALSE;
extern int showZigZag = 1;
extern int ExtReCalculate = 3;
extern int ExtComplect = 0;
int gia_236[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int gia_240[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int gia_244[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int gia_248[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int gia_252[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int gia_256[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int gia_260[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int gia_264[] = {0, 0, 0};
int gia_268[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int gia_272[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int gia_276[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int gia_280[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int gia_284[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int gia_288[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int gia_292[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int gia_296[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
double g_ibuf_300[];
double g_ibuf_304[];
double g_ibuf_308[];
double g_ibuf_312[];
double g_ibuf_316[];
double g_ibuf_320[];
double g_ibuf_324[];
double g_ibuf_328[];
double gda_332[];
double gda_336[];
double gda_340[];
double gda_344[];
double gda_348[];
double gda_352[];
double gda_356[];
double gda_360[];
double gda_364[];
double gda_368[];
double gda_372[];
double gda_376[];
double gda_380[];
double gda_384[];
double gda_388[];
double gda_392[];
double gda_396[];
double gda_400[];
bool gba_404[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
bool gba_408[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int gia_412[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int gia_416[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
double gda_420[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
double gda_424[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int gia_428[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int gia_432[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int g_bars_436;
int gia_440[9][3];
int gi_444;
double gda_448[9][4];
int gia_452[9][4];
int gia_456[9][4];
int gi_460;
int gi_464;
int init() {
// код доступен только после оплаты
}
int deinit() {
_delete_fibo();
return (0);
}
int start() {
// код доступен только после оплаты
}
int _Gross(double ada_0[], double ada_4[], int ai_8, int ai_12) {
int li_16 = gia_440[ai_12][1];
if (gia_252[li_16] == 0) {
if (gia_440[ai_12][2] == 1) ZigZag_(g_ibuf_300, g_ibuf_304, li_16);
else {
if (gia_440[ai_12][2] == 2) ZigZag_(g_ibuf_308, g_ibuf_312, li_16);
else {
if (gia_440[ai_12][2] == 3) ZigZag_(g_ibuf_316, g_ibuf_320, li_16);
else {
if (gia_440[ai_12][2] == 4) ZigZag_(g_ibuf_324, g_ibuf_328, li_16);
else {
if (ai_8 == 2) Shift_elements(ada_0, ada_4);
ZigZag_(ada_0, ada_4, li_16);
}
}
}
}
} else {
if (ai_8 == 2) Shift_elements(ada_0, ada_4);
if (ZigZag_(ada_0, ada_4, li_16) == 0) {
if (gia_440[ai_12][2] == 1) ZigZagDT(g_ibuf_300, g_ibuf_304, ada_0, ada_4, li_16);
else {
if (gia_440[ai_12][2] == 2) ZigZagDT(g_ibuf_308, g_ibuf_312, ada_0, ada_4, li_16);
else {
if (gia_440[ai_12][2] == 3) ZigZagDT(g_ibuf_316, g_ibuf_320, ada_0, ada_4, li_16);
else
if (gia_440[ai_12][2] == 4) ZigZagDT(g_ibuf_324, g_ibuf_328, ada_0, ada_4, li_16);
}
}
}
}
return (0);
}
int ZigZag_(double &ada_0[], double &ada_4[], int ai_8) {
int l_lowest_12;
int l_shift_24;
int l_shift_28;
int li_32;
int li_40;
int li_52;
int li_56;
double ld_76;
double ld_84;
double ld_92;
double ld_100;
double ld_108;
double ld_124;
double ld_132;
double l_str2dbl_140;
string l_name_152;
string ls_160;
string ls_168;
string ls_176;
int li_44 = 0;
int li_68 = -1;
int li_72 = -1;
double ld_116 = gia_240[ai_8] * Point;
bool li_148 = FALSE;
if (gba_408[ai_8]) {
l_shift_24 = iBarShift(NULL, gia_252[ai_8], gia_412[ai_8], TRUE);
l_shift_28 = iBarShift(NULL, gia_252[ai_8], gia_416[ai_8], TRUE);
if (l_shift_24 < 0 || l_shift_28 < 0) {
gia_432[ai_8] = 0;
return (-1);
}
if (gia_412[ai_8] <= gia_416[ai_8]) gi_444 = l_shift_24;
else gi_444 = l_shift_28;
li_32 = gi_444 - 1;
ld_100 = iLow(NULL, gia_252[ai_8], l_shift_24);
ld_92 = iHigh(NULL, gia_252[ai_8], l_shift_28);
} else {
gba_408[ai_8] = 1;
l_shift_24 = gi_444;
l_shift_28 = gi_444;
li_32 = gi_444;
}
for (int li_60 = li_32; li_60 >= 0; li_60--) {
if (li_60 < l_shift_24) {
l_lowest_12 = iLowest(NULL, gia_252[ai_8], MODE_LOW, gia_236[ai_8], li_60);
ld_108 = iLow(NULL, gia_252[ai_8], l_lowest_12);
if (ld_108 == ld_100) ld_108 = 0.0;
else {
ld_100 = ld_108;
if (iLow(NULL, gia_252[ai_8], li_60) - ld_108 > ld_116) ld_108 = 0.0;
else {
for (int li_64 = 1; li_64 <= gia_244[ai_8]; li_64++)
if (ld_108 < ada_0[l_lowest_12 + li_64]) ada_0[l_lowest_12 + li_64] = 0.0;
}
}
if (l_lowest_12 == li_60) ada_0[l_lowest_12] = ld_108;
}
if (li_60 < l_shift_28) {
l_lowest_12 = iHighest(NULL, gia_252[ai_8], MODE_HIGH, gia_236[ai_8], li_60);
ld_108 = iHigh(NULL, gia_252[ai_8], l_lowest_12);
if (ld_108 == ld_92) ld_108 = 0.0;
else {
ld_92 = ld_108;
if (ld_108 - iHigh(NULL, gia_252[ai_8], li_60) > ld_116) ld_108 = 0.0;
else {
for (li_64 = 1; li_64 <= gia_244[ai_8]; li_64++)
if (ld_108 > ada_4[l_lowest_12 + li_64]) ada_4[l_lowest_12 + li_64] = 0.0;
}
}
if (l_lowest_12 == li_60) ada_4[l_lowest_12] = ld_108;
}
}
ld_92 = -1;
ld_100 = -1;
for (li_60 = gi_444; li_60 >= 0; li_60--) {
ld_76 = ada_0[li_60];
ld_84 = ada_4[li_60];
if (ld_76 == 0.0 && ld_84 == 0.0) continue;
if (ld_84 != 0.0) {
if (ld_92 > 0.0) {
if (ld_92 < ld_84) ada_4[li_68] = 0;
else ada_4[li_60] = 0;
}
if (ld_92 < ld_84 || ld_92 < 0.0) {
ld_92 = ld_84;
li_68 = li_60;
}
ld_100 = -1;
}
Показано первые 50% кода (символов: 25560)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.