Navigation:Home > Content >

ZUP_v67.mq4

Time: 2015-10-14 | Download file:ZUP_v67.mq4

//|----------------------------------------------------------------------|
//|ZigZag универсальный с паттернами Песавенто                           |
//|----------------------------------------------------------------------|
//|                                                                      |
//|               "Parameters for ZigZag"                                |
//|                                                                      |
//|----------------------------------------------------------------------|
//|ExtIndicator - выбор варианта индикатора, на основе которого          |
//|               строятся паттерны Песавенто                            |
//|           0 - Zigzag из метатрейдера, стандартный                    |
//|           1 - Zigzag Алекса,                                         |
//|           2 - индикатор подобный встроенному в Ensign                |
//|           3 - ZigZag Ensign с переменным значением minBars           |
//|           4 - ZigZag, разработал tauber                              |
//|           5 - вариация на тему свингов Ганна                         |
//|           6 - DT-ZigZag с внешним ZigZag_new_nen3.mq4                |
//|           7 - DT-ZigZag с внешним DT_ZZ.mq4 (разработал klot)        |
//|           8 - DT-ZigZag с внешним CZigZag.mq4 (разработал Candid)    |
//|          10 - DT-ZigZag с внешним Swing_zz - это ExtIndicator=5      |
//|               в режиме DT                                            |
//|          11 - включает поиск паттернов Gartley                       |
//|          12 - ZigZag, разработал Talex                               |
//|          13 - SQZZ зигзаг, разработал Товаровед                      |
//|                                                                      |
//|minBars - фильтр баровый (задается количество баров)                  |
//|minSize - фильтр по количеству пунктов (задается количество пунктов)  |
//|                                                                      |
//|ExtDeviation и ExtBackstep - параметры оставшиеся от ZigZag из MT4    |
//|                                                                      |
//|GrossPeriod - значение таймфрейма, выраженное в минутах (число минут),|
//| данные с которого берутся для построения ZigZag в режиме DT-ZigZag   |
//|                                                                      |
//|minPercent - процентный фильтр (задается процент, например 0.5)       |
//|             Если используются проценты - ставите число, а minSize=0; |
//|                                                                      |
//|ExtPoint=11 -   количество точек зигзага для зигзага Talex            |
//|                                                                      |
//|ExtStyleZZ - = true - задает стиль линий ZigZag через вкладку ЦВЕТА   |
//|             = false - Zigzag выводится точками у экстремумов         |
//|----------------------------------------------------------------------|
//|                                                                      |
//|               "Parameters for fibo Levels"                           |
//|                                                                      |
//|----------------------------------------------------------------------|
//|ExtFiboDinamic - разрешает вывод днамических уровней фибо.            |
//|                 Динамические уровни фибо выводятся на первом луче    |
//|                 ZigZag-a.                                            |
//|                                                                      |
//|ExtFiboStatic - разрешает вывод статических уровней фибо              |
//|                                                                      |
//|ExtFiboStaticNum - номер луча ZigZag-a, на котором будут выводиться   |
//|                   статические уровни Фибоначчи. 10.14 и <5.                    |
//|            2 - показывает только те  линии, где процент восстано-    |
//|                вления равен числам Песавенто (и 0.447, 0.886, 2.236, |
//|                3.14, 3,618 для построения паттернов Gartley)         |
//|            3 - показывает числа, перечисленные в пункте 2            |
//|                и соответствующие линии                               |
//|            4 - показывает числа не Песавенто и соответствующие линии |
//|            5 - скрывает всю оснастку. Остается только ZigZag         |
//|                                                                      |
//|ExtFractal - количество фракталов (максимумов, минимумов),            |
//|             от которых идут линии к другим фракталам                 |
//|                                                                      |
//|ExtFractalEnd - количество фракталов, к которым идут линии            |
//|                дальше этого фрактала соединяющих линий не будет      |
//|                Если ExtFractalEnd=0 то последний фрактал равен       |
//|                максимальному числу фракталов.                        |
//|                Минимальное значение ExtFractalEnd=1                  |
//|                                                                      |
//|ExtFiboChoice - выбор набора чисел чисел для построения паттернов     |
//|                Песавенто. Параметр задается числами от 0 до 11       |
//|                                                                      |
//|ExtFiboZigZag - разрешает вывод "ZiaZag Fibonacci"                    |
//|                                                                      |
//|ExtDelta - (допуск) отклонение в расчете. Задает величину             |
//|           потенциальной разворотной зоны.                            |
//|                  должно быть 0 0 (=1) выводятся динамические вилы Эндрюса от   |
//|             последних двух экстремумов ZigZag                        |
//|             =2 50% медиана                                           |
//|             =3 50% вилы                                              |
//|             =4 линии Шиффа                                           |
//|                                                                      |
//|ExtPitchforkStatic > 0 (=1) выводятся статические вилы Эндрюса от     |
//|             экстремума ZigZag с номером ExtPitchforkStaticNum        |
//|             =2 50% медиана                                           |
//|             =3 50% вилы                                              |
//|             =4 линии Шиффа                                           |
//|                                                                      |
//|32 и <=9 статические расширения Фибоначчи            |
//|                                                                      |
//|ExtFiboExpansionColor - задает цвет линий расширений Фибоначчи        |
//|                                                                      |
//|ExtExpansionStyle - устанавливает стиль линий уровней расширений      |
//|                    Фибоначчи                                         |
//|                                                                      |
//|ExtExpansionWidth - устанавливает толщину линий уровней расширений    |
//|                    Фибоначчи                                         |
//|----------------------------------------------------------------------|
//|                                                                      |
//|               "Parameters for versum Levels"                         |
//|                                                                      |
//|----------------------------------------------------------------------|
//|ExtVLDinamicColor - включае Versum Levels динамические выбором цвета  |
//|                                                                      |
//|ExtVLStaticColor - включает Versum Levels статические выбором цвета   |
//|                                                                      |
//|ExtVLStaticNum - задает номер вершины, от которой выводятся           |
//|                 Versum Levels                                        |
//|                                                                      |
//|ExtVLStyle - устанавливает стиль линий уровней Versum Levels          |
//|                                                                      |
//|ExtVLWidth - устанавливает толщину линий уровней Versum Levels        |
//|----------------------------------------------------------------------|
//|                                                                      |
//|               "Parameters for fibo Arc"                              |
//|                                                                      |
//|----------------------------------------------------------------------|
//|ExtArcDinamicNum - задает номер переломов ZigZag до которых           |
//|                   строятся динамические фибо дуги                    |
//|                                                                      |
//|ExtArcStaticNum - задает номер переломов ZigZag на которых            |
//|                   строятся статические фибо дуги                     |
//|                                                                      |
//|ExtArcDinamicColor - задает цвет динамических фибо дуг                |
//|                                                                      |
//|ExtArcStaticColor - задает цвет статических фибо дуг                  |
//|                                                                      |
//|ExtArcDinamicScale - задает масштаб динамических фибо дуг             |
//|          0 - автомасштаб; >0 - масштаб задается пользователем        |
//|                                                                      |
//|ExtArcStaticScale задает масштаб стамических фибо дуг                 |
//|          0 - автомасштаб; >0 - масштаб задается пользователем        |
//|                                                                      |
//|ExtArcStyle - устанавливает стиль линий уровней фибо дуг              |
//|                                                                      |
//|ExtArcWidth - устанавливает толщину линий уровней фибо дуг            |
//|----------------------------------------------------------------------|
//|                                                                      |
//|               "Golden Spiral"                                        |
//|                                                                      |
//|----------------------------------------------------------------------|
//|ExtSpiralNum - задает номер переломов ZigZag, на которых              |
//|               строится золотая спираль                               |
//|                                                                      |
//|goldenSpiralCycle - задает расстояние между витками. Чем больше число,|
//|                    тем меньше расстояние между витками спирали.      |
//|                                                                      |
//|accurity - задает длину отрезков прямых линий, которыми строится      |
//|           спираль                                                    |
//|                                                                      |
//|NumberOfLines задает количество отрезков прямых линий, из которых     |
//|              строится спираль                                        |
//|                                                                      |
//|clockWiseSpiral - задает направление закручивания спирали             |
//|                  true - спираль закручивается по часовой стрелке     |
//|                  false - спираль закручивается против часовой стрелки|
//|                                                                      |
//|spiralColor1 - задает первый цвет линии спирали                       |
//|                                                                      |
//|spiralColor2 - задает второй цвет линии спирали                       |
//|                                                                      |
//|ExtSpiralStyle - устанавливает стиль линии спирали                    |
//|                                                                      |
//|ExtSpiralWidth - устанавливает толщину линии спирали                  |
//|----------------------------------------------------------------------|
//|                                                                      |
//|               "Parameters Exp"                                       |
//|                                                                      |
//|----------------------------------------------------------------------|
//|chHL     = true     - выводит уровни подтверждения для режимов        |
//|                      ExtIdicator=1, ExtIdicator=2, ExtIdicator=3     |
//|                                                                      |
//|PeakDet  = true     - выводит уровни предыдущих максимумов для всех   |
//|                      режимов ExtIndicator                            |
//|                                                                      |
//|chHL_PeakDet_or_vts - true - По умолчанию разрешает вывод линий       |
//| подтверждения (ценовой канал) и уровни предыдущих максимумов ZigZag. |
//|  false - выводится индикатор i-vts.                                  |
//|                                                                      |
//|NumberOfBars - Количество баров обсчёта (0-все) для i-vts.            |
//|                                                                      |
//|NumberOfVTS - это, я так понимаю, параметр сглаживания для i-vts.     |
//|                                                                      |
//|NumberOfVTS1 - параметр сглаживания для второй копии i-vts.           |
//|----------------------------------------------------------------------|
//|                                                                      |
//|               "Common Parameters"                                    |
//|                                                                      |
//|----------------------------------------------------------------------|
//|ExtObjectColor - задает цвет линии, соединяющей базовые точки объектов|
//|                                                                      |
//|ExtObjectStyle - задает cтиль линии,                                  |
//|                                    соединяющей базовые точки объектов|
//|                                                                      |
//|ExtObjectWidth - задает толщину линии,                                |
//|                                    соединяющей базовые точки объектов|
//|                                                                      |
//|ZigZagHighLow - задает, от каких точек делать построение              |
//|                паттернов Песавенто, вил Эндрюса и т.д.               |
//|true - от экстремумов баров                                           |
//|false - от переломов ZigZag, когда они висят в "воздухе"              |
//|                                                                      |
//|ExtSendMail - отправка сообщения на email о появившемся паттерне.     |
//|                                                                      |
//|ExtAlert - разрешает вывод сообщения и звукового сигнала при          |
//|           возникновении нового луча ZigZag                           |
//|                                                                      |
//|ExtBack - задает вывод всех объектов в виде фона                      |
//|                                                                      |
//|ExtSave - разрешает сохранение комплекта статических вил и            |
//|          Fibo Time                                                   |
//|                                                                      |
//|infoTF - включает информацию по 5 старшим таймфреймам.                |
//|         Выводится наименование таймфрейма. Размер свечи в пунктах.   |
//|         Текущее положение цены относительно минимума.                |
//|         Также показывает Высоту луча зигзага выраженную в процентах. |
//|         Показывает названия паттернов Gartley и размер зоны          |
//|         возможного развития точки D для паттернов Gartley.           |
//|                                                                      |
//|ExtComplekt - задает номер индикатора. При выводе на график нескольких|
//|              индикаторов через этот параметр задается номер копии.   |
//|              При этом все копии индикатора будут работать корректно. |
//+----------------------------------------------------------------------+
#property copyright "nen"
#property link      "http://onix-trade.net/forum/index.php?s=&showtopic=118&view=findpost&p=220949"
// описание http://onix-trade.net/forum/index.php?s=&showtopic=373&view=findpost&p=72865

