zup_v82.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «zup_v82.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор MetaTrader 4 для построения ZigZag-линий и отображения аналитических инструментов на графике. Поддерживает множество методов расчёта ZigZag (стандартный, Ensign, DT-ZigZag, Talex, SQZZ, wellx и др.) с настраиваемыми параметрами чувствительности. Отображает уровни Фибоначчи (динамические и статические), каналы Эндрюса, вилку Фибоначчи, фан Фибоначчи, временные уровни Фибоначчи, зоны пивотов, паттерны Гартли и Песавенто, а также линии UWL/LWL, ISL, RL и RedZone. Имеет систему оповещений и уведомлений о событиях.
Настройки программы
| Настройка | Описание |
|---|---|
| ______________0_____________ | Разделитель ZigZag — Текстовый разделитель группы настроек ZigZag |
| ExtIndicator | Тип индикатора — Выбор метода расчёта ZigZag (0-14) |
| minBars | Минимум баров — Минимальное количество баров для подтверждения пика/падения |
| minSize | Минимальный размер — Минимальный размер движения в пунктах для подтверждения |
| ExtDeviation | Отклонение — Допустимое отклонение цены при подтверждении ZigZag |
| ExtBackstep | Шаг назад — Количество баров для проверки при подтверждении |
| GrossPeriod | Период расчёта — Таймфрейм для расчёта ZigZag |
| minPercent | Минимум процентов — Минимальный процент движения для подтверждения |
| ?????????? ????? ??????? ??? ??????? Talex (ExtPoint) | Точка Talex — Параметр для метода расчёта ZigZag Talex |
| StLevel | Уровень StLevel — Уровень для метода wellx |
| BigLevel | Уровень BigLevel — Уровень для метода wellx |
| auto | Автоуровни — Автоматический расчёт уровней StLevel и BigLevel |
| minBar | Минимум баров % — Минимальный процент баров для StLevel |
| ExtStyleZZ | Стиль ZigZag — Стиль отображения ZigZag (линия или стрелки) |
| ?????????? ????? ??????? (0-???) (ExtMaxBar) | Макс. баров ZigZag — Максимальное количество баров для расчёта ZigZag |
| ExtMinBar | Мин. баров ZigZag — Минимальное количество баров для расчёта ZigZag |
| ExtNumberPeak | Нумерация пиков — Отображение номеров пиков ZigZag |
| ExtNumberPeak10 | Нумерация 10 пиков — Нумерация последних 10 пиков |
| ExtNumberPeakLow | Низкие пики — Привязка нумерации к Low вместо High |
| ExtNumberPeakColor | Цвет нумерации — Цвет текста нумерации пиков |
| ExtNumberPeakFontSize | Размер шрифта — Размер шрифта нумерации пиков |
| ______________1_____________ | Разделитель Фибо — Текстовый разделитель группы настроек Фибоначчи |
| ExtFiboDinamic | Фибо динамические — Отображение динамических уровней Фибоначчи |
| ExtFiboStatic | Фибо статические — Отображение статических уровней Фибоначчи |
| ExtFiboStaticNum | Номер Фибо — Номер уровня Фибоначчи для статического отображения |
| ExtFiboCorrectionExpansion | Коррекция/Расширение — Режим Фибоначчи: коррекция или расширение |
| ExtFiboD | Цвет Фибо дин — Цвет динамических уровней Фибоначчи |
| ExtFiboS | Цвет Фибо стат — Цвет статических уровней Фибоначчи |
| ExtFiboStyle | Стиль Фибо — Стиль линий Фибоначчи |
| ExtFiboWidth | Ширина Фибо — Ширина линий Фибоначчи |
| ______________2_____________ | Разделитель Песавенто — Текстовый разделитель группы настроек Песавенто |
| ExtPPWithBars | PP с барами — Отображение количества баров в паттернах Песавенто |
| ExtHidden | Скрытые линии — Режим отображения скрытых линий Фибоначчи |
| ExtFractal | Фрактал начало — Начальный фрактал для расчёта |
| ExtFractalEnd | Фрактал конец — Конечный фрактал для расчёта |
| ExtFiboChoice | Выбор Фибо — Выбор набора уровней Фибоначчи |
| ExtFiboZigZag | Фибо ZigZag — Привязка Фибо к ZigZag |
| ExtDelta | Дельта — Порог отклонения для поиска паттернов |
| ExtDeltaType | Тип дельты — Тип расчёта дельты (абсолютная/процентная) |
| ExtSizeTxt | Размер текста — Размер текста подписей |
| ExtLine | Цвет линий — Цвет основных линий |
| ExtLine886 | Цвет 886 — Цвет линии уровня 0.886 |
| ExtNotFibo | Не Фибо цвет — Цвет для не-Фибо уровней |
| ExtPesavento | Цвет Песавенто — Цвет линий Песавенто |
| ExtGartley886 | Цвет Гартли 886 — Цвет линии 0.886 Гартли |
| ______________3_____________ | Разделитель Гартли — Текстовый разделитель группы настроек Гартли |
| maxDepth | Макс. глубина — Максимальная глубина поиска Гартли |
| minDepth | Мин. глубина — Минимальная глубина поиска Гартли |
| DirectionOfSearchMaxMin | Направление поиска — Направление поиска max/min |
| ????? ????????, ?? ???????? ??????????? ?????? ? ????????? ???????? ????????? ????? InfoTF (NumberPattern) | Номер паттерна — Номер паттерна для поиска |
| ExtGartleyTypeSearch | Тип поиска Гартли — Тип поиска паттернов Гартли |
| ExtHiddenPP | Скрытые Песавенто — Режим отображения скрытых Песавенто |
| ExtGartleyOnOff | Гартли вкл/выкл — Включение/выключение поиска Гартли |
| maxBarToD | Макс. баров до D — Максимальное количество баров до точки D |
| RangeForPointD | Диапазон точки D — Диапазон для определения точки D |
| ExtColorRangeForPointD | Цвет диапазона D — Цвет диапазона точки D |
| ExtLineForPointD_AB | Линия AB точки D — Цвет линии AB для точки D |
| ExtLineForPointD_BC | Линия BC точки D — Цвет линии BC для точки D |
| ExtColorPatterns | Цвет паттернов — Цвет линий паттернов |
| ExtColorPatternList | Список цветов — Список цветов для паттернов |
| ExtDeltaGartley | Дельта Гартли — Дельта для паттернов Гартли |
| ExtCD | CD коэффициент — Коэффициент CD для Гартли |
| Equilibrium | Эквилибриум — Отображение линий Эквилибриум |
| ReactionType | Тип реакции — Тип расчёта реакции |
| EquilibriumStyle | Стиль Эквилибриум — Стиль линий Эквилибриум |
| EquilibriumWidth | Ширина Эквилибриум — Ширина линий Эквилибриум |
| ColorEquilibrium | Цвет Эквилибриум — Цвет линий Эквилибриум |
| ColorReaction | Цвет реакции — Цвет линий реакции |
| ______________4_____________ | Разделитель Питчфорк — Текстовый разделитель группы настроек Питчфорк |
| ExtPitchforkDinamic | Питчфорк динамический — Отображение динамической вилки Фибоначчи |
| ExtPitchforkStatic | Питчфорк статический — Отображение статической вилки Фибоначчи |
| ExtPitchforkStaticNum | Номер Питчфорк — Номер уровня для статической вилки |
| ExtLinePitchforkD | Цвет Питчфорк дин — Цвет динамической вилки |
| ExtLinePitchforkS | Цвет Питчфорк стат — Цвет статической вилки |
| ExtPitchforkStaticColor | Цвет стат Питчфорк — Цвет статической вилки |
| ExtPitchforkStyle | Стиль Питчфорк — Стиль линий вилки Фибоначчи |
| ExtPitchforkWidth | Ширина Питчфорк — Ширина линий вилки Фибоначчи |
| ExtISLStyle | Стиль ISL — Стиль линий ISL |
| ExtISLWidth | Ширина ISL — Ширина линий ISL |
| ????? ?????????? ?????????????? (ExtFiboFanDinamic) | Фан Фибо динамический — Отображение динамического фана Фибоначчи |
| ????????? ?????? ????????? ?? ???????????? ?????? (ExtFiboFanStatic) | Фан Фибо статический — Отображение статического фана Фибоначчи |
| ExtFiboFanExp | Фан расширение — Режим фана: расширение или стандартный |
| ExtFiboFanHidden | Фан скрытый — Отображение скрытого фана Фибоначчи |
| ExtFiboFanD | Цвет Фан дин — Цвет динамического фана Фибоначчи |
| ExtFiboFanS | Цвет Фан стат — Цвет статического фана Фибоначчи |
| ExtFiboFanMedianaDinamicColor | Цвет медианы дин — Цвет динамической медианы фана |
| ExtFiboFanMedianaStaticColor | Цвет медианы стат — Цвет статической медианы фана |
| ExtFiboTime1 | Fibo Time 1 — Отображение временного уровня Фибоначчи 1 |
| ExtFiboTime2 | Fibo Time 2 — Отображение временного уровня Фибоначчи 2 |
| ExtFiboTime3 | Fibo Time 3 — Отображение временного уровня Фибоначчи 3 |
| ExtFiboTime1C | Цвет Time 1 — Цвет временного уровня Фибоначчи 1 |
| ExtFiboTime2C | Цвет Time 2 — Цвет временного уровня Фибоначчи 2 |
| ExtFiboTime3C | Цвет Time 3 — Цвет временного уровня Фибоначчи 3 |
| ExtVisibleDateTime | Видимость даты — Отображение дат на временных уровнях |
| ExtVisibleNumberFiboTime | Номера Fibo Time — Номера отображаемых Fibo Time уровней |
| ExtPivotZoneDinamicColor | Цвет зоны пивотов дин — Цвет динамической зоны пивотов |
| ExtPivotZoneStaticColor | Цвет зоны пивотов стат — Цвет статической зоны пивотов |
| ExtPivotZoneFramework | Фрейм зоны пивотов — Отображение рамки зоны пивотов |
| ExtUTL | UTL линия — Отображение линии UTL |
| ExtLTL | LTL линия — Отображение линии LTL |
Поиск по коду файла
#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.61803399
extern string ______________0_____________ = "Parameters for ZigZag";
extern int ExtIndicator = 11;
extern int minBars = 12;
extern int minSize = 50;
extern int ExtDeviation = 8;
extern int ExtBackstep = 3;
extern int GrossPeriod = 1440;
extern double minPercent = 0;
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 = 300; // ?????????? ????? ??????? (0-???)
extern int ExtMinBar = 0;
extern bool ExtNumberPeak = false;
extern bool ExtNumberPeak10 = true;
extern bool ExtNumberPeakLow = true;
extern color ExtNumberPeakColor = Red;
extern int ExtNumberPeakFontSize = 12;
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 = 7;
extern color ExtLine = DarkBlue;
extern color ExtLine886 = Purple;
extern color ExtNotFibo = SlateGray;
extern color ExtPesavento = Yellow;
extern color ExtGartley886 = GreenYellow;
color colorPPattern;
extern string ______________3_____________ = "Parameters for Gartley Patterns";
extern int maxDepth = 33;
extern int minDepth = 3;
extern bool DirectionOfSearchMaxMin = true;
extern int NumberPattern = 1; // ????? ????????, ?? ???????? ??????????? ?????? ? ????????? ???????? ????????? ????? InfoTF
extern int ExtGartleyTypeSearch = 0;
extern int ExtHiddenPP = 1;
extern bool ExtGartleyOnOff = false;
extern int maxBarToD = 15;
extern int RangeForPointD = 2;
extern color ExtColorRangeForPointD = Red;
extern color ExtLineForPointD_AB = Aqua;
extern color ExtLineForPointD_BC = Gold;
extern color ExtColorPatterns = Blue;
extern string ExtColorPatternList = "Blue,DarkGreen,Navy,Sienna,MediumBlue,RoyalBlue,DodgerBlue,CornflowerBlue,LightSkyBlue,SlateBlue,MediumSlateBlue,SlateGray,LightSteelBlue";
extern double ExtDeltaGartley = 0.09;
extern double ExtCD = 0.886;
extern bool Equilibrium = true;
extern bool ReactionType = false;
extern int EquilibriumStyle = 1;
extern int EquilibriumWidth = 0;
extern color ColorEquilibrium = Red;
extern color ColorReaction = Yellow;
extern string ______________4_____________ = "Parameters for Andrews Pitchfork";
extern int ExtPitchforkDinamic = 0;
extern int ExtPitchforkStatic = 0;
extern int ExtPitchforkStaticNum = 3;
extern color ExtLinePitchforkD = MediumSlateBlue;
extern color ExtLinePitchforkS = MediumBlue;
extern color ExtPitchforkStaticColor = CLR_NONE;
extern int ExtPitchforkStyle = 1;
extern int ExtPitchforkWidth = 0;
extern int ExtISLStyle = 1;
extern int ExtISLWidth = 0;
extern bool ExtFiboFanDinamic = false; // ????? ?????????? ??????????????
extern bool ExtFiboFanStatic = false; // ????????? ?????? ????????? ?? ???????????? ??????
extern bool ExtFiboFanExp = true;
extern bool ExtFiboFanHidden = false;
extern color ExtFiboFanD = Sienna;
extern color ExtFiboFanS = Teal;
extern color ExtFiboFanMedianaDinamicColor = CLR_NONE;
extern color ExtFiboFanMedianaStaticColor = CLR_NONE;
extern bool ExtFiboTime1 = false;
extern bool ExtFiboTime2 = false;
extern bool ExtFiboTime3 = false;
extern color ExtFiboTime1C = Teal;
extern color ExtFiboTime2C = Sienna;
extern color ExtFiboTime3C = Aqua;
extern bool ExtVisibleDateTime = false;
extern string ExtVisibleNumberFiboTime = "111";
extern color ExtPivotZoneDinamicColor = CLR_NONE;
extern color ExtPivotZoneStaticColor = CLR_NONE;
extern bool ExtPivotZoneFramework = false;
extern bool ExtUTL = false;
extern bool ExtLTL = false;
extern bool ExtUWL = false;
extern bool ExtVisibleUWL = false;
extern bool ExtLWL = false;
extern bool ExtVisibleLWL = false;
extern bool ExtLongWL = false;
extern bool ExtISLDinamic = false;
extern bool ExtISLStatic = false;
extern bool ExtVisibleISL = false;
extern bool ExtRL146 = true;
extern bool ExtRLDinamic = true;
extern bool ExtRLStatic = true;
extern bool ExtVisibleRL = true;
extern bool ExtRLineBase = true;
extern bool ExtRedZoneDinamic = false;
extern bool ExtRedZoneStatic = false;
extern double ExtRZDinamicValue = 0.146;
extern double ExtRZStaticValue = 0.146;
extern color ExtRZDinamicColor = Salmon;
extern color ExtRZStaticColor = Salmon;
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 string ExtFiboFreeFT1 = "0.382,0.618,1.0,1.236,1.618";
extern string ExtFiboFreeFT2 = "0.382,0.618,1.0,1.236,1.618";
extern string ExtFiboFreeFT3 = "0.382,0.618,1.0,1.236,1.618";
extern string ExtFiboFreeRL = "0.382,0.618,1,1.618,2.618,3.618";
extern string ExtFiboFreeUWL = "0.382,0.618,1,1.618,2.618,3.618";
extern string ExtFiboFreeLWL = "0.382,0.618,1,1.618,2.618,3.618";
extern string ExtFiboFreeISL = "0.25,0.75";
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 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;
extern string ExtVisibleDinamic = "01000000000";
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 = "11111";
extern bool infoTF = true;
extern int ExtComplekt = 0;
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;
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;
string txtkk;
int timeFr1new;
int countFr;
int countBarEnd=0,TimeBarEnd;
int numBar=0;
int numOb;
bool flagFrNew=false;
bool newRay=true;
bool flagGartle=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 ms[2];
string vBullBear = ""; // ?????????? ??? ??????????? ????? ??? ???????? ???????
string vNamePattern = ""; // ?????????? ??? ??????????? ???????????? ????????
string vBullBearToNumberPattern = "";
string vNamePatternToNumberPattern = "";
int maxPeak, vPatOnOff, vPatNew=0;
int Depth;
double hBar, lBar;
datetime tiZZ;
bool FlagForD = true; // ?????????? ?? ????? ??????? ??????????? ????? D ???????? (Gartley)
datetime TimeForDmin = 0, TimeForDminToNumberPattern;
datetime TimeForDmax = 0, TimeForDmaxToNumberPattern;
double LevelForDmin = 0, LevelForDminToNumberPattern;
double LevelForDmax = 0, LevelForDmaxToNumberPattern;
double PeakCenaX[1],PeakCenaA[1],PeakCenaB[1],PeakCenaC[1],PeakCenaD[1];
datetime PeakTimeX[1],PeakTimeA[1],PeakTimeB[1],PeakTimeC[1],PeakTimeD[1];
int countGartley = 0; // ??????? ?????????
int minBarsToNumberPattern;
color ColorList[];
int ColorSize=0;
int countColor = 0;
bool flagExtGartleyTypeSearch2=false;
int minBarsSave, minBarsX;
string info_RZS_RL="",info_RZD_RL="";
static int endbar = 0;
static double endpr = 0;
static int GPixels,VPixels;
int rect[4],hwnd;
int f=1;
int DinamicChannels=-1;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
int i;
delete_objects_dinamic();
delete_objects1();
delete_objects3();
delete_objects4();
delete_objects5();
delete_objects_spiral();
delete_objects_number();
ObjectDelete("fiboS" + ExtComplekt+"_");
ObjectDelete("fiboFanS" + ExtComplekt+"_");
ObjectDelete("RLineS" + ExtComplekt+"_");
ObjectDelete("pitchforkS" + ExtComplekt+"_");
ObjectDelete("pmedianaS" + ExtComplekt+"_");
ObjectDelete("1-2pmedianaS" + ExtComplekt+"_");
ObjectDelete("fiboTime1" + ExtComplekt+"_");ObjectDelete("fiboTime2" + ExtComplekt+"_");ObjectDelete("fiboTime3" + ExtComplekt+"_");
ObjectDelete("fiboTime1Free" + ExtComplekt+"_");ObjectDelete("fiboTime2Free" + ExtComplekt+"_");ObjectDelete("fiboTime3Free" + ExtComplekt+"_");
ObjectDelete("UTL" + ExtComplekt+"_");ObjectDelete("LTL" + ExtComplekt+"_");
ObjectDelete("UWL" + ExtComplekt+"_");ObjectDelete("LWL" + ExtComplekt+"_");
ObjectDelete("ISL_S" + ExtComplekt+"_");
ObjectDelete("RZS" + ExtComplekt+"_");
ObjectDelete("CL" + ExtComplekt+"_");
ObjectDelete("PivotZoneS" + ExtComplekt+"_");
ObjectDelete("FanMedianaStatic" + ExtComplekt+"_");
ObjectDelete("FiboFan" + ExtComplekt+"_");
ObjectDelete("FiboArcS" + ExtComplekt+"_");
ObjectDelete("LinePivotZZ" + "1" + ExtComplekt+"_");
ObjectDelete("LinePivotZZ" + "2" + 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);
}
Comment("");
return(0);
}
int start()
{
// код доступен только после оплаты
} // start
void countFractal()
{
int shift;
countLow1=0;
countHigh1=0;
if (flagFrNew && !flagGartle)
{
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 (flagGartle) {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;
double kl=0,kh=0;
if (ExtMaxBar>0) cbi=ExtMaxBar; else cbi=Bars;
k=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 (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 (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]]);
if (ExtGartleyOnOff)
{
switch (ExtIndicator)
{
case 0 : {_Gartley("ExtIndicator=0_" + minBars+"/"+ExtDeviation+"/"+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+"/"+ExtDeviation+"/"+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==1 && vPatNew==0)
{
vPatNew=1;
if (ExtSendMail) _SendMail("There was a pattern","on " + Symbol() + " " + Period() + " pattern " + vBullBear + " " + vNamePattern);
}
else if (vPatOnOff==0 && vPatNew==1) {vPatNew=0; FlagForD=true;}
}
ExtSave=false;
}
if (newRay && ExtNumberPeak) NumberPeak();
newRay=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];
}
}
/*
else if (j==3)
{
if (afrx[mChannels[i-1]]<afrx[mChannels[i-1]-2] && afrx[mChannels[i-1]-1]<afrx[mChannels[i]])
{
o=1;
Print ("===1===");
fTrend=true;
if (afrx[mChannels[i-1]]<afrx[mChannels[i-1]-1]) baseExtremum=mChannels[i-1]; else baseExtremum=mChannels[i-1]-1;
}
else if (afrx[mChannels[i-1]]>afrx[mChannels[i-1]-2] && afrx[mChannels[i-1]-1]>afrx[mChannels[i]])
{
o=2;
Print ("===2===");
fTrend=false;
if (afrx[mChannels[i-1]]<afrx[mChannels[i-1]-1]) baseExtremum=mChannels[i-1]-1; else baseExtremum=mChannels[i-1];
}
else
{
if (MathAbs(afrx[mChannels[i-1]]-afrx[mChannels[i-1]-1])>MathAbs(afrx[mChannels[i]]-afrx[mChannels[i]+1])) // ?????????? ???????????
{
if (MathAbs(afrx[mChannels[i-1]]-afrx[mChannels[i-1]-2])>MathAbs(afrx[mChannels[i]]-afrx[mChannels[i]+2]))
{
if (afrx[mChannels[i-1]]<afrx[mChannels[i-1]-1])
{
fTrend=true;
if (afrx[mChannels[i-1]]>afrx[mChannels[i]+1]) baseExtremum=mChannels[i]+1; else baseExtremum=mChannels[i-1];
}
else
{
fTrend=false;
if (afrx[mChannels[i-1]]>afrx[mChannels[i]+1]) baseExtremum=mChannels[i-1]; else baseExtremum=mChannels[i]+1;
}
o=3;
Print ("===3===");
}
else
{
if (afrx[mChannels[i-1]]<afrx[mChannels[i-1]-1])
{
fTrend=false;
if (afrx[mChannels[i-1]-1]>afrx[mChannels[i]]) baseExtremum=mChannels[i-1]-1; else baseExtremum=mChannels[i];
}
else
{
fTrend=true;
if (afrx[mChannels[i-1]-1]>afrx[mChannels[i]]) baseExtremum=mChannels[i]; else baseExtremum=mChannels[i-1]-1;
}
o=4;
Print ("===4===");
}
}
else // ???????????? ??????????? ??? ??????? (????????????) ?????????, ??? ????? ?????
{
if (MathAbs(afrx[mChannels[i-1]]-afrx[mChannels[i-1]-2])>MathAbs(afrx[mChannels[i]]-afrx[mChannels[i]+2]))
{
if (afrx[mChannels[i-1]]<afrx[mChannels[i-1]-1])
{
o=5;
Print ("===5===");
Print (MathAbs(afrx[mChannels[i-1]]-afrx[mChannels[i-1]-2])-MathAbs(afrx[mChannels[i]]-afrx[mChannels[i]+2]));
fTrend=false;
if (afrx[mChannels[i]]>afrx[mChannels[i]+2]) baseExtremum=mChannels[i]; else baseExtremum=mChannels[i]+2;
}
else
{
o=51;
Print ("===51===");
Print (MathAbs(afrx[mChannels[i-1]]-afrx[mChannels[i-1]-2])-MathAbs(afrx[mChannels[i]]-afrx[mChannels[i]+2]));
fTrend=true;
if (afrx[mChannels[i]]>afrx[mChannels[i]+2]) baseExtremum=mChannels[i]; else baseExtremum=mChannels[i]+2;
}
}
else
{
if (afrx[mChannels[i-1]]<afrx[mChannels[i-1]-1])
{
o=6;
Print (MathAbs(afrx[mChannels[i-1]]-afrx[mChannels[i-1]-2])-MathAbs(afrx[mChannels[i]]-afrx[mChannels[i]+2]));
Print ("afrx[mChannels[i-1]]=",afrx[mChannels[i-1]]);
Print ("afrx[mChannels[i-1]-1]=",afrx[mChannels[i-1]-1]);
Print ("===6===");
fTrend=true;
if (afrx[mChannels[i]+1]>afrx[mChannels[i-1]]) baseExtremum=mChannels[i-1]; else baseExtremum=mChannels[i]+1;
}
else
{
o=7;
Print (MathAbs(afrx[mChannels[i-1]]-afrx[mChannels[i-1]-2])-MathAbs(afrx[mChannels[i]]-afrx[mChannels[i]+2]));
Print ("===7===");
fTrend=false;
if (afrx[mChannels[i]+1]>afrx[mChannels[i-1]]) baseExtremum=mChannels[i]+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,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)
{
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,false);
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;
double a1,b1,c1,ab1,bc1,ab2,bc2,tangens,n1,cl1,ch1,cena;
datetime ta1,tb1,tc1,tab2,tbc2,tcl1,tch1;
int pitch_time[]={0,0,0};
double pitch_cena[]={0,0,0};
double TLine, m618=0.618, m382=0.382;
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)];
}
}
}
if (ExtPitchforkCandle)
{
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 (afrl[mPitch[0]]>0)
{
cena=afrl[mPitch[0]];
mPitchCena[0]=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[0]=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();}
nameObj="pmedianaS" + ExtComplekt+"_";
ObjectDelete(nameObj);
if (ExtSave)
{
if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
{
nameObj=nameObj + save;
}
else
{
if (mPitch[2]>0)
{
nameObj=nameObj + save;
}
}
}
coordinaty_1_2_mediany_AP(mPitchCena[0], mPitchCena[1], mPitchCena[2], mPitchTime[0], mPitchTime[1], mPitchTime[2], tab2, tbc2, ab1, bc1);
pitch_time[0]=tab2;pitch_cena[0]=ab1;
if (ExtPitchforkStatic==2)
{
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);
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);
}
nameObj="pitchforkS" + ExtComplekt+"_";
if (ExtSave)
{
if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
{
nameObj=nameObj + save;
}
else
{
if (mPitch[2]>0)
{
nameObj=nameObj + save;
}
}
}
ObjectDelete(nameObj);
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];
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 (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="UTL" + ExtComplekt+"_";
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="LTL" + ExtComplekt+"_";
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="UWL" + 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_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,"U W L ",ExtFiboFreeUWL);
}
if (ExtLWL)
{
nameObj="LWL" + 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_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,"L W L ",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 (ExtISLStatic)
{
_ISL("ISL_S", pitch_time, pitch_cena, ExtLinePitchforkS);
}
if (ExtRLStatic)
{
_RL("RLineS", pitch_time, pitch_cena, ExtLinePitchforkS);
}
if (ExtRedZoneStatic)
{
_RZ("RZS", ExtRZStaticValue, ExtRZStaticColor, pitch_time, pitch_cena);
}
fiboTimeX ();
}
void UWL_LWL (bool visible, string WL, string fiboFree)
{
int i,j,k;
string str;
double fi;
if (ExtFiboType==2)
{
j=quantityFibo (fiboFree);
str=fiboFree;
}
else
{
j=12;
str="0.146,0.236,0.382,0.5,0.618,0.764,0.854,1,1.618,2.0,2.618,4.0";
}
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,j+1);
for (i=0;i<=j;i++)
{
k=StringFind(str, ",", 0);
fi=StrToDouble(StringTrimLeft(StringTrimRight(StringSubstr(str,0,k))));
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi);
if (visible) ObjectSetFiboDescription(nameObj, i, WL+DoubleToStr(fi*100,1));
if (k>=0) str=StringSubstr(str,k+1);
}
}
void fiboTimeX ()
{
bool ft1, ft2, ft3;
color ftc1, ftc2, ftc3;
ft1=ExtFiboTime1;
ft2=ExtFiboTime2;
ft3=ExtFiboTime3;
ftc1=ExtFiboTime1C;
ftc2=ExtFiboTime2C;
ftc3=ExtFiboTime3C;
if (ExtFiboTimeNum>2)
{
ft1=ExtFiboTime1x;
ft2=ExtFiboTime2x;
ft3=ExtFiboTime3x;
ftc1=ExtFiboTime1Cx;
ftc2=ExtFiboTime2Cx;
ftc3=ExtFiboTime3Cx;
int mft[]={0,0,0};
string aa=DoubleToStr(ExtFiboTimeNum,0);
double ftmincena;
mft[0]=StrToInteger(StringSubstr(aa,0,1));
mft[1]=StrToInteger(StringSubstr(aa,1,1));
mft[2]=StrToInteger(StringSubstr(aa,2,1));
ArraySort(mft,WHOLE_ARRAY,0,MODE_DESCEND);
if (mft[0]<3) ExtFiboTimeNum=0;
else
{
if (mft[1]==1) mft[1]++;
if (mft[1]==0) {mft[1]=mft[0]-1; mft[2]=mft[1]-1;}
if (mft[2]==0) mft[2]=mft[1]-1;
}
if (afrx[mft[0]]<afrx[mft[1]]) ftmincena=afrx[mft[0]]; else ftmincena=afrx[mft[1]];
if (ftmincena>afrx[mft[2]]) ftmincena=afrx[mft[2]];
}
if (ft1)
{
if (ExtFiboTimeNum>2)
{
nameObj="fiboTime1Free" + ExtComplekt+"_";
}
else
{
nameObj="fiboTime1" + ExtComplekt+"_";
}
if (ExtSave)
{
if (ExtFiboTimeNum>2)
{
nameObj=nameObj + save;
}
else
{
if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
{
nameObj=nameObj + save;
}
else
{
if (mPitch[2]>0)
{
nameObj=nameObj + save;
}
}
}
}
ObjectDelete(nameObj);
if (ExtFiboTimeNum>2)
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,afr[mft[0]],ftmincena-5*Point,afr[mft[2]],ftmincena-5*Point);
}
else
{
if (ExtPitchforkCandle)
{
if (!ExtPitchfork_1_HighLow)
{
if (mPitchCena[0]>mPitchCena[2])
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,mPitchTime[0],mPitchCena[2]-5*Point,mPitchTime[2],mPitchCena[2]-5*Point);
}
else
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,mPitchTime[0],mPitchCena[0]-5*Point,mPitchTime[2],mPitchCena[0]-5*Point);
}
}
else
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,mPitchTime[0],mPitchCena[1]-5*Point,mPitchTime[2],mPitchCena[1]-5*Point);
}
}
else
{
if (afrl[mPitch[0]]>0)
{
if (afrl[mPitch[0]]>afrl[mPitch[2]])
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,mPitchTime[0],mPitchCena[2]-5*Point,mPitchTime[2],mPitchCena[2]-5*Point);
}
else
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,mPitchTime[0],mPitchCena[0]-5*Point,mPitchTime[2],mPitchCena[0]-5*Point);
}
}
else
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,mPitchTime[0],mPitchCena[1]-5*Point,mPitchTime[2],afrl[mPitch[1]]-5*Point);
}
}
}
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ftc1);
if (ExtFiboTimeNum>2)
{
fiboTime (nameObj, afr[mft[0]], afr[mft[2]]-afr[mft[0]], 0, "FT1_");
}
else
{
fiboTime (nameObj, mPitchTime[0], mPitchTime[2]-mPitchTime[0], 0, "FT1 ");
}
}
if (ft2)
{
if (ExtFiboTimeNum>2)
{
nameObj="fiboTime2Free" + ExtComplekt+"_";
}
else
{
nameObj="fiboTime2" + ExtComplekt+"_";
}
if (ExtSave)
{
if (ExtFiboTimeNum>2)
{
nameObj=nameObj + save;
}
else
{
if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
{
nameObj=nameObj + save;
}
else
{
if (mPitch[2]>0)
{
nameObj=nameObj + save;
}
}
}
}
ObjectDelete(nameObj);
if (ExtFiboTimeNum>2)
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,afr[mft[1]],(afrx[mft[2]]+afrx[mft[1]])/2,afr[mft[2]],(afrx[mft[2]]+afrx[mft[1]])/2);
}
else
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,mPitchTime[1],(mPitchCena[2]+mPitchCena[1])/2,mPitchTime[2],(mPitchCena[2]+mPitchCena[1])/2);
}
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ftc2);
if (ExtFiboTimeNum>2)
{
fiboTime (nameObj, afr[mft[1]], afr[mft[2]]-afr[mft[1]], 1, "FT2_");
}
else
{
fiboTime (nameObj, mPitchTime[1], mPitchTime[2]-mPitchTime[1], 1, "FT2 ");
}
}
if (ft3)
{
datetime shiftTime;
if (ExtFiboTimeNum>2)
{
shiftTime=afr[mft[1]]-afr[mft[0]];
nameObj="fiboTime3Free" + ExtComplekt+"_";
}
else
{
shiftTime=mPitchTime[1]-mPitchTime[0];
nameObj="fiboTime3" + ExtComplekt+"_";
}
if (ExtSave)
{
if (ExtFiboTimeNum>2)
{
nameObj=nameObj + save;
}
else
{
if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
{
nameObj=nameObj + save;
}
else
{
if (mPitch[2]>0)
{
nameObj=nameObj + save;
}
}
}
}
ObjectDelete(nameObj);
if (ExtFiboTimeNum>2)
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,afr[mft[2]]-shiftTime,(afrx[mft[2]]+afrx[mft[1]])/2-8*Point,afr[mft[2]],(afrx[mft[2]]+afrx[mft[1]])/2-8*Point);
}
else
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,mPitchTime[2]-shiftTime,(mPitchCena[2]+mPitchCena[1])/2-8*Point,mPitchTime[2],(mPitchCena[2]+mPitchCena[1])/2-8*Point);
}
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ftc3);
if (ExtFiboTimeNum>2)
{
fiboTime (nameObj, afr[mft[2]]-shiftTime, shiftTime, 2, "FT3_");
}
else
{
fiboTime (nameObj, mPitchTime[2]-shiftTime, shiftTime, 2, "FT3 ");
}
}
}
void fiboTime (string nameObj, datetime t1, datetime t2, int number, string ftx)
{
string str, str1;
double fi;
int j,k;
int ftvisibleDT;
string ftvisible;
if (ExtFiboTimeNum>2)
{
ftvisibleDT=ExtVisibleDateTimex;
ftvisible=ExtVisibleNumberFiboTimex;
}
else
{
ftvisibleDT=ExtVisibleDateTime;
ftvisible=ExtVisibleNumberFiboTime;
}
ObjectSet(nameObj,OBJPROP_COLOR,ExtObjectColor);
ObjectSet(nameObj,OBJPROP_STYLE,ExtObjectStyle);
ObjectSet(nameObj,OBJPROP_WIDTH,ExtObjectWidth);
ObjectSet(nameObj,OBJPROP_LEVELSTYLE,STYLE_DOT);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
if (ExtFiboType==1) // ???? ????-Time ? ??????? ?????????.
{
str="0.382,0.5,0.618,0.707,0.786,0.886,1.0,1.272,1.414,1.618,2.0,2.414,2.618,3.0";
}
else if (ExtFiboType==0) // ???? ????-Time ?? ???????????? ???????.
{
str="0.146,0.236,0.382,0.5,0.618,0.764,0.854,1.0,1.236,1.382,1.618,2.0,2.618,3.0,4.0";
}
else if (ExtFiboType==2) // ???? ????-Time ? ????????????????? ???????.
{
if (number==0)
{
str=ExtFiboFreeFT1;
}
else if (number==1)
{
str=ExtFiboFreeFT2;
}
else if (number==2)
{
str=ExtFiboFreeFT3;
}
}
j=quantityFibo (str);
ObjectSet(nameObj,OBJPROP_FIBOLEVELS, j+3);
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+0,0.0);
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+1,1.0);
if (ftvisibleDT && StringSubstr(ftvisible,number,1)=="1")
{
ObjectSetFiboDescription(nameObj, 0, ftx + "0" + " " + TimeToStr(t1,TIME_DATE|TIME_MINUTES));
ObjectSetFiboDescription(nameObj, 1, ftx + "1.0" + " " + TimeToStr(t1 + t2,TIME_DATE|TIME_MINUTES));
}
else
{
ObjectSetFiboDescription(nameObj, 0, ftx + "0");
ObjectSetFiboDescription(nameObj, 1, ftx + "1.0");
}
for (int i=0; i<=j; i++)
{
k=StringFind(str, ",", 0);
str1=StringTrimLeft(StringTrimRight(StringSubstr(str,0,k)));
fi=StrToDouble(str1);
if (fi<1) str1=StringSubstr(str1,1);
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+(i+2),fi+1);
if (ftvisibleDT && StringSubstr(ftvisible,number,1)=="1")
{
ObjectSetFiboDescription(nameObj, i+2, ftx + str1 + " " + TimeToStr(t1 + t2*(fi+1),TIME_DATE|TIME_MINUTES));
}
else
{
ObjectSetFiboDescription(nameObj, i+2, ftx + str1);
}
if (k>=0) str=StringSubstr(str,k+1);
}
}
int quantityFibo (string sFibo)
{
int j=0,i,k;
while (true)
{
k=StringFind(sFibo, ",",i+1);
if (k>0) {j++; i=k;}
else return (j);
}
}
void screenPitchforkD()
{
int i;
double b1,ab1,bc1,ab2,bc2,d,cena,m618=0.618,m382=0.382;
datetime tb1,tab2,tbc2;
int pitch_time[]={0,0,0};
double pitch_cena[]={0,0,0};
mPitchTime[0]=afr[2]; mPitchTime[1]=afr[1]; mPitchTime[2]=afr[0];
mPitchCena[0]=afrx[2]; mPitchCena[1]=afrx[1]; mPitchCena[2]=afrx[0];
cena=afrx[2];
if (afrl[2]>0)
{
if (ExtCM_0_1A_2B_Dinamic==1)
{
cena=mPitchCena[0]+(mPitchCena[1]-mPitchCena[0])*ExtCM_FiboDinamic;
}
else if (ExtCM_0_1A_2B_Dinamic==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_Dinamic==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_Dinamic>1)
{
if (ExtCM_0_1A_2B_Dinamic==2) mPitchTime[0]=mPitchTime[1];
cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*ExtCM_FiboDinamic;
}
}
else
{
if (ExtCM_0_1A_2B_Dinamic==1)
{
cena=mPitchCena[0]-(mPitchCena[0]-mPitchCena[1])*ExtCM_FiboDinamic;
}
else if (ExtCM_0_1A_2B_Dinamic==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_Dinamic==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_Dinamic>1)
{
if (ExtCM_0_1A_2B_Dinamic==2) mPitchTime[0]=mPitchTime[1];
cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*ExtCM_FiboDinamic;
}
}
mPitchCena[0]=cena;
coordinaty_1_2_mediany_AP(mPitchCena[0], mPitchCena[1], mPitchCena[2], mPitchTime[0], mPitchTime[1], mPitchTime[2], tab2, tbc2, ab1, bc1);
pitch_time[0]=tab2;pitch_cena[0]=ab1;
nameObj="pmedianaD" + ExtComplekt+"_";
ObjectDelete(nameObj);
if (ExtPitchforkDinamic==2)
{
ObjectCreate(nameObj,OBJ_TREND,0,tab2,ab1,tbc2,bc1);
ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DASH);
ObjectSet(nameObj,OBJPROP_COLOR,ExtLinePitchforkD);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
nameObj="1-2pmedianaD" + ExtComplekt+"_";
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_TEXT,0,tab2,ab1+3*Point);
ObjectSetText(nameObj," 1/2 ML",9,"Arial", ExtLinePitchforkD);
}
nameObj="pitchforkD" + ExtComplekt+"_";
ObjectDelete(nameObj);
if (ExtPitchforkDinamic!=4)
{
pitch_time[0]=mPitchTime[0];pitch_cena[0]=mPitchCena[0];
if (ExtPitchforkDinamic==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];
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,ExtLinePitchforkD);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
if (ExtPivotZoneDinamicColor>0 && ExtPitchforkDinamic<4) PivotZone(pitch_time, pitch_cena, ExtPivotZoneDinamicColor, "PivotZoneD");
if (ExtFiboFanMedianaDinamicColor>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="FanMedianaDinamic" + ExtComplekt+"_";
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_FIBOFAN,0,pitch_time[0],pitch_cena[0],tb1,b1);
ObjectSet(nameObj,OBJPROP_LEVELSTYLE,STYLE_DASH);
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtFiboFanMedianaDinamicColor);
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 (ExtISLDinamic)
{
_ISL("ISL_D", pitch_time, pitch_cena, ExtLinePitchforkD);
}
if (ExtRLDinamic)
{
_RL("RLineD", pitch_time, pitch_cena, ExtLinePitchforkD);
}
if (ExtRedZoneDinamic)
{
_RZ("RZD", ExtRZDinamicValue, ExtRZDinamicColor, pitch_time, pitch_cena);
}
}
void _ISL(string nameISL, datetime pitch_time[], double pitch_cena[], color lineColor)
{
int i,j,k,n;
string str;
double fi,a1,b1,c1,tangens;
datetime ta1,tb1,tc1;
n=iBarShift(Symbol(),Period(),pitch_time[0])-(iBarShift(Symbol(),Period(),pitch_time[1])+iBarShift(Symbol(),Period(),pitch_time[2]))/2.0;
ta1=pitch_time[1];
a1=pitch_cena[1];
tangens=(pitch_cena[0]-(pitch_cena[1]+pitch_cena[2])/2.0)/n;
ML_RL400(tangens, pitch_cena, pitch_time, tb1, b1, true);
tc1=pitch_time[2];
c1=pitch_cena[2];
nameObj=nameISL + ExtComplekt+"_";
if (ExtSave && nameISL=="ISL_S")
{
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,tc1,c1);
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,lineColor);
ObjectSet(nameObj,OBJPROP_LEVELSTYLE,ExtISLStyle);
ObjectSet(nameObj,OBJPROP_LEVELWIDTH,ExtISLWidth);
ObjectSet(nameObj,OBJPROP_RAY,false);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
ObjectSet(nameObj,OBJPROP_COLOR,CLR_NONE);
if (ExtFiboType==0)
{
str="0.854,0.764,0.618,0.382,0.236,0.146";
}
else if (ExtFiboType==1)
{
str="0.886,0.786,0.618,0.382,0.236,0.146";
}
else if (ExtFiboType==2)
{
str=ExtFiboFreeISL;
}
j=quantityFibo (str);
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,j+1);
for (i=0;i<=j;i++)
{
k=StringFind(str, ",", 0);
fi=StrToDouble(StringTrimLeft(StringTrimRight(StringSubstr(str,0,k))));
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,-fi);
if (ExtVisibleISL) ObjectSetFiboDescription(nameObj, i," I S L "+DoubleToStr(fi*100,1));
if (k>=0) str=StringSubstr(str,k+1);
}
}
void _RL(string nameRL, datetime pitch_time[], double pitch_cena[], color lineColor)
{
string str;
double fi;
int i,j,k,n,nbase1,nbase2,mirror1,mirror2;
double a1,b1,c1;
datetime ta1,tb1,tc1;
n=iBarShift(Symbol(),Period(),pitch_time[0])-(iBarShift(Symbol(),Period(),pitch_time[1])+iBarShift(Symbol(),Period(),pitch_time[2]))/2.0;
nbase1=iBarShift(Symbol(),Period(),mPitchTime[1]);
nbase2=iBarShift(Symbol(),Period(),mPitchTime[2]);
if (nbase1+n<=Bars)
{
mirror1=1;
mirror2=0;
ta1=Time[nbase1+n];
tb1=Time[nbase2+n];
tc1=mPitchTime[1];
a1=(pitch_cena[0]-(mPitchCena[1]+mPitchCena[2])/2)+mPitchCena[1];
b1=(pitch_cena[0]-(mPitchCena[1]+mPitchCena[2])/2)+mPitchCena[2];
c1=mPitchCena[1];
}
else
{
mirror1=-1;
mirror2=-1;
ta1=mPitchTime[2];
tb1=mPitchTime[1];
tc1=Time[nbase2+n];
a1=mPitchCena[2];
b1=mPitchCena[1];
c1=(pitch_cena[0]-(mPitchCena[1]+mPitchCena[2])/2)+mPitchCena[2];
}
nameObj=nameRL + ExtComplekt+"_";
if (ExtSave && nameRL=="RLineS")
{
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,tc1,c1);
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,lineColor);
if (ExtRLineBase)
{
ObjectSet(nameObj,OBJPROP_COLOR,CLR_NONE);
}
else
{
ObjectSet(nameObj,OBJPROP_COLOR,lineColor);
}
if (ExtFiboType==1)
{
if (ExtRL146) j=16; else j=14;
str="0.382,0.5,0.618,0.707,0.786,0.886,1,1.128,1.272,1.414,1.618,2.0,2.414,2.618,4.0,0.146,0.236";
}
else if (ExtFiboType==0)
{
if (ExtRL146) j=12; else j=11;
str="0.236,0.382,0.5,0.618,0.764,0.854,1,1.236,1.618,2.0,2.618,4.0,0.146";
}
else if (ExtFiboType==2)
{
j=quantityFibo (ExtFiboFreeRL);
str=ExtFiboFreeRL;
}
ObjectSet(nameObj,OBJPROP_LEVELSTYLE,STYLE_DOT);
ObjectSet(nameObj,OBJPROP_RAY,false);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,j+1);
for (i=0;i<=j;i++)
{
k=StringFind(str, ",", 0);
fi=StrToDouble(StringTrimLeft(StringTrimRight(StringSubstr(str,0,k))));
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,mirror2+mirror1*fi);
if (ExtVisibleRL) ObjectSetFiboDescription(nameObj, i, " RL "+DoubleToStr(fi*100,1));
if (k>=0) str=StringSubstr(str,k+1);
}
}
void _RZ(string nameRZ, double RZValue, color RZColor, datetime pitch_time[], double pitch_cena[])
{
int i,j,k,n,_nbase1,_nbase2;
double b1,hRZ,delta,h=0,hbase,tangens23,tangensMediana,n1,nbase0,nbase1,nbase2;
datetime tb1;
nbase0=iBarShift(Symbol(),Period(),pitch_time[0]);
nbase1=iBarShift(Symbol(),Period(),pitch_time[1]);
nbase2=iBarShift(Symbol(),Period(),pitch_time[2]);
_nbase1=iBarShift(Symbol(),Period(),pitch_time[1]);
_nbase2=iBarShift(Symbol(),Period(),pitch_time[2]);
tangens23=(pitch_cena[2]-pitch_cena[1])/(nbase1-nbase2);
n1=nbase0-(nbase1+nbase2)/2;
tangensMediana=((pitch_cena[2]+pitch_cena[1])/2-pitch_cena[0])/n1;
hbase=pitch_cena[0]-(pitch_cena[1]-(nbase0-nbase1)*tangens23);
hRZ=hbase*RZValue;
if (pitch_cena[1]>pitch_cena[2])
{
for (i=_nbase1-1;i>=_nbase2;i--)
{
delta=(pitch_cena[1]+(_nbase1-i)*tangens23)-High[i];
if (delta<h) h=delta;
}
}
else
{
for (i=_nbase1-1;i>=_nbase2;i--)
{
delta=(pitch_cena[1]+(_nbase1-i)*tangens23)-Low[i];
if (delta>h) h=delta;
}
}
if (infoTF)
{
if (nameRZ=="RZS")
{
info_RZS_RL=DoubleToStr(MathAbs(100*h/hbase),1);
}
else if (nameRZ=="RZD")
{
info_RZD_RL=DoubleToStr(MathAbs(100*h/hbase),1);
}
}
if (MathAbs(hRZ)<MathAbs(h)) hRZ=h;
for (i=1;i<100;i++)
{
if (MathAbs(hRZ)<=MathAbs(tangens23*i)+MathAbs(tangensMediana*i)) break;
}
n=nbase2-i;
if (n>=0) tb1=Time[n];
else tb1=Time[0]+MathAbs(n)*60*Period();
b1=pitch_cena[2]+i*tangens23-hRZ;
nameObj=nameRZ + ExtComplekt+"_";
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_CHANNEL,0,pitch_time[2],pitch_cena[2],tb1,b1,pitch_time[1],pitch_cena[1]);
ObjectSet(nameObj, OBJPROP_COLOR, RZColor);
ObjectSet(nameObj, OBJPROP_BACK, true);
ObjectSet(nameObj, OBJPROP_RAY, false);
}
void coordinaty_1_2_mediany_AP(double A_1, double B_2, double C_3, datetime T_1, datetime T_2, datetime T_3, datetime& tAB2, datetime& tBC2, double& AB2, double& BC2)
{
double tangens;
int n1, n2, n3, nab2, nbc2;
n1=iBarShift(Symbol(),Period(),T_1);
n2=iBarShift(Symbol(),Period(),T_2);
n3=iBarShift(Symbol(),Period(),T_3);
tangens=(C_3 - A_1)/(n1 - n3);
nab2=MathCeil((n1+n2)/2.0);
nbc2=MathCeil((n2+n3)/2.0);
AB2=(A_1 + B_2)/2 - (nab2-(n1+n2)/2.0)*tangens;
BC2=(B_2 + C_3)/2 - (nbc2-(n2+n3)/2.0)*tangens;
tAB2=Time[nab2];
tBC2=Time[nbc2];
}
void coordinaty_mediany_AP(double A_1, double B_2, double C_3, datetime T_1, datetime T_2, datetime T_3, datetime& tB1, double& B1)
{
double tangens;
int n1, n2, n3, nbc2;
n1=iBarShift(Symbol(),Period(),T_1);
n2=iBarShift(Symbol(),Period(),T_2);
n3=iBarShift(Symbol(),Period(),T_3);
tangens=(A_1-(C_3+B_2)/2)/(n1 - (n3+n2)/2.0);
nbc2=MathCeil((n2+n3)/2.0);
B1=(B_2 + C_3)/2 - ((n2+n3)/2.0-nbc2)*tangens;
tB1=Time[nbc2];
}
bool maxGipotenuza4(datetime pitch_time1[], double pitch_cena1[])
{
double k2,k3;
datetime k4,k5;
k2=MathAbs(pitch_cena1[0]-pitch_cena1[1])/ASBar;
k3=MathAbs(pitch_cena1[1]-pitch_cena1[2])/ASBar;
k4=iBarShift(NULL,GrossPeriod,mPitchTimeSave)-iBarShift(NULL,GrossPeriod,pitch_time1[1]);
k5=iBarShift(NULL,GrossPeriod,pitch_time1[1])-iBarShift(NULL,GrossPeriod,pitch_time1[2]);
if (k2*k2+k4*k4>k3*k3+k5*k5) return(true); else return(false);
}
bool maxGipotenuza5(datetime pitch_time1[], double pitch_cena1[])
{
double k2,k3;
datetime k4,k5;
k2=MathAbs(pitch_cena1[0]-pitch_cena1[1])/Point;
k3=MathAbs(pitch_cena1[1]-pitch_cena1[2])/Point;
k4=iBarShift(NULL,GrossPeriod,mPitchTimeSave)-iBarShift(NULL,GrossPeriod,pitch_time1[1]);
k5=iBarShift(NULL,GrossPeriod,pitch_time1[1])-iBarShift(NULL,GrossPeriod,pitch_time1[2]);
if (k2*k2+k4*k4>k3*k3+k5*k5) return(true); else return(false);
}
void PivotZone(datetime pitch_time1[], double pitch_cena1[], color PivotZoneColor, string name)
{
datetime ta1, tb1;
double a1, b1, d, n1;
int m, m1, m2;
ta1=pitch_time1[2];
a1=pitch_cena1[2];
m1=iBarShift(Symbol(),Period(),pitch_time1[0])-iBarShift(Symbol(),Period(),pitch_time1[1]);
m2=iBarShift(Symbol(),Period(),pitch_time1[1])-iBarShift(Symbol(),Period(),pitch_time1[2]);
m=iBarShift(Symbol(),Period(),pitch_time1[2]);
n1=iBarShift(Symbol(),Period(),pitch_time1[0])-(iBarShift(Symbol(),Period(),pitch_time1[1])+iBarShift(Symbol(),Period(),pitch_time1[2]))/2.0;
d=(pitch_cena1[0]-(pitch_cena1[1]+pitch_cena1[2])/2.0)/n1;
if (m1>m2)
{
if (m1>m)
{
tb1=Time[0]+(m1-m)*Period()*60;
}
else
{
tb1=Time[iBarShift(Symbol(),Period(),pitch_time1[2])-m1];
}
b1=pitch_cena1[0]-d*(2*m1+m2);
}
else
{
if (m2>m)
{
tb1=Time[0]+(m2-m)*Period()*60;
}
else
{
tb1=Time[iBarShift(Symbol(),Period(),pitch_time1[2])-m2];
}
b1=pitch_cena1[0]-d*(2*m2+m1);
}
nameObj=name + ExtComplekt+"_";
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_RECTANGLE,0,ta1,a1,tb1,b1);
ObjectSetText(nameObj,"PZ "+Period_tf+" "+TimeToStr(tb1,TIME_DATE|TIME_MINUTES));
ObjectSet(nameObj, OBJPROP_BACK, ExtPivotZoneFramework);
ObjectSet(nameObj, OBJPROP_COLOR, PivotZoneColor);
}
void ML_RL400(double Tangens, double pitch_cena1[], datetime pitch_time1[], int& tB1, double& B1, bool flag)
{
int m, m1, m2;
m1=iBarShift(Symbol(),Period(),pitch_time1[0]);
m2=MathCeil((iBarShift(Symbol(),Period(),pitch_time1[1])+iBarShift(Symbol(),Period(),pitch_time1[2]))/2.0);
m=(m1-m2)*4;
if (m>m2)
{
tB1=Time[0]+(m-m2)*Period()*60;
if (tB1<0) tB1=2133648000;
if (flag) B1=pitch_cena1[1]-Tangens*(iBarShift(Symbol(),Period(),pitch_time1[1])+(tB1-Time[0])/(60*Period()));
else B1=pitch_cena1[0]-Tangens*(iBarShift(Symbol(),Period(),pitch_time1[0])+(tB1-Time[0])/(60*Period()));
}
else
{
tB1=Time[m2-m];
if (flag) B1=pitch_cena1[1]-Tangens*(iBarShift(Symbol(),Period(),pitch_time1[1])-iBarShift(Symbol(),Period(),tB1));
else B1=pitch_cena1[0]-Tangens*(iBarShift(Symbol(),Period(),pitch_time1[0])-iBarShift(Symbol(),Period(),tB1));
}
}
void screenFiboFan()
{
int i;
double a1,b1;
a1=afrx[mFan[0]]; b1=afrx[mFan[1]];
nameObj="FiboFan" + ExtComplekt+"_";
if (mFan[1]>0)
{
if (ExtSave)
{
nameObj=nameObj + save;
}
}
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_FIBOFAN,0,afr[mFan[0]],a1,afr[mFan[1]],b1);
ObjectSet(nameObj,OBJPROP_LEVELSTYLE,ExtFanStyle);
ObjectSet(nameObj,OBJPROP_LEVELWIDTH,ExtFanWidth);
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtFiboFanColor);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
ObjectSet(nameObj,OBJPROP_COLOR,ExtObjectColor);
ObjectSet(nameObj,OBJPROP_STYLE,ExtObjectStyle);
ObjectSet(nameObj,OBJPROP_WIDTH,ExtObjectWidth);
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]);
}
}
}
void screenFibo_st()
{
double fi_1[]={0.236, 0.382, 0.5, 0.618, 0.764, 0.854, 1.0, phi, 2.618};
string fitxt100_1[]={"23.6", "38.2", "50.0", "61.8", "76.4", "85.4", "100.0", "161.8", "2.618"};
int i;
Sizefi_1=9;
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi_1);
for (i=0;i<Sizefi_1;i++)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi_1[i]);
ObjectSetFiboDescription(nameObj, i, fitxt100_1[i]);
}
}
void screenFibo_Pesavento()
{
double fi_1[]={0.382, 0.5, 0.618, 0.786, 0.886, 1.0, 1.272, phi, 2.0, 2.618};
string fitxt100_1[]={"38.2", "50.0", "61.8", "78.6", "88.6", "100.0", "127.2", "161.8", "200.0", "2.618"};
int i;
Sizefi_1=10;
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi_1);
for (i=0;i<Sizefi_1;i++)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi_1[i]);
ObjectSetFiboDescription(nameObj, i, fitxt100_1[i]);
}
}
void screenFiboS()
{
nameObj="fiboS" + ExtComplekt+"_";
if (mFibo[1]>0)
{
if (ExtSave)
{
nameObj=nameObj + save;
}
}
screenFibo_(ExtFiboS, " ", mFibo[0], mFibo[1]);
}
void screenFiboD()
{
nameObj="fiboD" + ExtComplekt+"_";
screenFibo_(ExtFiboD, "", 1, 0);
}
void screenFibo_(color colorFibo, string otstup, int a1, int a2)
{
double fibo_0, fibo_100, fiboPrice, fiboPrice1;
ObjectDelete(nameObj);
if (!ExtFiboCorrectionExpansion)
{
fibo_0=afrx[a1];fibo_100=afrx[a2];
fiboPrice=afrx[a1]-afrx[a2];fiboPrice1=afrx[a2];
}
else
{
fibo_100=afrx[a1];fibo_0=afrx[a2];
fiboPrice=afrx[a2]-afrx[a1];fiboPrice1=afrx[a1];
}
if (!ExtFiboCorrectionExpansion)
{
ObjectCreate(nameObj,OBJ_FIBO,0,afr[a1],fibo_0,afr[a2],fibo_100);
}
else
{
ObjectCreate(nameObj,OBJ_FIBO,0,afr[a2],fibo_0,afr[a1],fibo_100);
}
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,colorFibo);
ObjectSet(nameObj,OBJPROP_COLOR,ExtObjectColor);
ObjectSet(nameObj,OBJPROP_STYLE,ExtObjectStyle);
ObjectSet(nameObj,OBJPROP_WIDTH,ExtObjectWidth);
ObjectSet(namПоказано первые 50% кода (символов: 176239)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.