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

ZUP v1.35

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

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

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

О программе

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

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

НастройкаОписание
______________3_____________ Заголовок раздела — Текстовый разделитель 'Parameters for Gartley Patterns'
?????????? cypher ? ? cypher, ABCD - ???????? ??? ????????? ?? grandaevus ( http://www.forex-tsd.com (maxDepth) Максимальная глубина — Максимальная глубина поиска паттернов в барах
?? ??????????? ???????? - ??? ?????? 7 (ExtColorPatterns) Цвет паттернов — Цвет отрисовки найденных паттернов
AlgorithmSearchPatterns Алгоритм поиска паттернов — Выбор алгоритма расчёта ZigZag для поиска паттернов
SelectPattern Выбор паттерна — Режим отображения конкретных паттернов или их групп
PotencialsLevels_retXD Возврат потенциальных уровней XD — Управление возвратом рассчитанных потенциальных уровней
visibleLevelsABCD Видимые уровни ABCD — Отображение дополнительных уровней ABCD на графике
PotencialsLevelsNum Количество потенциальных уровней — Число отображаемых потенциальных уровней
minDepth Минимальная глубина — Минимальная глубина ZigZag в барах
false; (FiboStep) Шаг Фибоначчи — Включение/отключение корректировки шага Фибоначчи
IterationStepDepth Шаг итерации глубины — Шаг изменения глубины при итеративном поиске
maxSize_ Максимальный размер — Максимальный размер ценового диапазона для поиска
minSize_ Минимальный размер — Минимальный размер ценового диапазона для поиска
IterationStepSize Шаг итерации размера — Шаг изменения размера при итеративном поиске
maxPercent_ Максимальный процент — Максимальный процент отклонения для поиска
minPercent_ Минимальный процент — Минимальный процент отклонения для поиска
IterationStepPercent Шаг итерации процента — Шаг изменения процента при итеративном поиске
DirectionOfSearchMaxMin Направление поиска — Направление поиска: от максимума к минимуму или наоборот
visiblePattern Видимый паттерн — Строка видимости конкретных паттернов
????? ????????, ?? ???????? ??????????? ?????? ? ????????? ???????? ????????? ????? InfoTF (NumberPattern) Номер паттерна — Номер отображаемого паттерна в информационном окне
ExtGartleyTypeSearch Тип поиска Гартли — Тип поиска паттернов Гартли
ExtHiddenPP Скрытые PP — Режим отображения скрытых паттернов
ExtGartleyOnOff Включение Гартли — Включение/отключение поиска паттернов Гартли
maxBarToD Максимальный бар до D — Максимальное количество баров до точки D
2; (patternInfluence) Влияние паттерна — Степень влияния найденного паттерна на отрисовку
patternTrue Истинный паттерн — Флаг строгой проверки паттерна
AllowedBandPatternInfluence Допустимое влияние паттерна — Допустимый диапазон влияния паттерна
0; // (RangeForPointD) Диапазон для точки D — Диапазон допустимого отклонения для точки D
VectorOfAMirrorTrend Вектор зеркального тренда A — Отображение вектора зеркального тренда
ExtColorRangeForPointD Цвет диапазона точки D — Цвет линии диапазона для точки D
Aqua; (ExtLineForPointD_AB) Линия для точки D AB — Цвет линии AB для точки D
Gold; (ExtLineForPointD_BC) Линия для точки D BC — Цвет линии BC для точки D
ExtColorPatternList Список цветов паттернов — Список цветов для отрисовки паттернов
ExtDeltaGartley Дельта Гартли — Допустимая дельта для паттернов Гартли
ExtDeltaStrongGartley Сильная дельта Гартли — Допустимая сильная дельта для паттернов Гартли
varStrongPatterns Переменные сильные паттерны — Режим отображения сильных паттернов
levelD Уровень D — Уровень отображения точки D
colorLevelD Цвет уровня D — Цвет линии уровня D
Equilibrium Равновесие — Включение отображения линий равновесия
ReactionType Тип реакции — Тип реакции для линий равновесия
EquilibriumStyle Стиль равновесия — Стиль отображения линий равновесия
EquilibriumWidth Ширина равновесия — Ширина линий равновесия
ColorEquilibrium Цвет равновесия — Цвет линий равновесия
Yellow; (ColorReaction) Цвет реакции — Цвет линий реакции
Dragon Дракон — Включение поиска паттерна Дракон
PeakZZDragon Пик ZZ Дракон — Количество баров для пика ZigZag Дракон
Ext_4PointPattern 4-точечный паттерн — Включение 4-точечного паттерна продолжения
_maxXB Максимум XB — Максимальное значение отношения XB
_50 5-0 паттерн — Включение паттерна 5-0
ABCD ABCD паттерн — Включение поиска паттерна ABCD
visibleABCDrayZZ Видимый луч ABCD ZZ — Отображение лучей ABCD на ZigZag
ExtDevABCDLeg Отклонение ABCD нога — Допустимое отклонение для ног ABCD
ExtDevABCDFib Отклонение ABCD Фибоначчи — Допустимое отклонение для Фибоначчи ABCD
ABCDrayZZStyle Стиль луча ABCD ZZ — Стиль отображения лучей ABCD
ABCDrayZZWidth Ширина луча ABCD ZZ — Ширина линий лучей ABCD
ABCDAlternate Альтернативный ABCD — Альтернативные уровни ABCD
0 - ?? ????????? ???????????????? ??????? (CustomPattern) Пользовательский паттерн — Режим пользовательского паттерна (0-выкл, 1-Гартли, 2-пользовательский)
0.382; //0.5; (minXB) Минимум XB — Минимальное значение отношения XB
0.942; //0.618; (maxXB) Максимум XB — Максимальное значение отношения XB
0.447; //0.382; (minAC) Минимум AC — Минимальное значение отношения AC
0.942; //0.618; (maxAC) Максимум AC — Максимальное значение отношения AC
1.144; //1.128; (minBD) Минимум BD — Минимальное значение отношения BD
2.128; //1.272; (maxBD) Максимум BD — Максимальное значение отношения BD
0.5; //0.618; (minXD) Минимум XD — Минимальное значение отношения XD
0.942; //0.886; (maxXD) Максимум XD — Максимальное значение отношения XD
filtrEquilibrium Фильтр равновесия — Включение фильтрации по равновесию
______________0_____________ Заголовок раздела ZigZag — Текстовый разделитель 'Parameters for ZigZag'
ExtIndicator Внешний индикатор — Тип используемого индикатора ZigZag
ParametresZZforDMLEWA Параметры ZZ для DMLEWA — Набор параметров для алгоритма DMLEWA
minBars Минимальные бары — Минимальное количество баров для ZigZag
minSize Минимальный размер — Минимальный размер ценового сегмента
ExtDeviation Внешнее отклонение — Внешнее отклонение для расчёта
ExtBackstep Внешний шаг назад — Количество баров отката для ZigZag
noBackstep Без шага назад — Отключение отката при построении ZigZag
GrossPeriod Основной период — Основной таймфрейм для расчётов
0.08 (minPercent) Минимальный процент — Минимальный процент изменения цены
?????????? ????? ??????? ??? ??????? Talex (ExtPoint) Внешняя точка — Внешняя точка для расчёта Талекс
StLevel Уровень St — Уровень St для алгоритма wellx
BigLevel Большой уровень — Большой уровень для алгоритма wellx
auto Авто — Автоматический расчёт уровней St и Big
minBar Минимальный бар — Минимальный процент бара для StLevel
ExtStyleZZ Стиль ZZ — Стиль отображения ZigZag
?????????? ????? ??????? (0-???) (ExtMaxBar) Максимальный бар — Максимальный бар для расчёта ZigZag
ExtMinBar Минимальный бар — Минимальный бар для расчёта ZigZag
ExtNumberPeak Число пиков — Отображение номеров пиков ZigZag
ExtNumberPeak10 Число пиков 10 — Отображение 10 последних пиков
ExtNumberPeakLow Низкие пики — Отображение низких пиков ZigZag
ExtNumberPeakColor Цвет пиков — Цвет номеров пиков
ExtNumberPeakFontSize Размер шрифта пиков — Размер шрифта номеров пиков
______________1_____________ Заголовок раздела Фибоначчи — Текстовый разделитель 'Parameters for fibo Levels'
ExtFiboDinamic Фибоначчи динамические — Включение динамических уровней Фибоначчи
ExtFiboStatic Фибоначчи статические — Включение статических уровней Фибоначчи
ExtFiboStaticNum Номер статических Фибоначчи — Номер статического уровня Фибоначчи
ExtFiboCorrectionExpansion Коррекция расширения Фибоначчи — Включение коррекции расширения Фибоначчи
ExtFiboD Цвет Фибоначчи D — Цвет уровня Фибоначчи D
ExtFiboS Цвет Фибоначчи S — Цвет уровня Фибоначчи S
ExtFiboStyle Стиль Фибоначчи — Стиль отображения уровней Фибоначчи
ExtFiboWidth Ширина Фибоначчи — Ширина линий уровней Фибоначчи
______________2_____________ Заголовок раздела Песавенто — Текстовый разделитель 'Parameters for Pesavento Patterns'
ExtPPWithBars PP с барами — Отображение паттернов Песавенто с указанием баров
Получить полный код

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

#property stacksize 65535
#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Magenta //Red 

#property indicator_color2 Green
#property indicator_color3 Orange
#property indicator_color4 LightSkyBlue
#property indicator_color5 LemonChiffon

#property indicator_color6 Magenta //Yellow
#import "user32.dll"
   int GetClientRect(int hWnd,int lpRect[]);
#import

#define pi  3.14159265
#define phi 1.6180339887

extern string ______________3_____________ = "Parameters for Gartley Patterns";

extern int    maxDepth                = 15;          // ?????????? cypher  ? ? cypher, ABCD - ???????? ??? ????????? ?? grandaevus (  )   
extern color  ExtColorPatterns        = DarkOrange; // ?? ??????????? ???????? -  ??? ?????? 7 
extern int    AlgorithmSearchPatterns = 0;
extern int    SelectPattern           = 0;
extern int    PotencialsLevels_retXD  = 1;
extern int    visibleLevelsABCD       = 3;
extern int    PotencialsLevelsNum     = 5;

extern int    minDepth                = 3;
extern bool   FiboStep                = true; //false;
extern int    IterationStepDepth      = 2;

extern int    maxSize_                = 150;
extern int    minSize_                = 15;
extern int    IterationStepSize       = 3;

extern double maxPercent_             = 10.0;
extern double minPercent_             = 0.4;
extern double IterationStepPercent    = 15;

extern bool   DirectionOfSearchMaxMin = true;
extern string visiblePattern          = "000000000000000000000000000";
extern int    NumberPattern           = 1;  // ????? ????????, ?? ???????? ??????????? ?????? ? ????????? ???????? ????????? ????? InfoTF
extern int    ExtGartleyTypeSearch    = 0;
extern int    ExtHiddenPP             = 1;
extern bool   ExtGartleyOnOff         = false;

extern int    maxBarToD               = 15;
extern int    patternInfluence        = 1; //2;
extern bool   patternTrue             = true;
extern double AllowedBandPatternInfluence = 1.618;
extern int    RangeForPointD          = 2; // 0; //
extern int    VectorOfAMirrorTrend    = 1;
extern color  ExtColorRangeForPointD  = Red;
extern color  ExtLineForPointD_AB     = MediumBlue; //Aqua;
extern color  ExtLineForPointD_BC     = Chocolate;  //Gold;
extern string ExtColorPatternList     = "Blue,DarkGreen,Navy,Sienna,MediumBlue,RoyalBlue,DodgerBlue,CornflowerBlue,LightSkyBlue,SlateBlue,MediumSlateBlue,SlateGray,LightSteelBlue";
extern double ExtDeltaGartley         = 0.09;
extern double ExtDeltaStrongGartley   = 0.07;
extern int    varStrongPatterns       = 1;
extern int    levelD                  = 1;
extern color  colorLevelD             = Red;

extern bool   Equilibrium             = false;
extern bool   ReactionType            = false;
extern int    EquilibriumStyle        = 1;
extern int    EquilibriumWidth        = 0;
extern color  ColorEquilibrium        = Red;
extern color  ColorReaction           = Tomato; //Yellow;

extern bool   Dragon                  = true;
extern int    PeakZZDragon            = 5;

extern bool   Ext_4PointPattern       = true;
extern double _maxXB                  = 0.618;

extern bool   _50                     = true;

extern bool ABCD = true;
extern bool visibleABCDrayZZ = true;
extern double ExtDevABCDLeg = 0.07;
extern double ExtDevABCDFib = 0.05;
extern int ABCDrayZZStyle = 0;
extern int ABCDrayZZWidth = 4;
extern string ABCDAlternate = "0.382,0.5,0.618,0.786,0.886,1.272,1.618,2.0,2.618 ";

extern int    CustomPattern           = 0; // 0 - ?? ????????? ???????????????? ??????? 

extern double minXB                   = 0.67; // 0.382;  //0.5;
extern double maxXB                   = 0.67; // 0.942;  //0.618;
extern double minAC                   = 0.618; // 0.447;  //0.382;
extern double maxAC                   = 0.618; // 0.942;  //0.618;
extern double minBD                   = 2.46; // 1.144;  //1.128;
extern double maxBD                   = 2.46; // 2.128;  //1.272;
extern double minXD                   = 1.272; // 0.5;    //0.618;
extern double maxXD                   = 1.272; // 0.942;  //0.886;

extern bool   filtrEquilibrium        = true;

extern string ______________0_____________ = "Parameters for ZigZag";
extern int    ExtIndicator            = 11; 
extern int    ParametresZZforDMLEWA   = 6;
extern int    minBars                 = 8;
extern int    minSize                 = 50;

extern int    ExtDeviation            = 5;
extern int    ExtBackstep             = 3;
extern bool   noBackstep              = true;

extern int    GrossPeriod             = 240;

extern double minPercent              = 0.0;      // 0.08
extern int    ExtPoint=11; // ?????????? ????? ??????? ??? ??????? Talex 

extern int    StLevel                 = 28;
extern int    BigLevel                = 32; 
extern bool   auto                    = true;
extern double minBar=38.2, maxBar=61.8;

extern bool   ExtStyleZZ              = true;

extern int    ExtMaxBar               = 1400;     // ?????????? ????? ??????? (0-???)
extern int    ExtMinBar               = 0;

extern bool   ExtNumberPeak           = false;
extern bool   ExtNumberPeak10         = true;
extern bool   ExtNumberPeakLow        = true;
extern color  ExtNumberPeakColor      = Red;
extern int    ExtNumberPeakFontSize   = 11;

extern string ______________1_____________ = "Parameters for fibo Levels";
extern bool   ExtFiboDinamic          = false;
extern bool   ExtFiboStatic           = false;
extern int    ExtFiboStaticNum        = 2;
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              = 9;
extern color  ExtLine                 = DarkBlue;
extern color  ExtLine886              = Purple;
extern color  ExtNotFibo              = Black;
extern color  ExtPesavento            = Black; // Yellow; ????? ??? ?????? ????. ????? ????? ??? ??????? ???? 
extern color  ExtGartley886           = Black; // GreenYellow;
       color  colorPPattern;

extern string ______________4_____________ = "Parameters for Andrews Pitchfork";
extern int    ExtPitchforkDinamic       = 0;
extern bool   AutoAPDinamicTestRedZone = true;
extern double ExtPitchforkDinamicCustom = 0;
extern color  ExtLinePitchforkD         = DarkOrange; //MediumSlateBlue;
extern int    ExtPitchforkStatic        = 0;
extern int    ExtPitchforkStaticNum     = 3;
extern double ExtPitchforkStaticCustom  = 0;
extern color  ExtLinePitchforkS         = MediumBlue; // DarkKhaki; //
extern int    ExtMasterPitchfork        = 0;
extern color  ExtPitchforkStaticColor   = CLR_NONE;
extern int    ExtPitchforkStyle         = 1;
extern int    ExtPitchforkWidth         = 0;

extern bool   ExtRLDinamic              = true;
extern int    ExtRLStyleDinamic         = 1;
extern bool   ExtVisibleRLDinamic       = true;
extern bool   ExtRLStatic               = true; // false; //
extern int    ExtRLStyleStatic          = 1;
extern bool   ExtVisibleRLStatic        = true;
extern bool   ExtRL146                  = true;
extern bool   ExtRLineBase              = true;

extern int    ExtRedZoneDinamic         = 2;
extern int    ExtRedZoneStatic          = 2;
extern double ExtRZDinamicValue         = 0;
extern double ExtRZStaticValue          = 0;
extern color  ExtRZDinamicColor         = Salmon;
extern color  ExtRZStaticColor          = Salmon;

extern bool   ExtISLDinamic             = true; // false; //
extern int    ExtISLStyleDinamic        = 1;
extern bool   ExtVisibleISLDinamic      = true;
extern bool   ExtISLStatic              = true; // false;
extern int    ExtISLStyleStatic         = 1;
extern bool   ExtVisibleISLStatic       = true;
extern int    ExtISLWidth               = 0;

extern color  ExtISLChannelDinamicColor = Turquoise; // CLR_NONE;
extern color  ExtISLChannelStaticColor  = Aqua; // DarkSlateGray; // CLR_NONE; //

extern bool   ExtSLMDinamic         = true; //false;
extern color  ExtSLMDinamicColor    = DarkOrange; //MediumSlateBlue;
extern bool   ExtSLMStatic          = true; // false; //
extern color  ExtSLMStaticColor     = MediumBlue; // DarkKhaki; //
extern bool   ExtFSLShiffLinesDinamic      = true; //false; // ????? ????? FSL ????? ????? ??? ???????????? ??? ???????
extern color  ExtFSLShiffLinesDinamicColor = DarkOrange; //MediumSlateBlue; // MediumBlue; // DarkKhaki; //
extern bool   ExtFSLShiffLinesStatic       = true; // false; // ????? ????? FSL ????? ????? ??? ??????????? ??? ???????
extern color  ExtFSLShiffLinesStaticColor  = MediumBlue; // DarkKhaki; //

extern bool   ExtUTL        = false; // true; //
extern bool   ExtLTL        = false; // true; //
extern bool   ExtUWL        = false; // true; //
extern bool   ExtVisibleUWL = false;
extern bool   ExtLWL        = false; // true; //
extern bool   ExtVisibleLWL = false;
extern bool   ExtLongWL     = false;

extern color  ExtPivotZoneDinamicColor = CLR_NONE;
extern color  ExtPivotZoneStaticColor  = CLR_NONE;
extern bool   ExtPivotZoneFramework    = false;

extern bool   ExtCustomStaticAP = false; // true; //
extern bool   AutoMagnet        = true;
extern int    AMBars            = 5;

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;

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 bool   ExtFiboTime3          = false;
extern color  ExtFiboTime1C         = Teal;
extern color  ExtFiboTime2C         = Sienna;
extern color  ExtFiboTime3C         = Aqua;
extern bool   ExtVisibleDateTime    = false;
extern string ExtVisibleNumberFiboTime = "111";

extern bool   ExtFiboFreePitchfork  = true;
extern string ExtFiboFreeRLDinamic  = "0.236,0.382,0.618,1.0,1.618,2.618,4.236,6.854,11.09,17.944,29.034,46.979,76.013";
extern string ExtFiboFreeRLStatic   = "0.236,0.382,0.618,1.0,1.618,2.618,4.236,6.854,11.09,17.944,29.034,46.979,76.013";
extern string ExtFiboFreeISLDinamic = "0.236,0.382,0.618,0.764";
extern string ExtFiboFreeISLStatic  = "0.236,0.382,0.618,0.764";
extern string ExtFiboFreeUWL        = "0.382,0.618,1.0,1.618,2.618,4.236";
extern string ExtFiboFreeLWL        = "0.382,0.618,1.0,1.618,2.618,4.236";
extern string ExtFiboFreeFT1        = "0.382,0.618,1.0,1.618,2.618";
extern string ExtFiboFreeFT2        = "0.382,0.618,1.0,1.618,2.618";
extern string ExtFiboFreeFT3        = "0.382,0.618,1.0,1.618,2.618";

extern int    mSelectVariantsPRZ      = 0;
extern int    mTypeBasiclAP           = 0;
extern int    mTypeExternalAP         = 0;
extern int    mExternalHandAP         = 0;

extern bool   mAuto_d                 = true; // false; //
extern bool   mAuto_s                 = true; // false; //
extern bool   mSaveWL_TL              = true;
extern bool   mOutRedZone             = false; // true; //
extern bool   mExitFSL_SSL            = true; // false; //

extern bool   mPivotPoints            = true;
extern bool   mPivotPointsChangeColor = false;

extern int    mSSL                    = 0;
extern int    m1_2Mediana             = 0;
extern int    mISL382                 = 0;
extern int    mMediana                = 0;
extern int    mISL618                 = 0;
extern int    mFSL                    = 0;
extern int    mSLM                    = 0;
extern int    mFSLShiffLines          = 0;

extern int    mUTL                    = 0;
extern int    mLTL                    = 0;
extern int    mUWL                    = 0;
extern int    mLWL                    = 0;

extern bool   mCriticalPoints         = false;

extern int    mSSL_d                  = 0;
extern int    m1_2Mediana_d           = 0;
extern int    mISL382_d               = 0;
extern int    mMediana_d              = 0;
extern int    mISL618_d               = 0;
extern int    mFSL_d                  = 0;
extern int    mSLM_d                  = 0;
extern int    mFSLShiffLines_d        = 0;

extern bool   mCriticalPoints_d       = false;

extern bool   mAllLevels              = true;
extern color  mColorUP                = Blue;
extern color  mColorDN                = Red;
extern color  mColor                  = DarkOrchid;
extern color  mColorRectangleUP       = LightBlue;
extern color  mColorRectangleDN       = Pink;
extern color  mColorRectangle         = Thistle;
extern bool   mBack                   = false;
extern bool   mBackZones              = true;
extern int    mLineZonesWidth         = 5;
extern bool   mVisibleST              = false;
extern bool   mVisibleISL             = true;
extern int    mPeriodWriteToFile      = 60;
extern bool   mWriteToFile            = false; // true; //

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_____________ = "Pivot ZigZag";
extern color  ExtPivotZZ1Color = Blue;
extern color  ExtPivotZZ2Color = Red;
extern int    ExtPivotZZ1Num   = 0;
extern int    ExtPivotZZ2Num   = 0;
extern int    ExtPivotZZStyle  = 0;
extern int    ExtPivotZZWidth  = 2;

extern string ______________12_____________ = "Parameters for Channels";
extern int    ExtTypeChannels      = 0;
extern int    ExtTypeLineChannels  = 1;
extern int    ExtChannelsNum       = 2;
extern color  ExtLTColor           = Red;
extern color  ExtLCColor           = Green;
extern int    ExtLTChannelsStyle   = 0;
extern int    ExtLTChannelsWidth   = 1; 
extern int    ExtLCChannelsStyle   = 2;
extern int    ExtLCChannelsWidth   = 0; 
extern bool   ExtRay               = false;

extern string ______________13_____________ = "Parameters Fibo Time";

extern int    ExtFiboTimeNum      = 0;
extern bool   ExtFiboTime1x       = false;
extern bool   ExtFiboTime2x       = false;
extern bool   ExtFiboTime3x       = false;
extern color  ExtFiboTime1Cx      = Teal;
extern color  ExtFiboTime2Cx      = Sienna;
extern color  ExtFiboTime3Cx      = Aqua;
extern bool   ExtVisibleDateTimex = false;
extern string ExtVisibleNumberFiboTimex = "111";

extern string ______________14_____________ = "Parameters Exp";
extern bool   chHL                = false;
extern bool   PeakDet             = false;

extern bool   chHL_PeakDet_or_vts = true;
extern int    ExtLabel            = 0;
extern int    ExtCodLabel         = 116;
extern int    NumberOfBars        = 1000;     // ?????????? ????? ??????? (0-???)
extern int    NumberOfVTS         = 13;
extern int    NumberOfVTS1        = 1;

extern string ______________15_____________ = "Common Parameters";

extern int    ExtFiboType       = 1;
extern string ExtFiboTypeFree  = "0,0.382,0.618,0.764,1,1.236,1.618"; // ???????????????? ?????? ???? 
extern color  ExtObjectColor    = CLR_NONE;
extern int    ExtObjectStyle    = 1;
extern int    ExtObjectWidth    = 0; 

extern bool   ExtDinamic        = false; //true; //
extern string ExtVisibleDinamic = "01100000000";
extern bool   RefreshStaticNewRayZZ =true;
extern bool   AutoTestRedZone   = false; //true; //

extern bool   ZigZagHighLow     = true;

extern bool   ExtSendMail       = false;
extern bool   ExtAlert          = false;
extern bool   ExtPlayAlert      = false;

extern bool   ExtBack           = true;

extern bool   ExtSave           = false;
extern string info_comment      = "01111";
extern bool   infoMerrillPattern= false;
extern bool   infoTF            = true;

extern bool   CursorLine        = false;
extern color  CLColor           = Black;
extern int    CLWidth           = 1;
extern int    CLStyle           = 2;	
extern bool   CLBack            = False;	

extern bool   bigText           = true;
extern int    bigTextSize       = 16;
extern color  bigTextColor      = Blue;
extern color  bigTextColorBearish = Red;
extern int    bigTextX          = 50;
extern int    bigTextY          = 20;
extern bool   ExtVisible        = true;
extern int    ExtComplekt       = 1135;

double zz[];

double zzL[];

double zzH[];

double nen_ZigZag[];

int    _maxbarZZ; // ?????????? ?????, ??????????? ? ??????? ????????.

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="", nameObjAPMaster="";
string nameUWL="", nameLWL="", nameUTL="", nameLTL="", nameUWLd="", nameLWLd="", nameUTLd="", nameLTLd="";

bool descript_b=false;

string PPWithBars="", descript="";

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;

double LowPrim,HighPrim,LowLast,HighLast;

int numLowPrim,numHighPrim,numLowLast,numHighLast,k,k1,k2,ki,kiPRZ=0,countLow1,countHigh1,shift,shift1,shift2,shift3;
string txtkk="";

int timeFr1new,timeFr2new,timeFr3new;

int countFr;

int countBarEnd=0,TimeBarEnd;

int numBar=0;

int numOb;

bool flagFrNew=false;

bool newRay=true;

bool flagGartley=false;

int perTF;
bool Demo;

bool   first=true;
int    NewBarTime=0, countbars=0;
int    lasthighpos,lastlowpos,realcnt=0;
double lasthigh,lastlow;

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

int counted_bars, cbi, iBar;

double ASBar;

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,aim,bim;
datetime tai,tbi,ti,tmh,tml;

bool fh=false,fl=false,fcount0,PeakDetIni;

/*

double lLast_m=0, hLast_m=0;
int countBarExt; // ??????? ??????? ?????
int countBarl,countBarh;
*/

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},mChannels[]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};

int      mPitchTime[]={0,0,0};
int      mPitchTimeSave;
double   mPitchCena[]={0.0,0.0,0.0};

double   hBar, lBar;
datetime tiZZ;
int      _ExtPitchforkStatic=0, _ExtPitchforkDinamic=0;

double   ms[2];

string   vBullBear    = ""; // ?????????? ??? ??????????? ????? ??? ???????? ???????
string   vNamePattern = ""; // ?????????? ??? ??????????? ???????????? ????????
string   vBullBearToNumberPattern = "";
string   vNamePatternToNumberPattern = "";
string   vNameStrongToNumberPattern = "";
string   vNameStrongPattern = "";
int      maxPeak;
bool     vPatOnOff = false, vPatNew = false, saveParametersZZ=false;
int      Depth;

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;
int      minSizeToNumberPattern;
double   minPercentToNumberPattern;
color    ColorList[];
int      ColorSize;
int      countColor   = 0;
bool     flagExtGartleyTypeSearch2=false;
int      minBarsSave, minBarsX;
string   info_RZS_RL="",info_RZD_RL="";

bool   CustomPat_[33];
string namepatterns[33]=
{"Gartley",       "Bat",         "A Alt Shark",        "A Nen STAR",
"Butterfly",      "Crab",        "A Shark",            "new A Cypher",    
"A Butterfly",    "A Crab",      "Shark",              "new Cypher",
"A Gartley",      "A Bat",       "Alt Shark",          "Nen STAR",
"Alt Bat",        "Deep Crab",   "Black swan",          "121",
"max Bat",        "max Gartley", "max Butterfly",       "? 121",
"WHITE SWAN",     "??????? 200", "3 drives",            "? 3 drives",
"TOTAL 1",        "TOTAL 2",     "TOTAL 3", "TOTAL 4", "TOTAL ***"};
double minXB_[33]=
{0.618, 0.382, 0.446, 0.5,
 0.786, 0.382, 0.446, 1.618,
 0.382, 0.276, 0.382, 0.382,
 0.618, 0.382, 0.382, 0.382,
 0.382, 0.886, 1.382, 0.5,
 0.382, 0.382, 0.618, 1.618,
 0.382, 0.382, 1.272, 0.618,
 0.382, 0.382, 0.276, 0.382, 0.276};
