MT4 蝴蝶指标源码
经典的蝴蝶指标源码
蝴蝶指标模板.tpl 蝴蝶ZUP_v82.mq4 蝴蝶ZUP_v82.ex4 蝴蝶指标使用方法详解/ 蝴蝶指标使用方法详解/蝴蝶指标使用方法详解/ 蝴蝶指标使用方法详解/蝴蝶指标使用方法详解/汇市蝴蝶原理实战分析讲解1.doc 蝴蝶指标使用方法详解/蝴蝶指标使用方法详解/汇市蝴蝶原理实战分析讲解2.doc 蝴蝶指标使用方法详解/蝴蝶指标使用方法详解/汇市蝴蝶原理实战分析讲解3.doc 蝴蝶指标使用方法详解/蝴蝶指标使用方法详解/汇市蝴蝶原理实战分析讲解4.doc蝴蝶ZUP_v82.mq4代码片段:
//|----------------------------------------------------------------------| //| | //| | //| ����������� ������ ����� ����� | //| �������� ��������� ����������� | //| �������� 2007, �. �������������� | //| | //| | //|----------------------------------------------------------------------| //|ZigZag ������������� � ���������� ��������� | //|----------------------------------------------------------------------| //| | //| "Parameters for ZigZag" | //| | //|----------------------------------------------------------------------| //|ExtIndicator - ����� �������� ����������, �� ������ �������� | //| �������� �������� ��������� | //| 0 - Zigzag �� ������������, �����������, ������� | //| ���������������� | //| 1 - Zigzag ������, | //| 2 - ��������� �������� ����������� � Ensign | //| 3 - ZigZag Ensign � ���������� ��������� minBars | //| 4 - ZigZag, ���������� tauber | //| 5 - �������� �� ���� ������� ����� | //| 6 - DT-ZigZag � ������� ZigZag_new_nen3.mq4. � ��� ������ | //| ����������� ZigZag | //| 7 - DT-ZigZag � ������� DT_ZZ.mq4 (���������� klot) | //| 8 - DT-ZigZag � ������� CZigZag.mq4 (���������� Candid) | //| 10 - DT-ZigZag � ������� Swing_zz - ��� ExtIndicator=5 | //| � ������ DT | //| 11 - �������� ����� ��������� Gartley �� ������ ������������| //| ZigZag | //| 12 - ZigZag, ���������� Talex | //| 13 - SQZZ ������, ���������� ��������� | //| 14 - ZZ_2L_nen, ���������� wellx (���������� ������� - nen) | //| | //|minBars - ������ ������� (�������� ���������� �����) | //|minSize - ������ �� ���������� ������� (�������� ���������� �������) | //| | //|ExtDeviation � ExtBackstep - ��������� ���������� �� ZigZag �� MT4 | //| | //|GrossPeriod - �������� ����������, ���������� � ������� (����� �����),| //| ������ � �������� ������� ��� ���������� ZigZag � ������ DT-ZigZag | //| | //|minPercent - ���������� ������ (�������� �������, �������� 0.5) | //| ���� ������������ �������� - ������� �����, � minSize=0; | //| | //|ExtPoint=11 - ���������� ����� ������� ��� ������� Talex | //| | //|StLevel - ������ ������� ������� (wellx) | //|BigLevel - ������ ������� ������� (wellx) | //|auto - ������� ��������������� ������� ������� StLevel � BigLevel | //|minBar - �������� % ��� ������� StLevel | //|maxBar - �������� % ��� ������� BigLevel | //| | //| | //|ExtStyleZZ - = true - ������ ����� ����� ZigZag ����� ������� ����� | //| = false - Zigzag ��������� ������� � ����������� | //| | //|ExtMaxBar - ������ ���������� �����, ����������� � ������� ������� | //| 0 - ������� �������������� �� ���� ������� | //|ExtMinBar - ������ ����������� ����� ����, �� �������� �������������� | //| ������ | //| | //|ExtNumberPeak - �������� ��������� ��������� ZigZag ������� � 1 | //|ExtNumberPeak10 - ��������� ����� ������� ������ � ������ 10 ���������| //|ExtNumberPeakLow - ����� ����� ������ � Low ��� � High � Low | //|ExtNumberPeakColor - ���� ����� | //|ExtNumberPeakFontSize - ������ ����� | //|----------------------------------------------------------------------| //| | //| "Parameters for fibo Levels" | //| | //|----------------------------------------------------------------------| //|ExtFiboDinamic - ��������� ����� ����������� ������� ����. | //| ������������ ������ ���� ��������� �� ������ ���� | //| ZigZag-a. | //| | //|ExtFiboStatic - ��������� ����� ����������� ������� ���� | //| | //|ExtFiboStaticNum - ����� ���� ZigZag-a, �� ������� ����� ���������� | //| ����������� ������ ���������. 1 0.14 � <5. | //| 2 - ���������� ������ �� �����, ��� ������� ��������- | //| ������ ����� ������ ��������� (� 0.447, 0.886, 2.236, | //| 3.14, 3,618 ��� ���������� ��������� Gartley) | //| 3 - ���������� �����, ������������� � ������ 2 | //| � ��������������� ����� | //| 4 - ���������� ����� �� ��������� � ��������������� ����� | //| 5 - �������� ��� ��������. �������� ������ ZigZag | //| � ����� ��������� Gartley | //| | //|ExtFractal - ���������� ��������� (����������, ���������), | //| �� ������� ���� ����� � ������ ��������� | //| | //|ExtFractalEnd - ���������� ���������, � ������� ���� ����� | //| ������ ����� �������� ����������� ����� �� ����� | //| ���� ExtFractalEnd=0 �� ��������� ������� ����� | //| ������������� ����� ���������. | //| ����������� �������� ExtFractalEnd=1 | //| | //|ExtFiboChoice - ����� ������ ����� ����� ��� ���������� ��������� | //| ���������. �������� �������� ������� �� 0 �� 11 | //| | //|ExtFiboZigZag - ��������� ����� "ZiaZag Fibonacci" | //| | //|ExtDelta - (������) ���������� � �������. ������ �������� | //| ������������� ����������� ����. | //| ������ ���� 0 0 ��������� ����� ���� �������� ����� D | //| =2 ������������� ��������� ����� ������������� | //| ������� ����� D | //| | //|ExtColorRangeForPointD - ���� ����� ���� �������� ����� D | //|ExtLineForPointD_AB - ������ ���� �������������� ������ ����� D | //|ExtLineForPointD_BC - ������ ���� �������������� ������ ����� D | //| | //|ExtColorPatterns - ���� ������������� ��������� | //| | //|ExtColorPatternList - �������� ������ ������ ��� �������� ������� | //| ��������� Gartley. �������� ������ ����������� | //| ����� �������. ���� ����� ���� ���� ����� | //| ������� � �������, �� ��� ����� ����� ����������| //| ������� ���� | //| | //|ExtDeltaGartley - ������ �� ���������� ���� ��� ������ ��������� | //| �� ��������� 9% - 0.09 | //| | //|ExtCD - �������� ���� CD �������� ������������ ���� BC ����� ������� | //| ���������� ����� ��������� (�������� - ��� ������ ��������) | //| | //|Equilibrium - �������� ����� ����� Equilibrium, Reaction1 � Reaction2 | //|ReactionType - ������ ��� ����� ������� | //|EquilibriumStyle - ������ ����� ����� | //|EquilibriumWidth - ������ ������� ����� | //|ColorEquilibrium - ������ ���� ��� Equilibrium | //|ColorReaction - ������ ���� ��� Reaction1 � Reaction2 | //|----------------------------------------------------------------------| //| | //| "Parameters for Andrews Pitchfork" | //| | //|----------------------------------------------------------------------| //|ExtPitchforkDinamic > 0 (=1) ��������� ������������ ���� ������� �� | //| ��������� ���� ����������� ZigZag | //| =2 50% ������� | //| =3 50% ���� | //| =4 ����� ����� | //| | //|ExtPitchforkStatic > 0 (=1) ��������� ����������� ���� ������� �� | //| ���������� ZigZag � ������� ExtPitchforkStaticNum | //| =2 50% ������� | //| =3 50% ���� | //| =4 ����� ����� | //| | //|3 2 � <=9 ����������� ���������� ��������� | //| | //|ExtFiboExpansionColor - ������ ���� ����� ���������� ��������� | //| | //|ExtExpansionStyle - ������������� ����� ����� ������� ���������� | //| ��������� | //| | //|ExtExpansionWidth - ������������� ������� ����� ������� ���������� | //| ��������� | //|----------------------------------------------------------------------| //| | //| "Parameters for versum Levels" | //| | //|----------------------------------------------------------------------| //|ExtVLDinamicColor - ������� Versum Levels ������������ ������� ����� | //| | //|ExtVLStaticColor - �������� Versum Levels ����������� ������� ����� | //| | //|ExtVLStaticNum - ������ ����� �������, �� ������� ��������� | //| Versum Levels | //| | //|ExtVLStyle - ������������� ����� ����� ������� Versum Levels | //| | //|ExtVLWidth - ������������� ������� ����� ������� Versum Levels | //|----------------------------------------------------------------------| //| | //| "Parameters for fibo Arc" | //| | //|----------------------------------------------------------------------| //|ExtArcDinamicNum - ������ ����� ��������� ZigZag �� ������� | //| �������� ������������ ���� ���� | //| | //|ExtArcStaticNum - ������ ����� ��������� ZigZag �� ������� | //| �������� ����������� ���� ���� | //| | //|ExtArcDinamicColor - ������ ���� ������������ ���� ��� | //| | //|ExtArcStaticColor - ������ ���� ����������� ���� ��� | //| | //|ExtArcDinamicScale - ������ ������� ������������ ���� ��� | //| 0 - �����������; >0 - ������� �������� ������������� | //| | //|ExtArcStaticScale ������ ������� ����������� ���� ��� | //| 0 - �����������; >0 - ������� �������� ������������� | //| | //|ExtArcStyle - ������������� ����� ����� ������� ���� ��� | //| | //|ExtArcWidth - ������������� ������� ����� ������� ���� ��� | //|----------------------------------------------------------------------| //| | //| "Golden Spiral" | //| | //|----------------------------------------------------------------------| //|ExtSpiralNum - ������ ����� ��������� ZigZag, �� ������� | //| �������� ������� ������� | //| | //|goldenSpiralCycle - ������ ���������� ����� �������. ��� ������ �����,| //| ��� ������ ���������� ����� ������� �������. | //| | //|accurity - ������ ����� �������� ������ �����, �������� �������� | //| ������� | //| | //|NumberOfLines ������ ���������� �������� ������ �����, �� ������� | //| �������� ������� | //| | //|clockWiseSpiral - ������ ����������� ������������ ������� | //| true - ������� ������������� �� ������� ������� | //| false - ������� ������������� ������ ������� �������| //| | //|spiralColor1 - ������ ������ ���� ����� ������� | //| | //|spiralColor2 - ������ ������ ���� ����� ������� | //| | //|ExtSpiralStyle - ������������� ����� ����� ������� | //| | //|ExtSpiralWidth - ������������� ������� ����� ������� | //|----------------------------------------------------------------------| //| | //| "Parameters for Pivot ZigZag" | //| | //|----------------------------------------------------------------------| //|ExtPivotZZ1Color - ������ ���� Pivot ZigZag 1 | //| | //|ExtPivotZZ2Color - ������ ���� Pivot ZigZag 2 | //| | //|ExtPivotZZ1Num - ������ ������ ����, �� ������� �������������� 1 | //| Pivot ZigZag | //| | //|ExtPivotZZ2Num - ������ ������ ����, �� ������� �������������� 2 | //| Pivot ZigZag | //| | //|ExtPivotZZStyle - ������������� ����� ����� ������� Pivot ZigZag | //| | //|ExtPivotZZWidth - ������������� ������� ����� ������� Pivot ZigZag | //|----------------------------------------------------------------------| //| | //| "Parameters for Channels" | //| | //|----------------------------------------------------------------------| //|ExtTypeChannels - ������ ��� ������. | //| 1 - ����� ������ �������� ����� ������� ������� � | //| �� ����������� � �����. ����� ����� �������� | //| ����������� ����� ������. ���� ����� �������� | //| ��� �� ����� ����, ��� �� ���� ���������������� | //| | //| 2 - ����� ������ � ����� ����� �������� ����������� | //| ���� ������� �� ����������� � �����. ��� �������| //| ����� ��������� ����� ������ ���������� �� 1 �� | //| 9 | //| | //|ExtTypeLineChannels - ������ ��� ����� ������ � �����. ����� | //| ��������� �������� �� 0 �� 3 | //| | //|ExtChannelsNum - ������ ������ ��������� �������, ����� �������� | //| �������� �����. | //| | //|ExtLTColor - ������ ���� ����� ������ | //|ExtLCColor - ������ ���� ����� ����� | //|ExtLTChannelsStyle - ������ ����� ����� ������ | //|ExtLTChannelsWidth - ������ ������� ����� ������ | //|ExtLCChannelsStyle - ������ ����� ����� ����� | //|ExtLCChannelsWidth - ������ ������� ����� ����� | //|----------------------------------------------------------------------| //| | //| "Parameters for Fibo Time" | //| | //|----------------------------------------------------------------------| //|ExtFiboTimeNum - ������ �������� �������, �� ������� �������� | //| ExtFiboTime, �� ����������� � ����� ������� | //| | //|ExtFiboTime1x- �������� ��������� ���� ���� 1. | //| | //|ExtFiboTime2x- �������� ��������� ���� ���� 2. | //| | //|ExtFiboTime3x- �������� ��������� ���� ���� 3. | //| | //|ExtFiboTime1Cx- ������ ���� ����� ��������� ���� 1. | //| | //|ExtFiboTime2Cx- ������ ���� ����� ��������� ���� 2. | //| | //|ExtFiboTime3Cx- ������ ���� ����� ��������� ���� 3. | //| | //|ExtVisibleDateTimex- �������� ����� �������� ���� � ������� ��������� | //| ��� | //| | //|ExtVisibleNumberFiboTimex- ��������� �������� �� Fibo Time, � ������� | //| ���������� �������� �������� ���� � ������� | //| | //| 1 - ��������� �������� ���� � ������� | //| 0 - �� ��������� | //| | //| ������ ����� - ��� Fibo Time 1 | //| ������ ����� - ��� Fibo Time 2 | //| ������ ����� - ��� Fibo Time 3 | //|----------------------------------------------------------------------| //| | //| "Parameters Exp" | //| | //|----------------------------------------------------------------------| //|chHL = true - ������� ������ ������������� ��� ������� | //| ExtIdicator=1, ExtIdicator=2, ExtIdicator=3 | //| | //|PeakDet = true - ������� ������ ���������� ���������� ��� ���� | //| ������� ExtIndicator | //| | //|chHL_PeakDet_or_vts - true - �� ��������� ��������� ����� ����� | //| ������������� (������� �����) � ������ ���������� ���������� ZigZag. | //| false - ��������� ��������� i-vts. | //| | //|ExtLabel =0 ������� ����� ������ �������� | //| =1 ����� ����� � ��������� ����� ��������� ������ ���� | //| ��� ������ DT - � ���� ������� �������� | //| =3 ����� ����� � ��������� ����� ��������� ������ ���� | //| ��� ������ DT - � ���� ������ ������� | //| | //|ExtCodLabel - ��� ������� ��� ������ ����� | //| | //|NumberOfBars - ���������� ����� ������� (0-���) ��� i-vts. | //| | //|NumberOfVTS - ���, � ��� �������, �������� ����������� ��� i-vts. | //| | //|NumberOfVTS1 - �������� ����������� ��� ������ ����� i-vts. | //|----------------------------------------------------------------------| //| | //| "Common Parameters" | //| | //|----------------------------------------------------------------------| //|ExtFiboType - ������, �� ����� �������� ��� ��������� ���� �����������| //| | //| 0 - ����������� ���� | //| 1 - ���� � ������� ��������� � �.�. | //| 2 - ����, �������� ������������� | //| | //|ExtFiboTypeFree - ������� ���������������� ��� ���: | //| 1) ���� ������ ����� ������� ��� ������� | //| 2) ������������ ���� ������ | //| 3) ������� ���� | //| 4) ���������� ��������� | //| 6) ���� ��� | //| | //|ExtObjectColor - ������ ���� �����, ����������� ������� ����� ��������| //| | //|ExtObjectStyle - ������ c���� �����, | //| ����������� ������� ����� ��������| //| | //|ExtObjectWidth - ������ ������� �����, | //| ����������� ������� ����� ��������| //| | //|ExtDinamic - ��������� ����� ����������� ������������ ��� ������������| //| ��� ���� ��� ��������� ������ ���� ����������� | //| ����������� ������������ �� ������ �������� ������� | //| | //|ExtVisibleDinamic - ��������� ��������, ����� ����������� | //| ����������� �������� � ������������ ������ | //| | //| ����� 11 ������������. | //| | //| ��������� �� �� ������� ���������� � ������: | //| 1 - ��������� ��������� ������� | //| 2 - ����������� ���� ������ � ������ ��� ���������� ���� | //| 3 - ����������� ���� ������� � ���, ��� ������� � ������ | //| 4 - ����������� ���� ����� | //| 5 - ����������� ���� ���������� | //| 6 - ����������� Versum Levels | //| 7 - ����������� ���� ���� | //| 8 - ����������� ���� ������� | //| 9 - ����������� Pivot ZigZag | //| 10 - ������ | //| 11 - Fibo Time | //| | //| �� ��������� ExtVisibleDinamic = "01000000000" | //| 0 - ��������� � ����������� ������ | //| 1 - ��������� � ������������ ������ | //| | //| | //|ZigZagHighLow - ������, �� ����� ����� ������ ���������� | //| ��������� ���������, ��� ������� � �.�. | //|true - �� ����������� ����� | //|false - �� ��������� ZigZag, ����� ��� ����� � "�������" | //| | //|ExtSendMail - �������� ��������� �� email � ����������� ��������. | //| | //|ExtAlert - ��������� ����� ��������� � ��������� ������� ��� | //| ������������� ������ ���� ZigZag | //| | //|ExtPlayAlert - ��������� ����� ��������� � ��������� ������� ��� | //| ��������� ������ �������� | //| | //|ExtBack - ������ ����� ���� �������� � ���� ���� | //| | //|ExtSave - ��������� ���������� ��������� ����������� ��� � | //| Fibo Time | //| | //|info_comment - ��������� �������� ������ ���������� ��� ������ ���� | //| ������ � �������������� ������. | //| ����� 4 ������ ����������. | //| 0 - ������ ���������� �� ��������� | //| 1 - ������ ���������� ��������� | //| | //| ������ ����������: | //| 1 - ���������� � ������ �� ������� ����������� | //| 2 - % ��������� ���� ��� ������� ������� | //| 3 - ��������� �������� | //| 4 - ���������� � ��������� �������� Gartley | //| 5 - ����� ��������� �������� RL, ���� ������ ������� | //| RedZone ��� ������� ��������� �� ����������� � ����� | //| | //|infoTF - �������� ���������� �� 5 ������� �����������. | //| ��������� ������������ ����������. ������ ����� � �������. | //| ������� ��������� ���� ������������ ��������. | //| ����� ���������� ������ ���� ������� ���������� � ���������. | //| ���������� ����� ������ ���������� � ��������� ��������. | //| ���������� �������� ��������� Gartley � ������� ������ ���� | //| ���������� �������� ����� D ��� ��������� Gartley. | //| | //|ExtComplekt - ������ ����� ����������. ��� ������ �� ������ ����������| //| ����������� ����� ���� �������� �������� ����� �����. | //| ��� ���� ��� ����� ���������� ����� �������� ���������. | //+----------------------------------------------------------------------+ #property copyright "nen" #property link "http://www.onix-trade.net/forum/index.php?s=&showtopic=118&view=findpost&p=350614" // �������� http://onix-trade.net/forum/index.php?s=&showtopic=373&view=findpost&p=72865 #property stacksize 65535 #property indicator_chart_window #property indicator_buffers 6 #property indicator_color1 Magenta //Red //#property indicator_width6 5 #property indicator_color2 Green #property indicator_color3 Orange #property indicator_color4 LightSkyBlue #property indicator_color5 LemonChiffon //#property indicator_color4 Chartreuse //#property indicator_color5 Red #property indicator_color6 Magenta //Yellow #import "user32.dll" int GetClientRect(int hWnd,int lpRect[]); #import #define pi 3.14159265 #define phi 1.61803399 //=================================== //---- indicator parameters extern string ______________0_____________ = "Parameters for ZigZag"; extern int ExtIndicator = 11; extern int minBars = 12; extern int minSize = 50; // ���������� �� ZigZag �� �� extern int ExtDeviation = 8; extern int ExtBackstep = 3; // ���������� ��� nen-ZigZag extern int GrossPeriod = 1440; //---- extern double minPercent = 0; extern int ExtPoint=11; // ���������� ����� ������� ��� ������� Talex // ��������� ��� �������, �������������� wellx 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 = 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 = 7; extern color ExtLine = DarkBlue; extern color ExtLine886 = Purple; extern color ExtNotFibo = SlateGray; extern color ExtPesavento = Yellow; extern color ExtGartley886 = GreenYellow; color colorPPattern; // �������� Gartley extern string ______________3_____________ = "Parameters for Gartley Patterns"; extern int maxDepth = 33; extern int minDepth = 3; extern bool DirectionOfSearchMaxMin = true; extern int NumberPattern = 1; // ����� ��������, �� �������� ����������� ������ � ��������� �������� ��������� ����� InfoTF extern int ExtGartleyTypeSearch = 0; extern int ExtHiddenPP = 1; extern bool ExtGartleyOnOff = false; //extern int VarDisplay=0; extern int maxBarToD = 15; extern 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"; // Pivot Zone extern color ExtPivotZoneDinamicColor = CLR_NONE; extern color ExtPivotZoneStaticColor = CLR_NONE; extern bool ExtPivotZoneFramework = false; // ��������� ��������������� � ����������� ����� extern bool ExtUTL = false; extern bool ExtLTL = false; extern bool ExtUWL = false; extern bool 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; // ��������� RedZone ��� ����� ������� 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 datetime ExtDateTimePitchfork_1 = D'11.07.2006 00:00'; //extern datetime ExtDateTimePitchfork_2 = D'19.07.2006 00:00'; //extern datetime ExtDateTimePitchfork_3 = D'09.08.2006 00:00'; //---------------------------------------------------------------------- // ���� ������� ��������� ��������� ��� ���������� ��� ������� ��� ���� ������� eurusd ��� ������ //---------------------------------------------------------------------- extern bool ExtPitchforkCandle = false; extern datetime ExtDateTimePitchfork_1 = D'15.06.1989 00:00'; extern datetime ExtDateTimePitchfork_2 = D'08.03.1995 00:00'; extern datetime ExtDateTimePitchfork_3 = D'26.10.2000 00:00'; extern bool ExtPitchfork_1_HighLow = false; //---------------------------------------------------------------------- // ������� ���������������� ������� ���� ��� ������������, ���������� � ���� ������� 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"; //---------------------------------------------------------------------- // ������ micmed'a extern string ________________5_____________ = "Parameters for micmed Channels"; extern int ExtCM_0_1A_2B_Dinamic = 0, ExtCM_0_1A_2B_Static = 0; extern double ExtCM_FiboDinamic = 0.618, ExtCM_FiboStatic = 0.618; //---------------------------------------------------------------------- // �������� ������������, ���������� ��������� � ������ �������. �����. //---------------------------------------------------------------------- // ��������� �������������� extern string ______________6_____________ = "Parameters for fibo Fan"; extern color ExtFiboFanColor = CLR_NONE; extern int ExtFiboFanNum = 0; extern int ExtFanStyle = 1; extern int ExtFanWidth = 0; // ���������� ��������� extern string ______________7_____________ = "Parameters for fibo Expansion"; extern int ExtFiboExpansion = 0; extern color ExtFiboExpansionColor = Yellow; extern int ExtExpansionStyle = 2; extern int ExtExpansionWidth = 0; //-------------------------------------- extern string ______________8_____________ = "Parameters for versum Levels"; extern color ExtVLDinamicColor = CLR_NONE; extern color ExtVLStaticColor = CLR_NONE; extern int ExtVLStaticNum = 0; extern int ExtVLStyle = 0; extern int ExtVLWidth = 0; //-------------------------------------- extern string ______________9_____________ = "Parameters for fibo Arc"; extern int ExtArcDinamicNum = 0; extern int ExtArcStaticNum = 0; extern color ExtArcDinamicColor = Sienna; extern color ExtArcStaticColor = Teal; extern double ExtArcDinamicScale = 0; extern double ExtArcStaticScale = 0; extern int ExtArcStyle = 0; extern int ExtArcWidth = 0; extern string ______________10_____________ = "Golden Spiral"; extern int ExtSpiralNum = 0; extern double goldenSpiralCycle = 1; extern double accurity = 0.2; extern int NumberOfLines = 200; extern bool clockWiseSpiral = true; extern color spiralColor1 = Blue; extern color spiralColor2 = Red; extern int ExtSpiralStyle = 0; extern int ExtSpiralWidth = 0; extern string ______________11_____________ = "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; // ���������� ��� i-vts 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; // ���������� ����������� ��� �������, Fibo Time � �.�. extern bool ExtSave = false; extern string info_comment = "11111"; extern bool infoTF = true; extern int ExtComplekt = 0; //=================================== // ������� ��� ZigZag // ������ ��� ��������� ZigZag double zz[]; // ������ ��������� ZigZag double zzL[]; // ������ ���������� ZigZag double zzH[]; // ������� ��� nen-ZigZag double nen_ZigZag[]; int _maxbarZZ; // ���������� �����, ����������� � ������� ��������. // ������ ��� ����������������� ZigZag //double TempBuffer[1],ZigZagBuffer[1]; // ���������� ��� �������� // ������ ����� ��������� (���� � ���������������� ����) //double fi[]={0.146, 0.236, 0.382, 0.447, 0.5, 0.618, 0.707, 0.786, 0.841, 0.886, 1.0, 1.128, 1.272, 1.414, 1.5, 1.618, 1.732, 1.902, 2.0, 2.236, 2.414, 2.618, 3.14, 3.618, 4.0}; //string fitxt[]={"0.146", "0.236", ".382", ".447", ".5", ".618", ".707", ".786", ".841", ".886", "1.0", "1.128", "1.272", "1.414", "1.5", "1.618", "1.732", "1.902", "2.0", "2.236", "2.414", "2.618", "3.14", "3.618", "4.0"}; //double fi1[]={0.146, 0.236, 0.382, 0.5, 0.618, 0.764, 0.854, 1.0, 1.236, 1.618}; //string fitxt1[]={"0.146", "0.236", ".382", ".5", ".618", ".764", ".854", "1.0", "1.236", "1.618"}; // ������ �����, �������� ������������� double fi[]; string fitxt[]; string fitxt100[]; int Sizefi=0,Sizefi_1=0; color ExtLine_; double number[64]; string numbertxt[64]; int numberFibo[64]; int numberPesavento[64]; int numberGartley[64]; int numberMix[64]; int numberGilmorQuality[64]; int numberGilmorGeometric[64]; int numberGilmorHarmonic[64]; int numberGilmorArithmetic[64]; int numberGilmorGoldenMean[64]; int numberSquare[64]; int numberCube[64]; int numberRectangle[64]; int numberExt[64]; string nameObj,nameObjtxt,save; // bool descript_b=false; // PPWithBars - �����, ��������� � �������������� ����� // descript - �������� �������� string PPWithBars, descript; // ������� ��� ������ ����������� ����� afr - ������ �������� ������� ���� ��������� ��������� � ��������� ������������ � ����������� ��� // afrl - ��������, afrh - ��������� int afr[]={0,0,0,0,0,0,0,0,0,0}; double afrl[]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}, afrh[]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}, afrx[]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}; // ��������� ���������� double openTF[]={0.0,0.0,0.0,0.0,0.0}, closeTF[]={0.0,0.0,0.0,0.0,0.0}, lowTF[]={0.0,0.0,0.0,0.0,0.0}, highTF[]={0.0,0.0,0.0,0.0,0.0}; double close_TF=0; string TF[]={"MN","W1","D1","H4","H1","m30","m15","m5","m1"}; string Period_tf; bool afrm=true; double ExtHL; double HL,HLp,kk,kj,Angle; // LowPrim,HighPrim,LowLast,HighLast - �������� ��������� � ���������� ����� double LowPrim,HighPrim,LowLast,HighLast; // numLowPrim,numHighPrim,numLowLast,numHighLast -������ ����� int numLowPrim,numHighPrim,numLowLast,numHighLast,k,k1,k2,ki,kiPRZ=0,countLow1,countHigh1,shift,shift1; string txtkk; // ����� ����� � ������ �� �������� ���� ��������� int timeFr1new; // ������� ��������� int countFr; // ���, �� �������� ���� �������� �������������� ����� �� �������� ���� int countBarEnd=0,TimeBarEnd; // ���, �� �������� ���� ������������� �� �������� ���� int numBar=0; // ����� ������� int numOb; // flagFrNew=true - ����������� ����� ������� ��� ������ ������� ��������� �� ������ ���. =false - �� ���������. bool flagFrNew=false; // ������������� ������ ���� bool newRay=true; // flagGartle - ��������� ������ �������� Gartley ��� ������������ �������� Gartley bool flagGartle=false; // ������ �������� ������� int perTF; bool Demo; // ���������� ��� �������, �������������� wellx 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; // ������� ������ ���� �������� ���������� // The average size of a bar double ASBar; // ���������� ��� ZigZag ������ � ���������� ��������� ����������� � Ensign double ha[],la[],hi,li,si,sip,di,hm,lm,ham[],lam[],him,lim,lLast=0,hLast=0; int fs=0,fsp,countBar; int ai,bi,ai0,bi0,aim,bim; datetime tai,tbi,ti,tmh,tml; // fcount0 - ��� ��������� �������� ����������� ����� �� 0 ���� fcount0=true. // �� ��������� ���� =false � ����� ���������� ����� �������� bool fh=false,fl=false,fcount0,PeakDetIni; /* // ���������� ��� ������� ����� double lLast_m=0, hLast_m=0; int countBarExt; // ������� ������� ����� int countBarl,countBarh; */ // ���������� ��� nen-ZigZag bool hi_nen; bool init_zz=true; // ���������� ��� ������������ ������ ������ ���������� int mFibo[]={0,0}, mPitch[]={0,0,0}, mFan[]={0,0}, mExpansion[]={0,0,0}, mVL[]={0,0,0}, mArcS[]={0,0}, mArcD[]={0,0}, mSpiral[]={0,0},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}; // ���������� ��� vts double ms[2]; // ���������� ��� ��������� Gartley 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=""; // ���������� ��� ������� Talex static int endbar = 0; static double endpr = 0; // ���������� ��� ������� �������� ���� � �������� ��� Golden Spiral static int GPixels,VPixels; int rect[4],hwnd; int f=1; // ���������� ��� ������� int DinamicChannels=-1; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string aa,aa1; int aa2, i; hwnd=WindowHandle(Symbol(),Period()); if(hwnd>0) { GetClientRect(hwnd,rect); GPixels=rect[2]; // ����� ������� ���������� ���-�� �������� �� ����������� VPixels=rect[3]; // ����� ������� ���������� ���-�� �������� �� ��������� } minBarsSave=minBars; IndicatorBuffers(8); // ------- // Gartley Patterns if (ExtGartleyTypeSearch<0) ExtGartleyTypeSearch=0; if (ExtGartleyTypeSearch>2) ExtGartleyTypeSearch=2; if (ExtHiddenPP<0) ExtHiddenPP=0; if (ExtHiddenPP>2) ExtHiddenPP=2; if (NumberPattern<1) NumberPattern=1; if (ExtIndicator==14) { if (auto) { double wrmassiv[]; if (minBar>=100) minBar=61.8; if (minBar<=0) minBar=61.8; if (maxBar>=100) maxBar=38.2; if (minBar<=0) minBar=38.2; ArrayResize(wrmassiv,Bars-1); for (i=Bars-1;i>0;i--) {wrmassiv[i]=High[i]-Low[i]+Point;} ArraySort (wrmassiv); i=MathFloor(minBar*Bars/100); StLevel=MathFloor(wrmassiv[i]/Point); i=MathFloor(maxBar*Bars/100); BigLevel=MathFloor(wrmassiv[i]/Point); //Print ("StLevel=",StLevel); //Print ("BigLevel=",BigLevel); } } if (ExtMaxBar>Bars) ExtMaxBar=Bars; if (ExtMaxBar>0) _maxbarZZ=ExtMaxBar; else _maxbarZZ=Bars; if (ExtGartleyTypeSearch>0) // ���������� ������ �������� ����� ��� ������� Gartley, �������� ������������� { //--------- if (ExtMaxBar>0) { if (maxBarToD==0 || maxBarToD>ExtMaxBar) maxBarToD=ExtMaxBar-15; } else if (maxBarToD==0) maxBarToD=Bars-15; if (ExtHiddenPP==0 || ExtHiddenPP==2) {ExtHidden=0; ExtStyleZZ=false;} if (RangeForPointD>2) RangeForPointD=2; //--------- i=-1; aa2=0; while (aa2>=0) { aa2=StringFind(ExtColorPatternList, ",",i+1); if (aa2>=0) {i=aa2;ColorSize++;} else { if (StringLen(ExtColorPatternList)-i>0) { if (StrToDouble(StringSubstr(ExtColorPatternList,i+1))>0) ColorSize++; ArrayResize(ColorList,ColorSize); aa1=ExtColorPatternList; for (i=0;i =0) aa1=StringSubstr(aa1,aa2+1); } aa2=-1; } } } } // ------- if (ExtStyleZZ) {SetIndexStyle(0,DRAW_SECTION);} else {SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,158);} if (ExtLabel>0) { SetIndexStyle(3,DRAW_ARROW); SetIndexArrow(3,ExtCodLabel); SetIndexStyle(4,DRAW_ARROW); SetIndexArrow(4,ExtCodLabel); } else { SetIndexStyle(3,DRAW_LINE,STYLE_DOT); SetIndexStyle(4,DRAW_LINE,STYLE_DOT); } SetIndexLabel(0,"ZUP"+ExtComplekt+" (zz"+ExtIndicator+")"); if (ExtIndicator==6) SetIndexLabel(5,"ZUP"+ExtComplekt+" DT6_"+minBars+"/"+ExtDeviation+"/"+ExtBackstep+"/GP"+GrossPeriod+""); else if (ExtIndicator==7) SetIndexLabel(5,"ZUP"+ExtComplekt+" DT7_"+minBars+"/GP"+GrossPeriod+""); else if (ExtIndicator==8) SetIndexLabel(5,"ZUP"+ExtComplekt+" DT8_"+minBars+"/"+ExtDeviation+"/GP"+GrossPeriod+""); if (ExtLabel>0) { SetIndexLabel(1,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" H_PeakDet"); SetIndexLabel(2,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" L_PeakDet"); SetIndexLabel(3,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" UpTrend"); SetIndexLabel(4,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" DownTrend"); } else { if (chHL_PeakDet_or_vts) { PeakDetIni=true; SetIndexLabel(1,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" H_PeakDet"); SetIndexLabel(2,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" L_PeakDet"); SetIndexLabel(3,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" H_chHL"); SetIndexLabel(4,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" L_chHL"); } else { SetIndexLabel(1,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" H_vts"); SetIndexLabel(2,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" L_vts"); SetIndexLabel(3,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" H_vts1"); SetIndexLabel(4,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" L_vts1"); } } // ������ ���������� ����� SetIndexStyle(1,DRAW_LINE,STYLE_DOT); SetIndexStyle(2,DRAW_LINE,STYLE_DOT); SetIndexBuffer(1,ham); SetIndexBuffer(2,lam); // ������ ������������� SetIndexBuffer(3,ha); SetIndexBuffer(4,la); SetIndexBuffer(0,zz); SetIndexBuffer(5,nen_ZigZag); SetIndexBuffer(6,zzL); SetIndexBuffer(7,zzH); SetIndexStyle(5,DRAW_ARROW); SetIndexArrow(5,159); SetIndexEmptyValue(0,0.0); SetIndexEmptyValue(1,0.0); SetIndexEmptyValue(2,0.0); SetIndexEmptyValue(3,0.0); SetIndexEmptyValue(4,0.0); SetIndexEmptyValue(5,0.0); SetIndexEmptyValue(6,0.0); SetIndexEmptyValue(7,0.0); if (ExtIndicator<6 || ExtIndicator>10) { switch (Period()) { case 1 : {Period_tf=TF[8];break;} case 5 : {Period_tf=TF[7];break;} case 15 : {Period_tf=TF[6];break;} case 30 : {Period_tf=TF[5];break;} case 60 : {Period_tf=TF[4];break;} case 240 : {Period_tf=TF[3];break;} case 1440 : {Period_tf=TF[2];break;} case 10080 : {Period_tf=TF[1];break;} case 43200 : {Period_tf=TF[0];break;} } } else { switch (GrossPeriod) { case 1 : {Period_tf=TF[8];break;} case 5 : {Period_tf=TF[7];break;} case 15 : {Period_tf=TF[6];break;} case 30 : {Period_tf=TF[5];break;} case 60 : {Period_tf=TF[4];break;} case 240 : {Period_tf=TF[3];break;} case 1440 : {Period_tf=TF[2];break;} case 10080 : {Period_tf=TF[1];break;} case 43200 : {Period_tf=TF[0];break;} } if (GrossPeriod>43200) { if (MathMod(GrossPeriod,43200)>0) Period_tf=GrossPeriod; else Period_tf=TF[0]+GrossPeriod/43200 + ""; } else if (GrossPeriod<43200) { if (GrossPeriod>10080) { if (MathMod(GrossPeriod,10080)>0) Period_tf=GrossPeriod; else Period_tf="W"+GrossPeriod/10080 + ""; } else if (GrossPeriod<10080) { if (GrossPeriod>1440) { if (MathMod(GrossPeriod,1440)>0) Period_tf=GrossPeriod; else Period_tf="D"+GrossPeriod/1440 + ""; } else if (GrossPeriod<1440) { if (GrossPeriod!=60) { if (MathMod(GrossPeriod,60)>0) Period_tf=GrossPeriod; else Period_tf="H"+GrossPeriod/60 + ""; } } } } } if (ExtIndicator==1) if (minSize!=0) di=minSize*Point/2; if (ExtIndicator==2) {di=minSize*Point; countBar=minBars;} if (ExtIndicator==3) {countBar=minBars;} if (ExtIndicator>5 && ExtIndicator<11 && GrossPeriod>Period()) { if (GrossPeriod==43200 && Period()==10080) maxBarToD=maxBarToD*5; else maxBarToD=maxBarToD*GrossPeriod/Period(); } if (ExtIndicator<6 ||ExtIndicator>10) GrossPeriod=Period(); if (ExtFiboType<0) ExtFiboType=0; if (ExtFiboType>2) ExtFiboType=2; if (ExtFiboType==2) // ���������� ������ ���, �������� ������������� { i=-1; aa2=0; while (aa2>=0) { aa2=StringFind(ExtFiboTypeFree, ",",i+1); if (aa2>=0) {i=aa2;Sizefi++;} else { if (StringLen(ExtFiboTypeFree)-i>0) { if (StrToDouble(StringSubstr(ExtFiboTypeFree,i+1))>0) Sizefi++; arrResize(Sizefi); aa1=ExtFiboTypeFree; for (i=0;i =0) aa1=StringSubstr(aa1,aa2+1); } // aa2=-1; } } } } // ------- // �������� ������������ ��������� ������� ���������� if (ExtDelta<=0) ExtDelta=0.001; if (ExtDelta>1) ExtDelta=0.999; if (ExtHidden<0) ExtHidden=0; if (ExtHidden>5) ExtHidden=5; if (ExtDeltaType<0) ExtDeltaType=0; if (ExtDeltaType>3) ExtDeltaType=3; if (ExtFiboChoice<0) ExtFiboChoice=0; if (ExtFiboChoice>11) ExtFiboChoice=11; if (ExtPivotZZ1Num>9) ExtPivotZZ1Num=9; if (ExtPivotZZ2Num>9) ExtPivotZZ2Num=9; if (ExtPivotZZ1Num==ExtPivotZZ2Num) { if (ExtPivotZZ1Num>0) ExtPivotZZ1Num=ExtPivotZZ2Num-1; } if (ExtFractalEnd>0) { if (ExtFractalEnd<1) ExtFractalEnd=1; } if (ExtPitchforkStatic>4) ExtPitchforkStatic=4; if (ExtPitchforkDinamic>4) ExtPitchforkDinamic=4; if (ExtCM_0_1A_2B_Dinamic<0) ExtCM_0_1A_2B_Dinamic=0; if (ExtCM_0_1A_2B_Dinamic>5) ExtCM_0_1A_2B_Dinamic=5; if (ExtCM_0_1A_2B_Static<0) ExtCM_0_1A_2B_Static=0; if (ExtCM_0_1A_2B_Static>5) ExtCM_0_1A_2B_Static=5; if (ExtCM_FiboDinamic<0) ExtCM_FiboDinamic=0; if (ExtCM_FiboDinamic>1) ExtCM_FiboDinamic=1; if (ExtCM_FiboStatic<0) ExtCM_FiboStatic=0; if (ExtCM_FiboStatic>1) ExtCM_FiboStatic=1; //-------------------------------------------- if (ExtPitchforkStaticNum<3) ExtPitchforkStaticNum=3; if (ExtFiboStaticNum<2) ExtFiboStaticNum=2; if (ExtFiboStaticNum>9) { aa=DoubleToStr(ExtFiboStaticNum,0); aa1=StringSubstr(aa,0,1); mFibo[0]=StrToInteger(aa1); aa1=StringSubstr(aa,1,1); mFibo[1]=StrToInteger(aa1); } else { mFibo[0]=ExtFiboStaticNum; mFibo[1]=ExtFiboStaticNum-1; } if (ExtFiboFanNum<1) ExtFiboFanNum=1; if (ExtFiboFanNum>9) { aa=DoubleToStr(ExtFiboFanNum,0); aa1=StringSubstr(aa,0,1); mFan[0]=StrToInteger(aa1); aa1=StringSubstr(aa,1,1); mFan[1]=StrToInteger(aa1); } else { mFan[0]=ExtFiboFanNum; mFan[1]=ExtFiboFanNum-1; } if (ExtPitchforkStaticNum>99) { aa=DoubleToStr(ExtPitchforkStaticNum,0); aa1=StringSubstr(aa,0,1); mPitch[0]=StrToInteger(aa1); aa1=StringSubstr(aa,1,1); mPitch[1]=StrToInteger(aa1); aa1=StringSubstr(aa,2,1); mPitch[2]=StrToInteger(aa1); } else { mPitch[0]=ExtPitchforkStaticNum; mPitch[1]=ExtPitchforkStaticNum-1; mPitch[2]=ExtPitchforkStaticNum-2; } if (ExtFiboExpansion<2) ExtFiboExpansion=0; if (ExtFiboExpansion>0) { if (ExtFiboExpansion>99) { aa=DoubleToStr(ExtFiboExpansion,0); aa1=StringSubstr(aa,0,1); mExpansion[0]=StrToInteger(aa1); aa1=StringSubstr(aa,1,1); mExpansion[1]=StrToInteger(aa1); aa1=StringSubstr(aa,2,1); mExpansion[2]=StrToInteger(aa1); } else { mExpansion[0]=ExtFiboExpansion; mExpansion[1]=ExtFiboExpansion-1; mExpansion[2]=ExtFiboExpansion-2; } } if (ExtPitchforkCandle) { mPitchTime[0]=ExtDateTimePitchfork_1; mPitchTime[1]=ExtDateTimePitchfork_2; mPitchTime[2]=ExtDateTimePitchfork_3; if (ExtPitchfork_1_HighLow) { mPitchCena[0]=High[iBarShift(Symbol(),Period(),ExtDateTimePitchfork_1,true)]; mPitchCena[1]=Low[iBarShift(Symbol(),Period(),ExtDateTimePitchfork_2,true)]; mPitchCena[2]=High[iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3,true)]; } else { mPitchCena[0]=Low[iBarShift(Symbol(),Period(),ExtDateTimePitchfork_1,true)]; mPitchCena[1]=High[iBarShift(Symbol(),Period(),ExtDateTimePitchfork_2,true)]; mPitchCena[2]=Low[iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3,true)]; } if (mPitchCena[0]<=0 || mPitchCena[1]<=0 || mPitchCena[2]<=0) {ExtPitchforkCandle=false;ExtPitchforkStatic=0;} } if (ExtFiboTimeNum<=2) ExtFiboTimeNum=0; if (ExtFiboTimeNum>999) ExtFiboTimeNum=0; if (ExtVLStaticNum>0) { if (ExtVLStaticNum<2) ExtVLStaticNum=2; if (ExtVLStaticNum>99) { aa=DoubleToStr(ExtVLStaticNum,0); aa1=StringSubstr(aa,0,1); mVL[0]=StrToInteger(aa1); aa1=StringSubstr(aa,1,1); mVL[1]=StrToInteger(aa1); aa1=StringSubstr(aa,2,1); mVL[2]=StrToInteger(aa1); } else { mVL[0]=ExtVLStaticNum; mVL[1]=ExtVLStaticNum-1; mVL[2]=ExtVLStaticNum-2; } } if (ExtArcStaticNum>0) { if (ExtArcStaticNum<2) ExtArcStaticNum=2; if (ExtArcStaticNum<12 && ExtArcStaticNum>9) ExtArcStaticNum=9; if (ExtArcStaticNum>98) ExtArcStaticNum=98; if (ExtArcStaticNum>=12) { aa=DoubleToStr(ExtArcStaticNum,0); aa1=StringSubstr(aa,1,1); mArcS[0]=StrToInteger(aa1); aa1=StringSubstr(aa,0,1); mArcS[1]=StrToInteger(aa1); if (mArcS[0]==0) {ExtArcStaticNum=0; mArcS[1]=0;} } else { mArcS[1]=ExtArcStaticNum; mArcS[0]=ExtArcStaticNum-1; } } if (ExtArcDinamicNum>0) { if (ExtArcDinamicNum>90) ExtArcStaticNum=90; if (ExtArcDinamicNum>9) { aa=DoubleToStr(ExtArcDinamicNum,0); aa1=StringSubstr(aa,1,1); mArcD[0]=StrToInteger(aa1); aa1=StringSubstr(aa,0,1); mArcD[1]=StrToInteger(aa1); if (mArcD[0]>0) mArcD[0]=0; } else { mArcD[1]=0; mArcD[0]=ExtArcDinamicNum; } } // ������� ������� if (ExtSpiralNum>0) { if(goldenSpiralCycle <= 0) goldenSpiralCycle = 1; if(accurity <= 0) accurity = 0.2; if (ExtSpiralNum<2) ExtSpiralNum=2; if (ExtSpiralNum>98) ExtSpiralNum=98; if (ExtSpiralNum>9) { aa=DoubleToStr(ExtSpiralNum,0); aa1=StringSubstr(aa,1,1); mSpiral[0]=StrToInteger(aa1); aa1=StringSubstr(aa,0,1); mSpiral[1]=StrToInteger(aa1); if (mSpiral[0]==0) {ExtSpiralNum=0; mSpiral[1]=0;} } else { mSpiral[1]=ExtSpiralNum; mSpiral[0]=ExtSpiralNum-1; } } // ������ if (ExtChannelsNum>9876543210) ExtChannelsNum=0; if (ExtChannelsNum>0) { aa=DoubleToStr(ExtChannelsNum,0); aa2=StringLen(aa); for (i=0;i =0) {mChannels[i]=-1; ArraySort(mChannels,WHOLE_ARRAY,0,MODE_DESCEND); i--;} } for (i=1;i<=9;i++) { if (mChannels[i]==0) {DinamicChannels=i; break;} // Print("mChannels["+i+"]=",mChannels[i]); } } if (ExtSave) { MathSrand(LocalTime()); save=MathRand(); } if (ExtCM_0_1A_2B_Static==4 || ExtCM_0_1A_2B_Dinamic==4) { for (i=Bars-1; i>-1; i--) { ASBar=ASBar + iHigh(NULL,GrossPeriod,i) - iLow(NULL,GrossPeriod,i) + Point; } ASBar=ASBar/Bars; } array_(); perTF=Period(); Demo=IsDemo(); delete_objects1(); return(0); } //+------------------------------------------------------------------+ //| ���������������. �������� ���� ��������� ����� � ��������� �������� //+------------------------------------------------------------------+ 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() { if ((ExtIndicator==6 || ExtIndicator==7 || ExtIndicator==8 || ExtIndicator==10) && Period()>GrossPeriod) { ArrayInitialize(zz,0);ArrayInitialize(zzL,0);ArrayInitialize(zzH,0);ArrayInitialize(nen_ZigZag,0); init_zz=true; return; } counted_bars=IndicatorCounted(); if (perTF!=Period()) { delete_objects1(); perTF=Period(); } if (Demo!=IsDemo()) { delete_objects1(); Demo=IsDemo(); counted_bars=0; } //----------------------------------------- // // 1. // // ���� ���������� �������. ������. //----------------------------------------- // zz[] - �����, ������ �� �������� ������� ��� ��������� ������ ZigZag-a // zzL[] - ������ ��������� �������� // zzH[] - ������ ���������� �������� // //----------------------------------------- if (Bars-IndicatorCounted()>2) { if (ExtMaxBar>0) cbi=ExtMaxBar; else cbi=Bars-1; tiZZ=0; if (ExtIndicator==1) {ti=0; ai=0; bi=0; tai=0; tbi=0; fs=0; si=0; sip=0;} lBar=0; hBar=0; ArrayInitialize(zz,0);ArrayInitialize(zzL,0);ArrayInitialize(zzH,0);ArrayInitialize(nen_ZigZag,0); init_zz=true; afrm=true; delete_objects_dinamic(); delete_objects1(); delete_objects3(); flagExtGartleyTypeSearch2=false; vPatOnOff=0; PeakDetIni=true; } else { if (ExtIndicator==1) cbi=Bars-IndicatorCounted()-1; else cbi=Bars-IndicatorCounted(); if (ExtMinBar>0&&(ExtIndicator==0||ExtIndicator==1||ExtIndicator==2||ExtIndicator==3||ExtIndicator==5||ExtIndicator==6||ExtIndicator==7||ExtIndicator==8||ExtIndicator==10||ExtIndicator==11) && tiZZ==iTime(NULL,GrossPeriod,0)) return (0); else if (lBar<=iLow(NULL,GrossPeriod,0) && hBar>=iHigh(NULL,GrossPeriod,0) && tiZZ==iTime(NULL,GrossPeriod,0)) return(0); else { if (tiZZ 0) PivotZZ(ExtPivotZZ1Color, ExtPivotZZ1Num, 1); if (ExtPivotZZ2Num==1 && ExtPivotZZ2Color>0) PivotZZ(ExtPivotZZ2Color, ExtPivotZZ2Num, 2); } } lBar=iLow(NULL,GrossPeriod,0); hBar=iHigh(NULL,GrossPeriod,0); tiZZ=iTime(NULL,GrossPeriod,0); } } switch (ExtIndicator) { case 0 : {ZigZag_(); break;} case 1 : {ang_AZZ_(); break;} case 2 : {Ensign_ZZ(); break;} case 3 : {Ensign_ZZ(); break;} case 4 : {ZigZag_tauber();break;} case 5 : {GannSwing(); break;} case 6 : {nenZigZag(); break;} // DT-ZigZag - � ������������, ���������������� �������� ZigZag_new_nen3.mq4 case 7 : {nenZigZag(); break;} // DT-ZigZag - ������� �������, ������� ������� ����������� klot - DT_ZZ.mq4 case 8 : {nenZigZag(); break;} // DT-ZigZag - ������� �������, ������� ������� ����������� Candid - CZigZag.mq4 case 10 : {nenZigZag(); break;} // DT-ZigZag - ������� ������� ExtIndicator=5 � ������ DT - ������� ������ Swing_zz.mq4 // ����� ��������� case 11 : { if (ExtGartleyTypeSearch<2) vPatOnOff = 0; ZigZag_(); if (ExtGartleyTypeSearch==2 && vPatOnOff == 1) flagExtGartleyTypeSearch2=true; if (vPatOnOff==1 && vPatNew==0) { vPatNew=1; flagGartle=true; if(ExtPlayAlert) { Alert (Symbol()," ",Period()," �������� ����� �������"); PlaySound("alert.wav"); } if (ExtSendMail) _SendMail("There was a pattern","on " + Symbol() + " " + Period() + " pattern " + vBullBear + " " + vNamePattern); } else if (vPatOnOff==0 && vPatNew==1) { vPatNew=0; flagGartle=true; FlagForD=true; } if (minBarsSave!=minBarsX) { afrm=true; delete_objects_dinamic(); delete_objects1(); counted_bars=0; minBarsSave=minBarsX; PeakDetIni=true; } break; } case 12 : {ZZTalex(minBars);break;} case 13 : {ZigZag_SQZZ();break;} // ZigZag ���������� case 14 : {ZZ_2L_nen();break;} // ZigZag wellx } if (ExtHidden<5) // ���������� �� ����� ��������. ������. { if(!chHL_PeakDet_or_vts) { if (ExtLabel==0) {i_vts(); i_vts1();} } else if (PeakDetIni && PeakDet) { PeakDetIni=false; double kl=0,kh=0; // kl - min; kh - max for (shift=Bars; shift>0; shift--) { if (zzH[shift]>0) {kh=zzH[shift];} if (zzL[shift]>0) {kl=zzL[shift];} lam[shift]=kl; ham[shift]=kh; } } // ������������� ������� matriza(); if (infoTF) if (close_TF!=Close[0]) info_TF(); } //----------------------------------------- // ���� ���������� �������. �����. //----------------------------------------- if (ExtHidden<5) // ���������� �� ����� ��������. ������. { //====================== //====================== //====================== //----------------------------------------- // // 2. // // ���� ���������� ������. ������. //----------------------------------------- if (Bars - counted_bars>2 || flagFrNew) { // ����� ������� � ������ ����, �� �������� ����� ���������� �������������� ����� if (countBarEnd==0) { if (ExtFractalEnd>0) { k=ExtFractalEnd; for (shift=0; shift 0; shift++) { if (zz[shift]>0 && zzH[shift]>0) {countBarEnd=shift; TimeBarEnd=Time[shift]; k--;} } } else { countBarEnd=Bars-3; TimeBarEnd=Time[Bars-3]; } } else { countBarEnd=iBarShift(Symbol(),Period(),TimeBarEnd); } } //----------------------------------------- // ���� ���������� ������. �����. //----------------------------------------- //----------------------------------------- // // 3. // // ���� �������� � �������� �����, // ���������� ������������. ������. //----------------------------------------- // ��������� ����������� ����� � �����. ������. if (Bars - counted_bars<3) { // ����� ������� ���� ������� ����������, ������ �� �������� ���� for (shift1=0; shift1 0.0 && (zzH[shift1]==zz[shift1] || zzL[shift1]==zz[shift1])) { timeFr1new=Time[shift1]; break; } } // ����� ����, �� ������� ������ ��������� ��� �����. shift=iBarShift(Symbol(),Period(),afr[0]); // �������� ����� ��� ZigZag if ((zzH[shift1]>0 && afrl[0]>0) || (zzL[shift1]>0 && afrh[0]>0)) { newRay=true; if (!ExtDinamic) { ExtNumberPeak=false; ExtFiboStatic=false; ExtPitchforkStatic=0; ExtFiboFanNum=0; ExtFiboExpansion=0; ExtVLStaticNum=0; ExtArcStaticNum=0; ExtSpiralNum=0; ExtPivotZZ2Num=0; ExtChannelsNum=0; ExtFiboTimeNum=0; } else { if (StringSubstr(ExtVisibleDinamic,0,1)!="1") ExtNumberPeak=false; if (StringSubstr(ExtVisibleDinamic,1,1)!="1") ExtFiboStatic=false; if (StringSubstr(ExtVisibleDinamic,2,1)!="1") ExtPitchforkStatic=0; if (StringSubstr(ExtVisibleDinamic,3,1)!="1") ExtFiboFanNum=0; if (StringSubstr(ExtVisibleDinamic,4,1)!="1") ExtFiboExpansion=0; if (StringSubstr(ExtVisibleDinamic,5,1)!="1") ExtVLStaticNum=0; if (StringSubstr(ExtVisibleDinamic,6,1)!="1") ExtArcStaticNum=0; if (StringSubstr(ExtVisibleDinamic,7,1)!="1") ExtSpiralNum=0; if (StringSubstr(ExtVisibleDinamic,8,1)!="1") ExtPivotZZ2Num=0; if (StringSubstr(ExtVisibleDinamic,9,1)!="1") ExtChannelsNum=0; if (StringSubstr(ExtVisibleDinamic,10,1)!="1") ExtFiboTimeNum=0; } if (ExtAlert) { Alert (Symbol()," ",Period()," �������� ����� ��� ZigZag"); PlaySound("alert.wav"); } } // ��������� �������� �������� ���������� � ���, ������� ��� ����� // ����������� ����� ��������� if (timeFr1new!=afr[0]) { flagFrNew=true; if (shift>=shift1) numBar=shift; else numBar=shift1; afrm=true; } // ��������� �� ��������� ��������� �� ������ ��� if (afrh[0]>0 && zz[shift]==0.0) { flagFrNew=true; if (numBar 0 && zz[shift]==0.0) { flagFrNew=true; if (numBar 0) { flagFrNew=true; numBar=0; delete_objects2(afr[0]); afrx[0]=High[shift]; afrh[0]=High[shift]; if (ExtFiboFanDinamic) screenFiboFanD(); if (mFibo[1]==0 && ExtFiboStatic) screenFiboS(); if (ExtFiboDinamic) screenFiboD(); if (ExtPitchforkDinamic>0) screenPitchforkD(); if (ExtVLDinamicColor>0) VLD(); if (mVL[2]==0 && ExtVLStaticNum>0) VLS(); if (ExtFiboTimeNum>2) fiboTimeX (); if (ExtPitchforkStatic>0) { if (ExtPitchforkCandle) { if (iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)==0) screenPitchforkS(); } else { if (mPitch[2]==0) screenPitchforkS(); } } if (mExpansion[2]==0 && ExtFiboExpansion>0) FiboExpansion(); if (mFan[1]==0 && ExtFiboFanNum>0 && ExtFiboFanColor>0) screenFiboFan(); if (ExtArcDinamicNum>0) screenFiboArcD(); if (ExtArcStaticNum>0) screenFiboArcS(); } //============= 1 ��������� ��������. �����. // //============= 1 ��������� �������. ������. if (afrl[0]-Low[shift]!=0 && afrl[0]>0) { flagFrNew=true; numBar=0; delete_objects2(afr[0]); afrx[0]=Low[shift]; afrl[0]=Low[shift]; if (mFibo[1]==0 && ExtFiboStatic) screenFiboS(); if (ExtFiboDinamic) screenFiboD(); if (ExtPitchforkDinamic>0) screenPitchforkD(); if (ExtFiboFanDinamic) screenFiboFanD(); if (ExtVLDinamicColor>0) VLD(); if (mVL[2]==0 && ExtVLStaticNum>0) VLS(); if (ExtFiboTimeNum>2) fiboTimeX (); if (ExtPitchforkStatic>0) { if (ExtPitchforkCandle) { if (iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)==0) screenPitchforkS(); } else { if (mPitch[2]==0) screenPitchforkS(); } } if (mExpansion[2]==0 && ExtFiboExpansion>0) FiboExpansion(); if (mFan[1]==0 && ExtFiboFanNum>0 && ExtFiboFanColor>0) screenFiboFan(); if (ExtArcDinamicNum>0) screenFiboArcD(); if (ExtArcStaticNum>0) screenFiboArcS(); } //============= 1 ��������� �������. �����. //-----------3 ��������� �������� ��� �������, �� ������� �� ��� �� ����. �����. // ����� ����������� ��������� � �������� �����, ��������� �� ���� ���������. ������. countBarEnd=iBarShift(Symbol(),Period(),TimeBarEnd); for (k=0; k<5; k++) { // �������� ����������. if (afrh[k]>0) { // ����� ����, �� ������� ��� ���� ������� shift=iBarShift(Symbol(),Period(),afr[k]); if (zz[shift]==0) { flagFrNew=true; if (shift>numBar) numBar=shift; afrm=true; numHighPrim=shift; numHighLast=0;HighLast=0.0; for (k1=shift+1; k1<=countBarEnd; k1++) { if (zzH[k1]>0) { if (ZigZagHighLow) HighLast=High[k1]; else HighLast=zzH[k1]; numHighLast=k1; nameObj="_" + ExtComplekt + "ph" + Time[numHighPrim] + "_" + Time[numHighLast]; numOb=ObjectFind(nameObj); if (numOb>-1) { ObjectDelete(nameObj); nameObjtxt="_" + ExtComplekt + "phtxt" + Time[numHighPrim] + "_" + Time[numHighLast]; ObjectDelete(nameObjtxt); } } } } } // �������� ���������. if (afrl[k]>0) { // ����� ����, �� ������� ��� ���� ������� shift=iBarShift(Symbol(),Period(),afr[k]); if (zz[shift]==0) { flagFrNew=true; if (shift>numBar) numBar=shift; afrm=true; numLowPrim=shift; numLowLast=0;LowLast=10000000; for (k1=shift+1; k1<=countBarEnd; k1++) { if (zzL[k1]>0) { if (ZigZagHighLow) LowLast=Low[k1]; else LowLast=zzL[k1]; numLowLast=k1; nameObj="_" + ExtComplekt + "pl" + Time[numLowPrim] + "_" + Time[numLowLast]; numOb=ObjectFind(nameObj); if (numOb>-1) { ObjectDelete(nameObj); nameObjtxt="_" + ExtComplekt + "pltxt" + Time[numLowPrim] + "_" + Time[numLowLast]; ObjectDelete(nameObjtxt); } } } } } } // ����� ����������� ��������� � �������� �����, ��������� �� ���� ���������. �����. // ���������� �������. ������. matriza (); // ���������� �������. �����. } // ��������� ����������� ����� � �����. �����. //----------------------------------------- // ���� �������� � �������� �����, // ���������� ������������. �����. //----------------------------------------- // ������� ���������� ���������. ������. countFractal(); // ������� ���������� ���������. �����. //----------------------------------------- // // 4. // // ���� ������ �������������� �����. ������. //----------------------------------------- if (Bars - counted_bars>2 && ExtHidden>0) { //-----------1 ��������� ����������. ������. //+--------------------------------------------------------------------------+ //| ����� ����������� ����� � ����� ��������� � 0.886 ��� ���������� ZigZag-a //| ��������� ���������� �� �������� ���� //+--------------------------------------------------------------------------+ numLowPrim=0; numLowLast=0; numHighPrim=0; numHighLast=0; LowPrim=0.0; LowLast=0.0; HighPrim=0.0; HighLast=0.0; Angle=-100; if (flagFrNew && !flagGartle) countFr=1; else countFr=ExtFractal; for (k=0; (k 0 && countFr>0); k++) { if (zzL[k]>0.0 && (zzL[k] 0 && zzL[k]==zz[k]) { if (ZigZagHighLow) LowPrim=Low[k]; else LowPrim=zzL[k]; numLowPrim=k; } if (zzH[k]>0.0 && zzH[k]==zz[k]) { if (HighPrim>0) { if (ZigZagHighLow) HighLast=High[k]; else HighLast=zzH[k]; numHighLast=k; HL=HighLast-LowPrim; kj=(HighPrim-HighLast)*1000/(numHighLast-numHighPrim); if (HL>0 && (Angle>=kj || Angle==-100)) // �������� ���� ������� ����� { Angle=kj; // �������� ����� � ���������� ������� HLp=HighPrim-LowPrim; k1=MathCeil((numHighPrim+numHighLast)/2); kj=HLp/HL; if (ExtPPWithBars==0) PPWithBars=""; else if (ExtPPWithBars==1) PPWithBars=" ("+(numHighLast-numHighPrim)+")"; else if (ExtPPWithBars==2) PPWithBars=" ("+(numHighLast-numLowPrim)+"-"+(numLowPrim-numHighPrim)+")"; else if (ExtPPWithBars==3) { int_to_d1=(numLowPrim-numHighPrim); int_to_d2=(numHighLast-numLowPrim); int_to_d=int_to_d1/int_to_d2; PPWithBars=" ("+DoubleToStr(int_to_d,2)+")"; } else if (ExtPPWithBars==4) { int_to_d1=(Time[numLowPrim]-Time[numHighPrim]); int_to_d2=(Time[numHighLast]-Time[numLowPrim]); int_to_d=int_to_d1/int_to_d2; PPWithBars=" ("+DoubleToStr(int_to_d,2)+")"; } else if (ExtPPWithBars==5) { int_to_d1=(numLowPrim-numHighPrim)*(High[numHighPrim]-Low[numLowPrim]); int_to_d2=(numHighLast-numLowPrim)*(High[numHighLast]-Low[numLowPrim]); int_to_d=int_to_d1/int_to_d2; PPWithBars=" ("+DoubleToStr(int_to_d,2)+")"; } else if (ExtPPWithBars==7) { int_to_d1=((High[numHighLast]-Low[numLowPrim])/Point)/(numHighLast-numLowPrim); int_to_d2=((High[numHighPrim]-Low[numLowPrim])/Point)/(numLowPrim-numHighPrim); PPWithBars=" ("+DoubleToStr(int_to_d1,3)+"/"+DoubleToStr(int_to_d2,3)+")"; } else if (ExtPPWithBars==8) { int_to_d1=MathSqrt((numLowPrim-numHighPrim)*(numLowPrim-numHighPrim) + ((High[numHighPrim]-Low[numLowPrim])/Point)*((High[numHighPrim]-Low[numLowPrim])/Point)); int_to_d2=MathSqrt((numHighLast-numLowPrim)*(numHighLast-numLowPrim) + ((High[numHighLast]-Low[numLowPrim])/Point)*((High[numHighLast]-Low[numLowPrim])/Point)); int_to_d=int_to_d1/int_to_d2; PPWithBars=" ("+DoubleToStr(int_to_d,2)+")"; } else if (ExtPPWithBars==9) { int_to_d1=100-100*Low[numLowPrim]/High[numHighLast]; int_to_d2=100*High[numHighPrim]/Low[numLowPrim]-100; PPWithBars=" ("+DoubleToStr(int_to_d1,1)+"/"+DoubleToStr(int_to_d2,1)+")"; } // ExtPPWithBars=6 ����������� ��������� ������� � ������� ���������� �� ����������� "���������" ExtLine_=ExtLine; if (kj>0.1 && kj<9.36) { // �������� ���������� ������� (����� ���������). % �������������� ����� ����������� kk=kj; k2=1; Pesavento_patterns(); if (k2<0) // ������� �������������� ����� ��������� � 0.886 { ExtLine_=ExtLine886; if (ExtHidden!=4) { nameObj="_" + ExtComplekt + "phtxt" + Time[numHighPrim] + "_" + Time[numHighLast]; ObjectCreate(nameObj,OBJ_TEXT,0,Time[k1],(HighPrim+HighLast)/2); if (ExtPPWithBars==6) { int_to_d=MathAbs((kk-kj)/kk)*100; PPWithBars=" ("+DoubleToStr((LowPrim+(HighLast-LowPrim)*kk-HighPrim)/Point,0)+"/"+DoubleToStr(int_to_d,2)+"%)"; } descript=txtkk; ObjectSetText(nameObj,txtkk+PPWithBars,ExtSizeTxt,"Arial", colorPPattern); if (ExtPPWithBars==6) PPWithBars=""; } } else // ������� �������������� (�� ��������� � 0.886) { if (ExtHidden==1 || ExtHidden==4) { nameObj="_" + ExtComplekt + "phtxt" + Time[numHighPrim] + "_" + Time[numHighLast]; ObjectCreate(nameObj,OBJ_TEXT,0,Time[k1],(HighPrim+HighLast)/2); descript=DoubleToStr(kk,3); if (ExtDeltaType==3) { ObjectSetText(nameObj,""+DoubleToStr(kk,3)+PPWithBars,ExtSizeTxt,"Arial",colorPPattern); } else { ObjectSetText(nameObj,""+DoubleToStr(kk,2)+PPWithBars,ExtSizeTxt,"Arial",colorPPattern); } } } if ((ExtHidden==2 && k2<0) || ExtHidden!=2) { nameObj="_" + ExtComplekt + "ph" + Time[numHighPrim] + "_" + Time[numHighLast]; ObjectCreate(nameObj,OBJ_TREND,0,Time[numHighLast],HighLast,Time[numHighPrim],HighPrim); if (descript_b) ObjectSetText(nameObj,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" PPesavento "+"Line High "+descript); ObjectSet(nameObj,OBJPROP_RAY,false); ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DOT); ObjectSet(nameObj,OBJPROP_COLOR,ExtLine_); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); } if (ExtFiboZigZag) k=countBarEnd; } } } else { if (ZigZagHighLow) HighPrim=High[k]; else HighPrim=zzH[k]; numHighPrim=k; } } // ������� �� ��������� ��������� if (k>countBarEnd) { k=numHighPrim+1; countHigh1--; countFr--; numLowPrim=0; numLowLast=0; numHighPrim=0; numHighLast=0; LowPrim=0.0; LowLast=0.0; HighPrim=0.0; HighLast=0.0; Angle=-100; } } //-----------1 ��������� ����������. �����. //-----------2 ��������� ���������. ������. //+-------------------------------------------------------------------------+ //| ����� ����������� ����� � ����� ��������� � 0.886 ��� ��������� ZigZag-a //| ��������� ���� �� �������� ���� //+-------------------------------------------------------------------------+ numLowPrim=0; numLowLast=0; numHighPrim=0; numHighLast=0; LowPrim=0.0; LowLast=0.0; HighPrim=0.0; HighLast=0.0; Angle=-100; if (flagFrNew && !flagGartle) countFr=1; else countFr=ExtFractal; flagFrNew=false; flagGartle=false; for (k=0; (k 0 && countFr>0); k++) { if (zzH[k]>HighPrim && LowPrim>0) { if (ZigZagHighLow) HighPrim=High[k]; else HighPrim=zzH[k]; numHighPrim=k; } if (zzL[k]>0.0 && zzL[k]==zz[k]) { if (LowPrim>0) { if (ZigZagHighLow) LowLast=Low[k]; else LowLast=zzL[k]; numLowLast=k; // ����� ����������� ����� � ��������� ��������������(����� ���������) HL=HighPrim-LowLast; kj=(LowPrim-LowLast)*1000/(numLowLast-numLowPrim); if (HL>0 && (Angle<=kj || Angle==-100)) // �������� ���� ������� ����� { Angle=kj; HLp=HighPrim-LowPrim; k1=MathCeil((numLowPrim+numLowLast)/2); kj=HLp/HL; if (ExtPPWithBars==0) PPWithBars=""; else if (ExtPPWithBars==1) PPWithBars=" ("+(numLowLast-numLowPrim)+")"; else if (ExtPPWithBars==2) PPWithBars=" ("+(numLowLast-numHighPrim)+"-"+(numHighPrim-numLowPrim)+")"; else if (ExtPPWithBars==3) { int_to_d1=(numHighPrim-numLowPrim); int_to_d2=(numLowLast-numHighPrim); int_to_d=int_to_d1/int_to_d2; PPWithBars=" ("+DoubleToStr(int_to_d,2)+")"; } else if (ExtPPWithBars==4) { int_to_d1=(Time[numHighPrim]-Time[numLowPrim]); int_to_d2=(Time[numLowLast]-Time[numHighPrim]); int_to_d=int_to_d1/int_to_d2; PPWithBars=" ("+DoubleToStr(int_to_d,2)+")"; } else if (ExtPPWithBars==5) { int_to_d1=(numHighPrim-numLowPrim)*(High[numHighPrim]-Low[numLowPrim]); int_to_d2=(numLowLast-numHighPrim)*(High[numHighPrim]-Low[numLowLast]); int_to_d=int_to_d1/int_to_d2; PPWithBars=" ("+DoubleToStr(int_to_d,2)+")"; } else if (ExtPPWithBars==7) { int_to_d1=((High[numHighPrim]-Low[numLowLast])/Point)/(numLowLast-numHighPrim); int_to_d2=((High[numHighPrim]-Low[numLowPrim])/Point)/(numHighPrim-numLowPrim); PPWithBars=" ("+DoubleToStr(int_to_d1,3)+"/"+DoubleToStr(int_to_d2,3)+")"; } else if (ExtPPWithBars==8) { int_to_d1=MathSqrt((numHighPrim-numLowPrim)*(numHighPrim-numLowPrim) + ((High[numHighPrim]-Low[numLowPrim])/Point)*((High[numHighPrim]-Low[numLowPrim])/Point)); int_to_d2=MathSqrt((numLowLast-numHighPrim)*(numLowLast-numHighPrim) + ((High[numHighPrim]-Low[numLowLast])/Point)*((High[numHighPrim]-Low[numLowLast])/Point)); int_to_d=int_to_d1/int_to_d2; PPWithBars=" ("+DoubleToStr(int_to_d,2)+")"; } else if (ExtPPWithBars==9) { int_to_d1=100*High[numHighPrim]/Low[numLowLast]-100; int_to_d2=100-100*Low[numLowPrim]/High[numHighPrim]; PPWithBars=" ("+DoubleToStr(int_to_d1,1)+"/"+DoubleToStr(int_to_d2,1)+")"; } // ExtPPWithBars=6 ����������� ��������� ������� � ������� ���������� �� ����������� "���������" ExtLine_=ExtLine; if ( kj>0.1 && kj<9.36) { // �������� ���������� ������� (����� ���������). % �������������� ����� ���������� kk=kj; k2=1; Pesavento_patterns(); if (k2<0) // ������� �������������� ����� ��������� � 0.886 { ExtLine_=ExtLine886; if (ExtHidden!=4) { nameObj="_" + ExtComplekt + "pltxt" + Time[numLowPrim] + "_" + Time[numLowLast]; ObjectCreate(nameObj,OBJ_TEXT,0,Time[k1],(LowPrim+LowLast)/2); if (ExtPPWithBars==6) { int_to_d=MathAbs((kk-kj)/kk)*100; PPWithBars=" ("+DoubleToStr((HighPrim-(HighPrim-LowLast)*kk-LowPrim)/Point,0)+"/"+DoubleToStr(int_to_d,2)+"%)"; } descript=txtkk; ObjectSetText(nameObj,txtkk+PPWithBars,ExtSizeTxt,"Arial", colorPPattern); if (ExtPPWithBars==6) PPWithBars=""; } } else // ������� �������������� (�� ��������� � 0.886) { if (ExtHidden==1 || ExtHidden==4) { nameObj="_" + ExtComplekt + "pltxt" + Time[numLowPrim] + "_" + Time[numLowLast]; ObjectCreate(nameObj,OBJ_TEXT,0,Time[k1],(LowPrim+LowLast)/2); descript=DoubleToStr(kk,3); if (ExtDeltaType==3) { ObjectSetText(nameObj,""+DoubleToStr(kk,3)+PPWithBars,ExtSizeTxt,"Arial",colorPPattern); } else { ObjectSetText(nameObj,""+DoubleToStr(kk,2)+PPWithBars,ExtSizeTxt,"Arial",colorPPattern); } } } if ((ExtHidden==2 && k2<0) || ExtHidden!=2) { nameObj="_" + ExtComplekt + "pl" + Time[numLowPrim] + "_" + Time[numLowLast]; ObjectCreate(nameObj,OBJ_TREND,0,Time[numLowLast],LowLast,Time[numLowPrim],LowPrim); if (descript_b) ObjectSetText(nameObj,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" PPesavento "+"Line Low "+descript); ObjectSet(nameObj,OBJPROP_RAY,false); ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DOT); ObjectSet(nameObj,OBJPROP_COLOR,ExtLine_); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); } if (ExtFiboZigZag) k=countBarEnd; } } } else { numLowPrim=k; if (ZigZagHighLow) LowPrim=Low[k]; else LowPrim=zzL[k]; } } // ������� �� ��������� ��������� if (k>countBarEnd) { k=numLowPrim+1; countLow1--; countFr--; numLowPrim=0; numLowLast=0; numHighPrim=0; numHighLast=0; LowPrim=0.0; LowLast=0.0; HighPrim=0.0; HighLast=0.0; Angle=-100; } } //-----------2 ��������� ���������. �����. } //----------------------------------------- // ���� ������ �������������� �����. �����. //----------------------------------------- //====================== //====================== //====================== } // ���������� �� ����� ��������. �����. // ����� } // 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++;} } } } //-------------------------------------------------------- // ������� ���������� �����������. ��������� � ����������. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ������������ �������. ������. // // ������� ������������ ��� ������ ����������� �����������. // ��� ���������� ����������� �������������� ��������� ������������ ZigZag-a. // // ����� ��������� ����������� � ������������ ���� � ����� ���������, // ���� �������... //------------------------------------------------------ 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 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) { // kl - min; kh - max 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; } } // ����� Fibo Time ��� ��� ������� 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(); // ����� Versum Levels if (ExtVLStaticColor>0) { if (newRay && mVL[2]>0 && ExtVLStaticNum>0) VLS(); if (mVL[2]==0) VLS(); } if (ExtVLDinamicColor>0) {VLD();} // ����� PivotZZ ������������ if (ExtPivotZZ1Num==1 && ExtPivotZZ1Color>0) PivotZZ(ExtPivotZZ1Color, ExtPivotZZ1Num, 1); if (ExtPivotZZ2Num==1 && ExtPivotZZ2Color>0) PivotZZ(ExtPivotZZ2Color, ExtPivotZZ2Num, 2); // ����� PivotZZ ����������� 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]]); // ����� ��������� Gartley 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 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; //int o; 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 afrx[mChannels[i-1]-2] && afrx[mChannels[i-1]-1]>afrx[mChannels[i]]) { o=2; Print ("===2==="); fTrend=false; if (afrx[mChannels[i-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]) 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]]) 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]+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]]) 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]; } } } } } //Print ("baseExtremum=",baseExtremum); //Print ("o=",o); */ 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 =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 =peakRight) {m--; cenaLTLeft=wrcenaL+tangens*(peakLeft-m);} timeLTLeft=Time[m+1]; cenaLTLeft=wrcenaL+tangens*(peakLeft-m-1); n=peakRight; wrcenaR=cenaLTRight; while (cenaLTRight 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 afrx[mChannels[i]] && n 1) { cena=(zz[peak2]+zz[peak1]+Close[peak1-1])/3; tangens=(zz[peak2]-zz[peak1])/(peak2-peak1); val=zz[peak1]; for (shift=peak1; shift zz[peak1]) { if (val>cena) break; } else { if (val 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); } } } //-------------------------------------------------------- // Versum Levels. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ����� ��� ������� �����������. ������. //-------------------------------------------------------- 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 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 (); } //-------------------------------------------------------- // ����� ��� ������� �����������. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ����� UWL_LWL. ������. //-------------------------------------------------------- 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); } } //-------------------------------------------------------- // ����� UWL_LWL. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ����-Time. ������. //-------------------------------------------------------- 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[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 "); } } } //-------------------------------------------------------- // ����-Time. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ����-Time. ������. //-------------------------------------------------------- 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); } } //-------------------------------------------------------- // ����-Time. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ������� ���. ������. //-------------------------------------------------------- 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 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); } } //-------------------------------------------------------- // ����� ISL. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ����� RLine. ������. //-------------------------------------------------------- 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); } } //-------------------------------------------------------- // ����� RLine. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ����� RedZone. ������. //-------------------------------------------------------- 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 =_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) =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); } //-------------------------------------------------------- // ����� RedZone. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ������������ ������� ��������� 1/2 ������� ��� �������. ������. //-------------------------------------------------------- // ������������ ��������� ���� � ����� ���� ����� ��� ������� // � ����� ������ �� ���������� - // tAB2, tBC2 - ����� �����, ����� ������� ���������� 1/2 ������� // AB2, BC2 - ������� �������� �����, ����� ������� ���������� 1/2 ������� // 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); // ������� ���� ������� 1/2 ������� ��� ������� tangens=(C_3 - A_1)/(n1 - n3); // ������ �����, ����� ������� ����� ��������� 1/2 ������� nab2=MathCeil((n1+n2)/2.0); nbc2=MathCeil((n2+n3)/2.0); // �������� ���� �����, ����� ������� ����� ��������� 1/2 ������� AB2=(A_1 + B_2)/2 - (nab2-(n1+n2)/2.0)*tangens; BC2=(B_2 + C_3)/2 - (nbc2-(n2+n3)/2.0)*tangens; // ����� �����, ����� ������� ����� ��������� 1/2 ������� tAB2=Time[nab2]; tBC2=Time[nbc2]; } //-------------------------------------------------------- // ������������ ������� ��������� 1/2 ������� ��� �������. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ������������ ������� ���������� ����� �� ������� ��� �������. ������. //-------------------------------------------------------- // ������������ ��������� ���� � ����� ���� ����� ��� ������� // � ����� ������ �� ���������� - // tAB2, tBC2 - ����� �����, ����� ������� ���������� 1/2 ������� // AB2, BC2 - ������� �������� �����, ����� ������� ���������� 1/2 ������� // 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]; } //-------------------------------------------------------- // ������������ ������� ���������� ����� �� ������� ��� �������. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ��������� ��������� ��� ExtCM_0_1A_2B=4. ������. //------------------------------------------------------- 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); } //-------------------------------------------------------- // ��������� ��������� ��� ExtCM_0_1A_2B=4. �����. //------------------------------------------------------- //-------------------------------------------------------- // ��������� ��������� ��� ExtCM_0_1A_2B=5. ������. //------------------------------------------------------- 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); } //-------------------------------------------------------- // ��������� ��������� ��� ExtCM_0_1A_2B=5. �����. //------------------------------------------------------- //-------------------------------------------------------- // Pivot Zone. ������. //------------------------------------------------------- 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); } //-------------------------------------------------------- // Pivot Zone. �����. //------------------------------------------------------- //-------------------------------------------------------- // ����������� ����� ����������� RL400 �������. ������. //------------------------------------------------------- // flag=true - �������������� ISL // flag=false - �������������� UWL/LWL 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)); } } //-------------------------------------------------------- // ����������� ����� ����������� RL400 �������. �����. //------------------------------------------------------- //-------------------------------------------------------- // ����� ������������ ����������. ������. //-------------------------------------------------------- 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 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(nameObj,OBJPROP_LEVELSTYLE,ExtFiboStyle); ObjectSet(nameObj,OBJPROP_LEVELWIDTH,ExtFiboWidth); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); if (ExtFiboType==0) { fibo_standart (fiboPrice, fiboPrice1,"-"+Period_tf+otstup); } else if (ExtFiboType==1) { fibo_patterns(fiboPrice, fiboPrice1,"-"+Period_tf+otstup); } else if (ExtFiboType==2) { fibo_custom (fiboPrice, fiboPrice1,"-"+Period_tf+otstup); } } //-------------------------------------------------------- // �������� ���. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ���� �����������. ������. //-------------------------------------------------------- void fibo_standart(double fiboPrice,double fiboPrice1,string fibo) { double fi_1[]={0, 0.146, 0.236, 0.382, 0.5, 0.618, 0.764, 0.854, 1.0, 1.236, phi, 2.618, 4.236, 6.854}; string fitxt100_1[]={"0.0", "14.6", "23.6", "38.2", "50.0", "61.8", "76.4", "85.4", "100.0", "123.6", "161.8", "2.618", "423.6", "685.4"}; int i; Sizefi_1=14; if (!ExtFiboCorrectionExpansion) { ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi_1); for (i=0;i 0) { ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i+2,1+fi[i]); ObjectSetFiboDescription(nameObj, i+2, "Fe "+fitxt100[i]+" "+DoubleToStr(fiboPrice*(1+fi[i])+fiboPrice1, Digits)+fibo); } } } } //-------------------------------------------------------- // ���� ����������������. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ����� ����-��� �����������. ������. //-------------------------------------------------------- void screenFiboArcS() { double fibo_0, fibo_100, AutoScale; fibo_0=afrx[mArcS[0]];fibo_100=afrx[mArcS[1]]; if (ExtArcStaticScale>0) { AutoScale=ExtArcStaticScale; } else { AutoScale=(MathAbs(fibo_0-fibo_100)/Point)/MathAbs(iBarShift(Symbol(),Period(),afr[mArcS[1]])-iBarShift(Symbol(),Period(),afr[mArcS[0]])); } nameObj="FiboArcS" + ExtComplekt+"_"; if (ExtSave) { nameObj=nameObj + save; } ObjectDelete(nameObj); ObjectCreate(nameObj,OBJ_FIBOARC,0,afr[mArcS[0]],fibo_0,afr[mArcS[1]],fibo_100); fiboArc(AutoScale, ExtArcStaticColor); } //-------------------------------------------------------- // ����� ����-��� �����������. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ����� ����-��� ������������. ������. //-------------------------------------------------------- void screenFiboArcD() { double fibo_0, fibo_100, AutoScale; fibo_0=afrx[mArcD[0]];fibo_100=afrx[mArcD[1]]; if (ExtArcDinamicScale>0) { AutoScale=ExtArcDinamicScale; } else { AutoScale=(MathAbs(fibo_0-fibo_100)/Point)/MathAbs(iBarShift(Symbol(),Period(),afr[mArcD[1]])-iBarShift(Symbol(),Period(),afr[mArcD[0]])); } nameObj="FiboArcD" + ExtComplekt+"_"; ObjectDelete(nameObj); ObjectCreate(nameObj, OBJ_FIBOARC,0,afr[mArcD[0]],fibo_0,afr[mArcD[1]],fibo_100); fiboArc(AutoScale, ExtArcDinamicColor); } //-------------------------------------------------------- // ����� ����-��� ������������. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ���� ��� ����-���. ������. //-------------------------------------------------------- void fiboArc(double AutoScale, color ArcColor) { ObjectSet(nameObj,OBJPROP_SCALE,AutoScale); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); ObjectSet(nameObj,OBJPROP_COLOR,ExtObjectColor); ObjectSet(nameObj,OBJPROP_STYLE,ExtObjectStyle); ObjectSet(nameObj,OBJPROP_WIDTH,ExtObjectWidth); ObjectSet(nameObj,OBJPROP_ELLIPSE,true); ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ArcColor); ObjectSet(nameObj,OBJPROP_LEVELSTYLE,ExtArcStyle); ObjectSet(nameObj,OBJPROP_LEVELWIDTH,ExtArcWidth); if (ExtFiboType==0) { fiboArc_st(); } else if (ExtFiboType==1) { fiboArc_Pesavento(); } else if (ExtFiboType==2) { fiboArc_custom(); } } //-------------------------------------------------------- // ���� ��� ����-���. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ���� ��� ����������� ����-���. ������. //-------------------------------------------------------- void fiboArc_st() { double fi_1[]={0.0, 0.146, 0.236, 0.382, 0.5, 0.618, 0.764, 0.854, 1.0, 1.236, phi, 2.0, 2.618, 3.0, 4.236, 4.618}; string fitxt100_1[]={"0.0", "14.6", "23.6", "38.2", "50.0", "61.8", "76.4", "85.4", "100.0", "123.6", "161.8", "200.0", "261.8", "300.0", "423.6", "461.8"}; int i; Sizefi_1=16; ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi_1); for (i=0;i = 0 && y2 >= 0) || (x2 <= 0 && y2 <= 0)) color lineColor = spiralColor1; else lineColor = spiralColor2; ObjectDelete(label); ObjectCreate(label, OBJ_TREND, 0, GetTime(timeShift1), price1, GetTime(timeShift2), price2, 0, 0); ObjectSet(label, OBJPROP_RAY, 0); ObjectSet(label, OBJPROP_COLOR, lineColor); ObjectSet(label, OBJPROP_STYLE, ExtSpiralStyle); ObjectSet(label, OBJPROP_WIDTH, ExtSpiralWidth); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ datetime GetTime(int timeShift) { if(timeShift >= 0) return(Time[timeShift]); datetime time = Time[0] - Period()*timeShift*60; return(time); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double Scale() { double priceRange = WindowPriceMax(0) - WindowPriceMin(0); double barsCount = WindowBarsPerChart(); double chartScale = (priceRange / Point) / barsCount; return(chartScale*GPixels/VPixels); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ //-------------------------------------------------------- // ������� ��� ��������� ������� �������. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ����� ����-������ �����������. ������. //-------------------------------------------------------- void screenFiboFanS() { double fiboPrice1, fiboPrice2; nameObj="fiboFanS" + ExtComplekt+"_"; ObjectDelete(nameObj); if (ExtPitchforkCandle) { if (ExtPitchfork_1_HighLow) { fiboPrice1=mPitchCena[1];fiboPrice2=mPitchCena[2]; } else { fiboPrice1=mPitchCena[1];fiboPrice2=mPitchCena[2]; } ObjectCreate(nameObj,OBJ_FIBOFAN,0,mPitchTime[1],fiboPrice1,mPitchTime[2],fiboPrice2); } else { if (afrl[mPitch[1]]>0) { fiboPrice1=afrl[mPitch[1]];fiboPrice2=afrh[mPitch[2]]; } else { fiboPrice1=afrh[mPitch[1]];fiboPrice2=afrl[mPitch[2]]; } ObjectCreate(nameObj,OBJ_FIBOFAN,0,afr[mPitch[1]],fiboPrice1,afr[mPitch[2]],fiboPrice2); } ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtFiboFanS); FiboFanLevel(); } //-------------------------------------------------------- // ����� ����-������ �����������. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ����� ����-������ ������������. ������. //-------------------------------------------------------- void screenFiboFanD() { double fiboPrice1, fiboPrice2; nameObj="fiboFanD" + ExtComplekt+"_"; ObjectDelete(nameObj); fiboPrice1=afrx[1];fiboPrice2=afrx[0]; ObjectCreate(nameObj,OBJ_FIBOFAN,0,afr[1],fiboPrice1,afr[0],fiboPrice2); ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtFiboFanD); FiboFanLevel(); } //-------------------------------------------------------- // ����� ����-������ ������������. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ������ ����-������. �����. //-------------------------------------------------------- void FiboFanLevel() { if(ExtFiboFanExp) ObjectSet(nameObj,OBJPROP_FIBOLEVELS,6); else ObjectSet(nameObj,OBJPROP_FIBOLEVELS,4); ObjectSet(nameObj,OBJPROP_COLOR,ExtObjectColor); ObjectSet(nameObj,OBJPROP_STYLE,ExtObjectStyle); ObjectSet(nameObj,OBJPROP_WIDTH,ExtObjectWidth); ObjectSet(nameObj,OBJPROP_LEVELSTYLE,STYLE_DASH); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+0,0.236); ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+1,0.382); ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+2,0.5); ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+3,0.618); if (ExtFiboFanHidden) { ObjectSetFiboDescription(nameObj, 0, "23.6"); ObjectSetFiboDescription(nameObj, 1, "38.2"); ObjectSetFiboDescription(nameObj, 2, "50.0"); ObjectSetFiboDescription(nameObj, 3, "61.8"); } if(ExtFiboFanExp) { if (ExtFiboType==0) { ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+4,0.764); ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+5,0.854); if (ExtFiboFanHidden) { ObjectSetFiboDescription(nameObj, 4, "76.4"); ObjectSetFiboDescription(nameObj, 5, "85.4"); } } else { ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+4,0.786); ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+5,0.886); if (ExtFiboFanHidden) { ObjectSetFiboDescription(nameObj, 4, "78.6"); ObjectSetFiboDescription(nameObj, 5, "88.6"); } } } } //-------------------------------------------------------- // ������ ����-������. ������. //-------------------------------------------------------- //-------------------------------------------------------- // ����� ���������� ���������. ������. //-------------------------------------------------------- void FiboExpansion() { if (ExtFiboExpansion>1) { int i; double znach1,znach2,fi_1[]; nameObj="fiboExpansion" + ExtComplekt+"_"; if (mExpansion[2]>0) { if (ExtSave) { nameObj=nameObj + save; } } ObjectDelete(nameObj); if (afrl[mExpansion[0]]>0) { ObjectCreate(nameObj,OBJ_EXPANSION,0,afr[mExpansion[0]],afrl[mExpansion[0]],afr[mExpansion[1]],afrh[mExpansion[1]],afr[mExpansion[2]],afrl[mExpansion[2]]); znach1=afrh[mExpansion[1]]-afrl[mExpansion[0]]; znach2=afrl[mExpansion[2]]; } else { ObjectCreate(nameObj,OBJ_EXPANSION,0,afr[mExpansion[0]],afrh[mExpansion[0]],afr[mExpansion[1]],afrl[mExpansion[1]],afr[mExpansion[2]],afrh[mExpansion[2]]); znach1=-(afrh[mExpansion[0]]-afrl[mExpansion[1]]); znach2=afrh[mExpansion[2]]; } ObjectSet(nameObj,OBJPROP_COLOR,ExtObjectColor); ObjectSet(nameObj,OBJPROP_STYLE,ExtObjectStyle); ObjectSet(nameObj,OBJPROP_WIDTH,ExtObjectWidth); ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtFiboExpansionColor); ObjectSet(nameObj,OBJPROP_LEVELSTYLE,ExtExpansionStyle); ObjectSet(nameObj,OBJPROP_LEVELWIDTH,ExtExpansionWidth); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); if (ExtFiboType==0) { FiboExpansion_st(znach1, znach2); } else if (ExtFiboType==1) { FiboExpansion_Pesavento(znach1, znach2); } else if (ExtFiboType==2) { ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi); for (i=0;i =0; i--) { txt=ObjectName(i); if (StringFind(txt,"_" + ExtComplekt + "pl")>-1) ObjectDelete (txt); if (StringFind(txt,"_" + ExtComplekt + "ph")>-1) ObjectDelete (txt); } } //-------------------------------------------------------- // �������� ��������. �����. // �������� �������������� ����� � �����. //-------------------------------------------------------- //-------------------------------------------------------- // �������� ��������. ������. // �������� �������������� ����� � �����. //-------------------------------------------------------- void delete_objects2(string txt1) { int i; string txt; for (i=ObjectsTotal(); i>=0; i--) { txt=ObjectName(i); if (StringFind(txt,txt1)>-1)ObjectDelete (txt); } } //-------------------------------------------------------- // �������� ��������. �����. // �������� �������������� ����� � �����. //-------------------------------------------------------- //-------------------------------------------------------- // �������� ��������. ������. // �������� ������������� � ����� ��� ����� D ��������. //-------------------------------------------------------- void delete_objects3() { int i; string txt; for (i=ObjectsTotal(); i>=0; i--) { txt=ObjectName(i); if (StringFind(txt,"_"+ExtComplekt+"Triangle")>-1)ObjectDelete (txt); if (RangeForPointD>0) { txt=ObjectName(i); if (StringFind(txt,"_"+ExtComplekt+"PointD")>-1)ObjectDelete (txt); if (StringFind(txt,"_"+ExtComplekt+"PDL")>-1)ObjectDelete (txt); } ArrayInitialize(PeakCenaX,0); ArrayInitialize(PeakCenaA,0); ArrayInitialize(PeakCenaB,0); ArrayInitialize(PeakCenaC,0); ArrayInitialize(PeakCenaD,0); ArrayInitialize(PeakTimeX,0); ArrayInitialize(PeakTimeA,0); ArrayInitialize(PeakTimeB,0); ArrayInitialize(PeakTimeC,0); ArrayInitialize(PeakTimeD,0); } if (RangeForPointD>0) { FlagForD=true; } } //-------------------------------------------------------- // �������� ��������. �����. // �������� ������������� � ����� ��� ����� D ��������. //-------------------------------------------------------- //-------------------------------------------------------- // �������� ��������. ������. // �������� �������������� ����� � �����. //-------------------------------------------------------- void delete_objects4() { int i; string txt; for (i=ObjectsTotal(); i>=0; i--) { txt=ObjectName(i); if (StringFind(txt,"_" + ExtComplekt + "pg")>-1) ObjectDelete (txt); } } //-------------------------------------------------------- // �������� ��������. �����. // �������� �������������� ����� � �����. //-------------------------------------------------------- //-------------------------------------------------------- // �������� ��������. ������. // �������� Equilibrium. //-------------------------------------------------------- void delete_objects5() { int i; string txt; for (i=ObjectsTotal(); i>=0; i--) { txt=ObjectName(i); if (StringFind(txt,"_"+ExtComplekt+"Equilibrium")>-1)ObjectDelete (txt); else if (StringFind(txt,"_"+ExtComplekt+"Reaction")>-1)ObjectDelete (txt); } } //-------------------------------------------------------- // �������� ��������. �����. // �������� Equilibrium. //-------------------------------------------------------- //-------------------------------------------------------- // �������� ��������. ������. // �������� �������. //-------------------------------------------------------- void delete_objects_spiral() { int i; for(i=0;i =0; i--) { txt=ObjectName(i); if (StringFind(txt,"NumberPeak" + "_" + ExtComplekt + "_")>-1) ObjectDelete (txt); } } //-------------------------------------------------------- // �������� ��������. �����. // �������� ������� ��������� �������. //-------------------------------------------------------- //-------------------------------------------------------- // �������� ������������ ��������. ������. //-------------------------------------------------------- void delete_objects_dinamic() { int i; ObjectDelete("fiboD" + ExtComplekt+"_"); ObjectDelete("fiboFanD" + ExtComplekt+"_"); ObjectDelete("RLineD" + ExtComplekt+"_"); ObjectDelete("pitchforkD" + ExtComplekt+"_"); ObjectDelete("ISL_D" + ExtComplekt+"_"); ObjectDelete("RZD" + ExtComplekt+"_"); ObjectDelete("pmedianaD" + ExtComplekt+"_"); ObjectDelete("1-2pmedianaD" + ExtComplekt+"_"); ObjectDelete("fiboExpansion" + ExtComplekt+"_"); ObjectDelete("PivotZoneD" + ExtComplekt+"_"); ObjectDelete("FanMedianaDinamic" + ExtComplekt+"_"); ObjectDelete("FiboArcD" + ExtComplekt+"_"); if (ExtPivotZZ1Num==1) ObjectDelete("LinePivotZZ" + "1" + ExtComplekt+"_"); if (ExtPivotZZ2Num==1) ObjectDelete("LinePivotZZ" + "2" + ExtComplekt+"_"); for (i=0; i<7; i++) { nameObj="VLD"+i+" " + ExtComplekt+"_"; ObjectDelete(nameObj); } } //-------------------------------------------------------- // �������� ������������ ��������. �����. //-------------------------------------------------------- //---------------------------------------------------- // ZigZag (�� ��4 ������� ����������). ������. //---------------------------------------------------- void ZigZag_() { // ZigZag �� ��. ������. if (ExtMaxBar>0) _maxbarZZ=ExtMaxBar; else _maxbarZZ=Bars; int shift, back,lasthighpos,lastlowpos; double val,res; double curlow,curhigh,lasthigh,lastlow; int vDepth = 0; // int Depth; bool endCyklDirection=true; if (ExtIndicator==11) { bool endCykl=false; Depth = minDepth; // countGartley = 0; // ������� ��������� countColor = 0; if (flagExtGartleyTypeSearch2==false) {delete_objects3(); countGartley = 0; vPatOnOff = 0;} if (ExtGartleyTypeSearch>0 && ExtHiddenPP==2 && flagExtGartleyTypeSearch2==false) delete_objects4(); } else { Depth = minBars; minDepth = minBars; maxDepth = minBars; } if (DirectionOfSearchMaxMin) vDepth = maxDepth; else vDepth = minDepth; while (endCyklDirection) { if (ExtIndicator==11) { if (ExtLabel>0) {ArrayInitialize(la,0.0); ArrayInitialize(ha,0.0);} ArrayInitialize(zz,0);ArrayInitialize(zzL,0);ArrayInitialize(zzH,0); if (DirectionOfSearchMaxMin) { if (vDepth < minDepth) { if (ExtGartleyTypeSearch>0 && ExtIndicator==11 && vPatOnOff==1) vDepth=minBarsToNumberPattern; else vDepth=minBars; endCykl=true; } } else { if (vDepth > maxDepth) { if (ExtGartleyTypeSearch>0 && ExtIndicator==11 && vPatOnOff==1) vDepth=minBarsToNumberPattern; else vDepth=minBars; endCykl=true; } } Depth = vDepth; if (DirectionOfSearchMaxMin) { vDepth--; } else { vDepth++; } if (flagExtGartleyTypeSearch2 && ExtGartleyTypeSearch==2 && vPatOnOff==1) {endCykl=true; Depth=minBarsToNumberPattern;} } else { endCyklDirection=false; } minBarsX=Depth; // ������ ������� ���� for(shift=_maxbarZZ-Depth; shift>=ExtMinBar; shift--) { val=Low[iLowest(NULL,0,MODE_LOW,Depth,shift)]; if(val==lastlow) val=0.0; else { lastlow=val; if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0; else { for(back=1; back<=ExtBackstep; back++) { res=zzL[shift+back]; if((res!=0)&&(res>val)) zzL[shift+back]=0.0; } } } if (Low[shift]==val) { zzL[shift]=val; if (ExtLabel>0) la[shift]=val; } val=High[iHighest(NULL,0,MODE_HIGH,Depth,shift)]; if(val==lasthigh) val=0.0; else { lasthigh=val; if((val-High[shift])>(ExtDeviation*Point)) val=0.0; else { for(back=1; back<=ExtBackstep; back++) { res=zzH[shift+back]; if((res!=0)&&(res 0) ha[shift]=val; } } // ������ ������� ���� lasthigh=-1; lasthighpos=-1; lastlow=-1; lastlowpos=-1; for(shift=_maxbarZZ-Depth; shift>=ExtMinBar; shift--) { curlow=zzL[shift]; curhigh=zzH[shift]; if((curlow==0)&&(curhigh==0)) continue; if(curhigh!=0) { if(lasthigh>0) { if(lasthigh 0) { if(lastlow>curlow) zzL[lastlowpos]=0; else zzL[shift]=0; } if((curlow =ExtMinBar; shift--) { zz[shift]=zzL[shift]; if(shift>=_maxbarZZ-Depth) {zzH[shift]=0.0; zzL[shift]=0.0; zz[shift]=0.0;} else { res=zzH[shift]; if(res!=0.0) { zz[shift]=res; } } } NoGorb(Depth); // ������� ����� ������� if (ExtIndicator!=11 && ExtLabel>0) // ����������� ����� �� �����, ��� �������� ����� ��� � �� ��������� ������� { Metka(); } // ����� ��������� if (ExtIndicator==11) { if (ExtLabel>0) // ����������� ����� �� �����, ��� �������� ����� ��� � �� ��������� ������� { Metka(); } if (endCykl) { return(0); } _Gartley("ExtIndicator=11_" + Depth+"/"+ExtDeviation+"/"+ExtBackstep, Depth); if (ExtGartleyTypeSearch==0 && vPatOnOff==1) { return(0); } } // ����� ��������� ����� } } //-------------------------------------------------------- // ZigZag �� ��. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ����������� ����������� ������ �������. ������. //-------------------------------------------------------- void NoGorb(int Depth) { double vel1, vel2, vel3, vel4; int bar1, bar2, bar3, bar4; int count; for(int bar=Bars-Depth; bar>=0; bar--) { if (zz[bar]!=0) { count++; vel4=vel3;bar4=bar3; vel3=vel2;bar3=bar2; vel2=vel1;bar2=bar1; vel1=zz[bar];bar1=bar; if (count<3) continue; if ((vel3 vel2)&&(vel2>vel1)) {zz[bar2]=0;zzL[bar2]=0;zzH[bar2]=0;bar=bar3+1;} if ((vel2==vel1)&&(vel1!=0 )) {zz[bar1]=0;zzL[bar1]=0;zzH[bar1]=0;bar=bar3+1;} } } } //-------------------------------------------------------- // ����������� ����������� ������ �������. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ����������� �����. ������. //-------------------------------------------------------- void Metka() { int shift, metka=0; // =0 - �� ������� �������� ZZ. =1 - ���� ����� ����������. =2 - ���� ����� ���������. for(shift=Bars-1; shift>=0; shift--) { if (zz[shift]>0) { if (zzH[shift]>0) { metka=2; la[shift]=0; shift--; } else { metka=1; ha[shift]=0; shift--; } } if (metka==0) { ha[shift]=0; la[shift]=0; } else if (metka==1) { if (ha[shift]>0) metka=0; la[shift]=0; } else if (metka==2) { if (la[shift]>0) metka=0; ha[shift]=0; } } } //-------------------------------------------------------- // ����������� �����. �����. //-------------------------------------------------------- //-------------------------------------------------------- // ����� ��������� Gartley. ������. //-------------------------------------------------------- void _Gartley(string _Depth, int Depth) { int i, j, k, m; double min_DeltaGartley = (1 - ExtDeltaGartley); double max_DeltaGartley = (1 + ExtDeltaGartley); double vl0382 = min_DeltaGartley * 0.382; double vh05 = max_DeltaGartley * 0.5; double vl0618 = min_DeltaGartley * 0.618; double vh0618 = max_DeltaGartley * 0.618; double vl0786 = min_DeltaGartley * 0.786; double vh0786 = max_DeltaGartley * 0.786; double vl0886 = min_DeltaGartley * 0.886; double vh0886 = max_DeltaGartley * 0.886; double vl1128 = min_DeltaGartley * 1.128; double vl1272 = min_DeltaGartley * 1.272; double vl1618 = min_DeltaGartley * phi; double vh1618 = max_DeltaGartley * phi; double vl2236 = min_DeltaGartley * 2.236; double vh2236 = max_DeltaGartley * 2.236; double vh2618 = max_DeltaGartley * 2.618; double vh3618 = max_DeltaGartley * 3.618; double LivelDA1382,LivelDA1618,LivelDA2,LivelDA2618,LivelDA3618,LivelDA4618,LivelDC1382,LivelDC1618,LivelDC2,LivelDC2618,LivelDC3618,LivelDC4618; double LevelForD; datetime timeLineD; int aXABCD[6]; // ������ ����� � ������� XABCD ��������� double retXD; double retXB; double retBD; double retAC; double XA, BC; double vDelta0 = 0.000001; int vNull = 0; int X=1,A=2,B=3,C=4,D=5; string nameObj1, nameObj2; string vBull = "Bullish"; string vBear = "Bearish"; string vGartley = "Gartley"; string vBat = "Bat"; string vButterfly = "Butterfly"; string vCrab = "Crab"; int aNumBarPeak[]; color colorPattern; if (ExtIndicator!=11) delete_objects3(); if ((ExtGartleyTypeSearch==0 && ExtIndicator==11) || ExtIndicator!=11) vPatOnOff = 0; vBullBear = ""; vNamePattern = ""; maxPeak = 0; for(shift=Bars-1; shift>=0; shift--) { if (zz[shift]>0) maxPeak++; } ArrayResize(aNumBarPeak, maxPeak); shift = 0; j = 0; while ((shift < Bars) && (j < maxPeak)) { if (zz[shift] != 0) { aNumBarPeak[j] = shift; j++; } shift++; } if (j -1) && (aXABCD[D] < maxBarToD+2)) { aXABCD[X] = aNumBarPeak[k + 4]; aXABCD[A] = aNumBarPeak[k + 3]; aXABCD[B] = aNumBarPeak[k + 2]; aXABCD[C] = aNumBarPeak[k + 1]; aXABCD[D] = aNumBarPeak[k]; if ((zz[aXABCD[A]] > zz[aXABCD[C]]) && (zz[aXABCD[C]] > zz[aXABCD[B]]) && (zz[aXABCD[B]] > zz[aXABCD[X]]) && (zz[aXABCD[X]] > zz[aXABCD[D]]) && ((zz[aXABCD[C]] - zzL[aXABCD[D]]) >= (zz[aXABCD[A]] - zz[aXABCD[B]]) * ExtCD)) { vBullBear = vBull; } else if ((zz[aXABCD[A]] > zz[aXABCD[C]]) && (zz[aXABCD[C]] > zz[aXABCD[B]]) && (zz[aXABCD[B]] > zz[aXABCD[D]]) && (zz[aXABCD[D]] > zz[aXABCD[X]]) && ((zz[aXABCD[C]] - zz[aXABCD[D]]) >= (zz[aXABCD[A]] - zz[aXABCD[B]]) * ExtCD)) { vBullBear = vBull; } else if ((zz[aXABCD[X]] > zz[aXABCD[D]]) && (zz[aXABCD[D]] > zz[aXABCD[B]]) && (zz[aXABCD[B]] > zz[aXABCD[C]]) && (zz[aXABCD[C]] > zz[aXABCD[A]]) && ((zz[aXABCD[D]] - zz[aXABCD[C]]) >= (zz[aXABCD[B]] - zz[aXABCD[A]]) * ExtCD)) { vBullBear = vBear; } else if ((zz[aXABCD[D]] > zz[aXABCD[X]]) && (zz[aXABCD[X]] > zz[aXABCD[B]]) && (zz[aXABCD[B]] > zz[aXABCD[C]]) && (zz[aXABCD[C]] > zz[aXABCD[A]]) && ((zz[aXABCD[D]] - zz[aXABCD[C]]) >= (zz[aXABCD[B]] - zz[aXABCD[A]]) * ExtCD)) { vBullBear = vBear; } if (vBullBear!="") { if (vBullBear == vBull) { retXB = (zz[aXABCD[A]] - zz[aXABCD[B]]) / (zz[aXABCD[A]] - zz[aXABCD[X]] + vDelta0); retXD = (zz[aXABCD[A]] - zz[aXABCD[D]]) / (zz[aXABCD[A]] - zz[aXABCD[X]] + vDelta0); retBD = (zz[aXABCD[C]] - zz[aXABCD[D]]) / (zz[aXABCD[C]] - zz[aXABCD[B]] + vDelta0); retAC = (zz[aXABCD[C]] - zz[aXABCD[B]]) / (zz[aXABCD[A]] - zz[aXABCD[B]] + vDelta0); if (RangeForPointD>0 && FlagForD) { XA=zz[aXABCD[A]] - zz[aXABCD[X]]; BC=zz[aXABCD[C]] - zz[aXABCD[B]]; } } else if (vBullBear == vBear) { retXB = (zz[aXABCD[B]] - zz[aXABCD[A]]) / (zz[aXABCD[X]] - zz[aXABCD[A]] + vDelta0); retXD = (zz[aXABCD[D]] - zz[aXABCD[A]]) / (zz[aXABCD[X]] - zz[aXABCD[A]] + vDelta0); retBD = (zz[aXABCD[D]] - zz[aXABCD[C]]) / (zz[aXABCD[B]] - zz[aXABCD[C]] + vDelta0); retAC = (zz[aXABCD[B]] - zz[aXABCD[C]]) / (zz[aXABCD[B]] - zz[aXABCD[A]] + vDelta0); if (RangeForPointD>0 && FlagForD) { XA=zz[aXABCD[X]] - zz[aXABCD[A]]; BC=zz[aXABCD[B]] - zz[aXABCD[C]]; } } if ((retAC >= vl0382) && (retAC <= vh0886) && (retXD >= vl0618) && (retXD <= vh0786) && (retBD >= vl1128) && (retBD <= vh2236) && (retXB >= vl0382) && (retXB <= vh0618)) { vNamePattern=vGartley; // Gartley if (RangeForPointD>0 && FlagForD) { if (vBullBear == vBull) { LevelForDmin = MathMax(zz[aXABCD[A]]-XA*vh0786,zz[aXABCD[C]]-BC*vh2236); LevelForDmax = MathMin(zz[aXABCD[A]]-XA*vl0618,zz[aXABCD[C]]-BC*vl1128); if (RangeForPointD==2) { LivelDA1382 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*1.382; LivelDA1618 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*phi; LivelDA2 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*2; LivelDA2618 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*(1+phi); LivelDA3618 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*(2+phi); LivelDA4618 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*(3+phi); LivelDC1382 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*1.382; LivelDC1618 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*phi; LivelDC2 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*2; LivelDC2618 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*(1+phi); LivelDC3618 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*(2+phi); LivelDC4618 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*(3+phi); } } else if (vBullBear == vBear) { LevelForDmin = MathMax(zz[aXABCD[A]]+XA*vl0618,zz[aXABCD[C]]+BC*vl1128); LevelForDmax = MathMin(zz[aXABCD[A]]+XA*vh0786,zz[aXABCD[C]]+BC*vh2236); if (RangeForPointD==2) { LivelDA1382 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*1.382; LivelDA1618 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*phi; LivelDA2 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*2; LivelDA2618 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*(1+phi); LivelDA3618 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*(2+phi); LivelDA4618 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*(3+phi); LivelDC1382 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*1.382; LivelDC1618 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*phi; LivelDC2 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*2; LivelDC2618 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*(1+phi); LivelDC3618 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*(2+phi); LivelDC4618 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*(3+phi); } } } } else if ((retAC >= vl0382) && (retAC <= vh0886) && (retXD >= vl1272) && (retXD <= vh1618) && (retBD >= vl1272) && (retBD <= vh2618) && (retXB >= vl0618) && (retXB <= vh0886)) { vNamePattern=vButterfly; // Butterfly if (RangeForPointD>0 && FlagForD) { if (vBullBear == vBull) { LevelForDmin = MathMax(zz[aXABCD[A]]-XA*vh1618,zz[aXABCD[C]]-BC*vh2618); LevelForDmax = MathMin(zz[aXABCD[A]]-XA*vl1272,zz[aXABCD[C]]-BC*vl1272); if (RangeForPointD==2) { LivelDA1382 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*1.382; LivelDA1618 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*phi; LivelDA2 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*2; LivelDA2618 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*(1+phi); LivelDA3618 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*(2+phi); LivelDA4618 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*(3+phi); LivelDC1382 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*1.382; LivelDC1618 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*phi; LivelDC2 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*2; LivelDC2618 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*(1+phi); LivelDC3618 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*(2+phi); LivelDC4618 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*(3+phi); } } else if (vBullBear == vBear) { LevelForDmin = MathMax(zz[aXABCD[A]]+XA*vl1272,zz[aXABCD[C]]+BC*vl1272); LevelForDmax = MathMin(zz[aXABCD[A]]+XA*vh1618,zz[aXABCD[C]]+BC*vh2618); if (RangeForPointD==2) { LivelDA1382 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*1.382; LivelDA1618 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*phi; LivelDA2 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*2; LivelDA2618 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*(1+phi); LivelDA3618 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*(2+phi); LivelDA4618 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*(3+phi); LivelDC1382 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*1.382; LivelDC1618 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*phi; LivelDC2 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*2; LivelDC2618 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*(1+phi); LivelDC3618 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*(2+phi); LivelDC4618 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*(3+phi); } } } } else if ((retAC >= vl0382) && (retAC <= vh0886) && (retXD >= vl1618) && (retXD <= vh1618) && (retBD >= vl2236) && (retBD <= vh3618) && (retXB >= vl0382) && (retXB <= vh0618)) { vNamePattern=vCrab; // Crab if (RangeForPointD>0 && FlagForD) { if (vBullBear == vBull) { LevelForDmin = MathMax(zz[aXABCD[A]]-XA*vh1618,zz[aXABCD[C]]-BC*vh3618); LevelForDmax = MathMin(zz[aXABCD[A]]-XA*vl1618,zz[aXABCD[C]]-BC*vl2236); if (RangeForPointD==2) { LivelDA1382 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*1.382; LivelDA1618 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*phi; LivelDA2 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*2; LivelDA2618 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*(1+phi); LivelDA3618 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*(2+phi); LivelDA4618 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*(3+phi); LivelDC1382 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*1.382; LivelDC1618 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*phi; LivelDC2 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*2; LivelDC2618 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*(1+phi); LivelDC3618 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*(2+phi); LivelDC4618 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*(3+phi); } } else if (vBullBear == vBear) { LevelForDmin = MathMax(zz[aXABCD[A]]+XA*vl1618,zz[aXABCD[C]]+BC*vl2236); LevelForDmax = MathMin(zz[aXABCD[A]]+XA*vh1618,zz[aXABCD[C]]+BC*vh3618); if (RangeForPointD==2) { LivelDA1382 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*1.382; LivelDA1618 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*phi; LivelDA2 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*2; LivelDA2618 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*(1+phi); LivelDA3618 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*(2+phi); LivelDA4618 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*(3+phi); LivelDC1382 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*1.382; LivelDC1618 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*phi; LivelDC2 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*2; LivelDC2618 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*(1+phi); LivelDC3618 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*(2+phi); LivelDC4618 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*(3+phi); } } } } else if ((retAC >= vl0382) && (retAC <= vh0886) && (retXD >= vl0886) && (retXD <= vh0886) && (retBD >= vl1272) && (retBD <= vh2618) && (retXB >= vl0382) && (retXB <= vh0618)) { vNamePattern=vBat; // Bat if (RangeForPointD>0 && FlagForD) { if (vBullBear == vBull) { LevelForDmin = MathMax(zz[aXABCD[A]]-XA*vh0886,zz[aXABCD[C]]-BC*vh2618); LevelForDmax = MathMin(zz[aXABCD[A]]-XA*vl0886,zz[aXABCD[C]]-BC*vl1272); if (RangeForPointD==2) { LivelDA1382 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*1.382; LivelDA1618 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*phi; LivelDA2 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*2; LivelDA2618 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*(1+phi); LivelDA3618 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*(2+phi); LivelDA4618 = zz[aXABCD[A]]-(zz[aXABCD[A]]-zz[aXABCD[B]])*(3+phi); LivelDC1382 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*1.382; LivelDC1618 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*phi; LivelDC2 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*2; LivelDC2618 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*(1+phi); LivelDC3618 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*(2+phi); LivelDC4618 = zz[aXABCD[C]]-(zz[aXABCD[C]]-zz[aXABCD[B]])*(3+phi); } } else if (vBullBear == vBear) { LevelForDmin = MathMax(zz[aXABCD[A]]+XA*vl0886,zz[aXABCD[C]]+BC*vl1272); LevelForDmax = MathMin(zz[aXABCD[A]]+XA*vh0886,zz[aXABCD[C]]+BC*vh2618); if (RangeForPointD==2) { LivelDA1382 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*1.382; LivelDA1618 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*phi; LivelDA2 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*2; LivelDA2618 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*(1+phi); LivelDA3618 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*(2+phi); LivelDA4618 = zz[aXABCD[A]]+(zz[aXABCD[B]]-zz[aXABCD[A]])*(3+phi); LivelDC1382 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*1.382; LivelDC1618 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*phi; LivelDC2 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*2; LivelDC2618 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*(1+phi); LivelDC3618 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*(2+phi); LivelDC4618 = zz[aXABCD[C]]+(zz[aXABCD[B]]-zz[aXABCD[C]])*(3+phi); } } } } } if ((vNamePattern != "") && (aXABCD[D] < maxBarToD+2)) { if (ExtGartleyTypeSearch>0 && ExtIndicator==11) { for (m=0;m<=countGartley;m++) { if (PeakCenaX[m]==zz[aXABCD[X]] && PeakCenaA[m]==zz[aXABCD[A]] && PeakCenaB[m]==zz[aXABCD[B]] && PeakCenaC[m]==zz[aXABCD[C]] && PeakCenaD[m]==zz[aXABCD[D]]) { if (PeakTimeX[m]==Time[aXABCD[X]] && PeakTimeA[m]==Time[aXABCD[A]] && PeakTimeB[m]==Time[aXABCD[B]] && PeakTimeC[m]==Time[aXABCD[C]] && PeakTimeD[m]==Time[aXABCD[D]]) {k++; break;} } } if (m<=countGartley) { vBullBear = ""; vNamePattern = ""; continue; } if (ArraySize(PeakCenaX) zz[aXABCD[A]]) { for (i=aXABCD[X]-1;i>=aXABCD[A];i--) { delta=Low[i]-(zz[aXABCD[X]]+(aXABCD[X]-i)*tangens); if (delta =aXABCD[C];i--) { delta=Low[i]-(zz[aXABCD[B]]+(aXABCD[B]-i)*tangens); if (delta =aXABCD[A];i--) { delta=High[i]-(zz[aXABCD[X]]+(aXABCD[X]-i)*tangens); if (delta>h_ea) h_ea=delta; } for (i=aXABCD[B]-1;i>=aXABCD[C];i--) { delta=High[i]-(zz[aXABCD[B]]+(aXABCD[B]-i)*tangens); if (delta>h_ec) h_ec=delta; } } } nameObj="_"+ExtComplekt+"Equilibrium_" + countGartley; ObjectDelete(nameObj); ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[X]],zz[aXABCD[X]],Time[aXABCD[B]],zz[aXABCD[B]]); ObjectSet(nameObj,OBJPROP_COLOR,ColorEquilibrium); ObjectSet(nameObj,OBJPROP_STYLE,EquilibriumStyle); ObjectSet(nameObj,OBJPROP_WIDTH,EquilibriumWidth); nameObj="_"+ExtComplekt+"Reaction1_" + countGartley; ObjectDelete(nameObj); ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[C]],zz[aXABCD[B]]+tangens*(aXABCD[B]-aXABCD[C])-h_ec,Time[0],zz[aXABCD[B]]+tangens*aXABCD[B]-h_ec); ObjectSet(nameObj,OBJPROP_COLOR,ColorReaction); ObjectSet(nameObj,OBJPROP_STYLE,EquilibriumStyle); ObjectSet(nameObj,OBJPROP_WIDTH,EquilibriumWidth); nameObj="_"+ExtComplekt+"Reaction2_" + countGartley; ObjectDelete(nameObj); ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[C]],zz[aXABCD[B]]+tangens*(aXABCD[B]-aXABCD[C])-h_ea,Time[0],zz[aXABCD[B]]+tangens*aXABCD[B]-h_ea); ObjectSet(nameObj,OBJPROP_COLOR,ColorReaction); ObjectSet(nameObj,OBJPROP_STYLE,EquilibriumStyle); ObjectSet(nameObj,OBJPROP_WIDTH,EquilibriumWidth); // Equilibrium=false; } nameObj1="_"+ExtComplekt+"Triangle1_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern; nameObj2="_"+ExtComplekt+"Triangle2_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern; vPatOnOff = 1; //--------------------------------------------- if(f==1 && ExtIndicator!=11) { f=0; if(ExtPlayAlert) { Alert (Symbol()," ",Period()," �������� ����� �������"); PlaySound("alert.wav"); } if (ExtSendMail) _SendMail("There was a pattern","on " + Symbol() + " " + Period() + " pattern " + vBullBear + " " + vNamePattern); } //--------------------------------------------- if (vBullBear == vBull) { ObjectCreate(nameObj1,OBJ_TRIANGLE,0,Time[aXABCD[X]],zz[aXABCD[X]],Time[aXABCD[B]],zz[aXABCD[B]],Time[aXABCD[A]],zz[aXABCD[A]]); ObjectSet(nameObj1,OBJPROP_COLOR,colorPattern); ObjectCreate(nameObj2,OBJ_TRIANGLE,0,Time[aXABCD[B]],zz[aXABCD[B]],Time[aXABCD[D]],zz[aXABCD[D]],Time[aXABCD[C]],zz[aXABCD[C]]); ObjectSet(nameObj2,OBJPROP_COLOR,colorPattern); } else { ObjectCreate(nameObj1,OBJ_TRIANGLE,0,Time[aXABCD[X]],zz[aXABCD[X]],Time[aXABCD[B]],zz[aXABCD[B]],Time[aXABCD[A]],zz[aXABCD[A]]); ObjectSet(nameObj1,OBJPROP_COLOR,colorPattern); ObjectCreate(nameObj2,OBJ_TRIANGLE,0,Time[aXABCD[B]],zz[aXABCD[B]],Time[aXABCD[D]],zz[aXABCD[D]],Time[aXABCD[C]],zz[aXABCD[C]]); ObjectSet(nameObj2,OBJPROP_COLOR,colorPattern); } if (RangeForPointD>0) // ����� �������������� ��� ���� ����� D { if (FlagForD) { // FlagForD=false; for (j=aXABCD[D];j<=aXABCD[C]-1;j++) { if (vBullBear == vBull) { if (LevelForDmax>=Low[j]) TimeForDmax = Time[j]; } else if (vBullBear == vBear) { if (LevelForDmin<=High[j]) TimeForDmin = Time[j]; } } if (vBullBear == vBull) { TimeForDmin = TimeForDmax+((LevelForDmax-LevelForDmin)/((zz[aXABCD[C]]-zz[aXABCD[D]])/(aXABCD[C]-aXABCD[D]+1)))*Period()*60; } else if (vBullBear == vBear) { TimeForDmax = TimeForDmin+((LevelForDmax-LevelForDmin)/((zz[aXABCD[D]]-zz[aXABCD[C]])/(aXABCD[C]-aXABCD[D]+1)))*Period()*60; } /* //?? if ((NumberPattern-1==countGartley-1 && ExtGartleyTypeSearch>0) || ExtGartleyTypeSearch==0) { TimeForDmaxToNumberPattern = TimeForDmax; TimeForDminToNumberPattern = TimeForDmin; } */ if (TimeForDmin>TimeForDmax) { timeLineD=TimeForDmin; TimeForDmin=TimeForDmax; TimeForDmax=timeLineD; } else { timeLineD=TimeForDmax; } if (LevelForDmin>LevelForDmax) { LevelForD=LevelForDmin; LevelForDmin=LevelForDmax; LevelForDmax=LevelForD; } nameObj="_"+ExtComplekt+"PointD_" + countGartley + ""; ObjectCreate(nameObj,OBJ_RECTANGLE,0,TimeForDmin,LevelForDmin,TimeForDmax,LevelForDmax); ObjectSet(nameObj, OBJPROP_BACK, false); ObjectSet(nameObj, OBJPROP_COLOR, ExtColorRangeForPointD); if (RangeForPointD==2) { if (LevelForDmax>=LivelDA1382 && LivelDA1382>=LevelForDmin) { nameObj="_"+ExtComplekt+"PDLA1382_" + countGartley + ""; ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[C]],LivelDA1382,timeLineD,LivelDA1382); ObjectSet(nameObj, OBJPROP_COLOR, ExtLineForPointD_AB); ObjectSet(nameObj, OBJPROP_RAY, false); } if (LevelForDmax>=LivelDA1618 && LivelDA1618>=LevelForDmin) { nameObj="_"+ExtComplekt+"PDLA1618_" + countGartley + ""; ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[C]],LivelDA1618,timeLineD,LivelDA1618); ObjectSet(nameObj, OBJPROP_COLOR, ExtLineForPointD_AB); ObjectSet(nameObj, OBJPROP_RAY, false); } if (LevelForDmax>=LivelDA2 && LivelDA2>=LevelForDmin) { nameObj="_"+ExtComplekt+"PDLA2_" + countGartley + ""; ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[C]],LivelDA2,timeLineD,LivelDA2); ObjectSet(nameObj, OBJPROP_COLOR, ExtLineForPointD_AB); ObjectSet(nameObj, OBJPROP_RAY, false); } if (LevelForDmax>=LivelDA2618 && LivelDA2618>=LevelForDmin) { nameObj="_"+ExtComplekt+"PDLA2618_" + countGartley + ""; ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[C]],LivelDA2618,timeLineD,LivelDA2618); ObjectSet(nameObj, OBJPROP_COLOR, ExtLineForPointD_AB); ObjectSet(nameObj, OBJPROP_RAY, false); } if (LevelForDmax>=LivelDA3618 && LivelDA3618>=LevelForDmin) { nameObj="_"+ExtComplekt+"PDLA3618_" + countGartley + ""; ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[C]],LivelDA3618,timeLineD,LivelDA3618); ObjectSet(nameObj, OBJPROP_COLOR, ExtLineForPointD_AB); ObjectSet(nameObj, OBJPROP_RAY, false); } if (LevelForDmax>=LivelDA4618 && LivelDA4618>=LevelForDmin) { nameObj="_"+ExtComplekt+"PDLA4618_" + countGartley + ""; ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[C]],LivelDA4618,timeLineD,LivelDA4618); ObjectSet(nameObj, OBJPROP_COLOR, ExtLineForPointD_AB); ObjectSet(nameObj, OBJPROP_RAY, false); } if (LevelForDmax>=LivelDC1382 && LivelDC1382>=LevelForDmin) { nameObj="_"+ExtComplekt+"PDLC1382_" + countGartley + ""; ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[C]],LivelDC1382,timeLineD,LivelDC1382); ObjectSet(nameObj, OBJPROP_COLOR, ExtLineForPointD_BC); ObjectSet(nameObj, OBJPROP_RAY, false); } if (LevelForDmax>=LivelDC1618 && LivelDC1618>=LevelForDmin) { nameObj="_"+ExtComplekt+"PDLC1618_" + countGartley + ""; ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[C]],LivelDC1618,timeLineD,LivelDC1618); ObjectSet(nameObj, OBJPROP_COLOR, ExtLineForPointD_BC); ObjectSet(nameObj, OBJPROP_RAY, false); } if (LevelForDmax>=LivelDC2 && LivelDC2>=LevelForDmin) { nameObj="_"+ExtComplekt+"PDLC2_" + countGartley + ""; ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[C]],LivelDC2,timeLineD,LivelDC2); ObjectSet(nameObj, OBJPROP_COLOR, ExtLineForPointD_BC); ObjectSet(nameObj, OBJPROP_RAY, false); } if (LevelForDmax>=LivelDC2618 && LivelDC2618>=LevelForDmin) { nameObj="_"+ExtComplekt+"PDLC2618_" + countGartley + ""; ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[C]],LivelDC2618,timeLineD,LivelDC2618); ObjectSet(nameObj, OBJPROP_COLOR, ExtLineForPointD_BC); ObjectSet(nameObj, OBJPROP_RAY, false); } if (LevelForDmax>=LivelDC3618 && LivelDC3618>=LevelForDmin) { nameObj="_"+ExtComplekt+"PDLC3618_" + countGartley + ""; ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[C]],LivelDC3618,timeLineD,LivelDC3618); ObjectSet(nameObj, OBJPROP_COLOR, ExtLineForPointD_BC); ObjectSet(nameObj, OBJPROP_RAY, false); } if (LevelForDmax>=LivelDC4618 && LivelDC4618>=LevelForDmin) { nameObj="_"+ExtComplekt+"PDLC4618_" + countGartley + ""; ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[C]],LivelDC4618,timeLineD,LivelDC4618); ObjectSet(nameObj, OBJPROP_COLOR, ExtLineForPointD_BC); ObjectSet(nameObj, OBJPROP_RAY, false); } } if (ExtGartleyTypeSearch>0 && ExtIndicator==11 && ExtHiddenPP==2) { k1=MathCeil((aXABCD[X]+aXABCD[B])/2); nameObj="_" + ExtComplekt + "pgtxt" + Time[aXABCD[B]] + "_" + Time[aXABCD[X]]; ObjectCreate(nameObj,OBJ_TEXT,0,Time[k1],(zz[aXABCD[B]]+zz[aXABCD[X]])/2); ObjectSetText(nameObj,DoubleToStr(retXB,3),ExtSizeTxt,"Arial", ExtNotFibo); nameObj="_" + ExtComplekt + "pg" + Time[aXABCD[B]] + "_" + Time[aXABCD[X]]; ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[X]],zz[aXABCD[X]],Time[aXABCD[B]],zz[aXABCD[B]]); ObjectSet(nameObj,OBJPROP_RAY,false); ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DOT); ObjectSet(nameObj,OBJPROP_COLOR,ExtLine); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); k1=MathCeil((aXABCD[X]+aXABCD[D])/2); nameObj="_" + ExtComplekt + "pgtxt" + Time[aXABCD[D]] + "_" + Time[aXABCD[X]]; ObjectCreate(nameObj,OBJ_TEXT,0,Time[k1],(zz[aXABCD[D]]+zz[aXABCD[X]])/2); ObjectSetText(nameObj,DoubleToStr(retXD,3),ExtSizeTxt,"Arial", ExtNotFibo); nameObj="_" + ExtComplekt + "pg" + Time[aXABCD[D]] + "_" + Time[aXABCD[X]]; ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[X]],zz[aXABCD[X]],Time[aXABCD[D]],zz[aXABCD[D]]); ObjectSet(nameObj,OBJPROP_RAY,false); ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DOT); ObjectSet(nameObj,OBJPROP_COLOR,ExtLine); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); k1=MathCeil((aXABCD[B]+aXABCD[D])/2); nameObj="_" + ExtComplekt + "pgtxt" + Time[aXABCD[D]] + "_" + Time[aXABCD[B]]; ObjectCreate(nameObj,OBJ_TEXT,0,Time[k1],(zz[aXABCD[D]]+zz[aXABCD[B]])/2); ObjectSetText(nameObj,DoubleToStr(retBD,3),ExtSizeTxt,"Arial", ExtNotFibo); nameObj="_" + ExtComplekt + "pg" + Time[aXABCD[D]] + "_" + Time[aXABCD[B]]; ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[B]],zz[aXABCD[B]],Time[aXABCD[D]],zz[aXABCD[D]]); ObjectSet(nameObj,OBJPROP_RAY,false); ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DOT); ObjectSet(nameObj,OBJPROP_COLOR,ExtLine); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); k1=MathCeil((aXABCD[A]+aXABCD[C])/2); nameObj="_" + ExtComplekt + "pgtxt" + Time[aXABCD[C]] + "_" + Time[aXABCD[A]]; ObjectCreate(nameObj,OBJ_TEXT,0,Time[k1],(zz[aXABCD[C]]+zz[aXABCD[A]])/2); ObjectSetText(nameObj,DoubleToStr(retAC,3),ExtSizeTxt,"Arial", ExtNotFibo); nameObj="_" + ExtComplekt + "pg" + Time[aXABCD[C]] + "_" + Time[aXABCD[A]]; ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[A]],zz[aXABCD[A]],Time[aXABCD[C]],zz[aXABCD[C]]); ObjectSet(nameObj,OBJPROP_RAY,false); ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DOT); ObjectSet(nameObj,OBJPROP_COLOR,ExtLine); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); } } } // vBullBear = ""; // vNamePattern = ""; return(0); } else { vBullBear = ""; vNamePattern = ""; vBullBearToNumberPattern = ""; vNamePatternToNumberPattern = ""; } k++; } } //-------------------------------------------------------- // ����� ��������� Gartley. �����. //-------------------------------------------------------- //---------------------------------------------------- // ZigZag ������ ������� ����������. ������. //---------------------------------------------------- void ang_AZZ_() { int i,n; // cbi=Bars-IndicatorCounted()-1; if (ExtMaxBar>0) cbi=ExtMaxBar; else cbi=Bars-1; //--------------------------------- for (i=cbi; i>=ExtMinBar; i--) { //------------------------------------------------- // ���������� �������� ����������� ������ fs � ������� ���� si �� ���������� ���� if (ti