#property stacksize 16384
#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Magenta//Red 
//#property indicator_width1 2 
#property indicator_color2 Green
#property indicator_color3 Orange
#property indicator_color4 LightSkyBlue
#property indicator_color5 LemonChiffon
#property indicator_color6 Yellow
#import "user32.dll"
int GetClientRect(int hWnd,int lpRect[]);
#import

#define pi  3.14159265
#define phi 1.61803399

//===================================
//---- indicator parameters
extern string ________________0_____________ = "Parameters for ZigZag";
extern int    ExtIndicator  = 11;
extern int    minBars       = 8;
extern int    minSize       = 55;
// Переменные от ZigZag из МТ
extern int    ExtDeviation  = 5;
extern int    ExtBackstep   = 3;
// Переменная для nen-ZigZag
extern int    GrossPeriod   = 1440;
//----
extern double minPercent    = 0;
extern int    ExtPoint=11; // количество точек зигзага для зигзага Talex 
extern bool   ExtStyleZZ = true;
//----

extern string ________________1_____________ = "Parameters for fibo Levels";
extern bool   ExtFiboDinamic   = false;
extern bool   ExtFiboStatic    = false;
extern int    ExtFiboStaticNum = 2;
extern int    ExtFiboType      = 1;
extern string ExtFiboTypeFree  = "0,0.382,0.618,0.786,1,1.272,1.618";
extern bool   ExtFiboCorrectionExpansion = false;
extern color  ExtFiboD         = Sienna;
extern color  ExtFiboS         = Teal;
extern int    ExtFiboStyle     = 2;
extern int    ExtFiboWidth     = 0;
//-------------------------------------