double maxXB_[33]=
{0.618, 0.5,   0.618, 0.786,
 0.786, 0.618, 0.618, 2.618,
 0.618, 0.446, 0.618, 0.618,
 0.786, 0.618, 0.618, 0.618,
 0.382, 0.886, 2.618, 0.618,
 0.618, 0.618, 0.886, 0.786,
 0.724, 0.786, 1.618, 0.786,
 0.786, 0.786, 0.618, 0.786, 0.786}; 
double minAC_[33]=
{0.382, 0.382, 0.618, 0.707,
 0.382, 0.382, 0.618, 0.447,
 1.128, 1.128, 1.128, 1.414,
 1.128, 1.128, 1.128, 1.128,
 0.382, 0.382, 0.236, 1.272,
 0.382, 0.382, 0.382, 0.447,
 2.0,  0.886,  0.618, 1.272,
 0.382, 0.382, 1.128, 1.128, 0.382};
double maxAC_[33]=
{0.886, 0.886, 0.886, 0.886,
 0.886, 0.886, 0.886, 0.707,
 2.618, 2.618, 1.618, 2.14,
 2.618, 2.618, 1.618, 1.414,
 0.886, 0.886, 0.5,   2.0,
 0.886, 0.886, 0.886, 0.786,
 4.237, 1.128, 0.786, 1.618,
 0.886, 0.886, 2.618, 2.618, 2.618};
double minBD_[33]=
{1.272, 1.618, 1.618, 1.618,
 1.618, 2.24,  1.618, 0.447,
 1.272, 1.618, 1.618, 1.128,
 1.618, 2.0,   1.618, 1.272,
 2.0,   2.618, 1.128, 0.447,
 1.272, 1.128, 1.272, 1.618,
 0.5,   0.886, 1.272, 0.618,
 1.272, 1.618, 1.272, 1.618, 1.272};
double maxBD_[33]=
{1.618, 2.618, 2.618, 2.618,
 2.618, 3.618, 2.618, 0.886,
 1.272, 2.618, 2.236, 2.0,
 1.618, 2.618, 2.236, 2.0,
 3.618, 3.618, 2.0,   0.618,
 2.618, 2.236, 2.618, 2.0,
 0.886, 3.618, 1.618, 0.786,
 2.618, 3.618, 2.618, 2.618, 3.618};
double minXD_[33]=
{0.786, 0.886, 0.886, 0.786,
 1.272, 1.618, 1.128, 1.272,
 0.618, 0.618, 0.886, 0.786,
 1.272, 1.128, 1.128, 1.272,
 1.128, 1.618, 1.128, 0.382,
 0.886, 0.618, 1.272, 1.272,
 0.382, 0.886, 1.618, 0.13,
 0.786, 1.128, 0.618, 1.128, 0.618};
double maxXD_[33]=
{0.786, 0.886, 0.886, 0.786,
 1.618, 1.618, 1.128, 1.272,
 0.786, 0.618, 0.886, 0.786, 
 1.272, 1.128, 1.128, 1.272,
 1.128, 1.618, 2.618, 0.786,
 0.886, 0.786, 1.618, 2.618,
 0.886, 1.128, 2.618, 0.886,
 0.886, 1.618, 0.886, 1.272, 1.618};

int codPatterns[788,3]=
{5,10912,9,5,10913,9,5,10914,9,5,10915,9,5,11012,9,5,11013,9,5,11014,9,5,11015,9,5,11112,9,5,11113,9,5,11114,9,5,11115,9,5,11212,9,5,11213,9,5,11214,9,5,11215,9,5,11312,9,5,11313,9,
5,11314,9,5,11315,9,5,11412,9,5,11413,9,5,11414,9,5,11415,9,5,11512,9,5,11513,9,5,11514,9,5,11515,9,5,20910,8,5,20912,9,5,20913,9,5,20914,9,5,20915,9,5,21010,8,5,21012,9,5,21013,9,
5,21014,9,5,21015,9,5,21110,8,5,21112,9,5,21113,9,5,21114,9,5,21115,9,5,21210,8,5,21212,9,5,21213,9,5,21214,9,5,21215,9,5,21310,8,5,21312,9,5,21313,9,5,21314,9,5,21315,9,5,21410,8,
5,21412,9,5,21413,9,5,21414,9,5,21415,9,5,21510,8,5,21512,9,5,21513,9,5,21514,9,5,21515,9,5,30910,8,5,30912,9,5,30913,9,5,30914,9,5,30915,9,5,31010,8,5,31012,9,5,31013,9,5,31014,9,
5,31015,9,5,31110,8,5,31112,9,5,31113,9,5,31114,9,5,31115,9,5,31210,8,5,31212,9,5,31213,9,5,31214,9,5,31215,9,5,31310,8,5,31312,9,5,31313,9,5,31314,9,5,31315,9,5,31410,8,5,31412,9,
5,31413,9,5,31414,9,5,31415,9,5,31510,8,5,31512,9,5,31513,9,5,31514,9,5,31515,9,5,40910,8,5,41010,8,5,41110,8,5,41210,8,5,41310,8,5,41410,8,5,41510,8,5,50910,8,5,51010,8,5,51110,8,
5,51210,8,5,51310,8,5,51410,8,5,51510,8,6,20910,8,6,21010,8,6,21110,8,6,21210,8,6,21310,8,6,21410,8,6,21510,8,6,30910,8,6,31010,8,6,31110,8,6,31210,8,6,31310,8,6,31410,8,6,31510,8,
6,40910,8,6,41010,8,6,41110,8,6,41210,8,6,41310,8,6,41410,8,6,41510,8,6,50910,8,6,51010,8,6,51110,8,6,51210,8,6,51310,8,6,51410,8,6,51510,8,7,20910,11,7,20911,11,7,20912,11,
7,20913,11,7,21010,8,7,21110,11,7,21111,11,7,21112,11,7,21113,11,7,21210,8,7,21310,8,7,21410,8,7,21510,8,7,30910,11,7,30911,11,7,30912,11,7,30913,11,7,31010,8,7,31110,11,7,31111,11,
7,31112,11,7,31113,11,7,31210,8,7,31310,8,7,31410,8,7,31510,8,7,40612,3,7,40613,3,7,40614,3,7,40615,3,7,40712,3,7,40713,3,7,40714,3,7,40715,3,7,40812,3,7,40813,3,7,40814,3,7,40815,3,
7,40910,11,7,40911,11,7,40912,11,7,40913,11,7,41010,8,7,41110,11,7,41111,11,7,41112,11,7,41113,11,7,41210,8,7,41310,8,7,41410,8,7,41510,8,7,50210,0,7,50211,0,7,50212,0,7,50310,0,
7,50311,0,7,50312,0,7,50410,0,7,50411,0,7,50412,0,7,50510,0,7,50511,0,7,50512,0,7,50610,0,7,50611,0,7,50612,0,7,50613,3,7,50614,3,7,50615,3,7,50710,0,7,50711,0,7,50712,0,7,50713,3,
7,50714,3,7,50715,3,7,50810,0,7,50811,0,7,50812,0,7,50813,3,7,50814,3,7,50815,3,7,50910,11,7,50911,11,7,50912,11,7,50813,11,7,51009,8,7,51110,11,7,51110,11,7,51112,11,7,51113,11,
7,51210,8,7,51310,8,7,51410,8,7,51510,8,7,60612,3,7,60613,3,7,60614,3,7,60615,3,7,60712,3,7,60713,3,7,60714,3,7,60715,3,7,60812,3,7,60813,3,7,60814,3,7,60815,3,7,70612,3,7,70613,3,
7,70614,3,7,70615,3,7,70712,3,7,70713,3,7,70714,3,7,70715,3,7,70812,3,7,70813,3,7,70814,3,7,70815,3,8,20215,1,8,20315,1,8,20415,1,8,20515,1,8,20614,1,8,20615,1,8,20714,1,8,20715,1,
8,20813,1,8,20814,1,8,20815,1,8,20912,10,8,20913,10,8,20914,10,8,21112,10,8,21113,10,8,21114,10,8,21212,10,8,21213,10,8,21214,10,8,30512,2,8,30513,2,8,30514,2,8,30515,2,8,30612,2,
8,30613,2,8,30614,2,8,30615,2,8,30712,2,8,30713,2,8,30714,2,8,30715,2,8,30812,2,8,30813,2,8,30814,2,8,30815,2,8,30912,10,8,30913,10,8,30914,10,8,31112,10,8,31113,10,8,31114,10,
8,31212,10,8,31213,10,8,31214,10,8,40214,1,8,40215,1,8,40314,1,8,40315,1,8,40413,1,8,40414,1,8,40315,1,8,40512,1,8,40513,1,8,40514,1,8,40515,1,8,40612,1,8,40613,1,8,40614,1,8,40615,1,
8,40712,1,8,40713,1,8,40714,1,8,40715,1,8,40812,1,8,40813,1,8,40814,1,8,40815,1,8,40912,10,8,40913,10,8,40914,10,8,41112,10,8,41113,10,8,41114,10,8,41212,10,8,41213,10,8,41214,10,
8,50512,2,8,50513,2,8,50514,2,8,50515,2,8,50612,2,8,50613,2,8,50614,2,8,50615,2,8,50712,2,8,50713,2,8,50714,2,8,50715,2,8,50812,2,8,50813,2,8,50814,2,8,50815,2,8,50912,10,8,50913,10,
8,50914,10,8,51112,10,8,51113,10,8,51114,10,8,51211,10,8,51213,10,8,51214,10,9,20215,16,9,20217,16,9,20314,16,9,20315,16,9,20317,16,9,20414,16,9,20415,16,9,20417,16,9,20513,16,
9,20514,16,9,20515,16,9,20517,16,9,20613,16,9,20614,16,9,20615,16,9,20617,16,9,20713,16,9,20714,16,9,20715,16,9,20813,16,9,20814,16,9,20815,16,9,20913,14,9,20914,14,9,20915,14,
9,20917,14,9,20918,14,9,21013,13,9,21014,13,9,21015,13,9,21113,14,9,21114,14,9,21115,14,9,21117,14,9,21118,14,9,21213,14,9,21214,14,9,21215,14,9,21217,14,9,21218,14,9,21313,13,
9,21314,13,9,21315,13,9,21413,13,9,21414,13,9,21415,13,9,21513,13,9,21514,13,9,21515,13,9,30512,6,9,30513,6,9,30514,6,9,30515,6,9,30612,6,9,30613,6,9,30614,6,9,30615,6,9,30712,6,
9,30713,6,9,30714,6,9,30715,6,9,30812,6,9,30813,6,9,30814,6,9,30815,6,9,30913,14,9,30914,14,9,30915,14,9,30917,14,9,30918,14,9,31013,13,9,31014,13,9,31015,13,9,31113,14,9,31114,14,
9,31115,14,9,31117,14,9,31213,14,9,31214,14,9,31215,14,9,31217,14,9,31313,13,9,31314,13,9,31315,13,9,31413,13,9,31414,13,9,31415,13,9,31513,13,9,31514,13,9,31515,13,9,40512,6,
9,40513,6,9,40514,6,9,40514,6,9,40612,6,9,40613,6,9,40614,6,9,40615,6,9,40712,6,9,40713,6,9,40714,6,9,40715,6,9,40812,6,9,40813,6,9,40814,6,9,40815,6,9,40913,14,9,40914,14,9,40915,14,
9,40917,14,9,41013,13,9,41014,13,9,41015,13,9,41113,14,9,41114,14,9,41115,14,9,41117,14,9,41213,14,9,41214,14,9,41215,14,9,41313,13,9,41314,13,9,41315,13,9,41413,13,9,41414,13,
9,41415,13,9,41513,13,9,41514,13,9,41515,13,9,50512,6,9,50513,6,9,50514,6,9,50415,6,9,50612,6,9,50613,6,9,50614,6,9,50615,6,9,50712,6,9,50713,6,9,50714,6,9,50715,6,9,50812,6,
9,50813,6,9,50814,6,9,50815,6,9,50913,14,9,50914,14,9,50915,14,9,50917,14,9,51013,13,9,51014,13,9,51015,13,9,51113,14,9,51114,14,9,51115,14,9,51117,14,9,51213,14,9,51214,14,9,51215,14,
9,51312,13,9,51314,13,9,51315,13,9,51413,13,9,51413,13,9,51415,13,9,51513,13,9,51514,13,9,51514,13,10,20910,15,10,20911,15,10,20912,15,10,20913,15,10,20915,15,10,21110,15,10,21111,15,
10,21112,15,10,21113,15,10,21115,15,10,30910,15,10,30911,15,10,30912,15,10,30913,15,10,30915,15,10,31110,15,10,31111,15,10,31112,15,10,31113,15,10,31115,15,10,40612,7,10,40613,7,
10,40614,7,10,40615,7,10,40712,7,10,40713,7,10,40714,7,10,40715,7,10,40812,7,10,40813,7,10,40814,7,10,40815,7,10,40910,15,10,40911,15,10,40912,15,10,40913,15,10,40915,15,10,41110,15,
10,41111,15,10,41112,15,10,41113,15,10,41115,15,10,50612,7,10,50613,7,10,50614,7,10,50615,7,10,50712,7,10,50713,7,10,50714,7,10,50715,7,10,50812,7,10,50813,7,10,50814,7,10,50815,7,
10,50910,15,10,50911,15,10,50912,12,10,50913,15,10,51012,12,10,51110,15,10,51111,15,10,51112,12,10,51113,15,10,51212,12,10,51312,12,10,51412,12,10,51512,12,10,60612,7,10,60613,7,
10,60614,7,10,60515,7,10,60712,7,10,60713,7,10,60714,7,10,60715,7,10,60812,7,10,60813,7,10,60814,7,10,60815,7,10,60912,12,10,61012,12,10,61112,12,10,61212,12,10,61312,12,10,61412,12,
10,61512,12,10,70212,4,10,70213,4,10,70214,4,10,70215,4,10,70312,4,10,70313,4,10,70314,4,10,70315,4,10,70412,4,10,70413,4,10,70414,4,10,70415,4,10,70512,4,10,70513,4,10,70514,4,
10,70515,4,10,70612,4,10,70613,4,10,70614,4,10,70615,4,10,70712,4,10,70713,4,10,70714,4,10,70715,4,10,70812,4,10,70813,4,10,70814,4,10,70815,4,10,70912,12,10,71012,12,10,71112,12,
10,71212,12,10,71312,12,10,71412,12,10,71512,12,11,70212,4,11,70213,4,11,70214,4,11,70312,4,11,70313,4,11,70314,4,11,70412,4,11,70413,4,11,70414,4,11,70512,4,11,70513,4,11,70514,4,
11,70612,4,11,70613,4,11,70614,4,11,70712,4,11,70713,4,11,70714,4,11,70812,4,11,70813,4,11,70814,4,12,20212,5,12,20213,5,12,20214,5,12,20215,5,12,20216,5,12,20217,5,12,20118,5,
12,20312,5,12,20313,5,12,20314,5,12,20315,5,12,20316,5,12,20317,5,12,20318,5,12,20412,5,12,20413,5,12,20414,5,12,20415,5,12,20416,5,12,20417,5,12,20418,5,12,20512,5,12,20513,5,
12,20514,5,12,20515,5,12,20516,5,12,20517,5,12,20612,5,12,20613,5,12,20614,5,12,20615,5,12,20615,5,12,20616,5,12,20712,5,12,20713,5,12,20714,5,12,20715,5,12,20716,5,12,20717,5,
12,20812,5,12,20813,5,12,20814,5,12,20815,5,12,20816,5,12,20817,5,12,30212,5,12,30213,5,12,30214,5,12,30215,5,12,30216,5,12,30217,5,12,30218,5,12,30312,5,12,30313,5,12,30214,5,
12,30614,5,12,40217,5,12,40317,5,12,40417,5,12,40517,5,12,40617,5,12,40716,5,12,40717,5,12,40816,5,12,40817,5,12,50217,5,12,50317,5,12,50416,5,12,50616,5,12,50617,5,12,50715,5,
12,50716,5,12,50717,5,12,50814,5,12,50815,5,12,50816,5,12,70212,4,12,70213,4,12,70214,4,12,70312,4,12,70313,4,12,70314,4,12,70412,4,12,70413,4,12,70414,4,12,70512,4,12,70513,4,
12,70514,4,12,70612,4,12,70613,4,12,70614,4,12,70712,4,12,70713,4,12,70614,4,12,70812,4,12,70813,4,12,70814,4,12,80215,17,12,80216,17,12,80217,17,12,80315,17,12,80316,17,12,80317,17,
12,80415,17,12,80416,17,12,80417,17,12,80515,17,12,80516,17,12,80518,17,12,80614,17,12,80615,17,12,80616,17,12,80714,17,12,80715,17,12,80716,17,12,80814,17,12,80815,17,12,80716,5};

int index[788,2]=
{0,10912,1,10913,2,10914,3,10915,4,11012,5,11013,6,11014,7,11015,8,11112,9,11113,10,11114,11,11115,12,11212,13,11213,14,11214,15,11215,16,11312,17,11313,18,11314,19,11315,20,11412,
21,11413,22,11414,23,11415,24,11512,25,11513,26,11514,27,11515,676,20118,670,20212,671,20213,672,20214,258,20215,360,20215,673,20215,674,20216,361,20217,675,20217,677,20312,678,20313,
362,20314,679,20314,259,20315,363,20315,680,20315,681,20316,364,20317,682,20317,683,20318,684,20412,685,20413,365,20414,686,20414,260,20415,366,20415,687,20415,688,20416,367,20417,
689,20417,690,20418,691,20512,368,20513,692,20513,369,20514,693,20514,261,20515,370,20515,694,20515,695,20516,371,20517,696,20517,697,20612,372,20613,698,20613,262,20614,373,20614,
699,20614,263,20615,374,20615,700,20615,701,20615,702,20616,375,20617,703,20712,376,20713,704,20713,264,20714,377,20714,705,20714,265,20715,378,20715,706,20715,707,20716,708,20717,
709,20812,266,20813,379,20813,710,20813,267,20814,380,20814,711,20814,268,20815,381,20815,712,20815,713,20816,714,20817,28,20910,112,20910,140,20910,528,20910,141,20911,529,20911,
29,20912,142,20912,269,20912,530,20912,30,20913,143,20913,270,20913,382,20913,531,20913,31,20914,271,20914,383,20914,32,20915,384,20915,532,20915,385,20917,386,20918,33373,21010,
113,21010,144,21010,34,21012,35,21013,387,21013,36,21014,388,21014,37,21015,389,21015,38,21110,114,21110,145,21110,533,21110,146,21111,534,21111,39,21112,147,21112,272,21112,535,21112,
40,21113,148,21113,273,21113,390,21113,536,21113,41,21114,274,21114,391,21114,42,21115,392,21115,537,21115,393,21117,394,21118,43,21210,115,21210,149,21210,44,21212,275,21212,
45,21213,276,21213,395,21213,46,21214,277,21214,396,21214,47,21215,397,21215,398,21217,399,21218,48,21310,116,21310,150,21310,49,21312,50,21313,400,21313,51,21314,401,21314,52,21315,
402,21315,53,21410,117,21410,151,21410,54,21412,55,21413,403,21413,56,21414,404,21414,57,21415,405,21415,58,21510,118,21510,152,21510,59,21512,60,21513,406,21513,61,21514,407,21514,
62,21515,408,21515,715,30212,716,30213,717,30214,724,30214,718,30215,719,30216,720,30217,721,30218,722,30312,723,30313,278,30512,409,30512,279,30513,410,30513,280,30514,411,30514,
281,30515,412,30515,282,30612,413,30612,283,30613,414,30613,284,30614,415,30614,725,30614,285,30615,416,30615,286,30712,417,30712,287,30713,418,30713,288,30714,419,30714,289,30715,
420,30715,290,30812,421,30812,291,30813,422,30813,292,30814,423,30814,293,30815,424,30815,63,30910,119,30910,153,30910,538,30910,154,30911,539,30911,64,30912,155,30912,294,30912,
540,30912,65,30913,156,30913,295,30913,425,30913,541,30913,66,30914,296,30914,426,30914,67,30915,427,30915,542,30915,428,30917,429,30918,68,31010,120,31010,157,31010,69,31012,70,31013,
430,31013,71,31014,431,31014,72,31015,432,31015,73,31110,121,31110,158,31110,543,31110,159,31111,544,31111,74,31112,160,31112,297,31112,545,31112,75,31113,161,31113,298,31113,
433,31113,546,31113,76,31114,299,31114,434,31114,77,31115,435,31115,547,31115,436,31117,78,31210,122,31210,162,31210,79,31212,300,31212,80,31213,301,31213,437,31213,81,31214,
302,31214,438,31214,82,31215,439,31215,440,31217,83,31310,123,31310,163,31310,84,31312,85,31313,441,31313,86,31314,442,31314,87,31315,443,31315,88,31410,124,31410,164,31410,89,31412,
90,31413,444,31413,91,31414,445,31414,92,31415,446,31415,93,31510,125,31510,165,31510,94,31512,95,31513,447,31513,96,31514,448,31514,97,31515,449,31515,303,40214,304,40215,726,40217,
305,40314,306,40315,309,40315,727,40317,307,40413,308,40414,728,40417,310,40512,450,40512,311,40513,451,40513,312,40514,452,40514,453,40514,313,40515,729,40517,166,40612,314,40612,
454,40612,548,40612,167,40613,315,40613,455,40613,549,40613,168,40614,316,40614,456,40614,550,40614,169,40615,317,40615,457,40615,551,40615,730,40617,170,40712,318,40712,458,40712,
552,40712,171,40713,319,40713,459,40713,553,40713,172,40714,320,40714,460,40714,554,40714,173,40715,321,40715,461,40715,555,40715,731,40716,732,40717,174,40812,322,40812,462,40812,
556,40812,175,40813,323,40813,463,40813,557,40813,176,40814,324,40814,464,40814,558,40814,177,40815,325,40815,465,40815,559,40815,733,40816,734,40817,98,40910,126,40910,178,40910,
560,40910,179,40911,561,40911,180,40912,326,40912,562,40912,181,40913,327,40913,466,40913,563,40913,328,40914,467,40914,468,40915,564,40915,469,40917,99,41010,127,41010,182,41010,
470,41013,471,41014,472,41015,100,41110,128,41110,183,41110,565,41110,184,41111,566,41111,185,41112,329,41112,567,41112,186,41113,330,41113,473,41113,568,41113,331,41114,474,41114,
475,41115,569,41115,476,41117,101,41210,129,41210,187,41210,332,41212,333,41213,477,41213,334,41214,478,41214,479,41215,102,41310,130,41310,188,41310,480,41313,481,41314,482,41315,
103,41410,131,41410,189,41410,483,41413,484,41414,485,41415,104,41510,132,41510,190,41510,486,41513,487,41514,488,41515,191,50210,192,50211,193,50212,735,50217,194,50310,195,50311,
196,50312,736,50317,197,50410,198,50411,199,50412,492,50415,737,50416,200,50510,201,50511,202,50512,335,50512,489,50512,336,50513,490,50513,337,50514,491,50514,338,50515,203,50610,
204,50611,205,50612,339,50612,493,50612,570,50612,206,50613,340,50613,494,50613,571,50613,207,50614,341,50614,495,50614,572,50614,208,50615,342,50615,496,50615,573,50615,738,50616,
739,50617,209,50710,210,50711,211,50712,343,50712,497,50712,574,50712,212,50713,344,50713,498,50713,575,50713,213,50714,345,50714,499,50714,576,50714,214,50715,346,50715,500,50715,
577,50715,740,50715,741,50716,742,50717,215,50810,216,50811,217,50812,347,50812,501,50812,578,50812,218,50813,224,50813,348,50813,502,50813,579,50813,219,50814,349,50814,503,50814,
580,50814,743,50814,220,50815,350,50815,504,50815,581,50815,744,50815,745,50816,105,50910,133,50910,221,50910,582,50910,222,50911,583,50911,223,50912,351,50912,584,50912,352,50913,
505,50913,585,50913,353,50914,506,50914,507,50915,508,50917,225,51009,106,51010,134,51010,586,51012,509,51013,510,51014,511,51015,107,51110,135,51110,226,51110,227,51110,587,51110,
588,51111,228,51112,354,51112,589,51112,229,51113,355,51113,512,51113,590,51113,356,51114,513,51114,514,51115,515,51117,108,51210,136,51210,230,51210,357,51211,591,51212,358,51213,
516,51213,359,51214,517,51214,518,51215,109,51310,137,51310,231,51310,519,51312,592,51312,520,51314,521,51315,110,51410,138,51410,232,51410,593,51412,522,51413,523,51413,524,51415,
111,51510,139,51510,233,51510,594,51512,525,51513,526,51514,527,51514,598,60515,234,60612,595,60612,235,60613,596,60613,236,60614,597,60614,237,60615,238,60712,599,60712,239,60713,
600,60713,240,60714,601,60714,241,60715,602,60715,242,60812,603,60812,243,60813,604,60813,244,60814,605,60814,245,60815,606,60815,607,60912,608,61012,609,61112,610,61212,611,61312,
612,61412,613,61512,614,70212,649,70212,746,70212,615,70213,650,70213,747,70213,616,70214,651,70214,748,70214,617,70215,618,70312,652,70312,749,70312,619,70313,653,70313,750,70313,
620,70314,654,70314,751,70314,621,70315,622,70412,655,70412,752,70412,623,70413,656,70413,753,70413,624,70414,657,70414,754,70414,625,70415,626,70512,658,70512,755,70512,627,70513,
659,70513,756,70513,628,70514,660,70514,757,70514,629,70515,246,70612,630,70612,661,70612,758,70612,247,70613,631,70613,662,70613,759,70613,248,70614,632,70614,663,70614,760,70614,
763,70614,249,70615,633,70615,250,70712,634,70712,664,70712,761,70712,251,70713,635,70713,665,70713,762,70713,252,70714,636,70714,666,70714,253,70715,637,70715,254,70812,638,70812,
667,70812,764,70812,255,70813,639,70813,668,70813,765,70813,256,70814,640,70814,669,70814,766,70814,257,70815,641,70815,642,70912,643,71012,644,71112,645,71212,646,71312,647,71412,
648,71512,767,80215,768,80216,769,80217,770,80315,771,80316,772,80317,773,80415,774,80416,775,80417,776,80515,777,80516,778,80518,779,80614,780,80615,781,80616,782,80714,783,80715,
784,80716,787,80716,785,80814,786,80815};

int levelXD[32,2]; // ????? ????????, ??? ??????

int      nstrcod[8,2]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // ?????? ??????? ????? ????? ??????? retXD
int      nstrind[8,2]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // ?????? ??????? ????? ????? ??????? retXB
int      nstrind1[95,2];
double   deltapatterns[19,2];

double   retpatterns[19]={0.146,0.236,0.382,0.447,0.5,0.618,0.707,0.786,0.886,1.128,1.272,1.414,1.618,2.0,2.236,2.618,3.1416,3.618,4.236};
string   retpatternstxt[19]={".146",".236",".382",".447",".5",".618",".707",".786",".886","1.128","1.272","1.414","1.618","2.0","2.236","2.618","3.14","3.618","4.236"};
bool     strongABCD[19];
double   min_DeltaGartley, max_DeltaGartley;
int      ret[4]; // XD-XB-AC-BD
double   _ABCDtype[];
string   _ABCDtypetxt[];
int      _ABCDsize;

