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