extern string ________________2_____________ = "Parameters for Pesavento Patterns";
extern int    ExtPPWithBars = 0;
extern int    ExtHidden     = 1;
extern int    ExtFractal    = 7;
extern int    ExtFractalEnd = 7;
extern int    ExtFiboChoice = 2;
extern bool   ExtFiboZigZag = false;
extern double ExtDelta      = 0.04;
extern int    ExtDeltaType  = 2;
extern int    ExtSizeTxt    = 7;
extern color  ExtLine       = DarkBlue;
extern color  ExtLine886    = Purple;
extern color  ExtNotFibo    = SlateGray;
extern color  ExtPesavento  = Yellow;
extern color  ExtGartley886 = GreenYellow;
       color  colorPPattern;

// Паттерны Gartley
extern string ________________3_____________ = "Parameters for Gartley Patterns";
extern int    maxDepth                = 33;
extern int    minDepth                = 3;
extern bool   DirectionOfSearchMaxMin = true;
extern int    NumberPattern           = 1;  // Номер паттерна, по которому калибруется зигзаг и параметры которого выводятся через InfoTF
extern int    ExtGartleyTypeSearch    = 0;
extern int    ExtHiddenPP             = 1;
extern bool   ExtGartleyOnOff         = false;
//extern int    VarDisplay=0;
extern int    maxBarToD               = 15;
extern bool   RangeForPointD          = true;
extern color  ExtColorRangeForPointD  = Red;
extern color  ExtColorPatterns        = Blue;
extern string ExtColorPatternList     = "Blue,DarkGreen,Navy,Sienna,MediumBlue,RoyalBlue,DodgerBlue,CornflowerBlue,LightSkyBlue,SlateBlue,MediumSlateBlue,SlateGray,LightSteelBlue";
extern double ExtDeltaGartley         = 0.09;
extern double ExtCD                   = 0.886;