double   mPeak0[5][2]={0,5,0,4,0,3,0,2,0,1}, mPeak1[5][2]={0,5,0,4,0,3,0,2,0,1};
string   mMerrillPatterns[32][3]=
{"21435", "M1", "DownTrend",
"21453", "M2", "InvertedHeadAndShoulders",
"24135", "M3", "DownTrend",
"24153", "M4", "InvertedHeadAndShoulders",
"42135", "M5", "Broadening",
"42153", "M6", "InvertedHeadAndShoulders",
"24315", "M7", "*",
"24513", "M8", "InvertedHeadAndShoulders",
"42315", "M9", "*",
"42513", "M10", "InvertedHeadAndShoulders",
"45213", "M11", "InvertedHeadAndShoulders",
"24351", "M12", "*",
"24531", "M13", "Triangle",
"42351", "M14", "*",
"42531", "M15", "UpTrend",
"45231", "M16", "UpTrend",
"13245", "W1", "DownTrend",
"13524", "W2", "DownTrend",
"15324", "W3", "*",
"13224", "W4", "Triangle",
"15342", "W5", "*",
"31254", "W6", "HeadAndShoulders",
"42513", "W7", "HeadAndShoulders",
"51324", "W8", "*",
"31542", "W9", "HeadAndShoulders",
"51324", "W10", "*",
"35124", "W11", "HeadAndShoulders",
"53124", "W12", "Broadening",
"35142", "W13", "HeadAndShoulders",
"53142", "W14", "UpTrend",
"35412", "W15", "HeadAndShoulders",
"53412", "W16", "UpTrend"};

static int    endbar = 0;
static double endpr  = 0;

static int GPixels,VPixels;
int rect[4],hwnd;
int f=1;

int DinamicChannels=-1;

bool mAP = false;      // ???? ?????????? ?????? ?????

datetime mTime;        // ??????? ????????? ??????? ????, ??? ??????????? ??????? ?????????? ??????? ??????? ??????? ???? ? ???????? ????????? ??????? ????.
bool mAPs, mAPd;       // ????? - ??????? ??? ???????? ????? ? ????? ???????
double RZs=-1, RZd=-1; // ?????????? ?? ??????? ????. ?????????????? ??? ?????? ?????.
datetime mPeriod;      // ????? ????????? ?????? ???????? ????? ? ????
bool   aOutRedZone[]  = {false,false,false}; // ?????? ??? ???????? ?????????? ?? ????? ????? ??? ?????????????? ?????? ????? ??? ?????? ???? ?? ??????? ????

int    pitch_timeRZ[]={0,0,0}; 
double pitch_cenaRZ[]={0,0,0};

int    pitch_timeD[]={0,0,0}; 
double pitch_cenaD[]={0,0,0};
int    pitch_timeS[]={0,0,0}; 
double pitch_cenaS[]={0,0,0};

bool mStart=true; // ?????????? ??? ??????????????? ??????? ?????? ?????
int  aMetki[2][15];      // ?????? ??? ???????? ??????? ?????? ?????. aMetki[0][15] - ????? ??? ??????????? ???; aMetki[1][15] - ????? ??? ???????????? ???

double aPointAP[2][8]; // ?????? ????? ???????? ??? ???????. aPointAP[0][6] - ??????????? ????, aPointAP[1][6] - ???????????? ????. 

double arrm_s[][7];    // ?????? ??? ??????????????? ?????? ????? ? ??????????? ????? ???????
double arrm_d[][7];    // ?????? ??? ??????????????? ?????? ????? ? ???????????? ????? ???????
double atg[2][9];      // ?????? ????????? ????? ??????? ???????????? ??? ??????? ? ??? ?? ?????????
int    anum_cena[2][2];// ?????? ??????? ????? ??? arrm_s ? arrm_d

double aexitFSL_SSL[]={0,0}; // ?????? ?????? ??? ?????? ????????? mExitFSL_SSL

string atextm[]={"","SSL","SLM","50% Mediana","SLM 61.8","ISL 38.2","Mediana","ISL 61.8","FSL","FSL Shiff Lines","50% Mediana","UTL","LTL","UWL","LWL"};

int    vX, vY; // ?????????? ????? APm
bool   tik2 = false;
bool   tik1 = true;

bool   SlavePitchfork = false;
string nameCheckLabel_hidden="CheckLabel_hidden";
string nameCheckLabel="CheckLabel";
string nameMagnet[3];
int    period_AM[3];
int    ExtComplektAPm = 0; // ????? ?????????, ??????? ????????????? ????? APm ? "??????"

string cursor = "Cursor";

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

int deinit()
  {
   int i;

   ObjectDelete("fiboS" + ExtComplekt+"_");

   ObjectDelete("fiboFanS" + ExtComplekt+"_");
   ObjectDelete("RLineS" + ExtComplekt+"_");
   if (!ExtCustomStaticAP)
     {
      ObjectDelete("pitchforkS" + ExtComplekt+"_APm_");
      ObjectDelete("Master_pitchforkS" + ExtComplekt+"_APm_");
     }

   ObjectDelete("pitchforkS" + ExtComplekt+"_");
   ObjectDelete("Master_pitchforkS" + ExtComplekt+"_");
   ObjectDelete("pmedianaS" + ExtComplekt+"_");
   ObjectDelete("1-2pmedianaS" + ExtComplekt+"_");
   ObjectDelete("SLM382S" + ExtComplekt+"_");
   ObjectDelete("SLM618S" + ExtComplekt+"_");
   ObjectDelete("FSL Shiff Lines S" + ExtComplekt+"_");
   ObjectDelete("fiboTime1" + ExtComplekt+"_");ObjectDelete("fiboTime2" + ExtComplekt+"_");ObjectDelete("fiboTime3" + ExtComplekt+"_");
   ObjectDelete("fiboTime1Free" + ExtComplekt+"_");ObjectDelete("fiboTime2Free" + ExtComplekt+"_");ObjectDelete("fiboTime3Free" + ExtComplekt+"_");
   ObjectDelete(nameUTL);ObjectDelete(nameLTL);
   ObjectDelete(nameUWL);ObjectDelete(nameLWL);
   ObjectDelete(nameUTLd);ObjectDelete(nameLTLd);
   ObjectDelete(nameUWLd);ObjectDelete(nameLWLd);
   ObjectDelete("ISL_S" + ExtComplekt+"_");
   ObjectDelete("RZS" + ExtComplekt+"_");
   ObjectDelete("CL" + ExtComplekt+"_");
   ObjectDelete("CISL" + ExtComplekt+"_"+0);
   ObjectDelete("CISL" + ExtComplekt+"_"+1);
   ObjectDelete("PivotZoneS" + ExtComplekt+"_");
   ObjectDelete("FanMedianaStatic" + ExtComplekt+"_");

   ObjectDelete("FiboFan" + ExtComplekt+"_");
   ObjectDelete("FiboArcS" + ExtComplekt+"_");
   ObjectDelete("LinePivotZZ" + "1" + ExtComplekt+"_");
   ObjectDelete("LinePivotZZ" + "2" + ExtComplekt+"_");
   ObjectDelete("#_TextPattern_#" + ExtComplekt+"_");
   ObjectDelete("#_TextPatternMP_#" + ExtComplekt+"_");

   for (i=0;i<9; i++)
     {
      nameObj="LCChannel" + i + ExtComplekt+"_";
      ObjectDelete(nameObj);
      nameObj="LTChannel" + i + ExtComplekt+"_";
      ObjectDelete(nameObj);
     }

   for (i=0; i<7; i++)
     {
      nameObj="VLS"+i+" " + ExtComplekt+"_";
      ObjectDelete(nameObj);
     }

   delete_objects_dinamic();
   delete_objects1();
   delete_objects3();
   delete_objects4();
   delete_objects5();
   delete_objects6(0);
   delete_objects6(1);
   delete_objects_spiral();
   delete_objects_number();
   delete_objects8();
   delete_objects9();
   ObjectDelete(cursor);

   if (infoTF) Comment("");
   return(0);
  }

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

void countFractal()
  {
   int shift;
   countLow1=0;
   countHigh1=0;
   if (flagFrNew && !flagGartley)
     {
      for(shift=0; shift<=numBar; shift++)
        {
         if (zzL[shift]>0.0) {countLow1++;}
         if (zzH[shift]>0.0) {countHigh1++;}    
        }

      numBar=0;  
      counted_bars=Bars-4;
     }
   else
     {
      if (flagGartley)  {counted_bars=0;}
      for(shift=0; shift<=countBarEnd; shift++)
        {
         if (zzL[shift]>0.0) {countLow1++;}
         if (zzH[shift]>0.0) {countHigh1++;}
        }
     }
  }

void matriza()
  {
   if (afrm && ExtHidden<5)
     {
      afrm=false;

      int shift,k,m;
      double kl=0,kh=0;

      if (ExtMaxBar>0) cbi=ExtMaxBar; else cbi=Bars;

      k=0; m=0;
      for (shift=0; shift<cbi && k<10; shift++)
        {
         if (zz[shift]>0)
           {
            afrx[k]=zz[shift];
            afr[k]=Time[shift];
            if (zz[shift]==zzL[shift])
              {
               kl=zzL[shift];
               if (ZigZagHighLow) afrl[k]=Low[shift]; 
               else
                 {
                  if (k==0) afrl[k]=Low[shift]; else  afrl[k]=zzL[shift];
                 }
               afrh[k]=0.0;
              }
            if (zz[shift]==zzH[shift])
              {
               kh=zzH[shift];
               if (ZigZagHighLow) afrh[k]=High[shift]; 
               else
                 {
                  if (k==0) afrh[k]=High[shift]; else afrh[k]=zzH[shift];
                 }
               afrl[k]=0.0;
              }
            k++;

            if (infoMerrillPattern)
              {
               if (m<6)
                 {
                  if (m<5)
                    {
                     mPeak0[m][0]=zz[shift];
                    }
                  if (m>0)
                    {
                     mPeak1[m-1][0]=zz[shift];
                    }
                  m++;
                 }
              }
           }
        }

      if (infoMerrillPattern)
        {
         ArraySort(mPeak1,5,0,MODE_ASCEND);
         ArraySort(mPeak0,5,0,MODE_ASCEND);
        }

      if (PeakDet && chHL_PeakDet_or_vts)
        {

         for (k=shift; k>0; k--)
           {
            if (zzH[k]>0) {kh=zzH[k];}
            if (zzL[k]>0) {kl=zzL[k];}

            if (kl>0) lam[k]=kl;
            if (kh>0) ham[k]=kh;
           }
        }

      if (ExtFiboTimeNum>2) fiboTimeX(); // ?????? ?????????? ?????? ?????? ??????????? ??? ???????

      if (ExtPitchforkStatic>0)
        {
         if (ExtCustomStaticAP)
           {
            screenPitchforkS();
           }
         else
           {
            if (newRay && mPitch[2]>0) screenPitchforkS();
            if (ExtPitchforkCandle)
              {
               if (iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)==0) screenPitchforkS();
              }
            else
              {
               if (mPitch[2]==0) screenPitchforkS();
              }
           }
        }

      if (ExtPitchforkDinamic>0) screenPitchforkD();

      if (ExtChannelsNum>1 || DinamicChannels>0) Channels();

      if (ExtFiboStatic)
        {
         if (newRay && mFibo[1]>0) screenFiboS();
         if (mFibo[1]==0) screenFiboS();
        }
      if (ExtFiboDinamic) screenFiboD();

      if (ExtFiboExpansion>0)
        {
         if (newRay && mExpansion[2]>0) FiboExpansion();
         if (mExpansion[2]==0) FiboExpansion();
        }

      if (ExtFiboFanNum>0 && ExtFiboFanColor>0)
        {
         if (newRay && mFan[1]>0) screenFiboFan();
         if (mFan[1]==0) screenFiboFan();
        }
      if (ExtFiboFanDinamic) screenFiboFanD();

      if (ExtVLStaticColor>0)
        {
         if (newRay && mVL[2]>0 && ExtVLStaticNum>0) VLS();
         if (mVL[2]==0) VLS();
        }
      if (ExtVLDinamicColor>0) VLD();

      if (ExtPivotZZ1Num==1 && ExtPivotZZ1Color>0) PivotZZ(ExtPivotZZ1Color, ExtPivotZZ1Num, 1);
      if (ExtPivotZZ2Num==1 && ExtPivotZZ2Color>0) PivotZZ(ExtPivotZZ2Color, ExtPivotZZ2Num, 2);

      if (newRay && ExtPivotZZ1Num>1 && ExtPivotZZ1Color>0) PivotZZ(ExtPivotZZ1Color, ExtPivotZZ1Num, 1);
      if (newRay && ExtPivotZZ2Num>1 && ExtPivotZZ2Color>0) PivotZZ(ExtPivotZZ2Color, ExtPivotZZ2Num, 2);

      if (ExtArcDinamicNum>0) screenFiboArcD();
      if (newRay && ExtArcStaticNum>0) screenFiboArcS();

      if (newRay && ExtSpiralNum>0) GoldenSpiral(afr[mSpiral[0]],afrx[mSpiral[0]],afr[mSpiral[1]],afrx[mSpiral[1]]);

      search_Gartley();

      ExtSave=false;
     }
   if (newRay && ExtNumberPeak) NumberPeak();
   newRay=false;
  }

void search_Gartley()
  {
   if (ExtGartleyOnOff || PotencialsLevels_retXD>0)
     {
      switch (ExtIndicator )
        {
         case 0     : {_Gartley("ExtIndicator=0_" + minBars+"/"+ExtBackstep,0);break;}
         case 1     : {_Gartley("ExtIndicator=1_" + minSize+"/"+minPercent,0);break;}
         case 2     : {_Gartley("ExtIndicator=2_" + minBars+"/"+minSize,0);break;}
         case 3     : {_Gartley("ExtIndicator=3_" + minBars,0);break;}
         case 4     : {_Gartley("ExtIndicator=4_" + minSize,0);break;}
         case 5     : {_Gartley("ExtIndicator=5_" + minBars,0);break;}
         case 6     : {_Gartley("ExtIndicator=6_" + minBars+"/"+ExtBackstep,0);break;}
         case 7     : {_Gartley("ExtIndicator=7_" + minBars,0);break;}
         case 8     : {_Gartley("ExtIndicator=8_" + minBars+"/"+ExtDeviation,0);break;}
         case 10    : {_Gartley("ExtIndicator=10_" + minBars,0);break;}
         case 12    : {_Gartley("ExtIndicator=12_" + minBars,0);break;}
         case 13    : {_Gartley("ExtIndicator=13_" + minBars+"/"+minSize,0);break;}
         case 14    : {_Gartley("ExtIndicator=14_" + minBars,0);break;}
        }

      if (vPatOnOff && !vPatNew)
        {
         vPatNew=true;
         if (ExtSendMail) _SendMail("There was a pattern","on  " + Symbol() + " " + Period() + " pattern " + vBullBear + " " + vNamePattern);
        }
      else if (!vPatOnOff && vPatNew) vPatNew=false;
     }
  }

void NumberPeak()
  {
   int n=0,i,endNumber;
   string txt="";
   if (ExtNumberPeak10) endNumber=iBarShift(Symbol(),Period(),afr[9]); else endNumber=Bars-minBars;

   delete_objects_number();

   for (i=iBarShift(Symbol(),Period(),afr[0])+1;i<endNumber;i++)
     {
      if (zz[i]>0)
        {
         n++;
         if (ExtNumberPeakLow)
           {
            if (zzL[i]>0)
              {
               txt=DoubleToStr(n,0);
               nameObj="NumberPeak" + "_" + ExtComplekt + "_" + n;
               ObjectCreate(nameObj,OBJ_TEXT,0,Time[i],zz[i]);
               ObjectSetText(nameObj,txt,ExtNumberPeakFontSize,"Arial",ExtNumberPeakColor);
              }
           }
         else
           {
            txt=DoubleToStr(n,0);
            nameObj="NumberPeak" + "_" + ExtComplekt + "_" + n;
            ObjectCreate(nameObj,OBJ_TEXT,0,Time[i],zz[i]);
            ObjectSetText(nameObj,txt,ExtNumberPeakFontSize,"Arial",ExtNumberPeakColor);
           }
        }
     }
   }

void Channels()
  {
   int    i,j,k,m,n,nul,peakLeft,peakRight,peakBase;
   double tangens, sdvigH, sdvigL, sdvigH_, sdvigL_, cenaLTLeft, cenaLTRight, cenaLCLeft, cenaLCRight, wrcenaL, wrcenaR;
   datetime timeLTLeft, timeLTRight, timeLCLeft, timeLCRight;
   int    baseExtremum; // ????? ???????? ??????? (???), ?? ???????? ???????? ?????????
   bool   fTrend=false; // =true - Bull ???????? ????????? ?? ?????????, =false - Bear ???????? ????????? ?? ??????????
   bool   dinamic=false;

   if (ExtChannelsNum==0 && DinamicChannels>0) dinamic=true;

   k=0;
   for (i=0;i<=9;i++) {if (mChannels[i]>=0) k++;}

   if (ExtTypeChannels==1)
     {
      if (dinamic) nul=DinamicChannels;
      else nul=1;

      for (i=1;i<k;i++)
        {
         sdvigH=0; sdvigL=0; sdvigH_=0; sdvigL_=0;

         peakLeft=iBarShift(Symbol(),Period(),afr[mChannels[i-1]],true);
         if (peakLeft<0) continue;
         peakRight=iBarShift(Symbol(),Period(),afr[mChannels[i]],true);
         if (peakRight<0) continue;
         if (peakLeft==peakRight) continue;
         if (afrx[mChannels[i-1]]<afrx[mChannels[i]]) fTrend=true; else fTrend=false;

         j=mChannels[i-1]-mChannels[i];
         if (j==1)
           {
            if (afrx[mChannels[i-1]]<afrx[mChannels[i]]) fTrend=true; else fTrend=false;
            baseExtremum=mChannels[i-1];
           }
         else if (j==2)
           {
            if (afrx[mChannels[i-1]]<afrx[mChannels[i]])
              { 
               fTrend=true;
               if (afrx[mChannels[i-1]]<afrx[mChannels[i-1]-1]) baseExtremum=mChannels[i-1]; else baseExtremum=mChannels[i-1]-1;
              }
            else
              {
               fTrend=false;
               if (afrx[mChannels[i-1]]<afrx[mChannels[i-1]-1]) baseExtremum=mChannels[i-1]-1; else baseExtremum=mChannels[i-1];
              }
           }

         peakBase=iBarShift(Symbol(),Period(),afr[baseExtremum]);
         tangens=(afrx[mChannels[i]]-afrx[baseExtremum])/(peakBase-peakRight);

         for (j=peakBase;j>=peakRight;j--) // ????????? tangens
           {
            if (fTrend)
              {
               if (afrx[baseExtremum] + tangens*(peakBase-j)-Low[j]>0) tangens=(Low[j]-afrx[baseExtremum])/(peakBase-j);
              }
            else
              {
               if (High[j] - (afrx[baseExtremum] + tangens*(peakBase-j))>0) tangens=(High[j]-afrx[baseExtremum])/(peakBase-j);
              }
           }

         for (j=peakLeft;j>=peakRight;j--) // ????????? ??????
           {
            if (fTrend)
              {
               sdvigH_=High[j] - (afrx[baseExtremum] + tangens*(peakBase-j));
               if (sdvigH_>sdvigH) {sdvigH=sdvigH_; cenaLCRight=High[j]+tangens*(j-peakRight);}
              }
            else
              {
               sdvigL_=afrx[baseExtremum] + tangens*(peakBase-j)-Low[j];
               if (sdvigL_>sdvigL) {sdvigL=sdvigL_; cenaLCRight=Low[j]+tangens*(j-peakRight);}
              }
           }
         timeLCRight=afr[mChannels[i]];

         if (ExtTypeLineChannels==0)
           {
            while (j>0)
              {
               if (fTrend)
                 {
                  if (afrx[baseExtremum] + tangens*(peakBase-j)-Low[j]>sdvigL) break;
                 }
               else
                 {
                  if (High[j] - (afrx[baseExtremum] + tangens*(peakBase-j))>sdvigH) break;
                 }
               j--;
              }
           }

         if (j<0) j=0;

         nameObj="LTChannel" + i + ExtComplekt+"_";
         if (ExtSave)
           {
            if (i!=DinamicChannels) nameObj=nameObj + save;
           }
         ObjectDelete(nameObj);

         if (fTrend)
           {
            timeLTLeft=afr[mChannels[i-1]];  cenaLTLeft=afrx[baseExtremum]-tangens*(peakLeft-peakBase);
            timeLTRight=Time[j]; cenaLTRight=afrx[baseExtremum] + tangens*(peakBase-j)-sdvigL;
           }
         else
           {
            timeLTLeft=afr[mChannels[i-1]]; cenaLTLeft=afrx[baseExtremum]-tangens*(peakLeft-peakBase);
            timeLTRight=Time[j]; cenaLTRight=afrx[baseExtremum] + tangens*(peakBase-j)+sdvigH;
           }

         if (ExtTypeLineChannels==1 || ExtTypeLineChannels==3)
           {
            n=j;
            wrcenaR=cenaLTRight;
            if (fTrend)
              {
               while (cenaLTRight<=afrx[mChannels[i]] && n>0) {n--; cenaLTRight=wrcenaR+tangens*(j-n);}
              }
            else
              {
               while (cenaLTRight>=afrx[mChannels[i]] && n>0) {n--; cenaLTRight=wrcenaR+tangens*(j-n);}
              }
            timeLTRight=Time[n];
            timeLTLeft=afr[baseExtremum];  cenaLTLeft=afrx[baseExtremum];
           }

         ObjectCreate(nameObj,OBJ_TREND,0,timeLTLeft,cenaLTLeft,timeLTRight,cenaLTRight);
         if (ExtTypeLineChannels<2) ObjectSet(nameObj,OBJPROP_RAY,ExtRay);
         ObjectSet(nameObj,OBJPROP_COLOR,ExtLTColor);
         ObjectSet(nameObj,OBJPROP_STYLE,ExtLTChannelsStyle);
         ObjectSet(nameObj,OBJPROP_WIDTH,ExtLTChannelsWidth);

         nameObj="LCChannel" + i + ExtComplekt+"_";
         if (ExtSave)
           {
            if (i!=DinamicChannels) nameObj=nameObj + save;
           }
         ObjectDelete(nameObj);

         if (fTrend)
           {
            cenaLCLeft=afrx[baseExtremum]+sdvigH-tangens*(peakLeft-peakBase);
           }
         else
           {
            cenaLCLeft=afrx[baseExtremum]-sdvigL-tangens*(peakLeft-peakBase);
           }
         timeLCLeft=afr[mChannels[i-1]];

         if (ExtTypeLineChannels==1 || ExtTypeLineChannels==3)
           {
            m=peakLeft;
            wrcenaL=cenaLCLeft;
            n=peakRight;
            wrcenaR=cenaLCRight;
            if (fTrend)
              {
               while (cenaLCLeft>=afrx[baseExtremum] && m<=Bars) {m++; cenaLCLeft=wrcenaL-tangens*(m-peakLeft);}
               while (cenaLCRight>=afrx[mChannels[i]] && n<=peakLeft) {n++; cenaLCRight=wrcenaR-tangens*(n-peakRight);}
              }
            else
              {
               while (cenaLCLeft<=afrx[baseExtremum] && m<=Bars) {m++; cenaLCLeft=wrcenaL-tangens*(m-peakLeft);}
               while (cenaLCRight<=afrx[mChannels[i]] && n<=peakLeft) {n++; cenaLCRight=wrcenaR-tangens*(n-peakRight);}
              }
            timeLCLeft=Time[m];
            cenaLCRight=wrcenaR-tangens*(n-1-peakRight);
            timeLCRight=Time[n-1];
           }

         ObjectCreate(nameObj,OBJ_TREND,0,timeLCLeft,cenaLCLeft,timeLCRight,cenaLCRight);
         if (ExtTypeLineChannels<2) ObjectSet(nameObj,OBJPROP_RAY,ExtRay);
         ObjectSet(nameObj,OBJPROP_COLOR,ExtLCColor);
         ObjectSet(nameObj,OBJPROP_STYLE,ExtLCChannelsStyle);
         ObjectSet(nameObj,OBJPROP_WIDTH,ExtLCChannelsWidth);

         if (dinamic) break;
        }
     }

   if (ExtTypeChannels==2)
     {
      if (dinamic) nul=DinamicChannels;
      else nul=1;

      for (i=1;i<k;i++)
        {
         sdvigH=0; sdvigL=0; sdvigH_=0; sdvigL_=0;

         peakLeft=iBarShift(Symbol(),Period(),afr[mChannels[i-1]],true);
         if (peakLeft<0) continue;
         peakRight=iBarShift(Symbol(),Period(),afr[mChannels[i]],true);

         if (peakRight<0) continue;
         if (peakLeft==peakRight) continue;
         if (afrx[mChannels[i-1]]<afrx[mChannels[i]]) fTrend=true; else fTrend=false;

         tangens=(afrx[mChannels[i]]-afrx[mChannels[i-1]])/(peakLeft-peakRight);

         for (j=peakLeft;j>=peakRight;j--) // ????????? ??????
           {
            sdvigH_=High[j] - (afrx[mChannels[i-1]] + tangens*(peakLeft-j));
            sdvigL_=afrx[mChannels[i-1]] + tangens*(peakLeft-j)-Low[j];
            if (sdvigH_>sdvigH) sdvigH=sdvigH_;
            if (sdvigL_>sdvigL) sdvigL=sdvigL_;
           }

         if (ExtTypeLineChannels==0)
           {
            while (j>=0)
              {
               if (fTrend)
                 {
                  if (afrx[mChannels[i-1]] + tangens*(peakLeft-j)-Low[j]>sdvigL) break;
                 }
               else
                 {
                  if (High[j] - (afrx[mChannels[i-1]] + tangens*(peakLeft-j))>sdvigH) break;
                 }
               j--;
              }
           }

         if (j<0) j=0;

         nameObj="LTChannel" + i + ExtComplekt+"_";
         if (ExtSave)
           {
            if (i!=DinamicChannels) nameObj=nameObj + save;
           }
         ObjectDelete(nameObj);
         if (fTrend)
           {
            timeLTLeft=afr[mChannels[i-1]];  cenaLTLeft=afrx[mChannels[i-1]]-sdvigL;
            timeLTRight=Time[j]; cenaLTRight=afrx[mChannels[i-1]] + tangens*(peakLeft-j)-sdvigL;
           }
         else
           {
            timeLTLeft=afr[mChannels[i-1]]; cenaLTLeft=afrx[mChannels[i-1]]+sdvigH;
            timeLTRight=Time[j]; cenaLTRight=afrx[mChannels[i-1]] + tangens*(peakLeft-j)+sdvigH;
           }

         if (ExtTypeLineChannels==1 || ExtTypeLineChannels==3)
           {
            if (fTrend)
              {
               m=peakLeft;
               wrcenaL=cenaLTLeft;
               while (cenaLTLeft<afrx[mChannels[i-1]] && m>=peakRight) {m--; cenaLTLeft=wrcenaL+tangens*(peakLeft-m);}
               timeLTLeft=Time[m+1];  cenaLTLeft=wrcenaL+tangens*(peakLeft-m-1);

               n=peakRight;
               wrcenaR=cenaLTRight;
               while (cenaLTRight<afrx[mChannels[i]] && n>0) {n--; cenaLTRight=wrcenaL+tangens*(peakLeft-n);}
               timeLTRight=Time[n];
              }
            else
              {
               m=peakLeft;
               wrcenaL=cenaLTLeft;
               while (cenaLTLeft>=afrx[mChannels[i-1]] && m>=peakRight) {m--; cenaLTLeft=wrcenaL+tangens*(peakLeft-m);}
               timeLTLeft=Time[m+1];  cenaLTLeft=wrcenaL+tangens*(peakLeft-m-1);

               n=peakRight;
               wrcenaR=cenaLTRight;
               while (cenaLTRight>afrx[mChannels[i]] && n>0) {n--; cenaLTRight=wrcenaL+tangens*(peakLeft-n);}
               timeLTRight=Time[n];
              }
            }

         ObjectCreate(nameObj,OBJ_TREND,0,timeLTLeft,cenaLTLeft,timeLTRight,cenaLTRight);
         if (ExtTypeLineChannels<2) ObjectSet(nameObj,OBJPROP_RAY,false);
         ObjectSet(nameObj,OBJPROP_COLOR,ExtLTColor);
         ObjectSet(nameObj,OBJPROP_STYLE,ExtLTChannelsStyle);
         ObjectSet(nameObj,OBJPROP_WIDTH,ExtLTChannelsWidth);

         nameObj="LCChannel" + i + ExtComplekt+"_";
         if (ExtSave)
           {
            if (i!=DinamicChannels) nameObj=nameObj + save;
           }
         ObjectDelete(nameObj);
         if (fTrend)
           {
            timeLCLeft=afr[mChannels[i-1]]; cenaLCLeft=afrx[mChannels[i-1]]+sdvigH;
            timeLCRight=afr[mChannels[i]]; cenaLCRight=afrx[mChannels[i]]+sdvigH;
           }
         else
           {
            timeLCLeft=afr[mChannels[i-1]]; cenaLCLeft=afrx[mChannels[i-1]]-sdvigL;
            timeLCRight=afr[mChannels[i]]; cenaLCRight=afrx[mChannels[i]]-sdvigL;
           }

         if (ExtTypeLineChannels==1 || ExtTypeLineChannels==3)
           {
            if (fTrend)
              {
               m=peakLeft;
               wrcenaL=cenaLCLeft;
               while (cenaLCLeft>afrx[mChannels[i-1]] && m<Bars) {m++; cenaLCLeft=wrcenaL-tangens*(m-peakLeft);}
               timeLCLeft=Time[m];

               n=peakRight;
               wrcenaR=cenaLCRight;
               while (cenaLCRight>afrx[mChannels[i]] && n<peakLeft) {n++; cenaLCRight=wrcenaR-tangens*(n-peakRight);}
               timeLCRight=Time[n-1]; cenaLCRight=wrcenaR-tangens*(n-1-peakRight);
              }
            else
              {
               m=peakLeft;
               wrcenaL=cenaLCLeft;
               while (cenaLCLeft<=afrx[mChannels[i-1]] && m<=Bars) {m++; cenaLCLeft=wrcenaL-tangens*(m-peakLeft);}
               timeLCLeft=Time[m];

               n=peakRight;
               wrcenaR=cenaLCRight;
               while (cenaLCRight<=afrx[mChannels[i]] && n<=peakLeft) {n++; cenaLCRight=wrcenaR-tangens*(n-peakRight);}
               timeLCRight=Time[n-1]; cenaLCRight=wrcenaR-tangens*(n-1-peakRight);
              }
            }

         ObjectCreate(nameObj,OBJ_TREND,0,timeLCLeft,cenaLCLeft,timeLCRight,cenaLCRight);
         if (ExtTypeLineChannels<2) ObjectSet(nameObj,OBJPROP_RAY,false);
         ObjectSet(nameObj,OBJPROP_COLOR,ExtLCColor);
         ObjectSet(nameObj,OBJPROP_STYLE,ExtLCChannelsStyle);
         ObjectSet(nameObj,OBJPROP_WIDTH,ExtLCChannelsWidth);

         if (dinamic) break;
        }
     }

   ExtChannelsNum=0;
  }

void PivotZZ(int PivotZZColor, int PivotZZNum, int LinePivotZZ)
  {
   int peak1, peak2, shift;
   double tangens, cena, val;
   peak1=iBarShift(Symbol(),Period(),afr[PivotZZNum-1]);
   peak2=iBarShift(Symbol(),Period(),afr[PivotZZNum]);

   nameObj="LinePivotZZ" + LinePivotZZ + ExtComplekt+"_";
   if (ExtSave)
     {
      nameObj=nameObj + save;
     }
   ObjectDelete(nameObj);
   if (peak1>1)
     {
      cena=(zz[peak2]+zz[peak1]+Close[peak1-1])/3;

      tangens=(zz[peak2]-zz[peak1])/(peak2-peak1);
      val=zz[peak1];
      for (shift=peak1; shift<peak2; shift++)
        {
         val=val+tangens;
         if (zz[peak2]>zz[peak1])
           {
            if (val>cena) break;
           }
         else
           {
            if (val<cena) break;
           }
        }

      ObjectCreate(nameObj,OBJ_TREND,0,Time[shift+1],cena,Time[0]+5*Period()*60,cena);
      ObjectSet(nameObj,OBJPROP_COLOR,PivotZZColor);
      ObjectSet(nameObj,OBJPROP_STYLE,ExtPivotZZStyle);
      ObjectSet(nameObj,OBJPROP_WIDTH,ExtPivotZZWidth);
     }
  }

void VLS()
  {
   VL(mVL[0],mVL[1],mVL[2],ExtVLStaticColor,"VLS");
  }

void VLD()
  {
   VL(2,1,0,ExtVLDinamicColor,"VLD");
  }

void VL(int na,int nb,int nc,color color_line,string vl)
  {
   double line_pesavento[7]={0.236, 0.382, 0.447, 0.5, 0.618, 0.786, 0.886}, line_fibo[7]={0.236, 0.382, 0.455, 0.5, 0.545, 0.618, 0.764};
   int c_bar1, c_bar2, i;
   double H_L, mediana, tangens, cena;

   c_bar1=iBarShift(Symbol(),Period(),afr[na])-iBarShift(Symbol(),Period(),afr[nb]); // ?????????? ??? ? ??????? AB
   c_bar2=iBarShift(Symbol(),Period(),afr[nb])-iBarShift(Symbol(),Period(),afr[nc]); // ?????????? ??? ? ??????? ??
   if (afrl[na]>0)
    {
     H_L=afrh[nb]-afrl[nc]; // ?????? ??????? ??

     for (i=0; i<7; i++)
       {
        if (ExtFiboType==1)
          {
           mediana=line_pesavento[i]*H_L+afrl[nc];
           tangens=(mediana-afrl[na])/(c_bar1+(1-line_pesavento[i])*c_bar2);
           cena=c_bar2*line_pesavento[i]*tangens+mediana;
           nameObj=vl+i+" " + ExtComplekt+"_";
           ObjectDelete(nameObj);
           ObjectCreate(nameObj,OBJ_TREND,0,afr[na],afrl[na],afr[nc],cena);
           ObjectSetText(nameObj,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" "+vl+" "+DoubleToStr(line_pesavento[i]*100,1)+"");
          }
        else
          {
           mediana=line_fibo[i]*H_L+afrl[nc];
           tangens=(mediana-afrl[na])/(c_bar1+(1-line_fibo[i])*c_bar2);
           cena=c_bar2*line_fibo[i]*tangens+mediana;
           nameObj=vl+i+" " + ExtComplekt+"_";
           ObjectDelete(nameObj);
           ObjectCreate(nameObj,OBJ_TREND,0,afr[na],afrl[na],afr[nc],cena);
           ObjectSetText(nameObj,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" "+vl+" "+DoubleToStr(line_fibo[i]*100,1)+"");
          }
        ObjectSet(nameObj,OBJPROP_COLOR,color_line);
        ObjectSet(nameObj,OBJPROP_STYLE,ExtVLStyle);
        ObjectSet(nameObj,OBJPROP_WIDTH,ExtVLWidth);
       }
    }
   else
    {
     H_L=afrh[nc]-afrl[nb]; // ?????? ??????? ??

     for (i=0; i<7; i++)
       {
        if (ExtFiboType==1)
          {
           mediana=afrh[nc]-line_pesavento[i]*H_L;
           tangens=(afrh[na]-mediana)/(c_bar1+(1-line_pesavento[i])*c_bar2);
           cena=mediana-c_bar2*line_pesavento[i]*tangens;
           nameObj=vl+i+" " + ExtComplekt+"_";
           ObjectDelete(nameObj);
           ObjectCreate(nameObj,OBJ_TREND,0,afr[na],afrh[na],afr[nc],cena);
           ObjectSetText(nameObj,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" "+vl+" "+DoubleToStr(line_pesavento[i]*100,1)+"");
          }
        else
          {
           mediana=afrh[nc]-line_fibo[i]*H_L;
           tangens=(afrh[na]-mediana)/(c_bar1+(1-line_fibo[i])*c_bar2);
           cena=mediana-c_bar2*line_fibo[i]*tangens;
           nameObj=vl+i+" " + ExtComplekt+"_";
           ObjectDelete(nameObj);
           ObjectCreate(nameObj,OBJ_TREND,0,afr[na],afrh[na],afr[nc],cena);
           ObjectSetText(nameObj,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" "+vl+" "+DoubleToStr(line_fibo[i]*100,1)+"");
          }
        ObjectSet(nameObj,OBJPROP_COLOR,color_line);
        ObjectSet(nameObj,OBJPROP_STYLE,ExtVLStyle);
        ObjectSet(nameObj,OBJPROP_WIDTH,ExtVLWidth);
       }
    }
  }

void screenPitchforkS()
  {
   int i, i_APm=0, count_APm=0;
   double a1,b1,c1,ab1,bc1,ab2,bc2,tangens,n1,cl1,ch1,cena,wr,wr1,wr2;
   datetime ta1,tb1,tc1,tab2,tbc2,tcl1,tch1,twr1,twr2;
   int    a0,b0,c0;
   int    i_AM, i_period, tf, k_AM, const_AM, hl, i_tf;
   datetime end, time_AM[3];
   double cena_AM[3];
   bool exit_tf, end_tf[3];
   int    pitch_time[]={0,0,0}; 
   double pitch_cena[]={0,0,0};
   double TLine, m618=phi-1, m382=2-phi;
   bool   moveAP=false;
   string txt="";
   if (ExtCustomStaticAP)
     {
      if (ObjectFind(nameCheckLabel)==0)
        {

         if (ObjectGet(nameCheckLabel,OBJPROP_XDISTANCE)!=vX || ObjectGet(nameCheckLabel,OBJPROP_YDISTANCE)!=vY)
           {
            if (ObjectFind(nameCheckLabel_hidden)==0)
              {
               i_APm=StrToInteger(StringSubstr(ObjectDescription(nameCheckLabel_hidden),0,1));
               count_APm=StrToInteger(StringSubstr(ObjectDescription(nameCheckLabel_hidden),2));
               count_APm--;

               if (count_APm<1) txt=""+i_APm+"_"+i_APm; else txt=""+i_APm+"_"+count_APm;
               ObjectSetText(nameCheckLabel_hidden,txt);
              }

            if (count_APm<1)
              {
               ObjectDelete(nameCheckLabel);
               ObjectCreate(nameCheckLabel,OBJ_LABEL,0,0,0);

               ObjectSetText(nameCheckLabel,"APm");
               ObjectSet(nameCheckLabel, OBJPROP_FONTSIZE, 10);
               ObjectSet(nameCheckLabel, OBJPROP_COLOR, Red);

               ObjectSet(nameCheckLabel, OBJPROP_CORNER, 1);
               ObjectSet(nameCheckLabel, OBJPROP_XDISTANCE, vX);
               ObjectSet(nameCheckLabel, OBJPROP_YDISTANCE, vY);
              }

           if (ObjectFind("pitchforkS" + ExtComplekt+"_")==0) {moveAP=true; nameObj="pitchforkS" + ExtComplekt+"_";}
           if (ObjectFind("pitchforkS" + ExtComplekt+"_APm_")==0) {moveAP=true; nameObj="pitchforkS" + ExtComplekt+"_APm_";}
          }
        else
          {
           if (ObjectFind("pitchforkS" + ExtComplekt+"_APm_")==0) return;
          }
        }
      else
        {
         ObjectCreate(nameCheckLabel,OBJ_LABEL,0,0,0);

         ObjectSetText(nameCheckLabel,"APm");
         ObjectSet(nameCheckLabel, OBJPROP_FONTSIZE, 10);
         ObjectSet(nameCheckLabel, OBJPROP_COLOR, Red);

         ObjectSet(nameCheckLabel, OBJPROP_CORNER, 1);
         ObjectSet(nameCheckLabel, OBJPROP_XDISTANCE, vX);
         ObjectSet(nameCheckLabel, OBJPROP_YDISTANCE, vY);
        }
     }

   if (moveAP)
     {
      mPitchCena[0]=ObjectGet(nameObj,OBJPROP_PRICE1);
      mPitchCena[1]=ObjectGet(nameObj,OBJPROP_PRICE2);
      mPitchCena[2]=ObjectGet(nameObj,OBJPROP_PRICE3);
      mPitchTime[0]=ObjectGet(nameObj,OBJPROP_TIME1);
      mPitchTime[1]=ObjectGet(nameObj,OBJPROP_TIME2);
      mPitchTime[2]=ObjectGet(nameObj,OBJPROP_TIME3);
      if (AutoMagnet)
        {
         for (i=0;i<3;i++) {cena_AM[i]=0;time_AM[i]=0;period_AM[i]=Period();end_tf[i]=true;}

         txt=StringSubstr("0000"+Period(),StringLen("0000"+Period())-5,5)+"00000000000";
         if (!ObjectFind(nameMagnet[0])==0)
           {
            ObjectCreate(nameMagnet[0],OBJ_TEXT,0,0,0);
            ObjectSet(nameMagnet[0], OBJPROP_COLOR, CLR_NONE);
            ObjectSetText(nameMagnet[0],txt);

            ObjectCreate(nameMagnet[1],OBJ_TEXT,0,0,0);
            ObjectSet(nameMagnet[1], OBJPROP_COLOR, CLR_NONE);
            ObjectSetText(nameMagnet[1],txt);

            ObjectCreate(nameMagnet[2],OBJ_TEXT,0,0,0);
            ObjectSet(nameMagnet[2], OBJPROP_COLOR, CLR_NONE);
            ObjectSetText(nameMagnet[2],txt);
           }
         else
           {
            for (i_AM=0;i_AM<3;i_AM++)
              {
               period_AM[i_AM]=StrToInteger(StringSubstr(ObjectDescription(nameMagnet[i_AM]),0,5));
               cena_AM[i_AM]=StrToDouble(StringSubstr(ObjectDescription(nameMagnet[i_AM]),14,10));
               time_AM[i]=StrToTime(StringSubstr(ObjectDescription(nameMagnet[i_AM]),5,10));
               if (mPitchCena[i_AM]==cena_AM[i_AM] && mPitchTime[i_AM]==time_AM[i_AM]) end_tf[i_AM]=false;
              }
           }

         for (i_AM=0;i_AM<3;i_AM++)
           {
            if (!end_tf[i_AM]) continue;
            const_AM=AMBars*2+1;
            hl=0;
            k_AM=iBarShift(Symbol(),period_AM[i_AM],mPitchTime[i_AM],false);

            if (mPitchCena[i_AM]>=iHigh(Symbol(),period_AM[i_AM],k_AM))
              {
               mPitchCena[i_AM]=0;
               hl=1;
               for(k_AM=k_AM+AMBars;const_AM>0;const_AM--)
                 {
                  if (iHigh(Symbol(),period_AM[i_AM],k_AM)>mPitchCena[i_AM])
                    {
                     mPitchCena[i_AM]=iHigh(Symbol(),period_AM[i_AM],k_AM);
                     mPitchTime[i_AM]=iTime(Symbol(),period_AM[i_AM],k_AM);
                    }
                  k_AM--;
                 }
              }
            else if (mPitchCena[i_AM]<=iLow(Symbol(),period_AM[i_AM],k_AM))
              {
               mPitchCena[i_AM]=1000000;
               hl=2;
               for(k_AM=k_AM+AMBars;const_AM>0;const_AM--)
                 {
                  if (iLow(Symbol(),period_AM[i_AM],k_AM)<mPitchCena[i_AM] && iLow(Symbol(),period_AM[i_AM],k_AM)>0)
                    {
                     mPitchCena[i_AM]=iLow(Symbol(),period_AM[i_AM],k_AM);
                     mPitchTime[i_AM]=iTime(Symbol(),period_AM[i_AM],k_AM);
                    }
                  k_AM--;
                 }
              }

            if (hl>0)
              {
               exit_tf=false;
               for (i_period=0;i_period<period_AM[i_AM];i_period++)
                 {
                  switch (i_period)
                    {
                     case 0: {tf=1; break;}
                     case 1: {tf=5; break;}
                     case 2: {tf=15; break;}
                     case 3: {tf=30; break;}
                     case 4: {tf=60; break;}
                     case 5: {tf=240; break;}
                     case 6: {tf=1440; break;}
                     case 7: {tf=10080; break;}
                     case 8: {tf=43200;}
                    }

                  k_AM=iBarShift(Symbol(),tf,mPitchTime[i_AM],false);
                  end=mPitchTime[i_AM]+period_AM[i_AM]*60;
                  if (hl==1)
                    {
                     for (i_tf=k_AM;iTime(Symbol(),tf,i_tf)<=end;i_tf--)
                       {
                        if (iHigh(Symbol(),tf,i_tf)>=mPitchCena[i_AM])
                          {
                           mPitchTime[i_AM]=iTime(Symbol(),tf,i_tf);
                           exit_tf=true;
                           break;
                          }
                       }
                    }
                  else
                    {
                     for (i_tf=k_AM;iTime(Symbol(),tf,i_tf)<=end;i_tf--)
                       {
                         if (iLow(Symbol(),tf,i_tf)<=mPitchCena[i_AM] && iLow(Symbol(),tf,i_tf)>0)
                          {
                           mPitchTime[i_AM]=iTime(Symbol(),tf,i_tf);
                           exit_tf=true;
                           break;
                          }
                      }
                    }

                  if (exit_tf)
                    {
                     ObjectSetText(nameMagnet[i_AM],StringSubstr("0000"+tf,StringLen("0000"+tf)-5,5)+StringSubstr("000000000"+mPitchTime[i_AM],StringLen("000000000"+mPitchTime[i_AM])-10,1010)+""+mPitchCena[i_AM]);
                     break;
                    }
                 }
              }
           }
        }
     }
   else
     {
      if (ExtPitchforkCandle)
        {
         if (iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)==0)
           {
            if (ExtPitchfork_1_HighLow)
              {
               mPitchCena[2]=High[iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)];
              }
            else
              {
               mPitchCena[2]=Low[iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)];
              }
           }

         cena=mPitchCena[0];
         if (ExtPitchfork_1_HighLow)
           {
            if (ExtCM_0_1A_2B_Static==1)
              {
               cena=mPitchCena[0]-(mPitchCena[0]-mPitchCena[1])*ExtCM_FiboStatic;
              }
            else if (ExtCM_0_1A_2B_Static==4)
              {
               mPitchTimeSave=mPitchTime[0];
               mPitchTime[0]=mPitchTime[1];
               if (maxGipotenuza4(mPitchTime,mPitchCena))
                 {
                  cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m618;
                 }
               else
                 {
                  cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m382;
                 }
              }
            else if (ExtCM_0_1A_2B_Static==5)
              {
               mPitchTimeSave=mPitchTime[0];
               mPitchTime[0]=mPitchTime[1];
               if (maxGipotenuza5(mPitchTime,mPitchCena))
                 {
                  cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m618;
                 }
               else
                 {
                  cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m382;
                 }
              }
            else if (ExtCM_0_1A_2B_Static>1)
              {
               if (ExtCM_0_1A_2B_Static==2) mPitchTime[0]=mPitchTime[1];
               cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*ExtCM_FiboStatic;
              }
           }
         else
           {
            if (ExtCM_0_1A_2B_Static==1)
              {
               cena=mPitchCena[0]+(mPitchCena[1]-mPitchCena[0])*ExtCM_FiboStatic;
              }
            else if (ExtCM_0_1A_2B_Static==4)
              {
               mPitchTimeSave=mPitchTime[0];
               mPitchTime[0]=mPitchTime[1];
               if (maxGipotenuza4(mPitchTime,mPitchCena))
                 {
                  cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m618;
                 }
               else
                 {
                  cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m382;
                 }
              }
            else if (ExtCM_0_1A_2B_Static==5)
              {
               mPitchTimeSave=mPitchTime[0];
               mPitchTime[0]=mPitchTime[1];
               if (maxGipotenuza5(mPitchTime,mPitchCena))
                 {
                  cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m618;
                 }
               else
                 {
                  cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m382;
                 }
              }
            else if (ExtCM_0_1A_2B_Static>1)
              {
               if (ExtCM_0_1A_2B_Static==2) mPitchTime[0]=mPitchTime[1];
               cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*ExtCM_FiboStatic;
              }
           }
        }
      else
        {
         mPitchTime[0]=afr[mPitch[0]]; mPitchTime[1]=afr[mPitch[1]]; mPitchTime[2]=afr[mPitch[2]];

         if (mPitchTime[0]==0) return;

         if (afrl[mPitch[0]]>0)
           {
            cena=afrl[mPitch[0]]; 
            mPitchCena[1]=afrh[mPitch[1]]; mPitchCena[2]=afrl[mPitch[2]];
            if (ExtCM_0_1A_2B_Static==1)
              {
               cena=mPitchCena[0]+(mPitchCena[1]-mPitchCena[0])*ExtCM_FiboStatic;
              }
            else if (ExtCM_0_1A_2B_Static==4)
              {
               mPitchTimeSave=mPitchTime[0];
               mPitchTime[0]=mPitchTime[1];
               if (maxGipotenuza4(mPitchTime,mPitchCena))
                 {
                  cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m618;
                 }
               else
                 {
                  cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m382;
                 }
              }
            else if (ExtCM_0_1A_2B_Static==5)
              {
               mPitchTimeSave=mPitchTime[0];
               mPitchTime[0]=mPitchTime[1];
               if (maxGipotenuza5(mPitchTime,mPitchCena))
                 {
                  cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m618;
                 }
               else
                 {
                  cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m382;
                 }
              }
            else if (ExtCM_0_1A_2B_Static>1)
              {
               if (ExtCM_0_1A_2B_Static==2) mPitchTime[0]=mPitchTime[1];
               cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*ExtCM_FiboStatic;
              }
           }
         else
           {
            cena=afrh[mPitch[0]];
            mPitchCena[1]=afrl[mPitch[1]]; mPitchCena[2]=afrh[mPitch[2]];
            if (ExtCM_0_1A_2B_Static==1)
              {
               cena=mPitchCena[0]-(mPitchCena[0]-mPitchCena[1])*ExtCM_FiboStatic;
              }
            else if (ExtCM_0_1A_2B_Static==4)
              {
               mPitchTimeSave=mPitchTime[0];
               mPitchTime[0]=mPitchTime[1];
               if (maxGipotenuza4(mPitchTime,mPitchCena))
                 {
                  cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m618;
                 }
               else
                 {
                  cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m382;
                 }
              }
            else if (ExtCM_0_1A_2B_Static==5)
              {
               mPitchTimeSave=mPitchTime[0];
               mPitchTime[0]=mPitchTime[1];
               if (maxGipotenuza5(mPitchTime,mPitchCena))
                 {
                  cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m618;
                 }
               else
                 {
                  cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m382;
                 }
              }
            else if (ExtCM_0_1A_2B_Static>1)
              {
               if (ExtCM_0_1A_2B_Static==2) mPitchTime[0]=mPitchTime[1];
               cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*ExtCM_FiboStatic;
              }
           }
        }

      mPitchCena[0]=cena;
     }

   if (ExtFiboFanStatic) {ExtFiboFanStatic=false; screenFiboFanS();}

   coordinaty_1_2_mediany_AP(mPitchCena[0], mPitchCena[1], mPitchCena[2], mPitchTime[0], mPitchTime[1], mPitchTime[2], tab2, tbc2, ab1, bc1, ExtPitchforkStatic, ExtPitchforkStaticCustom);

   pitch_time[0]=tab2;pitch_cena[0]=ab1;

   if (ExtPitchforkStatic==2)
     {
      nameObj="pmedianaS" + ExtComplekt+"_";

      if (ExtSave)
        {
         if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
           {
            nameObj=nameObj + save;
           }
         else
           {
            if (mPitch[2]>0)
              {
               nameObj=nameObj + save;
              }
           }
        }

      ObjectDelete(nameObj);
      ObjectCreate(nameObj,OBJ_TREND,0,tab2,ab1,tbc2,bc1);
      ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DASH);
      ObjectSet(nameObj,OBJPROP_COLOR,ExtLinePitchforkS);
      ObjectSet(nameObj,OBJPROP_BACK,ExtBack);

      if (ExtSLMStatic)
        {
         b0=iBarShift(Symbol(),Period(),mPitchTime[1]);
         c0=iBarShift(Symbol(),Period(),mPitchTime[2]);

         wr=(ObjectGetValueByShift(nameObj,c0)-mPitchCena[2])*(1-2*m382);

         a0=c0-(c0-b0)*m382-1;

         twr1=iTime(Symbol(),Period(),a0);

         wr1=ObjectGetValueByShift(nameObj,a0)-wr;

         wr2=ObjectGetValueByShift(nameObj,0)-wr;
         twr2=iTime(Symbol(),Period(),0);

         nameObj="SLM382S" + ExtComplekt+"_";
         if (ExtSave)
           {
            if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
              {
               nameObj=nameObj + save;
              }
            else
              {
               if (mPitch[2]>0)
                 {
                  nameObj=nameObj + save;
                 }
              }
           }
         ObjectDelete(nameObj);
         ObjectCreate(nameObj,OBJ_TREND,0,twr1,wr1,twr2,wr2);
         ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DASH);
         ObjectSet(nameObj,OBJPROP_COLOR,ExtSLMStaticColor);
         ObjectSet(nameObj,OBJPROP_BACK,ExtBack);

         a0=c0-(c0-b0)*m618-1;

         twr1=iTime(Symbol(),Period(),a0);

         nameObj="pmedianaS" + ExtComplekt+"_";
         wr1=ObjectGetValueByShift(nameObj,a0)+wr;

         wr2=ObjectGetValueByShift(nameObj,0)+wr;
         twr2=iTime(Symbol(),Period(),0);

         nameObj="SLM618S" + ExtComplekt+"_";
         if (ExtSave)
           {
            if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
              {
               nameObj=nameObj + save;
              }
            else
              {
               if (mPitch[2]>0)
                 {
                  nameObj=nameObj + save;
                 }
              }
           }
         ObjectDelete(nameObj);
         ObjectCreate(nameObj,OBJ_TREND,0,twr1,wr1,twr2,wr2);
         ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DASH);
         ObjectSet(nameObj,OBJPROP_COLOR,ExtSLMStaticColor);
         ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
        }

      if (ExtFSLShiffLinesStatic)
        {
         c0=iBarShift(Symbol(),Period(),mPitchTime[1]);

         twr1=mPitchTime[1];

         wr1=mPitchCena[1];

         nameObj="pmedianaS" + ExtComplekt+"_";
         wr2=ObjectGetValueByShift(nameObj,0)-ObjectGetValueByShift(nameObj,c0)+mPitchCena[1];
         twr2=iTime(Symbol(),Period(),0);

         nameObj="FSL Shiff Lines S" + ExtComplekt+"_";
         if (ExtSave)
           {
            if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
              {
               nameObj=nameObj + save;
              }
            else
              {
               if (mPitch[2]>0)
                 {
                  nameObj=nameObj + save;
                 }
              }
           }
         ObjectDelete(nameObj);
         ObjectCreate(nameObj,OBJ_TREND,0,twr1,wr1,twr2,wr2);
         ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DASH);
         ObjectSet(nameObj,OBJPROP_COLOR,ExtFSLShiffLinesStaticColor);
         ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
        }

      nameObj="1-2pmedianaS" + ExtComplekt+"_";

      if (ExtSave)
        {
         if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
           {
            nameObj=nameObj + save;
           }
         else
           {
            if (mPitch[2]>0)
              {
               nameObj=nameObj + save;
              }
           }
        }
      ObjectDelete(nameObj);
      ObjectCreate(nameObj,OBJ_TEXT,0,tab2,ab1+3*Point);
      ObjectSetText(nameObj,"     1/2 ML",9,"Arial", ExtLinePitchforkS);
     }   

   if (ExtCustomStaticAP) nameObj="pitchforkS" + ExtComplekt+"_APm_"; else nameObj="pitchforkS" + ExtComplekt+"_";
   if (ExtSave)
     {
      if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
        {
         nameObj=nameObj + save;
        }
      else
        {
         if (mPitch[2]>0)
           {
            nameObj=nameObj + save;
           }
        }
     }

   if (ExtPitchforkStatic!=4)
     {
      pitch_time[0]=mPitchTime[0];pitch_cena[0]=mPitchCena[0];
      if (ExtPitchforkStatic==3) pitch_cena[0]=ab1;
     }
   pitch_time[1]=mPitchTime[1];pitch_cena[1]=mPitchCena[1];
   pitch_time[2]=mPitchTime[2];pitch_cena[2]=mPitchCena[2];

   mAPs=false;
   if (ObjectFind(nameObj)>=0)
     {
      if (mAP)
        {
         if (ObjectGet(nameObj,OBJPROP_TIME1)!=pitch_time[0] || ObjectGet(nameObj,OBJPROP_PRICE1)!=pitch_cena[0] ||
             ObjectGet(nameObj,OBJPROP_TIME2)!=pitch_time[1] || ObjectGet(nameObj,OBJPROP_PRICE2)!=pitch_cena[1] ||
             ObjectGet(nameObj,OBJPROP_TIME3)!=pitch_time[2] || ObjectGet(nameObj,OBJPROP_PRICE3)!=pitch_cena[2] ||
             ExtCustomStaticAP) {mAPs=true; RZs=-1;}
        } 

      ObjectDelete(nameObj);
     }
   else if (mAP) {mAPs=true; RZs=-1;}

   if (AutoTestRedZone && !ExtCustomStaticAP && !ExtPitchforkCandle)
     {
      if (afr[mPitch[2]-1]>0)
        {
         pitch_timeRZ[0]=afr[mPitch[0]-1];
         pitch_timeRZ[1]=afr[mPitch[1]-1];
         pitch_timeRZ[2]=afr[mPitch[2]-1];
         if (afrl[mPitch[0]-1]>0)
           {
            pitch_cenaRZ[0]=afrl[mPitch[0]-1];
            pitch_cenaRZ[1]=afrh[mPitch[1]-1];
            pitch_cenaRZ[2]=afrl[mPitch[2]-1];
           }
         else
           {
            pitch_cenaRZ[0]=afrh[mPitch[0]-1];
            pitch_cenaRZ[1]=afrl[mPitch[1]-1];
            pitch_cenaRZ[2]=afrh[mPitch[2]-1];
           }
        }
     }

   if (mOutRedZone && mAuto_s)
     {
      pitch_timeS[0]=pitch_time[0];
      pitch_timeS[1]=pitch_time[1];
      pitch_timeS[2]=pitch_time[2];

      pitch_cenaS[0]=pitch_cena[0];
      pitch_cenaS[1]=pitch_cena[1];
      pitch_cenaS[2]=pitch_cena[2];

      aOutRedZone[1]=false;
      _RZ("RZS", ExtRZStaticValue, ExtRZStaticColor, pitch_timeS, pitch_cenaS, ExtRedZoneStatic, 0, false);
     }

   ObjectCreate(nameObj,OBJ_PITCHFORK,0,pitch_time[0],pitch_cena[0],pitch_time[1],pitch_cena[1],pitch_time[2],pitch_cena[2]);
   ObjectSet(nameObj,OBJPROP_STYLE,ExtPitchforkStyle);
   ObjectSet(nameObj,OBJPROP_WIDTH,ExtPitchforkWidth);
   ObjectSet(nameObj,OBJPROP_COLOR,ExtLinePitchforkS);
   ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
   if (ExtMasterPitchfork==2)
     {
      nameObjAPMaster="Master_"+nameObj;
      ObjectDelete(nameObjAPMaster);
      ObjectCreate(nameObjAPMaster,OBJ_PITCHFORK,0,pitch_time[0],pitch_cena[0],pitch_time[1],pitch_cena[1],pitch_time[2],pitch_cena[2]);
      ObjectSet(nameObjAPMaster,OBJPROP_STYLE,ExtPitchforkStyle);
      ObjectSet(nameObjAPMaster,OBJPROP_WIDTH,ExtPitchforkWidth);
      ObjectSet(nameObjAPMaster,OBJPROP_COLOR,CLR_NONE);
      ObjectSet(nameObjAPMaster,OBJPROP_BACK,true);
     }

   if (ExtFiboFanMedianaStaticColor>0)
     {
      coordinaty_mediany_AP(pitch_cena[0], pitch_cena[1], pitch_cena[2], pitch_time[0], pitch_time[1], pitch_time[2], tb1, b1);      

      nameObj="FanMedianaStatic" + ExtComplekt+"_";
/*
      if (ExtSave)
        {
         if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
           {
            nameObj=nameObj + save;
           }
         else
           {
            if (mPitch[2]>0)
              {
               nameObj=nameObj + save;
              }
           }
        }
*/
      ObjectDelete(nameObj);

      ObjectSet(nameObj,OBJPROP_COLOR,CLR_NONE);
      ObjectCreate(nameObj,OBJ_FIBOFAN,0,pitch_time[0],pitch_cena[0],tb1,b1);
      ObjectSet(nameObj,OBJPROP_LEVELSTYLE,STYLE_DASH);
      ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtFiboFanMedianaStaticColor);
      ObjectSet(nameObj,OBJPROP_BACK,ExtBack);

      if (ExtFiboType==0)
        {
         screenFibo_st();
        }
      else if (ExtFiboType==1)
        {
         screenFibo_Pesavento();
        }
      else if (ExtFiboType==2)
        {
         ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi);
         for (i=0;i<Sizefi;i++)
           {
            ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi[i]);
            ObjectSetFiboDescription(nameObj, i, fitxt100[i]); 
           }
        }
     }

   if (ExtUTL)
     {
      nameObj=nameUTL;
      if (ExtSave)
        {
         if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
           {
            nameObj=nameObj + save;
           }
         else
           {
            if (mPitch[2]>0)
              {
               nameObj=nameObj + save;
              }
           }
        }

      ObjectDelete(nameObj);
      if (pitch_cena[1]>pitch_cena[2])
        {
         ObjectCreate(nameObj,OBJ_TREND,0,pitch_time[0],pitch_cena[0],pitch_time[1],pitch_cena[1]);
        }
      else
        {
         ObjectCreate(nameObj,OBJ_TREND,0,pitch_time[0],pitch_cena[0],pitch_time[2],pitch_cena[2]);
        }
      ObjectSet(nameObj,OBJPROP_STYLE,STYLE_SOLID);
      ObjectSet(nameObj,OBJPROP_COLOR,ExtLinePitchforkS);
      ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
     }

   if (ExtPivotZoneStaticColor>0 && ExtPitchforkStatic<4) PivotZone(pitch_time, pitch_cena, ExtPivotZoneStaticColor, "PivotZoneS");

   if (ExtLTL)
     {
      nameObj=nameLTL;
      if (ExtSave)
        {
         if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
           {
            nameObj=nameObj + save;
           }
         else
           {
            if (mPitch[2]>0)
              {
               nameObj=nameObj + save;
              }
           }
        }

      ObjectDelete(nameObj);
      if (pitch_cena[1]>pitch_cena[2])
        {
         ObjectCreate(nameObj,OBJ_TREND,0,pitch_time[0],pitch_cena[0],pitch_time[2],pitch_cena[2]);
        }
      else
        {
         ObjectCreate(nameObj,OBJ_TREND,0,pitch_time[0],pitch_cena[0],pitch_time[1],pitch_cena[1]);
        }
      ObjectSet(nameObj,OBJPROP_STYLE,STYLE_SOLID);
      ObjectSet(nameObj,OBJPROP_COLOR,ExtLinePitchforkS);
      ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
     }

   if (ExtUWL || ExtLWL)
     {
      n1=iBarShift(Symbol(),Period(),pitch_time[0])-(iBarShift(Symbol(),Period(),pitch_time[1])+iBarShift(Symbol(),Period(),pitch_time[2]))/2.0;
      ta1=pitch_time[0];
      tb1=Time[0];
      a1=pitch_cena[0];
      tangens=(pitch_cena[0]-(pitch_cena[1]+pitch_cena[2])/2.0)/n1;
      b1=pitch_cena[0]-tangens*iBarShift(Symbol(),Period(),pitch_time[0]);

      ML_RL400(tangens, pitch_cena, pitch_time, tb1, b1, false);

      if (pitch_cena[1]>pitch_cena[2])
        {
         if (ExtUWL)
           {
            ch1=pitch_cena[1];
            tch1=pitch_time[1];
           }
         if (ExtLWL)
           {
            cl1=pitch_cena[2];
            tcl1=pitch_time[2];
           }
        }
      else
        {
         if (ExtUWL)
           {
            ch1=pitch_cena[2];
            tch1=pitch_time[2];
           }
         if (ExtLWL)
           {
            cl1=pitch_cena[1];
            tcl1=pitch_time[1];
           }
        }

      if (ExtUWL)
        {
         nameObj=nameUWL;
         if (ExtSave)
           {
            if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
              {
               nameObj=nameObj + save;
              }
            else
              {
               if (mPitch[2]>0)
                 {
                  nameObj=nameObj + save;
                 }
              }
           }

         ObjectDelete(nameObj);

         ObjectCreate(nameObj,OBJ_FIBOCHANNEL,0,ta1,a1,tb1,b1,tch1,ch1);
         ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtLinePitchforkS);
         ObjectSet(nameObj,OBJPROP_LEVELSTYLE,STYLE_DOT);
         ObjectSet(nameObj,OBJPROP_RAY,ExtLongWL);
         ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
         ObjectSet(nameObj,OBJPROP_COLOR,CLR_NONE);

         UWL_LWL (ExtVisibleUWL,nameObj,"UWL ",ExtFiboFreeUWL);
        }

      if (ExtLWL)
        {
         nameObj=nameLWL;
         if (ExtSave)
           {
            if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
              {
               nameObj=nameObj + save;
              }
            else
              {
               if (mPitch[2]>0)
                 {
                  nameObj=nameObj + save;
                 }
              }
           }

         ObjectDelete(nameObj);

         ObjectCreate(nameObj,OBJ_FIBOCHANNEL,0,ta1,a1,tb1,b1,tcl1,cl1);
         ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtLinePitchforkS);
         ObjectSet(nameObj,OBJPROP_LEVELSTYLE,STYLE_DOT);
         ObjectSet(nameObj,OBJPROP_RAY,ExtLongWL);
         ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
         ObjectSet(nameObj,OBJPROP_COLOR,CLR_NONE);

         UWL_LWL (ExtVisibleLWL,nameObj,"LWL ",ExtFiboFreeLWL);
        }

     }

   if (ExtPitchforkStaticColor>0)
     {

      n1=iBarShift(Symbol(),Period(),pitch_time[0])-(iBarShift(Symbol(),Period(),pitch_time[1])+iBarShift(Symbol(),Period(),pitch_time[2]))/2.0;

      TLine=pitch_cena[1]-iBarShift(Symbol(),Period(),pitch_time[1])*(pitch_cena[0]-(pitch_cena[2]+pitch_cena[1])/2)/n1;

      nameObj="CL" + ExtComplekt+"_";
/*
      if (ExtSave)
        {
         if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
           {
            nameObj=nameObj + save;
           }
         else
           {
            if (mPitch[2]>0)
              {
               nameObj=nameObj + save;
              }
           }
        }
*/
      ObjectDelete(nameObj);

      ObjectCreate(nameObj,OBJ_CHANNEL,0,pitch_time[1],pitch_cena[1],Time[0],TLine,pitch_time[2],pitch_cena[2]);
      ObjectSet(nameObj, OBJPROP_BACK, true);
      ObjectSet(nameObj, OBJPROP_COLOR, ExtPitchforkStaticColor); 
     }

   if (ExtISLChannelStaticColor>0)
     {
      channelISL(pitch_cena[0], pitch_cena[1], pitch_cena[2], pitch_time[0], pitch_time[1], pitch_time[2], 0);
     }

   if (ExtISLStatic)
     {
      _ISL("ISL_S", pitch_time, pitch_cena, ExtLinePitchforkS, ExtISLStyleStatic, 0, "");
     }

   if (ExtRLStatic)
     {
      _RL("RLineS", pitch_time, pitch_cena, ExtLinePitchforkS, ExtRLStyleStatic, ExtVisibleRLStatic, 0, "");
     }

   if (ExtRedZoneStatic>0)
     {
      _RZ("RZS", ExtRZStaticValue, ExtRZStaticColor, pitch_time, pitch_cena, ExtRedZoneStatic, 0, true);
     }

   fiboTimeX ();

   if (ExtCustomStaticAP)
     {
      if (mAPs || mAPd)
        {
         metkaAP(true);  // ???????? ????? ? ????? ???????
        }

      i_APm=0;
      for (i=ObjectsTotal()-1; i>=0; i--)
       {
         txt=ObjectName(i);

         if (ObjectType(txt)==OBJ_PITCHFORK)
           {
            if (StringFind(txt,"_APm",0)>0) i_APm++;
           }
        }

      ObjectDelete(nameCheckLabel_hidden);
      if (i_APm>1)
        {
         count_APm=StrToInteger(StringSubstr(ObjectDescription(nameCheckLabel_hidden),2));
         if (count_APm<1) txt=""+i_APm+"_"+i_APm; else txt=""+i_APm+"_"+count_APm;

         ObjectCreate(nameCheckLabel_hidden,OBJ_TEXT,0,0,0);

         ObjectSetText(nameCheckLabel_hidden,txt);
         ObjectSet(nameCheckLabel_hidden, OBJPROP_COLOR, CLR_NONE);
         ObjectSet(nameCheckLabel_hidden, OBJPROP_BACK, true);
        }
    }
  }