//----------------------------------------------------------------------
// Комплект инструментов, работающих совместно с вилами Эндрюса. Начало.
//----------------------------------------------------------------------
// Переменные для вил Эндрюса
extern string ________________4_____________ = "Parameters for Andrews Pitchfork";
extern int    ExtPitchforkDinamic     = 0;
extern int    ExtPitchforkStatic      = 0;
extern int    ExtPitchforkStaticNum   = 3;
extern color  ExtLinePitchforkD       = MediumSlateBlue;
extern color  ExtLinePitchforkS       = MediumBlue;
extern color  ExtPitchforkStaticColor = CLR_NONE;
extern int    ExtPitchforkStyle       = 1;
extern int    ExtPitchforkWidth       = 0;
// Переменные для фибовееров
extern bool   ExtFiboFanDinamic = false;  // может выводиться самостоятельно
extern bool   ExtFiboFanStatic  = false;  // выводится только совместно со статическими вилами
extern bool   ExtFiboFanExp     = true;
extern bool   ExtFiboFanHidden  = false;
extern color  ExtFiboFanD       = Sienna;
extern color  ExtFiboFanS       = Teal;

extern color  ExtFiboFanMedianaDinamicColor = CLR_NONE;
extern color  ExtFiboFanMedianaStaticColor  = CLR_NONE;

// Временные зоны Фибо
extern bool   ExtFiboTime1      = false;
extern bool   ExtFiboTime2      = false;
extern color  ExtFiboTime1C     = Teal;
extern color  ExtFiboTime2C     = Sienna;

// Pivot Zone
extern color  ExtPivotZoneDinamicColor = CLR_NONE;
extern color  ExtPivotZoneStaticColor  = CLR_NONE;
extern bool   ExtPivotZoneFramework    = false;