void metkaAP(bool create)
  {
   color  mclr;
   string prefics="";
   double cena1, cena2;
   int    i;

   if (create) // ???????? ?????
     {
      if (mSelectVariantsPRZ==0)
        {
         for (i=0;i<2;i++)
           {
            if (i==0 && mAPs)
              {
               if (_ExtPitchforkStatic==0) continue;
               if (!mStart)
                 {
                  if (mOutRedZone && !aOutRedZone[1] && mAuto_s) continue;
                 }
               _metkaAP(arrm_s, i, mAuto_s, 0);
              }
            else if (i==1 && mAPd)
              {
               if (ExtPitchforkDinamic==0) continue;
               if (!mStart)
                 {
                  if (mOutRedZone && !aOutRedZone[0] && mAuto_d) continue;
                 }
               _metkaAP(arrm_d, i, mAuto_d, 0);
              }
           }
        }
      else if(mSelectVariantsPRZ>0)
        {
         if (mTypeBasiclAP==0)
           {
            _metkaAP(arrm_s, 0, mAuto_s, 1);
            if (((mOutRedZone && aOutRedZone[0] && mAuto_d) || !mOutRedZone || mStart) && _ExtPitchforkStatic>0)
              {
               _metkaAP(arrm_d, 1, mAuto_d, 0);
              }
           }
         else if (mTypeBasiclAP==1)
           {
            _metkaAP(arrm_d, 1, mAuto_d, 1);
            if (((mOutRedZone && aOutRedZone[1] && mAuto_s) || !mOutRedZone || mStart) && ExtPitchforkDinamic>0)
              {
               _metkaAP(arrm_s, 0, mAuto_s, 0);
              }
           }
        }

      mAPs=false;
      mAPd=false;
     }
   else // ????? ?????????????? ????? ??? ?????? ???? ????? ?? ??????? ????? ?? ??????? ????
     {
      if (mSelectVariantsPRZ==0)
        {
         if (mAuto_s)
           {
            if (((mOutRedZone && aOutRedZone[1] && mAuto_s) || !mOutRedZone) && _ExtPitchforkStatic>0) new_metkaAP(arrm_s, 0, mAuto_s);
           }

         if (mAuto_d)
           {
            if (((mOutRedZone && aOutRedZone[0] && mAuto_d) || !mOutRedZone) && ExtPitchforkDinamic>0) new_metkaAP(arrm_d, 1, mAuto_d);
           }
        }
      else if(mSelectVariantsPRZ>0)
        {
         if (mTypeBasiclAP==0)
           {
            if (mAuto_d)
              {
               if (((mOutRedZone && aOutRedZone[0] && mAuto_d) || !mOutRedZone) && ExtPitchforkDinamic>0) new_metkaAP(arrm_d, 1, mAuto_d);
              }
           }
         else if (mTypeBasiclAP==1)
           {
            if (mAuto_s)
              {
               if (((mOutRedZone && aOutRedZone[1] && mAuto_s) || !mOutRedZone) && _ExtPitchforkStatic>0) new_metkaAP(arrm_s, 0, mAuto_s);
              }
           }
        }
     }

   prefics="m#"+ExtComplekt+"_";
   for (i=ObjectsTotal()-1;i>=0;i--)
     {
      nameObj=ObjectName(i);
      if (StringFind(nameObj,prefics)>-1)
        {
         if (ObjectType(nameObj)==OBJ_ARROW)
           {
            cena1=ObjectGet(nameObj,OBJPROP_PRICE1);
            if (iClose(NULL,Period(),0)<cena1) mclr=mColorUP;
            else if (iClose(NULL,Period(),0)>cena1) mclr=mColorDN;
            else mclr=mColor;
           }
         else if (ObjectType(nameObj)==OBJ_RECTANGLE || ObjectType(nameObj)==OBJ_TREND)
           {
            cena1=ObjectGet(nameObj,OBJPROP_PRICE1);
            cena2=ObjectGet(nameObj,OBJPROP_PRICE2);
            if (iClose(NULL,Period(),0)<cena1 && iClose(NULL,Period(),0)<cena2) mclr=mColorRectangleUP;
            else if (iClose(NULL,Period(),0)>cena1 && iClose(NULL,Period(),0)>cena2) mclr=mColorRectangleDN;
            else mclr=mColor;
           }
         if (!mPivotPointsChangeColor)
           {
            if (StringFind(nameObj,prefics+"s"+" point")>-1 || StringFind(nameObj,prefics+"d"+" point")>-1) continue;
           }
         ObjectSet(nameObj,OBJPROP_COLOR,mclr);
        }
     }

   WindowRedraw();
  }

void new_metkaAP(double& arrm[][], int sd, bool mAuto)
  {
   int      i_1, i_2, i_x, ii, n, j, a1, b1, c1;
   double   tangensAP, tangensUTL, tangensLTL;
   double   pitch_cena[]={0,0,0};
   datetime pitch_time[]={0,0,0};
   string   prefics="";
   string   wl="", tmp="", file="", nameObj="";
   int      handle=-1;
   bool     writetofile=false;
   string   _nameUWL="", _nameLWL="", _nameUTL="", _nameLTL="";
   bool     exitSL = false; // ???? ??? ?????? ????????? mExitFSL_SSL

   if (mAuto) exitSL=mExitFSL_SSL || Close[0]>=aexitFSL_SSL[1] || Close[0]<=aexitFSL_SSL[0]; else exitSL=true;
   if (sd==0) file="\\Price Label S\\";
   if (sd==1) file="\\Price Label D\\";

   if (sd==0)
     {
      _nameUWL=nameUWL;
      _nameLWL=nameLWL;
      _nameUTL=nameUTL;
      _nameLTL=nameLTL;
     }
   else
     {
      _nameUWL=nameUWLd;
      _nameLWL=nameLWLd;
      _nameUTL=nameUTLd;
      _nameLTL=nameLTLd;
     }

   if (anum_cena[sd][0]>0 && anum_cena[sd][1]<ArrayRange(arrm,0)-1)
     {
      if (arrm[anum_cena[sd][0]][0]>=iClose(NULL,Period(),0)) // ???????
        {
         i_1=anum_cena[sd][0]-1;
         i_x=i_1;
         if (arrm[i_1][0]>0)
           {
            anum_cena[sd][0]=i_1;
           }
         else return;
        }
      else if (arrm[anum_cena[sd][1]][0]<=iClose(NULL,Period(),0)) // ????????
        {
         i_2=anum_cena[sd][1]+1;
         i_x=i_2;
         if (arrm[i_2][0]>0)
           {
            anum_cena[sd][1]=i_2;
           }
         else return;
        }
      else return;

      ii=arrm[i_x][5];
      if (!exitSL && ii>10) return;

      if (sd==0)
        {
         if (ExtCustomStaticAP) nameObj="pitchforkS" + ExtComplekt+"_APm_"; else nameObj="pitchforkS" + ExtComplekt+"_";
         prefics="m#"+ExtComplekt+"_"+"s ";        //?????? ????????
        }
      else if (sd==1)
        {
         nameObj="pitchforkD" + ExtComplekt+"_"; 
         prefics="m#"+ExtComplekt+"_"+"d ";
        }

      pitch_time[0]=ObjectGet(nameObj,OBJPROP_TIME1); pitch_cena[0]=ObjectGet(nameObj,OBJPROP_PRICE1);
      pitch_time[1]=ObjectGet(nameObj,OBJPROP_TIME2); pitch_cena[1]=ObjectGet(nameObj,OBJPROP_PRICE2);
      pitch_time[2]=ObjectGet(nameObj,OBJPROP_TIME3); pitch_cena[2]=ObjectGet(nameObj,OBJPROP_PRICE3);

      a1=iBarShift(NULL,Period(),pitch_time[0],false);
      b1=iBarShift(NULL,Period(),pitch_time[1],false);
      c1=iBarShift(NULL,Period(),pitch_time[2],false);

      tangensAP=atg[sd][0];
      atg[sd][3]=tangensUTL;
      atg[sd][4]=tangensLTL;

      if (mWriteToFile)
        {

           {
            tmp="_";
            if (ExtMasterPitchfork>0)
              {
               tmp="_0_";
              }
            else
              {
               if (SlavePitchfork) tmp="_"+StringSubstr(""+ExtComplekt,StringLen(""+ExtComplekt)-1)+"_";
               else
                 {
                  j=ObjectsTotal();
                  for (n=0; n<j; n++)
                    {
                     if (ObjectType(ObjectName(n))==OBJ_PITCHFORK)
                       {
                        if (StringFind(ObjectName(n),"Master_",0)>=0)
                          {
                           tmp="_"+StringSubstr(""+ExtComplekt,StringLen(""+ExtComplekt)-1)+"_";
                           break;
                          }
                       }
                    }
                 }
              }

            writetofile=true;
            if (ExtIndicator==6 && GrossPeriod==Period()) file=file+Symbol()+"_"+GrossPeriod+tmp+ExtComplekt+".csv";
            else file=file+Symbol()+"_"+Period()+tmp+ExtComplekt+".csv";
            handle=FileOpen(file,FILE_CSV | FILE_READ | FILE_WRITE,';');
           }
        }

      if (ii==11 && mAuto && ObjectFind(_nameUTL)<0) visibleTL(pitch_cena, pitch_time, 11, sd);// UTL
      if (ii==12 && mAuto && ObjectFind(_nameLTL)<0) visibleTL(pitch_cena, pitch_time, 12, sd);// LTL

      if (ii>12) wl=DoubleToStr(arrm[i_x][6],3); else wl="";
      if (ii==13 && mAuto && ObjectFind(_nameUWL)<0) // UWL
        {
         if (ObjectFind(_nameUTL)<0) visibleTL(pitch_cena, pitch_time, 11, sd);// UTL
         if (sd==0)
           {
            visibleWL(pitch_cena, pitch_time, pitch_cena[0], pitch_time[0], pitch_cena[0]-tangensAP*a1, iTime(Symbol(),Period(),0), 13, sd, "", tangensAP, ExtLinePitchforkS, true);
           }
         else
           {
            visibleWL(pitch_cena, pitch_time, pitch_cena[0], pitch_time[0], pitch_cena[0]-tangensAP*a1, iTime(Symbol(),Period(),0), 13, sd, "", tangensAP, ExtLinePitchforkD, true);
           }
        }

      if (ii==14 && mAuto && ObjectFind(nameLWL)<0) // LWL
        {
         if (ObjectFind(_nameLTL)<0) visibleTL(pitch_cena, pitch_time, 12, sd);// LTL
         if (sd==0)
           {
            visibleWL(pitch_cena, pitch_time, pitch_cena[0], pitch_time[0], pitch_cena[0]-tangensAP*a1, iTime(Symbol(),Period(),0), 14, sd, "", tangensAP, ExtLinePitchforkS, true);
           }
         else
           {
            visibleWL(pitch_cena, pitch_time, pitch_cena[0], pitch_time[0], pitch_cena[0]-tangensAP*a1, iTime(Symbol(),Period(),0), 14, sd, "", tangensAP, ExtLinePitchforkD, true);
           }
        }

      if (aMetki[sd][ii]==1 || aMetki[sd][ii]==0)
        {
         nameObj=prefics+atextm[ii]+wl+" x 0-bar";
         ObjectCreate(nameObj,OBJ_ARROW,0,iTime(NULL,Period(),0),arrm[i_x][0]);
         ObjectSet(nameObj,OBJPROP_ARROWCODE,SYMBOL_RIGHTPRICE);
         ObjectSet(nameObj,OBJPROP_BACK,mBack);
         if (writetofile)
           {
            FileSeek(handle, 0, SEEK_END);
            FileWrite(handle, 0, ii, aMetki[sd][ii], 0, DoubleToStr(arrm[i_x][0], Digits), 0, DoubleToStr(iClose(NULL,Period(),0), Digits), sd,
            DoubleToStr(pitch_cena[0], Digits), DoubleToStr(pitch_cena[1], Digits), DoubleToStr(pitch_cena[2], Digits));
           }
        }
      else if (aMetki[sd][ii]>1 && arrm[i_x][4]>0)
        {
         if (aMetki[sd][ii]!=3 && aMetki[sd][ii]!=6 && aMetki[sd][ii]!=8)
           {
            nameObj=prefics+atextm[ii]+wl+" left 0-bar";
            ObjectCreate(nameObj,OBJ_ARROW,0,arrm[i_x][1],arrm[i_x][2]);
            ObjectSet(nameObj,OBJPROP_ARROWCODE,SYMBOL_LEFTPRICE);
            ObjectSet(nameObj,OBJPROP_BACK,mBack);

            nameObj=prefics+atextm[ii]+wl+" right 0-bar";
            ObjectCreate(nameObj,OBJ_ARROW,0,arrm[i_x][3],arrm[i_x][4]);
            ObjectSet(nameObj,OBJPROP_ARROWCODE,SYMBOL_RIGHTPRICE);
            ObjectSet(nameObj,OBJPROP_BACK,mBack);
           }

         if (aMetki[sd][ii]>7)
           {
            nameObj=prefics+atextm[ii]+wl+" line Zones";
            ObjectCreate(nameObj,OBJ_TREND,0,arrm[i_x][1],arrm[i_x][2],arrm[i_x][3],arrm[i_x][4]);
            ObjectSet(nameObj,OBJPROP_WIDTH,mLineZonesWidth); 
            ObjectSet(nameObj,OBJPROP_RAY,false); 
            ObjectSet(nameObj,OBJPROP_BACK,mBackZones); 
           }
         else if (aMetki[sd][ii]>2 && aMetki[sd][ii]!=5)
           {
            if (aMetki[sd][ii]>5) nameObj=prefics+"Shift "+atextm[ii]+wl+" Zones"; 
            else nameObj=prefics+atextm[ii]+wl+" Zones";
            ObjectCreate(nameObj,OBJ_RECTANGLE,0,arrm[i_x][1],arrm[i_x][2],arrm[i_x][3],arrm[i_x][4]);
            ObjectSet(nameObj,OBJPROP_BACK,mBackZones);
           }

         if (writetofile)
           {
            FileSeek(handle, 0, SEEK_END);
            FileWrite(handle, 0, ii, aMetki[sd][ii], DoubleToStr(arrm[i_x][2], Digits), 0, DoubleToStr(arrm[i_x][4], Digits), DoubleToStr(iClose(NULL,Period(),0), Digits), sd,
            DoubleToStr(pitch_cena[0], Digits), DoubleToStr(pitch_cena[1], Digits), DoubleToStr(pitch_cena[2], Digits));
           }
        }

      if (mWriteToFile)
        {
         if (FileSize(handle)<1) {FileClose(handle); FileDelete(file);} else FileClose(handle);
        }

     }
  }