// Включение предупреждающих и контрольных линий
extern bool   ExtUTL = false;
extern bool   ExtLTL = false;
extern bool   ExtUWL = false;
extern bool   ExtLWL = false;
extern bool   ExtISLDinamic = false;
extern bool   ExtISLStatic  = false;

// Включение линий реакции
extern bool   ExtRL146     = false;
extern bool   ExtRLine     = true;
extern bool   ExtRLineBase = true;
//----------------------------------------------------------------------
//extern bool     ExtPitchforkCandle = false;
//extern bool     ExtPitchfork_1_HighLow = false;
//extern datetime ExtDateTimePitchfork_1 = D'11.07.2006 00:00';
//extern datetime ExtDateTimePitchfork_2 = D'19.07.2006 00:00';
//extern datetime ExtDateTimePitchfork_3 = D'09.08.2006 00:00';
//----------------------------------------------------------------------
// Ниже выбраны временные параметры для построения вил Эндрюса для всей истории eurusd для дневок
//----------------------------------------------------------------------
extern bool     ExtPitchforkCandle     = false;
extern datetime ExtDateTimePitchfork_1 = D'15.06.1989 00:00';
extern datetime ExtDateTimePitchfork_2 = D'08.03.1995 00:00';
extern datetime ExtDateTimePitchfork_3 = D'26.10.2000 00:00';
extern bool     ExtPitchfork_1_HighLow = false;
//----------------------------------------------------------------------

// Каналы micmed'a
extern string ________________5_____________ = "Parameters for micmed Channels";
extern int    ExtCM_0_1A_2B_Dinamic = 0, ExtCM_0_1A_2B_Static = 0;
extern double ExtCM_FiboDinamic = 0.618, ExtCM_FiboStatic = 0.618;
//----------------------------------------------------------------------
// Комплект инструментов, работающих совместно с вилами Эндрюса. Конец.
//----------------------------------------------------------------------

// Фибовееры дополнительные
extern string ________________6_____________ = "Parameters for fibo Fan";
extern color  ExtFiboFanColor = CLR_NONE;
extern int    ExtFiboFanNum   = 0;
extern int    ExtFanStyle     = 1;
extern int    ExtFanWidth     = 0;

// Расширения Фибоначчи
extern string ________________7_____________ = "Parameters for fibo Expansion";
extern int    ExtFiboExpansion      = 0;
extern color  ExtFiboExpansionColor = Yellow;
extern int    ExtExpansionStyle     = 2;
extern int    ExtExpansionWidth     = 0;
//--------------------------------------

extern string ________________8_____________ = "Parameters for versum Levels";
extern color  ExtVLDinamicColor = CLR_NONE;
extern color  ExtVLStaticColor  = CLR_NONE;
extern int    ExtVLStaticNum    = 0;
extern int    ExtVLStyle        = 0;
extern int    ExtVLWidth        = 0;
//--------------------------------------

extern string ________________9_____________ = "Parameters for fibo Arc";
extern int    ExtArcDinamicNum   = 0;
extern int    ExtArcStaticNum    = 0;
extern color  ExtArcDinamicColor = Sienna;
extern color  ExtArcStaticColor  = Teal;
extern double ExtArcDinamicScale = 0;
extern double ExtArcStaticScale  = 0;
extern int    ExtArcStyle        = 0;
extern int    ExtArcWidth        = 0;

extern string ________________10_____________ ="Golden Spiral";
extern int    ExtSpiralNum       = 0;
extern double goldenSpiralCycle  = 1;
extern double accurity           = 0.2;
extern int    NumberOfLines      = 200;
extern bool   clockWiseSpiral    = true;
extern color  spiralColor1       = Blue;
extern color  spiralColor2       = Red;
extern int    ExtSpiralStyle     = 0;
extern int    ExtSpiralWidth     = 0; 

extern string ________________11_____________ = "Parameters Exp";
extern bool   chHL    = false;
extern bool   PeakDet = false;
// Переменные для i-vts
extern bool   chHL_PeakDet_or_vts = true;
extern int    NumberOfBars = 1000;     // Количество баров обсчёта (0-все)
extern int    NumberOfVTS  = 13;
extern int    NumberOfVTS1 = 1;

extern string ________________12_____________ = "Common Parameters";
//--------------------------------------
extern color  ExtObjectColor = CLR_NONE;
extern int    ExtObjectStyle = 1;
extern int    ExtObjectWidth = 0; 
extern bool   ZigZagHighLow  = true;
// --------------------------------
// Дополнительные финкции
extern bool   ExtSendMail = false;
extern bool   ExtAlert    = false;
// Вывод объектов в виде фона
extern bool   ExtBack     = true;
// Сохранение статических вил Эндрюса, Fibo Time и т.д.
extern bool   ExtSave     = false;
extern bool   infoTF      = false;
extern int    ExtComplekt = 0;
//===================================

// Массивы для ZigZag 
// Массив для отрисовки ZigZag
double zz[];
// Массив минимумов ZigZag
double zzL[];
// Массив максимумов ZigZag
double zzH[];
// Массивы для nen-ZigZag
double nen_ZigZag[];
// Массив для оптимизированного ZigZag
//double TempBuffer[1],ZigZagBuffer[1];
// Переменные для оснастки
// Массив чисел Песавенто (Фибы и модифицированные Фибы)
//double fi[]={0.146, 0.236, 0.382, 0.447, 0.5, 0.618, 0.707, 0.786, 0.841, 0.886, 1.0, 1.128, 1.272, 1.414, 1.5, 1.618, 1.732, 1.902, 2.0, 2.236, 2.414, 2.618, 3.14, 3.618, 4.0};
//string fitxt[]={"0.146", "0.236", ".382", ".447", ".5", ".618", ".707", ".786", ".841", ".886", "1.0", "1.128", "1.272", "1.414", "1.5", "1.618", "1.732", "1.902", "2.0", "2.236", "2.414", "2.618", "3.14", "3.618", "4.0"};
//double fi1[]={0.146, 0.236, 0.382, 0.5, 0.618, 0.764, 0.854, 1.0, 1.236, 1.618};
//string fitxt1[]={"0.146", "0.236", ".382", ".5", ".618", ".764", ".854", "1.0", "1.236", "1.618"};
// Массив чисел, заданных пользователем
double fi[];
string fitxt[];
string fitxt100[];
int    Sizefi=0,Sizefi_1=0;

color ExtLine_;

double number[64];
string numbertxt[64];
int    numberFibo[64];
int    numberPesavento[64];
int    numberGartley[64];
int    numberMix[64];
int    numberGilmorQuality[64];
int    numberGilmorGeometric[64];
int    numberGilmorHarmonic[64];
int    numberGilmorArithmetic[64];
int    numberGilmorGoldenMean[64];
int    numberSquare[64];
int    numberCube[64];
int    numberRectangle[64];
int    numberExt[64];

string nameObj,nameObjtxt,save;
// 
bool descript_b=false;
// PPWithBars - текст, выводимый у соединительной линии
// descript - описание объектов
string PPWithBars, descript;
// Матрица для поиска исчезнувших баров afr - массив значений времени пяти последних фракталов и отрисовки динамических и статических фиб
// afrl - минимумы, afrh - максимумы
int afr[]={0,0,0,0,0,0,0,0,0,0};
double afrl[]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}, afrh[]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}, afrx[]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0};
// Параметры таймфрймов
double openTF[]={0.0,0.0,0.0,0.0,0.0}, closeTF[]={0.0,0.0,0.0,0.0,0.0}, lowTF[]={0.0,0.0,0.0,0.0,0.0}, highTF[]={0.0,0.0,0.0,0.0,0.0};
double close_TF=0;
string TF[]={"MN","W1","D1","H4","H1","m30","m15","m5","m1"};
string Period_tf;
bool afrm=true;
double ExtHL;
double HL,HLp,kk,kj,Angle;
// LowPrim,HighPrim,LowLast,HighLast - значения минимумов и максимумов баров
double LowPrim,HighPrim,LowLast,HighLast;
// numLowPrim,numHighPrim,numLowLast,numHighLast -номера баров
int numLowPrim,numHighPrim,numLowLast,numHighLast,k,k1,k2,ki,kiPRZ=0,countLow1,countHigh1,shift,shift1;
string txtkk;
// Время свечи с первым от нулевого бара фракталом
int timeFr1new;
// Счетчик фракталов
int countFr;
// Бар, до которого надо рисовать соединительные линии от нулевого бара
int countBarEnd=0,TimeBarEnd;
// Бар, до которого надо пересчитывать от нулевого бара
int numBar=0;
// Номер объекта
int numOb;
// flagFrNew=true - образовался новый фрактал или первый фрактал сместился на другой бар. =false - по умолчанию.
bool flagFrNew=false;
// flagGartle - появление нового паттерна Gartley или исчезновение паттерна Gartley
bool flagGartle=false;
// Период текущего графика
int perTF;
bool Demo;