/*

????? ?????????? ? ????
extern int    mPeriodWriteToFile       = 240;
extern bool   mWriteToFile             = true;

???????? ?????? ??????????: 

???????? ????? eurusd_1440_0.csv - ? ????? ?????????? ??????????, ?????????? ? ?????????? 1440 ????? (D1) ??? ?????????? ExtComplekt=0

?????? ????? ?????????? ???????????? ? ????:

????? ?????? ????????????? ??????? ???; ???????? ?????; ????? ?????? ?????; ???? ????? ?????; ???? ????? ?? ??????? ????; ???? ?????? ?????; ???????? ???? ???????? ???????? ???? ? ?????? ?????? ???????????; ???????????? ??? (??????????? ??? ????????????); ???? ?????? ????? ???????? ???; ???? ?????? ????? ???????? ???; ???? ??????? ????? ???????? ???;

???????? ?????:
1 - mSSL;
2 ? mSLM382;
3 - m1_2Mediana;
4 ? mSLM618;
5 - mISL382;
6 - mMediana;
7 - mISL618;
8 - mFSL;
9 - mFSLShiffLines;
10 - mCriticalPoints - ??? ???????? ?????????? ? ???????: ???? ????? ?????; ? ???? ?????? ?????; 
11 - mUTL
12 - mLTL
13 ? mUWL
14 - mLWL

?????? ??????????? - ??? ?????? ? ???????? ?????:
m1 - 1
m5 - 5
m15 - 15
m30 - 30
h1 - 60
h4 - 240
d1 - 1440
w1 - 10080
mn - 43200
? ??? ?????.

???????????? ??? (??????????? ??? ????????????):
??????????? - 0
???????????? - 1 

??????????? ???? ????????? ?????

mSelectVariantsPRZ
 = 0 - ????????? ????? "??????" ??????? (?????????) ???
 > 0 - ????????? ????? ??? ??????????? ??????? (???????) ??? ? ???????? ??????
 = 1 - ????? ??????????? SSL
 = 2 - ????? ??????????? ???????
 = 3 - ????? ??????????? FSL
 = 4 - ???? ??????????? ?????? ???????
 = 5 - ???? ??????????? ?????? ??? 
 = 6 - ????? ??????????? 1/2 ???????
 = 7 - ???? ??????????? ?????? 1/2 ???????
 = 8 - ???? ??????????? ?????? ????? ?????
 = 9 - ????? ??????????? UTL

mTypeBasiclAP - ????? ???? ??????? ???
 = 0 - ??????????? ???? ?? ???????? ?????????
 = 1 - ???????????? ???? ?? ???????? ?????????

mTypeExternalAP - ????? ???? ??????? ??? 
 = 0 - ???????????? ??? ??????????? ???? ???????? ????????? (??????????????? ???????)
 = 1 - ??????????? ???? ?? ???????? ?????????
 = 2 - ????? ???? ?? ???????? ?????????
 = 3 - ??????????? ???? ?? ?????? ?????????? ZUP ? ???????? ???????
 = 4 - ???????????? ???? ?? ?????? ?????????? ZUP ? ???????? ???????
 = 5 - ????? ???? ?? ?????? ?????????? ZUP ? ???????? ???????
 = 6 - ???? ? ???????? ???????, ?????????? ???????, ?? ? ??????? ZUP
 = 7 - ????? ??????? ????

mExternalHandAP - ??????? ?????????? ???????????? ???, ?????????? ???????, ??? ??????? ?????? ????? ??? ??????????? ? ??????? ??????
 = 0 - ????? ????? ?????? ??? ??????????? ? ???????? ? SSL/FSL ?????? ???
 = 1 - ?????????? ????? ???????????? ???, ? ???????? ???????? ????? ?????
 = 2 - ????? ?????? ????? ??? ?????????? ????? ???????????? ??????? ???

??????? ???????????? ?????

????? "??????" ??????? (?????????) ???

prefics="m#"+ExtComplekt+"_"+"s ";
prefics="m#"+ExtComplekt+"_"+"d ";

????? ? ????? ???????? ??? ???????
"point 1 AP" 
"point 2 AP" 
"point 3 AP"

????? ??? ??????????? 50%-? ??????? ? ISL 38.2 ? ????????? ?????????? ??????
"50% Mediana x SSL"
"50% Mediana x ISL 38.2"

????? ??? ??????????? ???????? ???? 50%-? ???????? ??? ???????
"50% Mediana x 0-bar"
"50% Mediana left 0-bar" 
"50% Mediana right 0-bar"

????? ?? SLM382
"SLM 38.2 x 0-bar"
"SLM 38.2 left 0-bar"
"SLM 38.2 right 0-bar"
"Shift SLM 38.2 Zones"
"SLM 38.2 Zones"

????? ?? SLM618
"SLM 61.8 x 0-bar"
"SLM 61.8 left 0-bar"
"SLM 61.8 right 0-bar"
"Shift SLM 61.8 Zones"
"SLM 61.8 Zones"

????? ??? ??????????? ???????? ???? ?????? SSL
"SSL x 0-bar"
"SSL left 0-bar"
"SSL right 0-bar"
"Shift SSL Zones"
"SSL Zones"

????? ??? ??????????? ???????? ???? ?????? FSL
"FSL x 0-bar"
"FSL left 0-bar"
"FSL right 0-bar"
"Shift FSL Zones"
"FSL Zones"

????? ??? ??????????? ???????? ???? ???????? ??? ???????
"Mediana x 0-bar"
"Mediana left 0-bar"
"Mediana right 0-bar"
"Shift Mediana Zones"
"Mediana Zones"

????? ??? ??????????? ???????? ???? ?????? ISL 38.2
"ISL 38.2 x 0-bar"
"ISL 38.2 left 0-bar"
"ISL 38.2 right 0-bar"
"Shift ISL 38.2 Zones"
"ISL 38.2 Zones"

????? ??? ??????????? ???????? ???? ?????? ISL 61.8
"ISL 61.8 x 0-bar"
"ISL 61.8 left 0-bar"
"ISL 61.8 right 0-bar"
"Shift ISL 61.8 Zones"
"ISL 61.8 Zones"

????? ??? ??????????? ???????? ???? ???????????????? ??????? LWL ?/??? UWL ?????????? ??? ???????
ObjectGetFiboDescription(nameObj,k), ??? nameObj=nameLWL;
ObjectGetFiboDescription(nameObj,k)+" left 0-bar"
ObjectGetFiboDescription(nameObj,k)+" right 0-bar"
ObjectGetFiboDescription(nameObj,k)+" Shift Zones"
ObjectGetFiboDescription(nameObj,k)+" Zones"

ObjectGetFiboDescription(nameObj,k), ??? nameObj=nameUWL;
ObjectGetFiboDescription(nameObj,k)+" left 0-bar"
ObjectGetFiboDescription(nameObj,k)+" right 0-bar"
ObjectGetFiboDescription(nameObj,k)+" Shift Zones"
ObjectGetFiboDescription(nameObj,k)+" Zones"

????? ??? ??????????? ???????? ???? ???????????? ??????? LTL ?/??? UTL ?????????? ??? ???????
"LTL x 0-bar"
"LTL left 0-bar" 
"LTL right 0-bar" 
"Shift LTL Zones"
"LTL Zones"

"UTL x 0-bar"
"UTL left 0-bar"
"UTL right 0-bar"
"Shift UTL Zones"
"UTL Zones"

????? ????? ???????? ?????? ? ??????? ??????, ??????????????? ?? ???????

???? ????? ?????. ????? ?????????. ??????????? ????? ??????. ??? ???????????? ?????????????.

--

? ??????? ??????????? 
+"_"+"s ""+ExtComplekt - ??? ??????????? ??????? ???
+"_"+"d ""+ExtComplekt - ??? ???????????? ??????? ???
+"_"+"s ""+ExtComplekt - ??? ??????????? ??????? ???  -  + save

prefics="m#"+ExtComplekt+"_"+"s";
prefics="m#"+ExtComplekt+"_"+"d";

   aMetki[sd][0]=0;
   aMetki[sd][1]=mSSL;
   aMetki[sd][2]=mSLM;
   aMetki[sd][3]=m1_2Mediana;
   aMetki[sd][4]=mSLM;
   aMetki[sd][5]=mISL382;
   aMetki[sd][6]=mMediana;
   aMetki[sd][7]=mISL618;
   aMetki[sd][8]=mFSL;
   aMetki[sd][9]=mFSLShiffLines;
   aMetki[sd][10]=mCriticalPoints;
   aMetki[sd][11]=mUTL;
   aMetki[sd][12]=mLTL;
   aMetki[sd][13]=mUWL;
   aMetki[sd][14]=mLWL;

*/
void _metkaAP(double& arrm[][], int sd, bool mAuto, int VariantsPRZ)  // sd - 0 - ?????????????? ??????????? ????, 1 - ?????????????? ???????????? ????
  {
   int      pitch_time[]={0,0,0}; 
   double   pitch_cena[]={0,0,0};
   double   aUWL[], aLWL[];
   int      i,j,j1,k,m,n, a1=0,b1=0,c1=0,m12, x=0, y=0, z=0, symb;
   string   prefics="", str05median="", strSLM382="", strSLM618="", nameFibo="";
   string   arrName[];    // ?????? ??? ???????? ???????????? ??? ???????
   double   tangensAP=0, tangensRL=0, tangens05median=0, wr, tangensUTL=0, tangensLTL=0, arrRL[], tangens=0;
   double   cena1, cena2, cenaRL, X, Y, W, cenaUWL, cenaLWL, h=0, delta, rl1, rl2, hAP, hAP1_2mediana, bazaAP, ret, retISL, xISL=0, xret=0; // m382=2-phi, m618=phi-1;
   datetime time1, time2;
   bool     updn;

   string   file="";
   string   tmp="", str1="", str2="", str3="", strUWL="", strLWL="";
   int      handle=-1;
   bool     writetofile=false;
   string   _nameUWL="", _nameLWL="", _nameUTL="", _nameLTL="";

   bool     exitSL = false; // ???? ??? ?????? ????????? mExitFSL_SSL

   if (sd==0)
     {
      _nameUWL=nameUWL;
      _nameLWL=nameLWL;
      _nameUTL=nameUTL;
      _nameLTL=nameLTL;
     }
   else
     {
      _nameUWL=nameUWLd;
      _nameLWL=nameLWLd;
      _nameUTL=nameUTLd;
      _nameLTL=nameLTLd;
     }

   nameObj="";
   if (sd==0)
     {
      if (ExtCustomStaticAP) nameObj="pitchforkS" + ExtComplekt+"_APm_"; else nameObj="pitchforkS" + ExtComplekt+"_";
      prefics="m#"+ExtComplekt+"_"+"s ";        //?????? ????????
      str05median="pmedianaS";
     }
   else if (sd==1)
     {
      nameObj="pitchforkD" + ExtComplekt+"_"; 
      prefics="m#"+ExtComplekt+"_"+"d ";
      str05median="pmedianaD";
     }

   delete_objects6(sd);

   if (sd==0) file="\\Price Label S\\";
   if (sd==1) file="\\Price Label D\\";
   if (mWriteToFile)
     {
      if (mPeriod<TimeCurrent())
        {
         tmp="_";
         if (ExtMasterPitchfork>0)
           {
            tmp="_0_";
           }
         else
           {
            if (SlavePitchfork) tmp="_"+StringSubstr(""+ExtComplekt,StringLen(""+ExtComplekt)-1)+"_";
            else
              {
               j=ObjectsTotal();
               for (n=0; n<j; n++)
                 {
                  if (ObjectType(ObjectName(n))==OBJ_PITCHFORK)
                    {
                     if (StringFind(ObjectName(n),"Master_",0)>=0)
                       {
                        SlavePitchfork = true;
                        tmp="_"+StringSubstr(""+ExtComplekt,StringLen(""+ExtComplekt)-1)+"_";
                        break;
                       }
                    }
                 }
              }
           }

         writetofile=true;
         if (ExtIndicator==6 && GrossPeriod==Period()) file=file+Symbol()+"_"+GrossPeriod+tmp+ExtComplekt+".csv";
         else file=file+Symbol()+"_"+Period()+tmp+ExtComplekt+".csv";
         handle=FileOpen(file,FILE_CSV|FILE_WRITE,';');
        }
     }

   pitch_time[0]=ObjectGet(nameObj,OBJPROP_TIME1); pitch_cena[0]=ObjectGet(nameObj,OBJPROP_PRICE1);
   pitch_time[1]=ObjectGet(nameObj,OBJPROP_TIME2); pitch_cena[1]=ObjectGet(nameObj,OBJPROP_PRICE2);
   pitch_time[2]=ObjectGet(nameObj,OBJPROP_TIME3); pitch_cena[2]=ObjectGet(nameObj,OBJPROP_PRICE3);

   a1=iBarShift(NULL,Period(),pitch_time[0],false);
   b1=iBarShift(NULL,Period(),pitch_time[1],false);
   c1=iBarShift(NULL,Period(),pitch_time[2],false);

   if (b1-c1==0 || a1==0)
     {
      if (mWriteToFile)
        {
         if (FileSize(handle)<1) {FileClose(handle); FileDelete(file);} else FileClose(handle);
        }
      return;
     }

   if (!(aPointAP[sd][0]==pitch_time[0] && aPointAP[sd][1]==pitch_cena[0] &&
       aPointAP[sd][2]==pitch_time[1] && aPointAP[sd][3]==pitch_cena[1] &&
       aPointAP[sd][4]==pitch_time[2] && aPointAP[sd][5]==pitch_cena[2]))
     {
      aPointAP[sd][0]=pitch_time[0]; aPointAP[sd][1]=pitch_cena[0];
      aPointAP[sd][2]=pitch_time[1]; aPointAP[sd][3]=pitch_cena[1];
      aPointAP[sd][4]=pitch_time[2]; aPointAP[sd][5]=pitch_cena[2];
      aPointAP[sd][6]=0; aPointAP[sd][7]=0;

      if (VariantsPRZ==0)
        {
         if (sd==0)
           {
            if (ExtUWL) x=ObjectGet(_nameUWL,OBJPROP_FIBOLEVELS);
            if (ExtLWL) y=ObjectGet(_nameLWL,OBJPROP_FIBOLEVELS);
           }

         if (ExtFiboFreePitchfork || ExtFiboType==2)
           {
            strUWL=ExtFiboFreeUWL;
            strLWL=ExtFiboFreeLWL;
           }
         else
           {
            strUWL="0.146,0.236,0.382,0.5,0.618,0.764,0.854,1,1.618,2.0,2.618,4.236";
            strLWL=strUWL;
           }

         if (mAuto && (x==0 || y==0))
           {
            if (VariantsPRZ==0 && sd==0)
              {
               if (!ExtUWL) ObjectDelete(_nameUWL);
               if (!ExtLWL) ObjectDelete(_nameLWL);
               if (!ExtUTL) ObjectDelete(_nameUTL);
               if (!ExtLTL) ObjectDelete(_nameLTL);
              }

            if (VariantsPRZ==0 && sd==1)
              {
               ObjectDelete(_nameUWL);
               ObjectDelete(_nameLWL);
               ObjectDelete(_nameUTL);
               ObjectDelete(_nameLTL);
              }

            if (ExtFiboFreePitchfork || ExtFiboType==2)
              {
               x=quantityFibo(ExtFiboFreeUWL)+1;
               y=quantityFibo(ExtFiboFreeLWL)+1;
              }
            else
              {
               x=12;
               y=x;
              }
           }

         if (ArrayRange(arrm,0)!=11+x+y+z) ArrayResize(arrm,11+x+y+z);

         ArrayResize(aUWL,x);
         for (i=0;i<x;i++)
           {
            k=StringFind(strUWL, ",", 0);
            aUWL[i]=StrToDouble(StringTrimLeft(StringTrimRight(StringSubstr(strUWL,0,k))));
            if (k>=0) strUWL=StringSubstr(strUWL,k+1);
           }

         ArrayResize(aLWL,y);
         for (i=0;i<y;i++)
           {
            k=StringFind(strLWL, ",", 0);
            aLWL[i]=StrToDouble(StringTrimLeft(StringTrimRight(StringSubstr(strLWL,0,k))));
            if (k>=0) strLWL=StringSubstr(strLWL,k+1);
           }
        }
     }

   if (VariantsPRZ==0 && !mSaveWL_TL)
     {
      if (mAuto && sd==0)
        {
         if (!ExtUWL) ObjectDelete(_nameUWL);
         if (!ExtLWL) ObjectDelete(_nameLWL);
         if (!ExtUTL) ObjectDelete(_nameUTL);
         if (!ExtLTL) ObjectDelete(_nameLTL);
        }

      if (VariantsPRZ==0 && sd==1)
        {
         ObjectDelete(_nameUWL);
         ObjectDelete(_nameLWL);
         ObjectDelete(_nameUTL);
         ObjectDelete(_nameLTL);
        }
     }

   ArrayInitialize(arrm,0);

   if ((a1-(c1+b1)/2.0)==0) return;
   if (a1-c1==0) return;

   if (aPointAP[sd][7]==0)
     {

      tangensAP=((pitch_cena[2]+pitch_cena[1])/2-pitch_cena[0])/(a1-(c1+b1)/2.0);
      atg[sd][0]=tangensAP;

      tangensRL=(pitch_cena[2]-pitch_cena[1])/(b1-c1);
      atg[sd][1]=tangensRL;

      if (ObjectFind(str05median+ExtComplekt+"_")>=0)
        {
         tangens05median=(pitch_cena[2]-pitch_cena[0])/(a1-c1);
        }

      atg[sd][2]=tangens05median;

      if (pitch_cena[1]>pitch_cena[2])
        {
         tangensUTL=(pitch_cena[1]-pitch_cena[0])/(a1-b1);
         tangensLTL=(pitch_cena[2]-pitch_cena[0])/(a1-c1);
        }
      else
        {
         tangensUTL=(pitch_cena[2]-pitch_cena[0])/(a1-c1);
         tangensLTL=(pitch_cena[1]-pitch_cena[0])/(a1-b1);
        }
      atg[sd][3]=tangensUTL;
      atg[sd][4]=tangensLTL;

      hAP=pitch_cena[1]+(b1-c1)*tangensAP-pitch_cena[2];
      atg[sd][5]=hAP;

      hAP1_2mediana=pitch_cena[1]-(pitch_cena[2]-tangens05median*(b1-c1));
      atg[sd][6]=hAP1_2mediana;

      bazaAP=a1-(b1+c1)/2.0;
      atg[sd][7]=bazaAP;
     }
   else
     {

      tangensAP=atg[sd][0];

      tangensRL=atg[sd][1];

      tangens05median=atg[sd][2];

      tangensUTL=atg[sd][3];
      tangensLTL=atg[sd][4];

      hAP=atg[sd][5];
      hAP1_2mediana=atg[sd][6];
      bazaAP=atg[sd][7];
     }

   if (mPivotPoints)
     {
      nameObj=prefics+"point 1 AP";
      ObjectCreate(nameObj,OBJ_ARROW,0,pitch_time[0],pitch_cena[0]);
      ObjectSet(nameObj,OBJPROP_ARROWCODE,SYMBOL_LEFTPRICE);
      ObjectSet(nameObj,OBJPROP_BACK,mBack);
      if (!mPivotPointsChangeColor)
        {
         if (pitch_cena[0]<pitch_cena[1] || pitch_cena[1]>pitch_cena[2]) updn=true; else updn=false;
         if (updn) ObjectSet(nameObj,OBJPROP_COLOR, mColorDN); else ObjectSet(nameObj,OBJPROP_COLOR, mColorUP);
        }

      nameObj=prefics+"point 2 AP";
      ObjectCreate(nameObj,OBJ_ARROW,0,pitch_time[1],pitch_cena[1]);
      ObjectSet(nameObj,OBJPROP_ARROWCODE,SYMBOL_LEFTPRICE);
      ObjectSet(nameObj,OBJPROP_BACK,mBack);
      if (!mPivotPointsChangeColor)
        {
         if (updn) ObjectSet(nameObj,OBJPROP_COLOR, mColorUP); else ObjectSet(nameObj,OBJPROP_COLOR, mColorDN);
        }

      nameObj=prefics+"point 3 AP";
      ObjectCreate(nameObj,OBJ_ARROW,0,pitch_time[2],pitch_cena[2]);
      ObjectSet(nameObj,OBJPROP_ARROWCODE,SYMBOL_LEFTPRICE);
      ObjectSet(nameObj,OBJPROP_BACK,mBack);
      if (!mPivotPointsChangeColor)
        {
         if (updn) ObjectSet(nameObj,OBJPROP_COLOR, mColorDN); else ObjectSet(nameObj,OBJPROP_COLOR, mColorUP);
        }
     }

   if (VariantsPRZ==0)
     {
      if (sd==0)
        {
         RLtoArray (arrRL, "RLineS"+ ExtComplekt+"_", ExtFiboFreeRLStatic);
         strSLM382="SLM382S";
         strSLM618="SLM618S";
        }
      else if (sd==1)
        {
         RLtoArray (arrRL, "RLineD"+ ExtComplekt+"_", ExtFiboFreeRLDinamic);
         strSLM382="SLM382D";
         strSLM618="SLM618D";
        }
      j1=ArraySize(arrRL);

      if (hAP==0 || bazaAP==0) return;
      xISL=(hAP-(pitch_cena[1]+tangensAP*b1-iClose(NULL,Period(),0)))/hAP; // ???????? ????? ISL
      xret=(c1+(b1-c1)*xISL)/bazaAP;  // ???????? ????? RL

/*
????????? ??????? arrm[][10]

?????? ????????? - ??????
0 - mSSL 
1 ? mSLM382 
2 - m1_2Mediana 
3 ? mSLM618 
4 - mISL382 
5 - mMediana 
6 - mISL618 
7 - mFSL 
8 - mFSLShiffLines
9 - mUTL
10 - mLTL

?????? ????????? - ???????
0 - ???? ????????? ????? ?? ???????????
1 - ????? ????? ????? ????
2 - ???? ????? ????? ????
3 - ????? ?????? ????? ????
4 - ???? ?????? ????? ????
5 - ????? ??????????? - ????????????? ??????? ??? ?????? ????? ? ????

1 - mSSL;
2 ? mSLM382;
3 - m1_2Mediana;
4 ? mSLM618;
5 - mISL382;
6 - mMediana;
7 - mISL618;
8 - mFSL;
9 - mFSLShiffLines;

11 - mUTL
12 - mLTL

6 - ????????? ??????????
*/

      i=0; // ???????? ??????? ????? ??????? arrm

      nameObj=str05median+ExtComplekt+"_";
      if (ExtPitchforkStatic==2 || ExtPitchforkDinamic==2 || ObjectFind(nameObj)>=0)
        {

         if (!mAuto && aMetki[sd][10]>0)
           {
            if (ObjectFind(nameObj)>=0)
              {

               if ((tangens05median-tangensAP)==0) return;
               X=(pitch_cena[2]-ObjectGetValueByShift(nameObj,c1))/(tangens05median-tangensAP); x=X; if (x<X) x++;
               cena1=pitch_cena[2]+X*tangensAP;
               if (x<=c1) {time1=iTime(NULL,Period(),c1-x); symb=SYMBOL_LEFTPRICE;} else {time1=iTime(NULL,Period(),0)+(x-c1)*60*Period(); symb=SYMBOL_RIGHTPRICE;}

               if ((sd==0 && RZs<0) || (sd==1 && RZd<0))
                 {
                  if (pitch_cena[1]>pitch_cena[2])
                    {
                     for (k=b1-1;k>=c1;k--)
                       {
                        delta=iHigh(NULL,Period(),k)-(pitch_cena[1]+(b1-k)*tangensRL);
                        if (delta>h) h=delta;
                       }
                    }
                  else
                    {
                     for (k=b1-1;k>=c1;k--)
                       {
                        delta=(pitch_cena[1]+(b1-k)*tangensRL)-iLow(NULL,Period(),k);
                        if (delta>h) h=delta;
                       }
                     }
                  if (sd==0) RZs=h; else RZd=h;
                 }
               else
                 {
                  if (sd==0) h=RZs; else h=RZd;
                 }

               nameObj=str05median+ExtComplekt+"_";

               cena2=ObjectGetValueByShift(nameObj,b1);
               X=(pitch_cena[0]-cena2+(a1-b1)*tangensAP-(phi-1.5)*(pitch_cena[1]+(b1-c1)*tangensAP-pitch_cena[2]))/(tangens05median-tangensAP);
               x=X;
               cena2=cena2+X*tangens05median;
               if (x<=b1) {time2=iTime(NULL,Period(),b1-x); symb=SYMBOL_LEFTPRICE;}
               else {if (x<X) x++; time2=iTime(NULL,Period(),0)+(x-b1)*60*Period(); symb=SYMBOL_RIGHTPRICE;}
               if (MathAbs(pitch_cena[1]+x*tangensRL-cena1)>h)
                 {
                 }
               else cena2=0;

               arrm[i][0]=cena1; arrm[i][1]=time1; arrm[i][2]=cena1; arrm[i][3]=time2; arrm[i][4]=cena2; arrm[i][5]=10; i++;
               if (cena2>0) arrm[i][0]=cena2; arrm[i][1]=time1; arrm[i][2]=cena1; arrm[i][3]=time2; arrm[i][4]=cena2; arrm[i][5]=10; arrm[i][6]=1; i++;
              }
           }

         if (mAuto || aMetki[sd][3]>0)
           {
            nameObj=str05median+ExtComplekt+"_";
            if (ObjectFind(nameObj)>=0)
              {
               cena1=ObjectGetValueByShift(nameObj,0);
               arrm[i][0]=cena1; arrm[i][5]=3;
               if (aMetki[sd][3]>1) //if ((m1_2Mediana>1 && sd==0) || (m1_2Mediana_d>1 && sd==1))
                 {
                  retISL=(cena1 -(pitch_cena[2]+c1*tangensAP))/hAP;
                  if (tangensAP==0)
                    {
                     ret=(c1+retISL*(b1-c1))/bazaAP;
                    }
                  else
                    {
                     if ((tangensAP*bazaAP)==0) return;
                     ret=(cena1-pitch_cena[2]-retISL*(hAP-(b1-c1)*tangensAP))/(tangensAP*bazaAP);
                    }
                  if (!mAuto && aMetki[sd][3]>4 && xISL>retISL) ret=xret;

                  rl1=0; rl2=0;
                  for (m=0;m<j1;m++)
                    {
                     if (arrRL[m]>=ret)
                       {
                        rl2=arrRL[m];
                        break;
                       }
                     else
                       {
                        rl1=arrRL[m];
                       }
                    }

                  if (rl2>0)
                    {
                     nameObj=str05median+ExtComplekt+"_";
                     cenaRL=pitch_cena[1]+bazaAP*rl1*(tangensAP-tangensRL);
                     wr=ObjectGetValueByShift(nameObj,b1);
                     X=(cenaRL-wr)/(tangens05median-tangensRL);
                     x=X;
                     if (tangensAP!=0) cena1=wr+X*tangens05median; else cena1=cenaRL+X*tangensRL;
                     if (x<=b1) time1=iTime(NULL,Period(),b1-x); else time1=iTime(NULL,Period(),0)+(x-b1)*Period()*60;
                     cenaRL=pitch_cena[1]+bazaAP*rl2*(tangensAP-tangensRL);
                     X=(cenaRL-wr)/(tangens05median-tangensRL);
                     x=X; if (x<X) x++;
                     if (tangensAP!=0) cena2=wr+X*tangens05median; else cena2=cenaRL+X*tangensRL;
                     if (x<=b1) time2=iTime(NULL,Period(),b1-x); else time2=iTime(NULL,Period(),0)+(x-b1)*Period()*60;

                     arrm[i][1]=time1; arrm[i][2]=cena1; arrm[i][3]=time2; arrm[i][4]=cena2;
                    }
                 }

               i++;
              }
           }

         if ((sd==0 && ExtSLMStatic) || (sd==1 && ExtSLMDinamic))
           {
            if (mAuto || aMetki[sd][2]>0)
              {

               nameObj=strSLM382+ExtComplekt+"_";
               if (ObjectFind(nameObj)>=0)
                 {
                  cena1=ObjectGetValueByShift(nameObj,0);
                  arrm[i][0]=cena1; arrm[i][5]=2;
                  if (aMetki[sd][2]>1)
                    {
                     retISL=(cena1 -(pitch_cena[2]+c1*tangensAP))/hAP;
                     if (tangensAP==0) ret=(c1+retISL*(b1-c1))/bazaAP; 
                     else
                       {
                        if ((tangensAP*bazaAP)==0) return;
                        ret=(cena1-pitch_cena[2]-retISL*(hAP-(b1-c1)*tangensAP))/(tangensAP*bazaAP);
                       }

                     if (!mAuto && aMetki[sd][2]>4 && xISL>retISL) ret=xret;

                     rl1=0; rl2=0;
                     for (m=0;m<j1;m++)
                       {
                        if (arrRL[m]>=ret)
                          {
                           rl2=arrRL[m];
                           break;
                          }
                        else
                          {
                           rl1=arrRL[m];
                          }
                       }

                     if (rl2>0)
                       {
                        nameObj=strSLM382+ExtComplekt+"_";
                        cenaRL=pitch_cena[1]+bazaAP*rl1*(tangensAP-tangensRL);
                        wr=ObjectGetValueByShift(nameObj,c1)-tangens05median*(b1-c1);
                        X=(cenaRL-wr)/(tangens05median-tangensRL);
                        x=X;
                        if (tangensAP!=0) cena1=wr+X*tangens05median; else cena1=cenaRL+X*tangensRL;
                        if (x<=b1) time1=iTime(NULL,Period(),b1-x); else time1=iTime(NULL,Period(),0)+(x-b1)*Period()*60;
                        cenaRL=pitch_cena[1]+bazaAP*rl2*(tangensAP-tangensRL);
                        if ((tangens05median-tangensRL)==0) return;
                        X=(cenaRL-wr)/(tangens05median-tangensRL);
                        x=X; if (x<X) x++;
                        if (tangensAP!=0) cena2=wr+X*tangens05median; else cena2=cenaRL+X*tangensRL;
                        if (x<=b1) time2=iTime(NULL,Period(),b1-x); else time2=iTime(NULL,Period(),0)+(x-b1)*Period()*60;

                        arrm[i][1]=time1; arrm[i][2]=cena1; arrm[i][3]=time2; arrm[i][4]=cena2;
                       }
                    }

                  i++;
                 }

               nameObj=strSLM618+ExtComplekt+"_";
               if (ObjectFind(nameObj)>=0)
                 {
                  cena1=ObjectGetValueByShift(nameObj,0);
                  arrm[i][0]=cena1; arrm[i][5]=4;
                  if (aMetki[sd][4]>1)
                    {
                     retISL=(cena1 -(pitch_cena[2]+c1*tangensAP))/hAP;
                     if (tangensAP==0) ret=(c1+retISL*(b1-c1))/bazaAP; 
                     else
                       {
                        if ((tangensAP*bazaAP)==0) return;
                        ret=(cena1-pitch_cena[2]-retISL*(hAP-(b1-c1)*tangensAP))/(tangensAP*bazaAP);
                       }

                     if (!mAuto && aMetki[sd][4]>4 && xISL>retISL) ret=xret;

                     rl1=0; rl2=0;
                     for (m=0;m<j1;m++)
                       {
                        if (arrRL[m]>=ret)
                          {
                           rl2=arrRL[m];
                           break;
                          }
                        else
                          {
                           rl1=arrRL[m];
                          }
                       }

                     if (rl2>0)
                       {
                        nameObj=strSLM618+ExtComplekt+"_";
                        cenaRL=pitch_cena[1]+bazaAP*rl1*(tangensAP-tangensRL);
                        wr=ObjectGetValueByShift(nameObj,c1)-tangens05median*(b1-c1);
                        X=(cenaRL-wr)/(tangens05median-tangensRL);
                        x=X;
                        if (tangensAP!=0) cena1=wr+X*tangens05median; else cena1=cenaRL+X*tangensRL;
                        if (x<=b1) time1=iTime(NULL,Period(),b1-x); else time1=iTime(NULL,Period(),0)+(x-b1)*Period()*60;
                        cenaRL=pitch_cena[1]+bazaAP*rl2*(tangensAP-tangensRL);
                        if ((tangens05median-tangensRL)==0) return;
                        X=(cenaRL-wr)/(tangens05median-tangensRL);
                        x=X; if (x<X) x++;
                        if (tangensAP!=0) cena2=wr+X*tangens05median; else cena2=cenaRL+X*tangensRL;
                        if (x<=b1) time2=iTime(NULL,Period(),b1-x); else time2=iTime(NULL,Period(),0)+(x-b1)*Period()*60;

                        arrm[i][1]=time1; arrm[i][2]=cena1; arrm[i][3]=time2; arrm[i][4]=cena2;
                       }
                    }

                  i++;
                 }
              }
           }

         if ((sd==0 && ExtFSLShiffLinesStatic) || (sd==1 && ExtFSLShiffLinesDinamic))
           {
            if (mAuto || aMetki[sd][9]>0)
              {
               if (sd==0) nameObj="FSL Shiff Lines S" + ExtComplekt+"_"; else nameObj="FSL Shiff Lines D" + ExtComplekt+"_";
               if (ObjectFind(nameObj)>=0)
                 {
                  cena1=ObjectGetValueByShift(nameObj,0);
                  arrm[i][0]=cena1; arrm[i][5]=9;
                  if (aMetki[sd][9]>1)
                    {
                     retISL=(cena1 -(pitch_cena[2]+c1*tangensAP))/hAP;
                     if (tangensAP==0) ret=(c1+retISL*(b1-c1))/bazaAP;
                     else
                       {
                        if ((tangensAP*bazaAP)==0) return;
                        ret=(cena1-pitch_cena[2]-retISL*(hAP-(b1-c1)*tangensAP))/(tangensAP*bazaAP);
                       }

                     if (!mAuto && aMetki[sd][9]>4 && xISL>retISL) ret=xret;
                     rl1=0; rl2=0;
                     for (m=0;m<j1;m++)
                       {
                        if (arrRL[m]>=ret)
                          {
                           rl2=arrRL[m];
                           break;
                          }
                        else
                          {
                           rl1=arrRL[m];
                          }
                       }
                     if (rl2>0)
                       {
                        if (sd==0) nameObj="FSL Shiff Lines S" + ExtComplekt+"_"; else nameObj="FSL Shiff Lines D" + ExtComplekt+"_";
                        cenaRL=pitch_cena[1]+bazaAP*rl1*(tangensAP-tangensRL);
                        wr=ObjectGetValueByShift(nameObj,c1)-tangens05median*(b1-c1);
                        X=(cenaRL-wr)/(tangens05median-tangensRL);
                        x=X;
                        if (tangensAP!=0) cena1=wr+X*tangens05median; else cena1=cenaRL+X*tangensRL;
                        if (x<=b1) time1=iTime(NULL,Period(),b1-x); else time1=iTime(NULL,Period(),0)+(x-b1)*Period()*60;
                        cenaRL=pitch_cena[1]+bazaAP*rl2*(tangensAP-tangensRL);
                        if ((tangens05median-tangensRL)==0) return;
                        X=(cenaRL-wr)/(tangens05median-tangensRL);
                        x=X; if (x<X) x++;
                        if (tangensAP!=0) cena2=wr+X*tangens05median; else cena2=cenaRL+X*tangensRL;
                        if (x<=b1) time2=iTime(NULL,Period(),b1-x); else time2=iTime(NULL,Period(),0)+(x-b1)*Period()*60;

                        arrm[i][1]=time1; arrm[i][2]=cena1; arrm[i][3]=time2; arrm[i][4]=cena2;
                       }
                    }

                  i++;
                 }
              }
           }
        }

      if (mAuto || aMetki[sd][1]>0)
        {
         cena1=pitch_cena[2]+c1*tangensAP;
         arrm[i][0]=cena1; arrm[i][5]=1;

         if (!mExitFSL_SSL)
           {
            if (pitch_cena[1]>pitch_cena[2]) aexitFSL_SSL[0]=cena1;
            else aexitFSL_SSL[1]=cena1;
           }

         if (aMetki[sd][1]>1)
           {
            if (mAuto || aMetki[sd][1]<5 || (xISL<=0 && aMetki[sd][1]>4))
              {
               if (tangensAP==0) ret=c1/bazaAP; 
               else
                 {
                  if ((tangensAP*bazaAP)==0) return;
                  ret=(cena1-pitch_cena[2])/(tangensAP*bazaAP);
                 }
              }
            else ret=xret;

            rl1=0; rl2=0;
            for (m=0;m<j1;m++)
              {
               if (arrRL[m]>=ret)
                 {
                  rl2=arrRL[m];
                  break;
                 }
               else
                 {
                  rl1=arrRL[m];
                 }
              }

            if (rl2>0)
              {
               X=bazaAP*rl1; x=X;
               cena1=pitch_cena[2]+X*tangensAP;
               if (x<=c1) time1=iTime(NULL,Period(),c1-x); else time1=iTime(NULL,Period(),0)+(x-c1)*Period()*60;
               X=bazaAP*rl2; x=X; if (x<X) x++;
               cena2=pitch_cena[2]+X*tangensAP;
               if (x<=c1) time2=iTime(NULL,Period(),c1-x); else time2=iTime(NULL,Period(),0)+(x-c1)*Period()*60;

               arrm[i][1]=time1; arrm[i][2]=cena1; arrm[i][3]=time2; arrm[i][4]=cena2;
              }
           }

         i++;
        }

      if (mAuto || aMetki[sd][8]>0)
        {
         cena1=pitch_cena[1]+b1*tangensAP;
         arrm[i][0]=cena1; arrm[i][5]=8;

         if (!mExitFSL_SSL)
           {
            if (pitch_cena[1]>pitch_cena[2]) aexitFSL_SSL[1]=cena1;
            else aexitFSL_SSL[0]=cena1;
           }

         if (aMetki[sd][8]>1)
           {
            if (mAuto || aMetki[sd][8]<5 || (xISL<=1 && aMetki[sd][8]>4))
              {
               if (tangensAP==0) ret=b1/bazaAP;
               else
                 {
                  if ((tangensAP*bazaAP)==0) return;
                  ret=(cena1-pitch_cena[1])/(tangensAP*bazaAP);
                 }
              }
            else ret=xret;

            rl1=0; rl2=0;
            for (m=0;m<j1;m++)
              {
               if (arrRL[m]>=ret)
                 {
                  rl2=arrRL[m];
                  break;
                 }
               else
                 {
                  rl1=arrRL[m];
                 }
              }

            if (rl2>0)
              {
               X=bazaAP*rl1; x=X;
               cena1=pitch_cena[1]+X*tangensAP;
               if (x<=b1) time1=iTime(NULL,Period(),b1-x); else time1=iTime(NULL,Period(),0)+(x-b1)*Period()*60;
               X=bazaAP*rl2; x=X; if (x<X) x++;
               cena2=pitch_cena[1]+X*tangensAP;
               if (x<=b1) time2=iTime(NULL,Period(),b1-x); else time2=iTime(NULL,Period(),0)+(x-b1)*Period()*60;

               arrm[i][1]=time1; arrm[i][2]=cena1; arrm[i][3]=time2; arrm[i][4]=cena2;
              }
           }

         i++;
        }

      if (mAuto || aMetki[sd][6]>0)
        {
         cena1=pitch_cena[0]+a1*tangensAP;
         arrm[i][0]=cena1; arrm[i][5]=6;
         if (aMetki[sd][6]>1)
           {
            if (mAuto || aMetki[sd][6]<5 || (xISL<=0.5 && aMetki[sd][6]>4))
              {
               if (tangensAP==0) ret=a1/bazaAP-1; 
               else
                 {
                  if ((tangensAP*bazaAP)==0) return;
                  ret=(cena1-pitch_cena[0])/(tangensAP*bazaAP)-1;
                 }
              }
            else ret=xret;

            rl1=0; rl2=0;
            for (m=0;m<j1;m++)
              {
               if (arrRL[m]>=ret)
                 {
                  rl2=arrRL[m];
                  break;
                 }
               else
                 {
                  rl1=arrRL[m];
                 }
              }

            if (rl2>0)
              {
               X=bazaAP*(rl1+1); x=X;
               cena1=pitch_cena[0]+X*tangensAP;
               if (x<=a1) time1=iTime(NULL,Period(),a1-x); else time1=iTime(NULL,Period(),0)+(x-a1)*Period()*60;
               X=bazaAP*(rl2+1); x=X; if (x<X) x++;
               cena2=pitch_cena[0]+X*tangensAP;
               if (x<=a1) time2=iTime(NULL,Period(),a1-x); else time2=iTime(NULL,Period(),0)+(x-a1)*Period()*60;

               arrm[i][1]=time1; arrm[i][2]=cena1; arrm[i][3]=time2; arrm[i][4]=cena2;
              }
           }

         i++;
        }

      if (mAuto || aMetki[sd][5]>0)
        {
         cena1=pitch_cena[2]+c1*tangensAP+hAP*(2-phi);
         arrm[i][0]=cena1; arrm[i][5]=5;
         if (aMetki[sd][5]>1)
           {
            if (mAuto || aMetki[sd][5]<5 || (xISL<=(2-phi) && aMetki[sd][5]>4))
              {
               if (tangensAP==0) ret=(c1+(2-phi)*(b1-c1))/bazaAP; 
               else
                 {
                  if ((tangensAP*bazaAP)==0) return;
                  ret=(cena1-pitch_cena[2]-(2-phi)*(hAP-(b1-c1)*tangensAP))/(tangensAP*bazaAP);
                 }
              }
            else ret=xret;

            rl1=0; rl2=0;
            for (m=0;m<j1;m++)
              {
               if (arrRL[m]>=ret)
                 {
                  rl2=arrRL[m];
                  break;
                 }
               else
                 {
                  rl1=arrRL[m];
                 }
              }

            if (rl2>0)
              {
               X=bazaAP*rl1; x=X;
               cena1=pitch_cena[2]+X*tangensAP+(2-phi)*(hAP-(b1-c1)*tangensAP);
               if (x<=b1-(b1-c1)*(phi-1)) time1=iTime(NULL,Period(),b1-(b1-c1)*(phi-1)-x); else time1=iTime(NULL,Period(),0)+(x-b1+(b1-c1)*(phi-1))*Period()*60;
               X=bazaAP*rl2; x=X; if (x<X) x++;
               cena2=pitch_cena[2]+X*tangensAP+(2-phi)*(hAP-(b1-c1)*tangensAP);
               if (x<=b1-(b1-c1)*(phi-1)) time2=iTime(NULL,Period(),b1-(b1-c1)*(phi-1)-x); else time2=iTime(NULL,Period(),0)+(x-b1+(b1-c1)*(phi-1))*Period()*60;

               arrm[i][1]=time1; arrm[i][2]=cena1; arrm[i][3]=time2; arrm[i][4]=cena2;
              }
           }

         i++;
        }

      if (mAuto || aMetki[sd][7]>0)
        {
         cena1=pitch_cena[2]+c1*tangensAP+hAP*(phi-1);
         arrm[i][0]=cena1; arrm[i][5]=7;
         if (aMetki[sd][7]>1)
           {
            if (mAuto || aMetki[sd][7]<5 || (xISL<=(phi-1) && aMetki[sd][7]>4))
              {
               if (tangensAP==0) ret=(c1+(phi-1)*(b1-c1))/bazaAP; 
               else
                 {
                  if ((tangensAP*bazaAP)==0) return;
                  ret=(cena1-pitch_cena[2]-(phi-1)*(hAP-(b1-c1)*tangensAP))/(tangensAP*bazaAP);
                 }
              }
            else ret=xret;

            rl1=0; rl2=0;
            for (m=0;m<j1;m++)
              {
               if (arrRL[m]>=ret)
                 {
                  rl2=arrRL[m];
                  break;
                 }
               else
                 {
                  rl1=arrRL[m];
                 }
              }

            if (rl2>0)
              {
               X=bazaAP*rl1; x=X;
               cena1=pitch_cena[2]+X*tangensAP+(phi-1)*(hAP-(b1-c1)*tangensAP);
               if (x<=b1-(b1-c1)*(2-phi)) time1=iTime(NULL,Period(),b1-(b1-c1)*(2-phi)-x); else time1=iTime(NULL,Period(),0)+(x-b1+(b1-c1)*(2-phi))*Period()*60;
               X=bazaAP*rl2; x=X; if (x<X) x++;
               cena2=pitch_cena[2]+X*tangensAP+(phi-1)*(hAP-(b1-c1)*tangensAP);
               if (x<=b1-(b1-c1)*(2-phi)) time2=iTime(NULL,Period(),b1-(b1-c1)*(2-phi)-x); else time2=iTime(NULL,Period(),0)+(x-b1+(b1-c1)*(2-phi))*Period()*60;

               arrm[i][1]=time1; arrm[i][2]=cena1; arrm[i][3]=time2; arrm[i][4]=cena2;
              }
           }

         i++;
        }

      if (sd==0 || (sd==1 && mAuto))
        {

         if (mAuto || aMetki[sd][13]>0 || aMetki[sd][14]>0)
           {

            if (pitch_cena[1]>pitch_cena[2])
              {
               cenaUWL=pitch_cena[1];
               cenaLWL=pitch_cena[2];
              }
            else
              {
               cenaUWL=pitch_cena[2];
               cenaLWL=pitch_cena[1];
              }

            if (mAuto || ExtUWL)
              {
               nameObj=nameUWL;
               if (mAuto || ObjectFind(nameObj)>=0)
                 {

                  if (pitch_cena[1]>pitch_cena[2])
                    {
                     X=pitch_cena[1]+b1*tangensUTL;
                     Y=pitch_cena[1]+b1*tangensAP;
                    }
                  else
                    {
                     X=pitch_cena[2]+c1*tangensUTL; 
                     Y=pitch_cena[2]+c1*tangensAP;
                    }

                  x=ArraySize(aUWL);
                  for (k=0;k<x;k++)
                    {
                     cena1=Y+MathAbs(hAP)*aUWL[k]/2;
                     if ((aMetki[sd][13]==0 && mAuto) || aMetki[sd][13]==1)
                       {
                        if (cena1<=X)
                          {
                           arrm[i][0]=cena1; arrm[i][5]=13; arrm[i][6]=aUWL[k];
                          }
                        else
                          {
                           break;
                          }
                       }
                     else //if (mUWL>1)
                       {
                        retISL=(cena1 -(pitch_cena[2]+c1*tangensAP))/hAP;

                        if (!mAuto && aMetki[sd][13]>4 && xISL>retISL) ret=xret;
                        else
                          {
                           if (tangensAP==0) ret=(c1+retISL*(b1-c1))/bazaAP; 
                           else
                             {
                              if ((tangensAP*bazaAP)==0) return;
                              ret=(cena1-pitch_cena[2]-retISL*(hAP-(b1-c1)*tangensAP))/(tangensAP*bazaAP);
                             }
                          }

                        rl1=0; rl2=0;
                        for (m=0;m<j1;m++)
                          {
                           if (arrRL[m]>=ret)
                             {
                              rl2=arrRL[m];
                              break;
                             }
                           else
                             {
                              rl1=arrRL[m];
                             }
                          }
                        arrm[i][0]=cena1; arrm[i][5]=13; arrm[i][6]=aUWL[k];

                        W=bazaAP*rl2; // x=X; if (x<X) x++;
                        cena2=pitch_cena[2]+W*tangensAP+retISL*(hAP-(b1-c1)*tangensAP);
                        if ((cenaUWL+tangensUTL*W)<cena2) continue;
                        if (W<=c1+(b1-c1)*retISL) time2=iTime(NULL,Period(),c1+(b1-c1)*retISL-W); else time2=iTime(NULL,Period(),0)+(W-c1-(b1-c1)*retISL)*Period()*60;

                        W=bazaAP*rl1;
                        cena1=pitch_cena[2]+W*tangensAP+retISL*(hAP-(b1-c1)*tangensAP);
                        if (W<=c1+(b1-c1)*retISL) time1=iTime(NULL,Period(),c1+(b1-c1)*retISL-W); else time1=iTime(NULL,Period(),0)+(W-c1-(b1-c1)*retISL)*Period()*60;

                        arrm[i][1]=time1; arrm[i][2]=cena1; arrm[i][3]=time2; arrm[i][4]=cena2;
                       }

                     i++;
                    }
                 }
              }

            if (mAuto || ExtLWL)
              {
               nameObj=nameLWL;
               if (mAuto || ObjectFind(nameObj)>=0)
                 {

                  if (pitch_cena[1]>pitch_cena[2])
                    {
                     Y=pitch_cena[2]+c1*tangensAP;
                     X=pitch_cena[2]+c1*tangensLTL;
                    }
                  else
                    {
                     Y=pitch_cena[1]+b1*tangensAP;
                     X=pitch_cena[1]+b1*tangensLTL;
                    }

                  x=ArraySize(aLWL);
                  for (k=0;k<x;k++)
                    {
                     cena1=Y-MathAbs(hAP)*aLWL[k]/2;
                     if ((aMetki[sd][14]==0 && mAuto) || aMetki[sd][14]==1)
                       {
                        if (cena1>=X)
                          {
                           arrm[i][0]=cena1; arrm[i][5]=14; arrm[i][6]=aLWL[k];
                          }
                        else
                          {
                           break;
                          }
                       }
                     else //if (mLWL>1)
                       {
                        retISL=(cena1 -(pitch_cena[2]+c1*tangensAP))/hAP;

                        if (!mAuto && aMetki[sd][14]>4 && xISL>retISL) ret=xret;
                        else
                          {
                           if (tangensAP==0) ret=(c1+retISL*(b1-c1))/bazaAP; 
                           else
                             {
                              if ((tangensAP*bazaAP)==0) return;
                              ret=(cena1-pitch_cena[2]-retISL*(hAP-(b1-c1)*tangensAP))/(tangensAP*bazaAP);
                             }
                          }

                        rl1=0; rl2=0;
                        for (m=0;m<j1;m++)
                          {
                           if (arrRL[m]>=ret)
                             {
                              rl2=arrRL[m];
                              break;
                             }
                           else
                             {
                              rl1=arrRL[m];
                             }
                          }
                        arrm[i][0]=cena1; arrm[i][5]=14; arrm[i][6]=aLWL[k];

                        W=bazaAP*rl2; // x=X; if (x<X) x++;
                        cena2=pitch_cena[2]+W*tangensAP+retISL*(hAP-(b1-c1)*tangensAP);
                        if ((cenaLWL+tangensLTL*W)>cena2) continue;
                        if (W<=c1+(b1-c1)*retISL) time2=iTime(NULL,Period(),c1+(b1-c1)*retISL-W); else time2=iTime(NULL,Period(),0)+(W-c1-(b1-c1)*retISL)*Period()*60;

                        W=bazaAP*rl1;
                        cena1=pitch_cena[2]+W*tangensAP+retISL*(hAP-(b1-c1)*tangensAP);
                        if (W<=c1+(b1-c1)*retISL) time1=iTime(NULL,Period(),c1+(b1-c1)*retISL-W); else time1=iTime(NULL,Period(),0)+(W-c1-(b1-c1)*retISL)*Period()*60;

                        arrm[i][1]=time1; arrm[i][2]=cena1; arrm[i][3]=time2; arrm[i][4]=cena2;
                       }

                     i++;
                    }
                 }
              }
           }

         if (mAuto || aMetki[sd][11]>0 || aMetki[sd][12]>0)
           {
            if (mAuto || ExtUTL)
              {
               nameObj=_nameUTL;
               if (mAuto || ObjectFind(nameObj)>=0)
                 {
                  cena1=pitch_cena[0]+tangensUTL*a1;
                  arrm[i][0]=cena1; arrm[i][5]=11;
                  if (mAuto || aMetki[sd][11]>1)
                    {
                     retISL=(cena1 -(pitch_cena[2]+c1*tangensAP))/hAP;

                     if (!mAuto && aMetki[sd][11]>4 && xISL>retISL) ret=xret;
                     else
                       {
                        if (tangensAP==0) ret=(c1+retISL*(b1-c1))/bazaAP; 
                        else
                          {
                           if ((tangensAP*bazaAP)==0) return;
                           ret=(cena1-pitch_cena[2]-retISL*(hAP-(b1-c1)*tangensAP))/(tangensAP*bazaAP);
                          }
                       }

                     rl1=0; rl2=0;
                     for (m=0;m<j1;m++)
                       {
                        if (arrRL[m]>=ret)
                          {
                           rl2=arrRL[m];
                           break;
                          }
                        else
                          {
                           rl1=arrRL[m];
                          }
                       }

                     if (rl2>0)
                       {
                        if (pitch_cena[1]>pitch_cena[2])
                          {
                           X=pitch_cena[1];
                          }
                        else
                          {
                           X=pitch_cena[2];
                          }

                        if ((tangensRL-tangensUTL)!=0 && tangensUTL!=0)
                          {
                           cena1=X+bazaAP*rl1*tangensUTL*(tangensRL-tangensAP)/(tangensRL-tangensUTL);
                           x=a1-MathCeil((cena1-pitch_cena[0])/tangensUTL);
                           if (x>0) time1=iTime(Symbol(),Period(),x); else time1=iTime(Symbol(),Period(),0)-x*Period()*60;

                           cena2=X+bazaAP*rl2*tangensUTL*(tangensRL-tangensAP)/(tangensRL-tangensUTL);
                           x=a1-MathCeil((cena2-pitch_cena[0])/tangensUTL);
                           if (x>0) time2=iTime(Symbol(),Period(),x); else time2=iTime(Symbol(),Period(),0)-x*Period()*60;

                           arrm[i][1]=time1; arrm[i][2]=cena1; arrm[i][3]=time2; arrm[i][4]=cena2;
                          }
                       }
                    }

                  i++;
                 }
              }

            if (mAuto || ExtLTL)
              {
               nameObj=_nameLTL;
               if (mAuto || ObjectFind(nameObj)>=0)
                 {
                  cena1=pitch_cena[0]+tangensLTL*a1;
                  arrm[i][0]=cena1; arrm[i][5]=12;
                  if (mAuto || aMetki[sd][12]>1)
                    {
                     retISL=(cena1 -(pitch_cena[2]+c1*tangensAP))/hAP;

                     if (!mAuto && aMetki[sd][12]>4 && xISL>retISL) ret=xret;
                     else
                      {
                       if (tangensAP==0) ret=(c1+retISL*(b1-c1))/bazaAP; 
                       else
                         {
                          if ((tangensAP*bazaAP)==0) return;
                          ret=(cena1-pitch_cena[2]-retISL*(hAP-(b1-c1)*tangensAP))/(tangensAP*bazaAP);
                         }
                      }

                     rl1=0; rl2=0;
                     for (m=0;m<j1;m++)
                       {
                        if (arrRL[m]>=ret)
                          {
                           rl2=arrRL[m];
                           break;
                          }
                        else
                          {
                           rl1=arrRL[m];
                          }
                       }

                     if (rl2>0)
                       {
                        if (pitch_cena[2]>pitch_cena[1])
                          {
                           X=pitch_cena[1];
                          }
                        else
                          {
                           X=pitch_cena[2];
                          }

                        if ((tangensRL-tangensLTL)!=0 && tangensLTL!=0)
                          {
                           cena1=X+bazaAP*rl1*tangensLTL*(tangensRL-tangensAP)/(tangensRL-tangensLTL);
                           x=a1-MathCeil((cena1-pitch_cena[0])/tangensLTL);
                           if (x>0) time1=iTime(Symbol(),Period(),x); else time1=iTime(Symbol(),Period(),0)-x*Period()*60;

                           cena2=X+bazaAP*rl2*tangensLTL*(tangensRL-tangensAP)/(tangensRL-tangensLTL);
                           x=a1-MathCeil((cena2-pitch_cena[0])/tangensLTL);
                           if (x>0) time2=iTime(Symbol(),Period(),x); else time2=iTime(Symbol(),Period(),0)-x*Period()*60;

                           arrm[i][1]=time1; arrm[i][2]=cena1; arrm[i][3]=time2; arrm[i][4]=cena2;
                          }
                       }
                    }

                 }
              }
           }
        }

      string wl="";
      int ii, i_1=0, i_2=ArrayRange(arrm,0)-1;
      double cl=iClose(NULL,Period(),0), pp;

      if (mAuto)
        {
         exitSL=mExitFSL_SSL || Close[0]>=aexitFSL_SSL[1] || Close[0]<=aexitFSL_SSL[0];

         if (aPointAP[sd][3]-aPointAP[sd][1]==0) pp=10;
         else pp=MathAbs((aPointAP[sd][5]-aPointAP[sd][1])/(aPointAP[sd][3]-aPointAP[sd][1]));

         if (aPointAP[sd][3]>aPointAP[sd][5]) // ?????????? ???? - ??????????? ?????
           {
            if (aPointAP[sd][5]<=aPointAP[sd][1] && aPointAP[sd][1]<aPointAP[sd][3] && pp<0.854) {x=3; y=2;} // ??????????? ??????????
            else if (aPointAP[sd][1]<aPointAP[sd][5])
                   {
                    if (pp<0.854) {x=3; y=1;}  // ????????? ??????????
                    else {x=2;  y=1;}          // ???????? ??????????
                   }
            else if (aPointAP[sd][5]<aPointAP[sd][1] && aPointAP[sd][1]<aPointAP[sd][3] && pp>=0.854 && pp<=1.146) {x=2; y=2;} // ??????????????
            else if ((aPointAP[sd][5]<aPointAP[sd][1] && aPointAP[sd][1]<=aPointAP[sd][3] && pp>1.146) || aPointAP[sd][1]>aPointAP[sd][3]) {x=3; y=2;}   // ?????
           }
         else if (aPointAP[sd][5]>aPointAP[sd][3]) // ?????????? ???? - ??????????? ????
           {
            if (aPointAP[sd][5]>=aPointAP[sd][1] && aPointAP[sd][1]>aPointAP[sd][3] && pp <0.854) {x=2; y=3;} // ??????????? ??????????
            else if (aPointAP[sd][1]>aPointAP[sd][5])
                   {
                    if (pp<0.854) {x=1; y=3;}  // ????????? ??????????
                    else {x=1;  y=2;}          // ???????? ??????????
                   }
            else if (aPointAP[sd][5]>aPointAP[sd][1] && aPointAP[sd][1]>aPointAP[sd][3] && pp>=0.854 && pp<=1.146) {x=2; y=2;} // ??????????????
            else if ((aPointAP[sd][5]>aPointAP[sd][1] && aPointAP[sd][1]>=aPointAP[sd][3] && pp>1.146) || aPointAP[sd][1]<aPointAP[sd][3]) {x=2; y=3;}   // ?????
           }

         ArraySort(arrm);
         for (i=i_1;i<i_2;i++)
           {
            if (cl<=arrm[i][0]) break;
           }

         i_1=i-y;
         i_2=i+x; if (cl==arrm[i][0]) i_2++;
         if (i_1<0) i_1=0;
         if (i_2>ArrayRange(arrm,0)) i_2=ArrayRange(arrm,0);
        }
      else exitSL=true;

      anum_cena[sd][0]=i_1;
      anum_cena[sd][1]=i_2-1;

      for (i=i_1;i<i_2;i++)
        {
         if (arrm[i][0]==0) continue;
         ii=arrm[i][5];

         if (ii==10)  // ??????????? ?????
           {
            if (arrm[i][6]==0)
              {
               nameObj=prefics+atextm[ii]+" x SSL";
               ObjectCreate(nameObj,OBJ_ARROW,0,arrm[i][1],arrm[i][2]);
               ObjectSet(nameObj,OBJPROP_ARROWCODE,symb);
               ObjectSet(nameObj,OBJPROP_BACK,mBack);

               if (writetofile)
                 {
                  FileSeek(handle, 0, SEEK_END);
                  FileWrite(handle, 0, ii, 1, DoubleToStr(arrm[i][4], Digits), 0, DoubleToStr(arrm[i][2], Digits), DoubleToStr(iClose(NULL,Period(),0), Digits), sd,
                   DoubleToStr(pitch_cena[0], Digits), DoubleToStr(pitch_cena[1], Digits), DoubleToStr(pitch_cena[2], Digits));
                 }
              }
            else if (arrm[i][6]==1)
              {
               nameObj=prefics+atextm[ii]+" x ISL 38.2";
               ObjectCreate(nameObj,OBJ_ARROW,0,arrm[i][3],arrm[i][4]);
               ObjectSet(nameObj,OBJPROP_ARROWCODE,symb);
               ObjectSet(nameObj,OBJPROP_BACK,mBack);
              }
           }
         else
           {
            if (!exitSL && ii>10) continue;

            if (ii==11 && mAuto && ObjectFind(_nameUTL)<0) visibleTL(pitch_cena, pitch_time, 11, sd);// UTL
            if (ii==12 && mAuto && ObjectFind(_nameLTL)<0) visibleTL(pitch_cena, pitch_time, 12, sd);// LTL

            if (ii>12) wl=DoubleToStr(arrm[i][6],3); else wl="";
            if (ii==13 && (mAuto && ObjectFind(_nameUWL)<0)) // UWL
              {
               if (ObjectFind(_nameUTL)<0) visibleTL(pitch_cena, pitch_time, 11, sd);// UTL
               if (sd==0)
                 {
                  visibleWL(pitch_cena, pitch_time, pitch_cena[0], pitch_time[0], pitch_cena[0]-tangensAP*a1, iTime(Symbol(),Period(),0), 13, sd, "", tangensAP, ExtLinePitchforkS, true);
                 }
               else
                 {
                  visibleWL(pitch_cena, pitch_time, pitch_cena[0], pitch_time[0], pitch_cena[0]-tangensAP*a1, iTime(Symbol(),Period(),0), 13, sd, "", tangensAP, ExtLinePitchforkD, true);
                 }
              }

            if (ii==14 && mAuto && ObjectFind(nameLWL)<0) // LWL
              {
               if (ObjectFind(_nameLTL)<0) visibleTL(pitch_cena, pitch_time, 12, sd);// LTL
               if (sd==0)
                 {
                  visibleWL(pitch_cena, pitch_time, pitch_cena[0], pitch_time[0], pitch_cena[0]-tangensAP*a1, iTime(Symbol(),Period(),0), 14, sd, "", tangensAP, ExtLinePitchforkS, true);
                 }
               else
                 {
                  visibleWL(pitch_cena, pitch_time, pitch_cena[0], pitch_time[0], pitch_cena[0]-tangensAP*a1, iTime(Symbol(),Period(),0), 14, sd, "", tangensAP, ExtLinePitchforkD, true);
                 }
              }

            if (aMetki[sd][ii]==1 || (mAuto &&aMetki[sd][ii]==0))
              {
               nameObj=prefics+atextm[ii]+wl+" x 0-bar";
               ObjectCreate(nameObj,OBJ_ARROW,0,iTime(NULL,Period(),0),arrm[i][0]);
               ObjectSet(nameObj,OBJPROP_ARROWCODE,SYMBOL_RIGHTPRICE);
               ObjectSet(nameObj,OBJPROP_BACK,mBack);
               if (writetofile)
                 {
                  FileSeek(handle, 0, SEEK_END);
                  FileWrite(handle, 0, ii, aMetki[sd][ii], 0, DoubleToStr(arrm[i][0], Digits), 0, DoubleToStr(iClose(NULL,Period(),0), Digits), sd,
                  DoubleToStr(pitch_cena[0], Digits), DoubleToStr(pitch_cena[1], Digits), DoubleToStr(pitch_cena[2], Digits));
                 }
              }
            else if (aMetki[sd][ii]>1 && arrm[i][4]>0)
              {
               if (aMetki[sd][ii]!=3 && aMetki[sd][ii]!=6 && aMetki[sd][ii]!=8)
                 {
                  nameObj=prefics+atextm[ii]+wl+" left 0-bar";
                  ObjectCreate(nameObj,OBJ_ARROW,0,arrm[i][1],arrm[i][2]);
                  ObjectSet(nameObj,OBJPROP_ARROWCODE,SYMBOL_LEFTPRICE);
                  ObjectSet(nameObj,OBJPROP_BACK,mBack);

                  nameObj=prefics+atextm[ii]+wl+" right 0-bar";
                  ObjectCreate(nameObj,OBJ_ARROW,0,arrm[i][3],arrm[i][4]);
                  ObjectSet(nameObj,OBJPROP_ARROWCODE,SYMBOL_RIGHTPRICE);
                  ObjectSet(nameObj,OBJPROP_BACK,mBack);
                 }

               if (aMetki[sd][ii]>7)
                 {
                  nameObj=prefics+atextm[ii]+wl+" line Zones";
                  ObjectCreate(nameObj,OBJ_TREND,0,arrm[i][1],arrm[i][2],arrm[i][3],arrm[i][4]);
                  ObjectSet(nameObj,OBJPROP_WIDTH,mLineZonesWidth); 
                  ObjectSet(nameObj,OBJPROP_RAY,false); 
                  ObjectSet(nameObj,OBJPROP_BACK,mBackZones); 
                 }
               else if (aMetki[sd][ii]>2 && aMetki[sd][ii]!=5)
                 {
                  if (aMetki[sd][ii]>5) nameObj=prefics+"Shift "+atextm[ii]+wl+" Zones"; 
                  else nameObj=prefics+atextm[ii]+wl+" Zones";
                  ObjectCreate(nameObj,OBJ_RECTANGLE,0,arrm[i][1],arrm[i][2],arrm[i][3],arrm[i][4]);
                  ObjectSet(nameObj,OBJPROP_BACK,mBackZones);
                 }

               if (writetofile)
                 {
                  FileSeek(handle, 0, SEEK_END);
                  FileWrite(handle, 0, ii, aMetki[sd][ii], DoubleToStr(arrm[i][2], Digits), 0, DoubleToStr(arrm[i][4], Digits), DoubleToStr(iClose(NULL,Period(),0), Digits), sd,
                  DoubleToStr(pitch_cena[0], Digits), DoubleToStr(pitch_cena[1], Digits), DoubleToStr(pitch_cena[2], Digits));
                 }
              }
           }
        }
     }

   if(VariantsPRZ==1)
     {
      checkAP (arrName);

      if (ArraySize(arrName)==0)
        {
         if (mWriteToFile)
           {
            if (FileSize(handle)<1) {FileClose(handle); FileDelete(file);} else FileClose(handle);
           }
         return;
        }

      str1=DoubleToStr(pitch_cena[0], Digits); str2=DoubleToStr(pitch_cena[1], Digits); str3=DoubleToStr(pitch_cena[2], Digits);
/*
mSelectVariantsPRZ
 = 1 - ????? ??????????? SSL
 = 2 - ????? ??????????? ???????
 = 3 - ????? ??????????? FSL
 = 4 - ???? ??????????? ?????? ???????
 = 5 - ???? ??????????? ?????? ??? 
 = 6 - ????? ??????????? 1/2 ???????
 = 7 - ???? ??????????? ?????? 1/2 ???????
 = 8 - ???? ??????????? ?????? ????? ?????
 = 9 - ????? ??????????? UTL, LTL
*/
      if (mSelectVariantsPRZ<6)
        {
         if (mSelectVariantsPRZ==1)       // ????? ??????????? SSL
           {
            externalAP (c1, pitch_cena[2], 0, 0, tangensAP, prefics+"SSL x ", "", "", arrName, handle, str1 , str2, str3, sd);
           }
         else if (mSelectVariantsPRZ==2)  // ????? ??????????? ???????
           {
            externalAP (a1, pitch_cena[0], 0, 0, tangensAP, prefics+"Mediana x ", "", "", arrName, handle, str1 , str2, str3, sd);
           }
         else if (mSelectVariantsPRZ==3)  // ????? ??????????? FSL
           {
            externalAP (b1, pitch_cena[1], 0, 0, tangensAP, prefics+"FSL x ", "", "", arrName, handle, str1 , str2, str3, sd);
           }
         else if (mSelectVariantsPRZ==4)  // ???? ??????????? ?????? ???????
           {
            externalAP (b1, pitch_cena[1]-hAP*(2-phi), b1, pitch_cena[1]-hAP*(phi-1), tangensAP, prefics+"ISL 38.2 x ", prefics+"ISL 61.8 x ", prefics+"channal Mediana x ", arrName, handle, str1 , str2, str3, sd);
           }
         else if (mSelectVariantsPRZ==5)  // ???? ??????????? ?????? ???
           {
            externalAP (b1, pitch_cena[1], c1, pitch_cena[2], tangensAP, prefics+"SSL x ", prefics+"FSL x ", prefics+"channal AP x ", arrName, handle, str1 , str2, str3, sd);
           }
        }
      else if (mSelectVariantsPRZ<9 && ExtPitchforkStatic==2)
        {
         cena2=pitch_cena[1]-hAP1_2mediana/2;

         if (mSelectVariantsPRZ==6)       // ????? ??????????? 1/2 ???????
           {
            externalAP (b1, cena2, 0, 0, tangens05median, prefics+"50% Mediana x ", "", "", arrName, handle, str1 , str2, str3, sd);
           }
         else if (mSelectVariantsPRZ==7)  // ???? ??????????? ?????? 1/2 ???????
           {
            externalAP (b1, pitch_cena[1]-hAP1_2mediana*(phi-1), b1, pitch_cena[1]-hAP1_2mediana*(2-phi), tangens05median, prefics+"SLM 38.2 x ", prefics+"SLM 61.8 x ", prefics+"channal 50% Mediana x ", arrName, handle, str1 , str2, str3, sd);
           }
         else if (mSelectVariantsPRZ==8)  // ???? ??????????? ?????? ????? ?????
           {
            externalAP (b1, pitch_cena[1], c1, pitch_cena[2], tangens05median, prefics+"SSL Shiff Line x ", prefics+"FSL Shiff Line x ", prefics+"channal Shiff Line x ", arrName, handle, str1 , str2, str3, sd);
           }
        }
      else if (mSelectVariantsPRZ==9)
        {
         if (ExtLTL) // ????? ??????????? LTL
           {
            externalAP (a1, pitch_cena[0], 0, 0, tangensLTL, prefics+"LTL x ", "", "", arrName, handle, str1 , str2, str3, sd);
           }

         if (ExtUTL) // ????? ??????????? UTL
           {
            externalAP (a1, pitch_cena[0], 0, 0, tangensUTL, prefics+"UTL x ", "", "", arrName, handle, str1 , str2, str3, sd);
           }
        }
     }

   if (mWriteToFile)
     {
      mPeriod=mPeriod+mPeriodWriteToFile*60;
      if (FileSize(handle)<1) {FileClose(handle); FileDelete(file);} else FileClose(handle);
     }
  }