double int_to_d=0, int_to_d1=0, int_to_d2=0;

int counted_bars, cbi, iBar;

// средний размер бара текущего таймфрейма
// The average size of a bar
double ASBar;

// Переменные для ZigZag Алекса и индикатора подобного встроенному в Ensign
double ha[],la[],hi,li,si,sip,di,hm,lm,ham[],lam[],him,lim,lLast=0,hLast=0;
int fs=0,fsp,countBar;
int ai,bi,ai0,bi0;
datetime tai,tbi,ti;
// fcount0 - при обнулении счетчика пропущенных баров на 0 баре fcount0=true.
// На следующем баре =false и можно определять точку перелома
bool fh=false,fl=false,fcount0,PeakDetIni;

// Переменные для Свингов Ганна
double lLast_m=0, hLast_m=0;
int countBarExt; // счетчик внешних баров
int countBarl,countBarh;

// Переменные для nen-ZigZag
bool hi_nen;
bool init_zz=true;

// Переменные для расширенного режима работы индикатора
int mFibo[]={0,0}, mPitch[]={0,0,0}, mFan[]={0,0}, mExpansion[]={0,0,0}, mVL[]={0,0,0}, mArcS[]={0,0}, mArcD[]={0,0}, mSpiral[]={0,0};
// Переменные для построения вил Эндрюса по свечам
int mPitchTime[]={0,0,0};
int mPitchTimeSave;
double mPitchCena[]={0.0,0.0,0.0};

// переменные для vts
double ms[2];
// Переменные для паттернов Gartley
string   vBullBear    = ""; // переменная для обозначения бычий или медвежий паттерн
string   vNamePattern = ""; // переменная для обозначения наименования паттерна
string   vBullBearToNumberPattern = "";
string   vNamePatternToNumberPattern = "";
int      maxPeak, vPatOnOff, vPatNew=0;
double   hBar, lBar;
datetime tiZZ; 
bool     FlagForD  = true;  // Разрешение на поиск момента образования точки D паттерна (Gartley)
datetime TimeForDmin  = 0, TimeForDminToNumberPattern;
datetime TimeForDmax  = 0, TimeForDmaxToNumberPattern;
double   LevelForDmin = 0, LevelForDminToNumberPattern;
double   LevelForDmax = 0, LevelForDmaxToNumberPattern;
double   PeakCenaX[1],PeakCenaA[1],PeakCenaB[1],PeakCenaC[1],PeakCenaD[1];
datetime PeakTimeX[1],PeakTimeA[1],PeakTimeB[1],PeakTimeC[1],PeakTimeD[1];
int      countGartley = 0;      // Счетчик паттернов
int      minBarsToNumberPattern; 
color    ColorList[];
int      ColorSize=0;
int      countColor   = 0;
bool     flagExtGartleyTypeSearch2=false;
int minBarsSave, minBarsX;

// Переменные для зигзага Talex
static int    endbar = 0;
static double endpr  = 0;

static int GPixels,VPixels;
int rect[4],hwnd;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string aa,aa1;
   int aa2, i;

   hwnd=WindowHandle(Symbol(),Period());
   if(hwnd>0)
   {
     GetClientRect(hwnd,rect);
     GPixels=rect[2]; // здесь функция возвращает кол-во пикселов по горизонтали
     VPixels=rect[3]; // здесь функция возвращает кол-во пикселов по вертикали
   }

   minBarsSave=minBars;

   IndicatorBuffers(8);

// -------
// Gartley Patterns

   if (ExtGartleyTypeSearch<0) ExtGartleyTypeSearch=0;
   if (ExtGartleyTypeSearch>2) ExtGartleyTypeSearch=2;

   if (ExtHiddenPP<0) ExtHiddenPP=0;
   if (ExtHiddenPP>2) ExtHiddenPP=2;

   if (NumberPattern<1) NumberPattern=1;

   if (ExtGartleyTypeSearch>0) // Подготовка списка значений цвета для бабочек Gartley, заданных пользователем
     {

//---------
      if (maxBarToD==0) maxBarToD=Bars-15;
      if (ExtHiddenPP==0 || ExtHiddenPP==2) {ExtHidden=0; ExtStyleZZ=false;}
//---------

      i=-1;
      aa2=0;
      while (aa2>=0)
        {
         aa2=StringFind(ExtColorPatternList, ",",i+1);
         if (aa2>=0)
           {i=aa2;ColorSize++;}
         else
           {
            if (StringLen(ExtColorPatternList)-i>0)
              {
               if (StrToDouble(StringSubstr(ExtColorPatternList,i+1))>0) ColorSize++;
               ArrayResize(ColorList,ColorSize);
               aa1=ExtColorPatternList;
               for (i=0;i=0) aa1=StringSubstr(aa1,aa2+1);
                 }
               aa2=-1;
              }
           }
        }
     }

// -------

   if (ExtStyleZZ) {SetIndexStyle(0,DRAW_SECTION);}
   else {SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,158);}
   SetIndexLabel(0,"ZUP"+ExtComplekt+" (zz"+ExtIndicator+")");
   if (ExtIndicator==6) SetIndexLabel(5,"ZUP"+ExtComplekt+" DT6_"+minBars+"/"+ExtDeviation+"/"+ExtBackstep+"/GP"+GrossPeriod+"");
   else if (ExtIndicator==7) SetIndexLabel(5,"ZUP"+ExtComplekt+" DT7_"+minBars+"/GP"+GrossPeriod+"");
   else if (ExtIndicator==8) SetIndexLabel(5,"ZUP"+ExtComplekt+" DT8_"+minBars+"/"+ExtDeviation+"/GP"+GrossPeriod+"");
   if (chHL_PeakDet_or_vts)
     {
      PeakDetIni=true;
      SetIndexLabel(1,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" H_PeakDet");
      SetIndexLabel(2,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" L_PeakDet");
      SetIndexLabel(3,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" H_chHL");
      SetIndexLabel(4,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" L_chHL");
     }
   else
     {
      SetIndexLabel(1,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" H_vts");
      SetIndexLabel(2,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" L_vts");
      SetIndexLabel(3,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" H_vts1");
      SetIndexLabel(4,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" L_vts1");
     }

   SetIndexBuffer(0,zz);
   SetIndexBuffer(5,nen_ZigZag);
   SetIndexBuffer(6,zzL);
   SetIndexBuffer(7,zzH);

   SetIndexStyle(5,DRAW_ARROW);
   SetIndexArrow(5,159);
// Уровни предыдущих пиков
   SetIndexStyle(1,DRAW_LINE,STYLE_DOT);
   SetIndexStyle(2,DRAW_LINE,STYLE_DOT); 
   SetIndexBuffer(1,ham);
   SetIndexBuffer(2,lam);
// Уровни подтверждения
   SetIndexStyle(3,DRAW_LINE,STYLE_DOT);
   SetIndexStyle(4,DRAW_LINE,STYLE_DOT);
   SetIndexBuffer(3,ha);
   SetIndexBuffer(4,la);

   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   SetIndexEmptyValue(2,0.0);
   SetIndexEmptyValue(3,0.0);
   SetIndexEmptyValue(4,0.0);
   SetIndexEmptyValue(5,0.0);
   SetIndexEmptyValue(6,0.0);
   SetIndexEmptyValue(7,0.0);

   if (ExtIndicator<6 || ExtIndicator>10)
     {
      switch (Period())
        {
         case 1     : {Period_tf=TF[8];break;}
         case 5     : {Period_tf=TF[7];break;}
         case 15    : {Period_tf=TF[6];break;}
         case 30    : {Period_tf=TF[5];break;}
         case 60    : {Period_tf=TF[4];break;}
         case 240   : {Period_tf=TF[3];break;}
         case 1440  : {Period_tf=TF[2];break;}
         case 10080 : {Period_tf=TF[1];break;}
         case 43200 : {Period_tf=TF[0];break;}
        }
     }
   else
      switch (GrossPeriod)
        {
         case 1     : {Period_tf=TF[8];break;}
         case 5     : {Period_tf=TF[7];break;}
         case 15    : {Period_tf=TF[6];break;}
         case 30    : {Period_tf=TF[5];break;}
         case 60    : {Period_tf=TF[4];break;}
         case 240   : {Period_t        

Recommend