/*
a1 - ????? ???? ?????? ????? 1
cenaA1 - ???? ?? ????? 1 ?? ???? a1
a2 - ????? ???? ?????? ????? 2
cenaA2 - ???? ?? ????? 2 ?? ???? a2
tangensA - ??????? ???? ??????? ????? ??????? ???
nameMetki1 - ???????????? ????? 1
nameMetki2 - ???????????? ????? 2
nameZones - ???????????? ????
aName[] - ?????? ? ?????????????? ??????? ???

???? ????????? ?????, ?? ? ?????? ?????? ????? ? ???????????? ???? ?????????? 0 ??? "" ??? ????????? ??????????

int    mSSL
int    mISL382
int    mMediana
int    mISL618
int    mFSL
int    mUWL
int    mLWL

int    m1_2Mediana
int    mSLM
int    mFSLShiffLines

int    mUTL
int    mLTL

*/

void externalAP (int a1, double cenaA1, int b1, double cenaB1, double tangensA, string nameMetki1, string nameMetki2, string nameZones, string aName[], int handle, string str1 , string str2, string str3, int sd)
  {
   int      i, j, k, x, y, z , wr, znak;
   int      a2, b2, c2;                 // ?????? ????? ???????? ??????? ???
   double   cPitch[3];                  // ???? ? ?????? ???????? ??????? ???
   datetime tPitch[3];                  // ????? ? ?????? ???????? ??????? ???
   color    PitchColor;                 // ???? ??????? ???, ??????????? ???????
   double   cena1, cena2, cena3;        // ???? ? ?????? ???????? ???????????? ???, ??????????? ???????
   datetime time1, time2, time3;        // ????? ? ?????? ???????? ???????????? ???, ??????????? ???????
   datetime twr;
   double   tangensAP, tangens05median; // ???????? ????? ??????? ??????? ???.
   double   hAP, hAP1_2mediana;         // 
   bool     typeAP;     //  = - false ???? ??????? ? ??????? ZUP, = true - ???? ??????? ???????
   string   suffics="", sufficsWL="", suffics_APm="", sufficsWL_APm;    // ????????????? ?????????????? ???????????? ??? ?????? ?????????.
   string   txt="";
   string   nameObjAP="";  // ???????????? ???????????? ???, ??????????? ???????
   string   nameObj_="";   // ???????? ???
   bool     canal=true; // ???? ?????? ????? ??? ????? ?? ??????? ??? ??? ?? ??????, ????????????? ????????????? ??????? ???
   string   str="";
   double   fi;

   if (StringLen(nameZones)==0) canal=false;

   for (i=ArraySize(aName)-1;i>=0;i--)
     {
      typeAP=false;
      if (StringFind(aName[i],"Andrews Pitchfork",0)>=0) typeAP=true;

      if (typeAP && mExternalHandAP==1) PitchColor=ObjectGet(aName[i],OBJPROP_COLOR);

      suffics="";
      sufficsWL="";

      if (StringFind(aName[i],"Andrews Pitchfork",0)>=0)
        {
         suffics=StringSubstr(aName[i],17);
        }
      else
        {
         j=StringFind(aName[i],"_",0);
         suffics=StringSubstr(aName[i],9);
         sufficsWL=StringSubstr(aName[i],10);
         if (StringSubstr(aName[i],9,1)=="S")
           {
            if (StringSubstr(aName[i],j+1,3)=="APm")
              {
               if (j+5<StringLen(aName[i]))
                 {
                  sufficsWL=StrToInteger(StringSubstr(aName[i],10,j-10))+"_"+StringSubstr(aName[i],j+5);
                  suffics="S"+sufficsWL;
                 }
              }
           }
        }
      suffics_APm=suffics;
      sufficsWL_APm=sufficsWL;
      if (StringFind(suffics,"_APm",0)>0)
        {
         suffics_APm=StringSubstr(suffics,0,StringFind(suffics,"APm",0));
         sufficsWL_APm=StringSubstr(sufficsWL,0,StringFind(sufficsWL,"APm",0));
        }

      tPitch[0]=ObjectGet(aName[i],OBJPROP_TIME1); cPitch[0]=ObjectGet(aName[i],OBJPROP_PRICE1);
      tPitch[1]=ObjectGet(aName[i],OBJPROP_TIME2); cPitch[1]=ObjectGet(aName[i],OBJPROP_PRICE2);
      tPitch[2]=ObjectGet(aName[i],OBJPROP_TIME3); cPitch[2]=ObjectGet(aName[i],OBJPROP_PRICE3);

      if (typeAP)
        {
         twr=iTime(Symbol(),Period(),0);
         if (tPitch[0]<=twr) a2=iBarShift(NULL,Period(),tPitch[0],false); else a2=-(tPitch[0]-twr)/(Period()*60);
         if (tPitch[1]<=twr) b2=iBarShift(NULL,Period(),tPitch[1],false); else b2=-(tPitch[1]-twr)/(Period()*60);
         if (tPitch[2]<=twr) c2=iBarShift(NULL,Period(),tPitch[2],false); else c2=-(tPitch[2]-twr)/(Period()*60);
        }
      else
        {
         a2=iBarShift(NULL,Period(),tPitch[0],false);
         b2=iBarShift(NULL,Period(),tPitch[1],false);
         c2=iBarShift(NULL,Period(),tPitch[2],false);
        }

      tangensAP=0;
      if ((a2-(c2+b2)/2.0)!=0) tangensAP=((cPitch[2]+cPitch[1])/2-cPitch[0])/(a2-(c2+b2)/2.0);

      hAP=cPitch[1]+(b2-c2)*tangensAP-cPitch[2];

      if (aMetki[sd][3]>0 || aMetki[sd][2]>0)
        {

         tangens05median=(cPitch[2]-cPitch[0])/(a2-c2);

         hAP1_2mediana=cPitch[1]-(cPitch[2]-tangens05median*(b2-c2));
        }

      if (aMetki[sd][1]>0)
        {
         txt=" SSL "+suffics;
         visual (a1, cenaA1, b1, cenaB1, tangensA, c2, cPitch[2], tangensAP, nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][1], handle, 1, str1 , str2, str3);
        }

      if (aMetki[sd][5]>0)
        {
         if (typeAP && mExternalHandAP==1)
           {
            _ISL("ISL_", tPitch, cPitch, PitchColor, STYLE_DASH, 2, suffics);
           }

         if ((typeAP && mExternalHandAP>0) || !typeAP)
           {
            txt=" ISL 38.2 "+suffics;
            visual (a1, cenaA1, b1, cenaB1, tangensA, b2, cPitch[1]-hAP*(phi-1), tangensAP, nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][5], handle, 5, str1 , str2, str3);
           }
        }

      if (aMetki[sd][6]>0)
        {
         txt=" Mediana "+suffics;
         visual (a1, cenaA1, b1, cenaB1, tangensA, a2, cPitch[0], tangensAP, nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][6], handle, 6, str1 , str2, str3);
        }

      if (aMetki[sd][7]>0)
        {
         if (typeAP && mExternalHandAP==1)
           {
            _ISL("ISL_", tPitch, cPitch, PitchColor, STYLE_DASH, 2, suffics);
           }

         if ((typeAP && mExternalHandAP>0) || !typeAP)
           {
            txt=" ISL 61.8 "+suffics;
            visual (a1, cenaA1, b1, cenaB1, tangensA, b2, cPitch[1]-hAP*(2-phi), tangensAP, nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][7], handle, 7, str1 , str2, str3);
           }
        }

      if (aMetki[sd][8]>0)
        {
         txt=" FSL "+suffics;
         visual (a1, cenaA1, b1, cenaB1, tangensA, b2, cPitch[1], tangensAP, nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][8], handle, 8, str1 , str2, str3);
        }

      if (aMetki[sd][13]>0 || aMetki[sd][14]>0)
        {
         if (typeAP && mExternalHandAP==1)
           {
            cena1=cPitch[0];
            time1=tPitch[0];
            time2=iTime(Symbol(),Period(),0);
            cena2=cPitch[0]-tangensAP*a2;

            visibleWL(cPitch, tPitch, cena1, time1, cena2, time2, 13, sd, suffics, tangensAP, PitchColor, false); // UWL
            visibleWL(cPitch, tPitch, cena1, time1, cena2, time2, 14, sd, suffics, tangensAP, PitchColor, false); // LWL
           }

         if (aMetki[sd][13]>0)
           {
            if ((typeAP && mExternalHandAP>0) || (!typeAP && ObjectFind("UWL" + sufficsWL_APm)==0))
              {
               if (!typeAP) nameObj_="UWL" + sufficsWL_APm;
               else if (typeAP && mExternalHandAP>0) nameObj_="UWL"+ ExtComplekt+"_" + suffics;

               if (cPitch[1]>cPitch[2])
                 {
                  y=b2;
                  cena3=cPitch[1];
                 }
               else
                 {
                  y=c2;
                  cena3=cPitch[2];
                 }

               if (ObjectFind(nameObj_)>=0)
                 {
                  x=ObjectGet(nameObj_,OBJPROP_FIBOLEVELS);
                  for (k=0;k<x;k++)
                    {
                     txt=" UWL " + DoubleToStr(ObjectGet(nameObj_,OBJPROP_FIRSTLEVEL+k),3) + suffics;
                     visual (a1, cenaA1, b1, cenaB1, tangensA, y, cena3+MathAbs(hAP)*ObjectGet(nameObj_,OBJPROP_FIRSTLEVEL+k)/2,
                      tangensAP, nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][13], handle, 13, str1 , str2, str3);
                    }
                 }
               else
                 {
                  if (ExtFiboFreePitchfork || ExtFiboType==2)
                    {
                     str=ExtFiboFreeUWL;
                    }
                  else
                    {
                     str="0.146,0.236,0.382,0.5,0.618,0.764,0.854,1,1.618,2.0,2.618,4.236";
                    }

                  x=quantityFibo (str);
                  for (k=0;k<=x;k++)
                    {
                     z=StringFind(str, ",", 0);
                     fi=StrToDouble(StringTrimLeft(StringTrimRight(StringSubstr(str,0,z))));

                     txt=" UWL " + DoubleToStr(fi,3) + suffics;
                     visual (a1, cenaA1, b1, cenaB1, tangensA, y, cena3+MathAbs(hAP)*fi/2, tangensAP, nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][13], handle, 13, str1 , str2, str3);

                     if (z>=0) str=StringSubstr(str,z+1);
                    }
                 }
              }
           }

         if (aMetki[sd][14]>0)
           {
            if ((typeAP && mExternalHandAP>0) || (!typeAP && ObjectFind("LWL" + sufficsWL_APm)==0))
              {
               if (!typeAP) nameObj_="LWL" + sufficsWL_APm;
               else if (typeAP && mExternalHandAP>0) nameObj_="LWL"+ ExtComplekt+"_" + suffics;

               if (cPitch[1]>cPitch[2])
                 {
                  y=c2;
                  cena3=cPitch[2];
                 }
               else
                 {
                  y=b2;
                  cena3=cPitch[1];
                 }

               if (ObjectFind(nameObj_)>=0)
                 {
                  x=ObjectGet(nameObj_,OBJPROP_FIBOLEVELS);
                  for (k=0;k<x;k++)
                    {
                     txt=" LWL " + DoubleToStr(ObjectGet(nameObj_,OBJPROP_FIRSTLEVEL+k),3) + suffics;
                     visual (a1, cenaA1, b1, cenaB1, tangensA, y, cena3-MathAbs(hAP)*ObjectGet(nameObj_,OBJPROP_FIRSTLEVEL+k)/2,
                      tangensAP, nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][14], handle, 14, str1 , str2, str3);
                    }
                 }
               else
                 {
                  if (ExtFiboFreePitchfork || ExtFiboType==2)
                    {
                     str=ExtFiboFreeLWL;
                    }
                  else
                    {
                     str="0.146,0.236,0.382,0.5,0.618,0.764,0.854,1,1.618,2.0,2.618,4.236";
                    }

                  x=quantityFibo (str);
                  for (k=0;k<=x;k++)
                    {
                     z=StringFind(str, ",", 0);
                     fi=StrToDouble(StringTrimLeft(StringTrimRight(StringSubstr(str,0,z))));

                     txt=" LWL " + DoubleToStr(fi,3) + suffics;
                     visual (a1, cenaA1, b1, cenaB1, tangensA, y, cena3-MathAbs(hAP)*fi/2, tangensAP, nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][14], handle, 14, str1 , str2, str3);

                     if (z>=0) str=StringSubstr(str,z+1);
                    }
                 }
              }
           }
        }

      if (aMetki[sd][3]>0)
        {
         if (typeAP && mExternalHandAP==1)
           {
            coordinaty_1_2_mediany_AP(cPitch[0], cPitch[1], cPitch[2], tPitch[0], tPitch[1], tPitch[2], time1, time2, cena1, cena2, 2, 0);

            nameObjAP="pmediana_" + ExtComplekt+"_" + suffics;

            ObjectDelete(nameObjAP);
            ObjectCreate(nameObjAP,OBJ_TREND,0,time1,cena1,time2,cena2);
            ObjectSet(nameObjAP,OBJPROP_STYLE,STYLE_DASH);
            ObjectSet(nameObjAP,OBJPROP_COLOR,PitchColor);
            ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
           }

         if ((typeAP && mExternalHandAP>0) || (!typeAP && ObjectFind("pmediana"+suffics_APm)==0))
           {
            txt=" 50% Mediana "+suffics;
            visual (a1, cenaA1, b1, cenaB1, tangensA, b2, cPitch[1]-hAP1_2mediana/2, tangens05median, nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][3], handle, 3, str1 , str2, str3);
           }
        }

      if (aMetki[sd][2]>0)
        {
         if (typeAP && mExternalHandAP==1)
           {
            if (a2>c2) znak=1;
            else if (a2==c2) znak=0;
            else znak=-1;

            wr=c2+(b2-c2)*(2-phi);
            cena1=cPitch[1] + (b2-c2)*(phi-1)*tangens05median-hAP1_2mediana*(phi-1);
            if (wr>=0)
              {
               time1=iTime(Symbol(),Period(),wr);
               cena2=cena1+znak*wr*tangens05median;
               if (znak>0) time2=iTime(Symbol(),Period(),0);
               else if (znak<0) time2=iTime(Symbol(),Period(),2*wr);
              }
            else
              {
               time1=iTime(Symbol(),Period(),0)-wr*Period()*60;
               if (znak!=0) cena2=cena1+znak*10*tangens05median;
               else
                 {
                  if (tangens05median>0) cena2=cena1*1.1;
                  else cena2=cena1*0.9;
                 }
               time2=iTime(Symbol(),Period(),0)-(wr-znak*10)*Period()*60;
              }

            nameObjAP="SLM382_" + ExtComplekt+"_" + suffics;
            ObjectDelete(nameObjAP);
            ObjectCreate(nameObjAP,OBJ_TREND,0,time1,cena1,time2,cena2);
            ObjectSet(nameObjAP,OBJPROP_STYLE,STYLE_DASH);
            ObjectSet(nameObjAP,OBJPROP_COLOR,PitchColor);
            ObjectSet(nameObjAP,OBJPROP_BACK,ExtBack);

            wr=c2+(b2-c2)*(phi-1);
            cena1=cPitch[1] + (b2-c2)*(2-phi)*tangens05median-hAP1_2mediana*(2-phi);
            if (wr>=0)
              {
               time1=iTime(Symbol(),Period(),wr);
               cena2=cena1+znak*wr*tangens05median;
               if (znak>0) time2=iTime(Symbol(),Period(),0);
               else if (znak<0) time2=iTime(Symbol(),Period(),2*wr);
              }
            else
              {
               time1=iTime(Symbol(),Period(),0)-wr*Period()*60;
               if (znak!=0) cena2=cena1+znak*10*tangens05median;
               else
                 {
                  if (tangens05median>0) cena2=cena1*1.1;
                  else cena2=cena1*0.9;
                 }
               time2=iTime(Symbol(),Period(),0)-(wr-znak*10)*Period()*60;
              }
            nameObjAP="SLM618_" + ExtComplekt+"_" + suffics;
            ObjectDelete(nameObjAP);
            ObjectCreate(nameObjAP,OBJ_TREND,0,time1,cena1,time2,cena2);

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

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

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

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

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

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

Стоимость полного кода
33 009,70₽ ≈ $403.44