#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.6180339887 //=================================== //---- indicator parameters extern string ______________0_____________ = "Parameters for ZigZag"; extern int ExtIndicator = 11; extern int ParametresZZforDMLEWA = 6; extern int minBars = 8; extern int minSize = 50; // Ïåðåìåííûå îò ZigZag èç ÌÒ extern int ExtDeviation = 5; extern int ExtBackstep = 3; // Ïåðåìåííàÿ äëÿ nen-ZigZag extern int GrossPeriod = 1440; //---- extern double minPercent = 0.0; // 0.08 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 = 1500; // Êîëè÷åñòâî áàðîâ îáñ÷¸òà (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 = FireBrick; // Yellow; Öâåòà äëÿ áåëîãî ôîíà. Óáðàë öâåòà äëÿ ÷åðíîãî ôîíà extern color ExtGartley886 = Red; // GreenYellow; color colorPPattern; // Ïàòòåðíû Gartley extern string ______________3_____________ = "Parameters for Gartley Patterns"; extern bool SearchClassicalPatterns =true; extern bool SearchSharkPattern =true; extern bool SearchCypherPattern =true; extern bool SearchNavarro200Pattern =true; extern bool SearchLeonardoPattern =true; extern bool Search5_0Pattern =true; extern bool Search3DrivesPattern =true; extern bool SearchABCDPattern =true; extern double FibonacciDeviation = 0.05; extern double LegLengthDeviation = 0.05; extern double TimeDeviation = 0.10; extern string FridayLastM1Time = "N/A"; extern string SundayFirstM1Time = "N/A"; extern string SundayFirstH4Time = "N/A"; extern int maxDepth = 55; extern int minDepth = 3; extern int IterationStep = 2; extern bool DirectionOfSearchMaxMin = true; extern int NumberPattern = 1; // Íîìåð ïàòòåðíà, ïî êîòîðîìó êàëèáðóåòñÿ çèãçàã è ïàðàìåòðû êîòîðîãî âûâîäÿòñÿ ÷åðåç InfoTF extern int ExtGartleyTypeSearch = 0; extern int ExtHiddenPP = 1; extern bool ExtGartleyOnOff = false; //extern int VarDisplay=0; extern int maxBarToD = 15; extern bool patternInfluence = false; // true; // extern double AllowedBandPatternInfluence = 1.618; extern bool RangeForPointD = true; //extern int VectorOfAMirrorTrend = 2; extern color ExtColorRangeForPointD = Red; extern int ExtMedianDStyle = STYLE_DOT; //extern color ExtLineForPointD_AB = Aqua; //extern color ExtLineForPointD_BC = Gold; //--------------- Drawing Patterns ------------ extern color ExtColorPatterns = Blue; extern string ExtColorPatternList = "Blue,DarkGreen,Navy,Sienna,MediumBlue,RoyalBlue,DodgerBlue,CornflowerBlue,LightSkyBlue,SlateBlue,MediumSlateBlue,SlateGray,LightSteelBlue"; extern int DrawingZZRayStyle = 0; extern int DrawingZZRayWidth = 4; //---------------------------------- extern bool DrawFibonacciExpansion = true; extern color FibExpLevelColor = MidnightBlue; extern int FibExpLevelStyle = STYLE_SOLID; extern int FibExpLevelWidth = 1; //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 bool AutoAPDinamicTestRedZone = true; extern double ExtPitchforkDinamicCustom = 0; extern color ExtLinePitchforkD = DarkOrange; //MediumSlateBlue; extern int ExtPitchforkStatic = 0; extern int ExtPitchforkStaticNum = 3; extern double ExtPitchforkStaticCustom = 0; extern color ExtLinePitchforkS = MediumBlue; // DarkKhaki; // extern int ExtMasterPitchfork = 0; extern color ExtPitchforkStaticColor = CLR_NONE; extern int ExtPitchforkStyle = 1; extern int ExtPitchforkWidth = 0; // Ëèíèè ðåàêöèè RL extern bool ExtRLDinamic = true; extern int ExtRLStyleDinamic = 1; extern bool ExtVisibleRLDinamic = true; extern bool ExtRLStatic = true; // false; // extern int ExtRLStyleStatic = 1; extern bool ExtVisibleRLStatic = true; extern bool ExtRL146 = true; extern bool ExtRLineBase = true; // RedZone äëÿ ëèíèé ðåàêöèè extern int ExtRedZoneDinamic = 2; extern int ExtRedZoneStatic = 2; extern double ExtRZDinamicValue = 0; extern double ExtRZStaticValue = 0; extern color ExtRZDinamicColor = Salmon; extern color ExtRZStaticColor = Salmon; // Âíóòðåííèå Ñèãíàëüíûå Ëèíèè extern bool ExtISLDinamic = true; // false; // extern int ExtISLStyleDinamic = 1; extern bool ExtVisibleISLDinamic = true; extern bool ExtISLStatic = true; // false; extern int ExtISLStyleStatic = 1; extern bool ExtVisibleISLStatic = true; extern int ExtISLWidth = 0; //extern color ExtISLChannelDinamicColor = DarkViolet; //extern color ExtISLChannelStaticColor = CadetBlue; extern color ExtISLChannelDinamicColor = Turquoise; // CLR_NONE; extern color ExtISLChannelStaticColor = Aqua; // DarkSlateGray; // CLR_NONE; // // Ñèãíàëüíûå ëèíèè 50% ìåäèàíû extern bool ExtSLMDinamic = true; //false; extern color ExtSLMDinamicColor = DarkOrange; //MediumSlateBlue; extern bool ExtSLMStatic = true; // false; // extern color ExtSLMStaticColor = MediumBlue; // DarkKhaki; // extern bool ExtFSLShiffLinesDinamic = true; //false; // âûâîä ëèíèè FSL ëèíèé Øèôôà äëÿ äèíàìè÷åñêèõ âèë Ýíäðþñà extern color ExtFSLShiffLinesDinamicColor = DarkOrange; //MediumSlateBlue; // MediumBlue; // DarkKhaki; // extern bool ExtFSLShiffLinesStatic = true; // false; // âûâîä ëèíèè FSL ëèíèé Øèôôà äëÿ ñòàòè÷åñêèõ âèë Ýíäðþñà extern color ExtFSLShiffLinesStaticColor = MediumBlue; // DarkKhaki; // // Ïðåäóïðåæäàþùèå è Êîíòðîëüíûå ëèíèè ñòàòè÷åñêèõ Âèë Ýíäðþñà extern bool ExtUTL = false; // true; // extern bool ExtLTL = false; // true; // extern bool ExtUWL = false; // true; // extern bool ExtVisibleUWL = false; extern bool ExtLWL = false; // true; // extern bool ExtVisibleLWL = false; extern bool ExtLongWL = false; // Ðàçâîðîòíàÿ çîíà Pivot Zone extern color ExtPivotZoneDinamicColor = CLR_NONE; extern color ExtPivotZoneStaticColor = CLR_NONE; extern bool ExtPivotZoneFramework = false; // Ïåðåìåííûå äëÿ ïîñòðîåíèÿ âèë Ýíäðþñà îò ïðîèçâîëüíûõ ñâå÷åé extern bool ExtCustomStaticAP = false; // true; // extern bool AutoMagnet = true; extern int AMBars = 5; // Ïîñòðîåíèå êîìïëåêòà âèë îò âûáðàííûõ ñâå÷åé //---------------------------------------------------------------------- //extern 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 bool ExtFiboFanDinamic = false; // ìîæåò âûâîäèòüñÿ ñàìîñòîÿòåëüíî extern bool ExtFiboFanStatic = false; // âûâîäèòñÿ òîëüêî ñîâìåñòíî ñî ñòàòè÷åñêèìè âèëàìè extern bool ExtFiboFanExp = true; extern bool ExtFiboFanHidden = false; extern color ExtFiboFanD = Sienna; extern color ExtFiboFanS = Teal; extern color ExtFiboFanMedianaDinamicColor = CLR_NONE; extern color ExtFiboFanMedianaStaticColor = CLR_NONE; // Âðåìåííûå çîíû Ôèáî â ñîñòàâå âèë Ýíäðþñà extern bool ExtFiboTime1 = false; extern bool ExtFiboTime2 = false; extern bool ExtFiboTime3 = false; extern color ExtFiboTime1C = Teal; extern color ExtFiboTime2C = Sienna; extern color ExtFiboTime3C = Aqua; extern bool ExtVisibleDateTime = false; extern string ExtVisibleNumberFiboTime = "111"; //---------------------------------------------------------------------- // Çàäàíèå ïîëüçîâàòåëüñêèõ óðîâíåé ôèáî äëÿ èíñòðóìåíòîâ, âñòðîåííûõ â âèëû Ýíäðþñà extern bool ExtFiboFreePitchfork = true; extern string ExtFiboFreeRLDinamic = "0.236,0.382,0.618,1.0,1.618,2.618,4.236,6.854,11.09,17.944,29.034,46.979,76.013"; extern string ExtFiboFreeRLStatic = "0.236,0.382,0.618,1.0,1.618,2.618,4.236,6.854,11.09,17.944,29.034,46.979,76.013"; extern string ExtFiboFreeISLDinamic = "0.236,0.382,0.618,0.764"; extern string ExtFiboFreeISLStatic = "0.236,0.382,0.618,0.764"; extern string ExtFiboFreeUWL = "0.382,0.618,1.0,1.618,2.618,4.236"; extern string ExtFiboFreeLWL = "0.382,0.618,1.0,1.618,2.618,4.236"; extern string ExtFiboFreeFT1 = "0.382,0.618,1.0,1.618,2.618"; extern string ExtFiboFreeFT2 = "0.382,0.618,1.0,1.618,2.618"; extern string ExtFiboFreeFT3 = "0.382,0.618,1.0,1.618,2.618"; //---------------------------------------------------------------------- // Öåëåâûå óðîâíè è çîíû extern int mSelectVariantsPRZ = 0; extern int mTypeBasiclAP = 0; extern int mTypeExternalAP = 0; extern int mExternalHandAP = 0; extern bool mAuto_d = true; // false; // extern bool mAuto_s = true; // false; // extern bool mSaveWL_TL = true; extern bool mOutRedZone = false; // true; // extern bool mExitFSL_SSL = true; // false; // extern bool mPivotPoints = true; extern bool mPivotPointsChangeColor = false; extern int mSSL = 0; extern int m1_2Mediana = 0; extern int mISL382 = 0; extern int mMediana = 0; extern int mISL618 = 0; extern int mFSL = 0; extern int mSLM = 0; extern int mFSLShiffLines = 0; extern int mUTL = 0; extern int mLTL = 0; extern int mUWL = 0; extern int mLWL = 0; extern bool mCriticalPoints = false; extern int mSSL_d = 0; extern int m1_2Mediana_d = 0; extern int mISL382_d = 0; extern int mMediana_d = 0; extern int mISL618_d = 0; extern int mFSL_d = 0; extern int mSLM_d = 0; extern int mFSLShiffLines_d = 0; extern bool mCriticalPoints_d = false; extern bool mAllLevels = true; extern color mColorUP = Blue; extern color mColorDN = Red; extern color mColor = DarkOrchid; extern color mColorRectangleUP = LightBlue; extern color mColorRectangleDN = Pink; extern color mColorRectangle = Thistle; extern bool mBack = false; extern bool mBackZones = true; extern int mLineZonesWidth = 5; extern bool mVisibleST = false; extern bool mVisibleISL = true; extern int mPeriodWriteToFile = 60; extern bool mWriteToFile = false; // true; // //---------------------------------------------------------------------- // Êàíàëû 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 bool ExtRay = false; extern string ______________13_____________ = "Parameters Fibo Time"; // Âðåìåííûå çîíû Ôèáî extern int ExtFiboTimeNum = 0; extern bool ExtFiboTime1x = false; extern bool ExtFiboTime2x = false; extern bool ExtFiboTime3x = false; extern color ExtFiboTime1Cx = Teal; extern color ExtFiboTime2Cx = Sienna; extern color ExtFiboTime3Cx = Aqua; extern bool ExtVisibleDateTimex = false; extern string ExtVisibleNumberFiboTimex = "111"; extern string ______________14_____________ = "Parameters Exp"; extern bool chHL = false; extern bool PeakDet = false; // Ïåðåìåííûå äëÿ 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; //true; // extern string ExtVisibleDinamic = "01100000000"; extern bool AutoTestRedZone = false; //true; // extern bool ZigZagHighLow = true; // -------------------------------- // Äîïîëíèòåëüíûå ôèíêöèè extern bool ExtSendMail = false; extern bool ExtAlert = false; extern bool ExtPlayAlert = false; // Âûâîä îáúåêòîâ â âèäå ôîíà extern bool ExtBack = true; // Ñîõðàíåíèå ñòàòè÷åñêèõ âèë Ýíäðþñà, Fibo Time è ò.ä. extern bool ExtSave = false; extern string info_comment = "00111"; extern bool infoMerrillPattern= false; extern bool infoTF = true; // Âûâîä âåðòèêàëüíîé ëèíèè íà íóëåâîì áàðå extern bool CursorLine = false; extern color CLColor = Black; extern int CLWidth = 1; extern int CLStyle = 2; extern bool CLBack = False; // Âûâîä íàçâàíèé ïàòòåðíîâ êðóïíûì øðèôòîì extern bool bigText = true; extern int bigTextSize = 16; extern color bigTextColor = Red; extern int bigTextX = 50; extern int bigTextY = 50; extern bool ExtVisible = true; extern int ExtComplekt = 113; //=================================== //*********************************** double patternDotC=0; double patternDotD=0; string alternateABCD=""; //*********************************** // Ìàññèâû äëÿ 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.236}; //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.236"}; //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="", nameObjAPMaster=""; string nameUWL="", nameLWL="", nameUTL="", nameLTL="", nameUWLd="", nameLWLd="", nameUTLd="", nameLTLd=""; // 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,shift2,shift3; string txtkk=""; // Âðåìÿ áàðà ñ ïåðâûì, âòîðûì è òðåòüèì îò íóëåâîãî áàðà ôðàêòàëîì int timeFr1new,timeFr2new,timeFr3new; // Ñ÷åò÷èê ôðàêòàëîâ int countFr; // Áàð, äî êîòîðîãî íàäî ðèñîâàòü ñîåäèíèòåëüíûå ëèíèè îò íóëåâîãî áàðà int countBarEnd=0,TimeBarEnd; // Áàð, äî êîòîðîãî íàäî ïåðåñ÷èòûâàòü îò íóëåâîãî áàðà int numBar=0; // Íîìåð îáúåêòà int numOb; // flagFrNew=true - îáðàçîâàëñÿ íîâûé ôðàêòàë èëè ïåðâûé ôðàêòàë ñìåñòèëñÿ íà äðóãîé áàð. =false - ïî óìîë÷àíèþ. bool flagFrNew=false; // èäåíòèôèêàòîð íîâîãî ëó÷à bool newRay=true; // flagGartley - ïîÿâëåíèå íîâîãî ïàòòåðíà Gartley èëè èñ÷åçíîâåíèå ïàòòåðíà Gartley bool flagGartley=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; int _ExtPitchforkStatic=0, _ExtPitchforkDinamic=0; 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=""; // Ïåðåìåííûå äëÿ Merrill Patterns double mPeak0[5][2]={0,5,0,4,0,3,0,2,0,1}, mPeak1[5][2]={0,5,0,4,0,3,0,2,0,1}; string mMerrillPatterns[32][3]= {"21435", "M1", "DownTrend", "21453", "M2", "InvertedHeadAndShoulders", "24135", "M3", "DownTrend", "24153", "M4", "InvertedHeadAndShoulders", "42135", "M5", "Broadening", "42153", "M6", "InvertedHeadAndShoulders", "24315", "M7", "*", "24513", "M8", "InvertedHeadAndShoulders", "42315", "M9", "*", "42513", "M10", "InvertedHeadAndShoulders", "45213", "M11", "InvertedHeadAndShoulders", "24351", "M12", "*", "24531", "M13", "Triangle", "42351", "M14", "*", "42531", "M15", "UpTrend", "45231", "M16", "UpTrend", "13245", "W1", "DownTrend", "13524", "W2", "DownTrend", "15324", "W3", "*", "13224", "W4", "Triangle", "15342", "W5", "*", "31254", "W6", "HeadAndShoulders", "42513", "W7", "HeadAndShoulders", "51324", "W8", "*", "31542", "W9", "HeadAndShoulders", "51324", "W10", "*", "35124", "W11", "HeadAndShoulders", "53124", "W12", "Broadening", "35142", "W13", "HeadAndShoulders", "53142", "W14", "UpTrend", "35412", "W15", "HeadAndShoulders", "53412", "W16", "UpTrend"}; // Ïåðåìåííûå äëÿ çèãçàãà 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; // Ïåðåìåííûå äëÿ öåíîâûõ ìåòîê â âèëàõ Ýíäðþñà bool mAP = false; // ôëàã ðàçðåøåíèÿ âûâîäà ìåòîê //double mMax, mMin; // öåíà áëèæàéøåé ìåòêè ââåðõó è âíèçó. Ïðè ïåðåñå÷åíèè ýòèõ öåíîâûõ óðîâíåé íåîáõîäèìî ìåíÿòü öâåò ìåòîê. datetime mTime; // ãðàíèöà áëèæàéøåé öåíîâîé çîíû, ïðè ïåðåñå÷åíèè êîòîðîé íåîáõîäèìî óäàëÿòü òåêóùóþ öåíîâóþ çîíó è âûâîäèòü ñëåäóþùóþ öåíîâóþ çîíó. bool mAPs, mAPd; // Ôëàãè - ñèãíàëû äëÿ ñîçäàíèÿ ìåòîê â âèëàõ Ýíäðþñà double RZs=-1, RZd=-1; // ðàññòîÿíèå äî êðàñíîé çîíû. Ðàññ÷èòûâàåòñÿ ïðè âûâîäå ìåòîê. datetime mPeriod; // âðåìÿ ñëåäóþùåé çàïèñè çíà÷åíèé ìåòîê â ôàéë bool aOutRedZone[] = {false,false,false}; // ìàññèâ äëÿ õðàíåíèÿ ðàçðåøåíèé íà âûâîä ìåòîê ïðè àâòîìàòè÷åñêîì âûâîäå ìåòîê ïðè âûõîäå öåíû èç êðàñíîé çîíû // äëÿ äèíàìè÷åñêèõ [0] è ñòàòè÷åñêèõ [1] âèë. [2] - äëÿ ñòàòè÷åñêèõ âèë â äèíàìè÷åñêîì ðåæèìå // ïåðåìåííûå äëÿ ðàáîòû ïàðàìåòðà AutoTestRedZone int pitch_timeRZ[]={0,0,0}; double pitch_cenaRZ[]={0,0,0}; // ïåðåìåííûå äëÿ ðàáîòû ïàðàìåòðà mOutRedZone äëÿ äèíàìè÷åñêèõ è ñòàòè÷åñêèõ âèë int pitch_timeD[]={0,0,0}; double pitch_cenaD[]={0,0,0}; int pitch_timeS[]={0,0,0}; double pitch_cenaS[]={0,0,0}; // Ïåðåìåííûå äëÿ ñîõðàíåíèÿ çíà÷åíèé ìåòîê bool mStart=true; // ïåðåìåííàÿ äëÿ ïðèíóäèòåëüíîãî çàïóñêà âûâîäà ìåòîê int aMetki[2][15]; // ìàññèâ äëÿ õðàíåíèÿ ðåæèìîâ âûâîäà ìåòîê. aMetki[0][15] - ìåòêè äëÿ ñòàòè÷åñêèõ âèë; aMetki[1][15] - ìåòêè äëÿ äèíàìè÷åñêèõ âèë double aPointAP[2][8]; // ìàññèâ òî÷åê ïðèâÿçêè âèë Ýíäðþñà. aPointAP[0][6] - ñòàòè÷åñêèå âèëû, aPointAP[1][6] - äèíàìè÷åñêèå âèëû. // Âî âòîðîì èçìåðåíèè ÷åðåäóþòñÿ âðåìÿ, öåíà òî÷åê // - time1-cena1--time2-cena2--time3-cena3, à òàêæå ôëàãè äëÿ ïåðåñ÷åòà âèë è ìåòîê. // aPointAP[x][6] - ôëàã ïåðåñ÷åòà èíñòðóìåíòîâ âèë, aPointAP[x][7] - ôëàã ïåðåñ÷åòà ìåòîê // aPointAP[x][6]=0 - íåîáõîäèìî ïðîèçâåñòè ïåðåñ÷åò // aPointAP[x][6]=1 - ïåðåñ÷åò ïðîâîäèòü íå íàäî // Ïîêà ñäåëàåì àëãîðèòì ïåðåñ÷åòà ìåòîê. (05 íîÿáðÿ 2011) // Ýòîò ìàññèâ íóæåíí äëÿ ïåðåñ÷åòà ïàðàìåòðîâ ìåòîê. Èçìåíåèå òî÷åê ïðèâÿçêè âûçûâàåò ïåðåñ÷åò ïàðàìåòðîâ. double arrm_s[][7]; // ìàññèâ äëÿ àâòîìàòè÷åñêîãî âûâîäà ìåòîê â ñòàòè÷åñêèõ âèëàõ Ýíäðþñà double arrm_d[][7]; // ìàññèâ äëÿ àâòîìàòè÷åñêîãî âûâîäà ìåòîê â äèíàìè÷åñêèõ âèëàõ Ýíäðþñà double atg[2][9]; // ìàññèâ òàíãåíñîâ óãëîâ íàêëîíà èíñòðóìåíòîâ âèë Ýíäðþñà è áàç ïî âåðòèêàëè int anum_cena[2][2];// ìàññèâ íîìåðîâ ñòðîê äëÿ arrm_s è arrm_d // anum_cena[x][1] - ìàêñèìàëüíàÿ öåíà ìåòêè; anum_cena[x][0] - ìèíèìàëüíàÿ öåíà ìåòêè double aexitFSL_SSL[]={0,0}; // ÿ÷åéêè ïàìÿòè äëÿ ðàáîòû ïàðàìåòðà mExitFSL_SSL // ìàññèâ ñòðîê äëÿ ñîçäàíèÿ íàçâàíèé ìåòîê string atextm[]={"","SSL","SLM","50% Mediana","SLM 61.8","ISL 38.2","Mediana","ISL 61.8","FSL","FSL Shiff Lines","50% Mediana","UTL","LTL","UWL","LWL"}; // Ïåðåìåííûå äëÿ ïîñòðîåíèÿ âèë Ýíäðþñà îò ïðîèçâîëüíûõ ñâå÷åé int vX, vY; // Êîîðäèíàòû ìåòêè APm bool tik2 = false; // APm bool SlavePitchfork = false; string nameCheckLabel_hidden="CheckLabel_hidden"; string nameCheckLabel="CheckLabel"; string nameMagnet[3]; int period_AM[3]; int ExtComplektAPm = 0; // íîìåð êîìïëåêòà, êîòîðûé óñòàíàâëèâàåò ìåòêó APm â "ñòîéëî" //--- // îòëàäêà //int ccc=0; // ccc++; // Print(ccc); //--- //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { if (!ExtVisible) return(-1); string aa="", aa1="", txt=""; int aa2, i, j; int i_APm=0; // ñ÷åò÷èê âèë ñ ìåòêîé APm int count_APm; nameUWL="UWL " + ExtComplekt+"_"; nameLWL="LWL " + ExtComplekt+"_"; nameUTL="UTL " + ExtComplekt+"_"; nameLTL="LTL " + ExtComplekt+"_"; nameUWLd="UWL_d " + ExtComplekt+"_"; nameLWLd="LWL_d " + ExtComplekt+"_"; nameUTLd="UTL_d " + ExtComplekt+"_"; nameLTLd="LTL_d " + ExtComplekt+"_"; vX=30; vY=30; // Êîîðäèíàòû ìåòêè APm hwnd=WindowHandle(Symbol(),Period()); if(hwnd>0) { GetClientRect(hwnd,rect); GPixels=rect[2]; // çäåñü ôóíêöèÿ âîçâðàùàåò êîë-âî ïèêñåëîâ ïî ãîðèçîíòàëè äëÿ îêíà ñ ãðàôèêîì, â êîòîðîì çàïóñêàåòñÿ èíäèêàòîð VPixels=rect[3]; // çäåñü ôóíêöèÿ âîçâðàùàåò êîë-âî ïèêñåëîâ ïî âåðòèêàëè } if (ParametresZZforDMLEWA>0 && (ExtIndicator==0 || ExtIndicator==6)) { switch (ParametresZZforDMLEWA) { case 1: minBars=5; ExtDeviation=3; ExtBackstep=8; break; case 2: minBars=8; ExtDeviation=5; ExtBackstep=13; break; case 3: minBars=13; ExtDeviation=8; ExtBackstep=21; break; case 4: minBars=21; ExtDeviation=13; ExtBackstep=34; break; case 5: minBars=34; ExtDeviation=21; ExtBackstep=55; break; case 6: minBars=55; ExtDeviation=34; ExtBackstep=89; break; case 7: minBars=89; ExtDeviation=55; ExtBackstep=144; break; case 8: minBars=144; ExtDeviation=89; ExtBackstep=233; } } 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); } } if (ExtMaxBar>Bars) ExtMaxBar=Bars; if (ExtMaxBar>0) _maxbarZZ=ExtMaxBar; else _maxbarZZ=Bars; if (IterationStep<1) IterationStep=1; if (IterationStep>maxDepth-minDepth) IterationStep=maxDepth-minDepth; if (ExtIndicator==11) if (ExtHiddenPP==0 || ExtHiddenPP==2) {ExtHidden=0; ExtStyleZZ=false;} if (ExtGartleyTypeSearch>0) { //--------- if (!patternInfluence) { if (ExtMaxBar>0) { if (maxBarToD==0 || maxBarToD>ExtMaxBar) maxBarToD=ExtMaxBar-15; } else if (maxBarToD==0) maxBarToD=Bars-15; } //if (RangeForPointD>2) RangeForPointD=2; //--------- i=-1; aa2=0; while (aa2>=0) // Ïîäãîòîâêà ñïèñêà çíà÷åíèé öâåòà äëÿ áàáî÷åê Gartley, çàäàííûõ ïîëüçîâàòåëåì { 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); } } } } } // ------- // Ïðîâåðêà ïðàâèëüíîñòè ââåäåííûõ âíåøíèõ ïåðåìåííûõ 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; _ExtPitchforkStatic=ExtPitchforkStatic; if (ExtPitchforkDinamic>4) ExtPitchforkDinamic=4; if (AutoAPDinamicTestRedZone) { _ExtPitchforkDinamic=ExtPitchforkDinamic; ExtPitchforkDinamic=0; } if (ExtMasterPitchfork<0 || ExtMasterPitchfork>2) ExtMasterPitchfork=0; 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 ((ExtPitchforkStatic>0 || ExtPitchforkDinamic>0 || _ExtPitchforkDinamic>0) && mAllLevels && (mPivotPoints || mSSL>0 || m1_2Mediana>0 || mISL382>0 || mMediana>0 || mISL618>0 || mFSL>0 || mCriticalPoints || mSLM>0 || mFSLShiffLines>0 || mUTL || mLTL || mUWL || mLWL || mSSL_d>0 || m1_2Mediana_d>0 || mISL382_d>0 || mMediana_d>0 || mISL618_d>0 || mFSL_d>0 || mCriticalPoints_d || mSLM_d>0 || mFSLShiffLines_d>0 || mAuto_d || mAuto_s)) mAP=true; if (mSSL<0) mSSL=0; if (mSSL>9) mSSL=9; if (m1_2Mediana<0) m1_2Mediana=0; if (m1_2Mediana>9) m1_2Mediana=9; if (mISL382<0) mISL382=0; if (mISL382>9) mISL382=9; if (mMediana<0) mMediana=0; if (mMediana>9) mMediana=9; if (mISL618<0) mISL618=0; if (mISL618>9) mISL618=9; if (mFSL<0) mFSL=0; if (mFSL>9) mFSL=9; if (mSLM<0) mSLM=0; if (mSLM>9) mSLM=9; if (mFSLShiffLines<0) mFSLShiffLines=0; if (mFSLShiffLines>9) mFSLShiffLines=9; if (mUTL<0) mUTL=0; if (mUTL>9) mUTL=9; if (mLTL<0) mLTL=0; if (mLTL>9) mLTL=9; if (mUWL<0) mUWL=0; if (mUWL>9) mUWL=9; if (mLWL<0) mLWL=0; if (mLWL>9) mLWL=9; if (mSSL_d<0) mSSL_d=0; if (mSSL_d>9) mSSL_d=9; if (m1_2Mediana_d<0) m1_2Mediana_d=0; if (m1_2Mediana_d>9) m1_2Mediana_d=9; if (mISL382_d<0) mISL382_d=0; if (mISL382_d>9) mISL382_d=9; if (mMediana_d<0) mMediana_d=0; if (mMediana_d>9) mMediana_d=9; if (mISL618_d<0) mISL618_d=0; if (mISL618_d>9) mISL618_d=9; if (mFSL_d<0) mFSL_d=0; if (mFSL_d>9) mFSL_d=9; if (mSLM_d<0) mSLM_d=0; if (mSLM_d>9) mSLM_d=9; if (mFSLShiffLines_d<0) mFSLShiffLines_d=0; if (mFSLShiffLines_d>9) mFSLShiffLines_d=9; aMetki[0][0]=0; aMetki[0][1]=mSSL; aMetki[0][2]=mSLM; aMetki[0][3]=m1_2Mediana; aMetki[0][4]=mSLM; aMetki[0][5]=mISL382; aMetki[0][6]=mMediana; aMetki[0][7]=mISL618; aMetki[0][8]=mFSL; aMetki[0][9]=mFSLShiffLines; aMetki[0][10]=mCriticalPoints; aMetki[0][11]=mUTL; aMetki[0][12]=mLTL; aMetki[0][13]=mUWL; aMetki[0][14]=mLWL; aMetki[1][0]=0; aMetki[1][1]=mSSL_d; aMetki[1][2]=mSLM_d; aMetki[1][3]=m1_2Mediana_d; aMetki[1][4]=mSLM_d; aMetki[1][5]=mISL382_d; aMetki[1][6]=mMediana_d; aMetki[1][7]=mISL618_d; aMetki[1][8]=mFSL_d; aMetki[1][9]=mFSLShiffLines_d; aMetki[1][10]=mCriticalPoints_d; aMetki[1][11]=0; aMetki[1][12]=0; aMetki[1][13]=0; aMetki[1][14]=0; if (mSelectVariantsPRZ>9) mSelectVariantsPRZ=-1; 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 && !ExtCustomStaticAP) { 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;} } } 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(); if (!ExtCustomStaticAP || ExtPitchforkStatic==0) { ObjectDelete("pitchforkS" + ExtComplekt+"_APm_"); delete_objects8(); ExtCustomStaticAP=false; } for (i=ObjectsTotal()-1; i>=0; i--) { txt=ObjectName(i); // âîññòàíîâåíèå ôëàãîâ íàëè÷èÿ íà ãðàôèêå ìåòîê â âèëàõ Ýíäðþñà if (!mAPs) { if (StringFind(txt,"m#"+ExtComplekt+"_"+"s")>-1) mAPs=true; } if (!mAPd) { if (StringFind(txt,"m#"+ExtComplekt+"_"+"d")>-1) mAPd=true; } // ïîäñ÷åò êîëè÷åñêòâà âèë ñ ìåòêîé APm if (ObjectType(txt)==OBJ_PITCHFORK) { if (StringFind(txt,"_APm",0)>0) i_APm++; } } ObjectDelete(nameCheckLabel_hidden); if (i_APm>1) { if (ObjectFind(nameCheckLabel)==0) { // Ïðîâåðêà ïîëîæåíèÿ ñèãíàëüíîé ìåòêè APm if (ObjectGet(nameCheckLabel,OBJPROP_XDISTANCE)!=vX || ObjectGet(nameCheckLabel,OBJPROP_YDISTANCE)!=vY) { count_APm=(i_APm-1)*2; } else { count_APm=i_APm; } ObjectCreate(nameCheckLabel_hidden,OBJ_TEXT,0,0,0); ObjectSetText(nameCheckLabel_hidden,""+i_APm+"_"+count_APm); ObjectSet(nameCheckLabel_hidden, OBJPROP_COLOR, CLR_NONE); ObjectSet(nameCheckLabel_hidden, OBJPROP_BACK, true); } } nameMagnet[0]="AM_0_"+ExtComplekt; nameMagnet[1]="AM_1_"+ExtComplekt; nameMagnet[2]="AM_2_"+ExtComplekt; if (!ExtCustomStaticAP || !AutoMagnet) { if (ObjectFind(nameMagnet[0])==0) { ObjectDelete(nameMagnet[0]); ObjectDelete(nameMagnet[1]); ObjectDelete(nameMagnet[2]); } } // Ñîçäàíèå òåêñòîâîé ìåòêè äëÿ AutoMagnet if (ExtCustomStaticAP && AutoMagnet) { txt=StringSubstr("0000"+Period(),StringLen("0000"+Period())-5,5)+"00000000000"; if (!ObjectFind(nameMagnet[0])==0) { ObjectCreate(nameMagnet[0],OBJ_TEXT,0,0,0); ObjectSet(nameMagnet[0], OBJPROP_COLOR, CLR_NONE); ObjectSetText(nameMagnet[0],txt); ObjectCreate(nameMagnet[1],OBJ_TEXT,0,0,0); ObjectSet(nameMagnet[1], OBJPROP_COLOR, CLR_NONE); ObjectSetText(nameMagnet[1],txt); ObjectCreate(nameMagnet[2],OBJ_TEXT,0,0,0); ObjectSet(nameMagnet[2], OBJPROP_COLOR, CLR_NONE); ObjectSetText(nameMagnet[2],txt); period_AM[0]=Period(); period_AM[1]=Period(); period_AM[2]=Period(); } else { period_AM[0]=StrToInteger(StringSubstr(ObjectDescription(nameMagnet[0]),0,5)); period_AM[1]=StrToInteger(StringSubstr(ObjectDescription(nameMagnet[1]),0,5)); period_AM[2]=StrToInteger(StringSubstr(ObjectDescription(nameMagnet[2]),0,5)); } } mPeriod=0; // mStart=true; return(0); } //+------------------------------------------------------------------+ //| Äåèíèöèàëèçàöèÿ. Óäàëåíèå âñåõ òðåíäîâûõ ëèíèé è òåêñòîâûõ îáúåêòîâ //+------------------------------------------------------------------+ int deinit() { int i; ObjectDelete("fiboS" + ExtComplekt+"_"); ObjectDelete("fiboFanS" + ExtComplekt+"_"); ObjectDelete("RLineS" + ExtComplekt+"_"); if (!ExtCustomStaticAP) { ObjectDelete("pitchforkS" + ExtComplekt+"_APm_"); ObjectDelete("Master_pitchforkS" + ExtComplekt+"_APm_"); } ObjectDelete("pitchforkS" + ExtComplekt+"_"); ObjectDelete("Master_pitchforkS" + ExtComplekt+"_"); ObjectDelete("pmedianaS" + ExtComplekt+"_"); ObjectDelete("1-2pmedianaS" + ExtComplekt+"_"); ObjectDelete("SLM382S" + ExtComplekt+"_"); ObjectDelete("SLM618S" + ExtComplekt+"_"); ObjectDelete("FSL Shiff Lines S" + ExtComplekt+"_"); ObjectDelete("fiboTime1" + ExtComplekt+"_");ObjectDelete("fiboTime2" + ExtComplekt+"_");ObjectDelete("fiboTime3" + ExtComplekt+"_"); ObjectDelete("fiboTime1Free" + ExtComplekt+"_");ObjectDelete("fiboTime2Free" + ExtComplekt+"_");ObjectDelete("fiboTime3Free" + ExtComplekt+"_"); ObjectDelete(nameUTL);ObjectDelete(nameLTL); ObjectDelete(nameUWL);ObjectDelete(nameLWL); ObjectDelete(nameUTLd);ObjectDelete(nameLTLd); ObjectDelete(nameUWLd);ObjectDelete(nameLWLd); ObjectDelete("ISL_S" + ExtComplekt+"_"); ObjectDelete("RZS" + ExtComplekt+"_"); ObjectDelete("CL" + ExtComplekt+"_"); ObjectDelete("CISL" + ExtComplekt+"_"+0); ObjectDelete("CISL" + ExtComplekt+"_"+1); ObjectDelete("PivotZoneS" + ExtComplekt+"_"); ObjectDelete("FanMedianaStatic" + ExtComplekt+"_"); ObjectDelete("FiboFan" + ExtComplekt+"_"); ObjectDelete("FiboArcS" + ExtComplekt+"_"); ObjectDelete("LinePivotZZ" + "1" + ExtComplekt+"_"); ObjectDelete("LinePivotZZ" + "2" + ExtComplekt+"_"); ObjectDelete("#_TextPattern_#" + ExtComplekt+"_"); ObjectDelete("#_TextPatternMP_#" + ExtComplekt+"_"); for (i=0;i<9; i++) { nameObj="LCChannel" + i + ExtComplekt+"_"; ObjectDelete(nameObj); nameObj="LTChannel" + i + ExtComplekt+"_"; ObjectDelete(nameObj); } for (i=0; i<7; i++) { nameObj="VLS"+i+" " + ExtComplekt+"_"; ObjectDelete(nameObj); } // Ñîáëþäàòü ïîðÿäîê ñëåäîâàíèÿ ñòðîê ïðè óäàëåíèè îáúåêòîâ delete_objects_dinamic(); delete_objects1(); delete_objects3(); delete_objects4(); delete_objects5(); delete_objects6(0); delete_objects6(1); delete_objects_spiral(); delete_objects_number(); delete_objects8(); delete_objects9(); if (!CursorLine) ObjectDelete("Cursor"); if (infoTF) Comment(""); return(0); } //******************************************************** // ÍÀ×ÀËÎ int start() { int i, j, k; // äëÿ ðàñ÷åòà êðàñíîé çîíû if (ExtCustomStaticAP && tik2) { screenPitchforkS(); } tik2 = true; 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; lLast=0; hLast=0; ti=0; ai=0; bi=0; tai=0; tbi=0; fs=0; si=0; sip=0; lBar=0; hBar=0; fh=false; fl=false; // 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; ArrayInitialize(aOutRedZone,false); mStart=true; } else { if (ExtIndicator==1) cbi=Bars-IndicatorCounted()-1; else cbi=Bars-IndicatorCounted(); if (ExtMinBar>0) { if ((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); } if (lBar<=iLow(NULL,GrossPeriod,0) && hBar>=iHigh(NULL,GrossPeriod,0) && tiZZ==iTime(NULL,GrossPeriod,0)) return(0); else { if (tiZZ0) 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); } if (mOutRedZone && mAuto_d && ExtPitchforkDinamic>0) { aOutRedZone[0]=false; _RZ("RZD", ExtRZDinamicValue, ExtRZDinamicColor, pitch_timeD, pitch_cenaD, ExtRedZoneDinamic, 1, false); } if (_ExtPitchforkStatic>0) { if (mOutRedZone && mAuto_s) { if (!aOutRedZone[1]) _RZ("RZS", ExtRZStaticValue, ExtRZStaticColor, pitch_timeS, pitch_cenaS, ExtRedZoneStatic, 0, false); } if (AutoTestRedZone && ExtDinamic && !ExtCustomStaticAP && !ExtPitchforkCandle) { if (StringSubstr(ExtVisibleDinamic,2,1)=="1") { aOutRedZone[2]=false; _RZ("RZ_", ExtRZStaticValue, ExtRZStaticColor, pitch_timeRZ, pitch_cenaRZ, ExtRedZoneStatic, 0, false); } } } } if (ExtGartleyTypeSearch<2 || ExtIndicator != 11) vNamePatternToNumberPattern = ""; 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; flagGartley=true; } else if (vPatOnOff==0 && vPatNew==1) { vPatNew=0; flagGartley=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; shift0; 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) { timeFr1new=0; timeFr2new=0; timeFr3new=0; // Ïîèñê âðåìåíè áàðà ïåðâîãî ýêñòðåìóìà, ñ÷èòàÿ îò íóëåâîãî áàðà for (shift1=0; shift10.0 && (zzH[shift1]==zz[shift1] || zzL[shift1]==zz[shift1])) { timeFr1new=Time[shift1]; if (_ExtPitchforkDinamic>0 && AutoAPDinamicTestRedZone) { shift=iBarShift(Symbol(),Period(),afr[0]); if ((zz[shift1]>0 && shift1==shift) || shift1!=shift) { pitch_timeD[2]=Time[shift1]; if (zzH[shift1]>9) pitch_cenaD[2]=High[shift1]; else pitch_cenaD[2]=Low[shift1]; if (pitch_timeD[0]==0) { j=0; pitch_timeD[1]=0; pitch_timeD[2]=0; for (i=0;i0 || zzL[i]>0) { if (pitch_timeD[2]==0) { j=i; pitch_timeD[2]=Time[j]; if (zzH[j]>0) pitch_cenaD[2]=zzH[j]; else pitch_cenaD[2]=zzL[j]; } else if (pitch_timeD[1]==0) { pitch_timeD[1]=Time[i]; if (zzH[j]>0) pitch_cenaD[1]=zzL[i]; else pitch_cenaD[1]=zzH[i]; } else if (pitch_timeD[0]==0) { pitch_timeD[0]=Time[i]; if (zzH[j]>0) pitch_cenaD[0]=zzH[i]; else pitch_cenaD[0]=zzL[i]; aOutRedZone[0]=false; _RZ("RZD", ExtRZDinamicValue, ExtRZDinamicColor, pitch_timeD, pitch_cenaD, ExtRedZoneDinamic, 1, false); if (aOutRedZone[0]) { ExtPitchforkDinamic=_ExtPitchforkDinamic; screenPitchforkD(); } else { ExtPitchforkDinamic=0; delete_objects10(); } break; } } } } else { aOutRedZone[0]=false; _RZ("RZD", ExtRZDinamicValue, ExtRZDinamicColor, pitch_timeD, pitch_cenaD, ExtRedZoneDinamic, 1, false); if (aOutRedZone[0]) { ExtPitchforkDinamic=_ExtPitchforkDinamic; screenPitchforkD(); } else { ExtPitchforkDinamic=0; delete_objects10(); } } } } break; } } // Ïîèñê âðåìåíè áàðà âòîðîãî ýêñòðåìóìà, ñ÷èòàÿ îò íóëåâîãî áàðà for (shift2=shift1+1; shift20.0 && (zzH[shift2]==zz[shift2] || zzL[shift2]==zz[shift2])) { timeFr2new=Time[shift2]; break; } } // Ïîèñê âðåìåíè áàðà òðåòüîãî ýêñòðåìóìà, ñ÷èòàÿ îò íóëåâîãî áàðà for (shift3=shift2+1; shift30.0 && (zzH[shift3]==zz[shift3] || zzL[shift3]==zz[shift3])) { timeFr3new=Time[shift3]; break; } } // Ïîÿâèëñÿ íîâûé ëó÷ ZigZag //if ((zzH[shift1]>0 && afrl[0]>0) || (zzL[shift1]>0 && afrh[0]>0) || if (timeFr2new!=afr[1] || timeFr2new==afr[0] || (timeFr3new!=afr[2] && timeFr2new==afr[1])) { 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") { if (_ExtPitchforkStatic>0) { if (AutoTestRedZone && !ExtCustomStaticAP && !ExtPitchforkCandle) { j=0; k=0; pitch_timeRZ[0]=0; pitch_timeRZ[1]=0; pitch_timeRZ[2]=0; for (i=0;i0 || zzL[i]>0) { if (k==mPitch[2] || k==mPitch[1] || k==mPitch[0]) { if (pitch_timeRZ[2]==0) { j=i; pitch_timeRZ[2]=Time[j]; if (zzH[j]>0) pitch_cenaRZ[2]=zzH[j]; else pitch_cenaRZ[2]=zzL[j]; } else if (pitch_timeRZ[1]==0) { pitch_timeRZ[1]=Time[i]; if (zzH[j]>0) pitch_cenaRZ[1]=zzL[i]; else pitch_cenaRZ[1]=zzH[i]; } else if (pitch_timeRZ[0]==0) { pitch_timeRZ[0]=Time[i]; if (zzH[j]>0) pitch_cenaRZ[0]=zzH[i]; else pitch_cenaRZ[0]=zzL[i]; break; } } k++; } } aOutRedZone[2]=false; if (pitch_timeRZ[0]>0) { _RZ("RZ_", ExtRZStaticValue, ExtRZStaticColor, pitch_timeRZ, pitch_cenaRZ, ExtRedZoneStatic, 0, false); } if (aOutRedZone[2]) { ExtPitchforkStatic=_ExtPitchforkStatic; } else ExtPitchforkStatic=0; aOutRedZone[2]=false; } } } else 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 (_ExtPitchforkDinamic>0 && AutoAPDinamicTestRedZone) { j=0; pitch_timeD[0]=0; pitch_timeD[1]=0; pitch_timeD[2]=0; for (i=0;i0 || zzL[i]>0) { if (pitch_timeD[2]==0) { j=i; pitch_timeD[2]=Time[j]; if (zzH[j]>0) pitch_cenaD[2]=zzH[j]; else pitch_cenaD[2]=zzL[j]; } else if (pitch_timeD[1]==0) { pitch_timeD[1]=Time[i]; if (zzH[j]>0) pitch_cenaD[1]=zzL[i]; else pitch_cenaD[1]=zzH[i]; } else if (pitch_timeD[0]==0) { pitch_timeD[0]=Time[i]; if (zzH[j]>0) pitch_cenaD[0]=zzH[i]; else pitch_cenaD[0]=zzL[i]; break; } } } aOutRedZone[0]=false; _RZ("RZD", ExtRZDinamicValue, ExtRZDinamicColor, pitch_timeD, pitch_cenaD, ExtRedZoneDinamic, 1, false); if (aOutRedZone[0]) { ExtPitchforkDinamic=_ExtPitchforkDinamic; screenPitchforkD(); } else { ExtPitchforkDinamic=0; delete_objects10(); } } afrm=true; } // Ïîèñê áàðà, íà êîòîðîì ïåðâûé ýêñòðåìóì áûë ðàíåå. shift=iBarShift(Symbol(),Period(),afr[0]); // Ñðàâíåíèå òåêóùåãî çíà÷åíèÿ ýêñòðåìóìà ñ òåì, êîòîðûé áûë ðàíåå // Îáðàçîâàëñÿ íîâûé ýêñòðåìóì 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 (numBar0 && zz[shift]==0.0) { flagFrNew=true; if (numBar0) { 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 (ExtCustomStaticAP) { screenPitchforkS(); } else { 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 (ExtCustomStaticAP) { screenPitchforkS(); } else { 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 && !flagGartley) countFr=1; else countFr=ExtFractal; for (k=0; (k0 && 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)+")"; } else if (ExtPPWithBars==10) { PPWithBars=" "+TimeToStr(Time[numHighPrim],TIME_DATE|TIME_MINUTES)+" / "+DoubleToStr(High[numHighPrim],Digits)+" "; } // 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; if (ExtPPWithBars==10) { ObjectSetText(nameObj,PPWithBars,ExtSizeTxt,"Arial", colorPPattern); } else { 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 (ExtPPWithBars==10) { ObjectSetText(nameObj,""+PPWithBars,ExtSizeTxt,"Arial",colorPPattern); } else { 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 && !flagGartley) countFr=1; else countFr=ExtFractal; flagFrNew=false; flagGartley=false; for (k=0; (k0 && 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)+")"; } else if (ExtPPWithBars==10) { PPWithBars=" "+TimeToStr(Time[numLowPrim],TIME_DATE|TIME_MINUTES)+" / "+DoubleToStr(Low[numLowPrim],Digits)+" "; } // 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; if (ExtPPWithBars==10) { ObjectSetText(nameObj,PPWithBars,ExtSizeTxt,"Arial", colorPPattern); } else { 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 (ExtPPWithBars==10) { ObjectSetText(nameObj,""+PPWithBars,ExtSizeTxt,"Arial",colorPPattern); } else { 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 Îòðèñîâêà ìèíèìóìîâ. Êîíåö. } //----------------------------------------- // Áëîê âûâîäà ñîåäèíèòåëüíûõ ëèíèé. Êîíåö. //----------------------------------------- //====================== //====================== //====================== } // Ðàçðåøåíèå íà âûâîä îñíàñòêè. Êîíåö. if (mAP) { if (mAPs || mAPd) { metkaAP(true); // Ñîçäàíèå ìåòîê â âèëàõ Ýíäðþñà } else if (mTime0) mAPs=true; if (ExtPitchforkDinamic>0) mAPd=true; if (mAPs || mAPd) metkaAP(true); // êîððåêòèðîâêà ïîëîæåíèÿ ìåòîê â âèëàõ Ýíäðþñà mStart=false; mTime=iTime(NULL,Period(),0); } else if (mAuto_d && ((mOutRedZone && aOutRedZone[0]) || AutoAPDinamicTestRedZone)) { if (ExtPitchforkDinamic>0) {mAPd=true; metkaAP(true);} // êîððåêòèðîâêà ïîëîæåíèÿ ìåòîê â âèëàõ Ýíäðþñà } else { metkaAP(false); // Ðåãóëèðîâêà öâåòà ìåòîê â âèëàõ Ýíäðþñà } } // ÊÎÍÅÖ } // start //---------------------------------------------------- // Ïîäïðîãðàììû è ôóíêöèè //---------------------------------------------------- //-------------------------------------------------------- // Ïîäñ÷åò êîëè÷åñòâà ýêñòðåìóìîâ. Ìèíèìóìîâ è ìàêñèìóìîâ. Íà÷àëî. //-------------------------------------------------------- void countFractal() { int shift; countLow1=0; countHigh1=0; if (flagFrNew && !flagGartley) { for(shift=0; shift<=numBar; shift++) { if (zzL[shift]>0.0) {countLow1++;} if (zzH[shift]>0.0) {countHigh1++;} } numBar=0; counted_bars=Bars-4; } else { if (flagGartley) {counted_bars=0;} for(shift=0; shift<=countBarEnd; shift++) { if (zzL[shift]>0.0) {countLow1++;} if (zzH[shift]>0.0) {countHigh1++;} } } } //-------------------------------------------------------- // Ïîäñ÷åò êîëè÷åñòâà ýêñòðåìóìîâ. Ìèíèìóìîâ è ìàêñèìóìîâ. Êîíåö. //-------------------------------------------------------- //-------------------------------------------------------- // Ôîðìèðîâàíèå ìàòðèöû. Íà÷àëî. // // Ìàòðèöà èñïîëüçóåòñÿ äëÿ ïîèñêà èñ÷åçíóâøèõ ýêñòðåìóìîâ. // Ýòî èíñòðóìåíò êîìïåíñàöèè íåïðåäâèäåííûõ çàêèäîíîâ ñòàíäàðòíîãî ZigZag-a. // // Òàêæå âûâîäÿòñÿ ñòàòè÷åñêèå è äèíàìè÷åñêèå ôèáû è âååðû Ôèáîíà÷÷è, // âèëû Ýíäðþñà... //------------------------------------------------------ void matriza() { if (afrm && ExtHidden<5) { afrm=false; // aOutRedZone[0]=false; int shift,k,m; double kl=0,kh=0; if (ExtMaxBar>0) cbi=ExtMaxBar; else cbi=Bars; k=0; m=0; for (shift=0; shift0) { afrx[k]=zz[shift]; afr[k]=Time[shift]; if (zz[shift]==zzL[shift]) { kl=zzL[shift]; if (ZigZagHighLow) afrl[k]=Low[shift]; else { if (k==0) afrl[k]=Low[shift]; else afrl[k]=zzL[shift]; } afrh[k]=0.0; } if (zz[shift]==zzH[shift]) { kh=zzH[shift]; if (ZigZagHighLow) afrh[k]=High[shift]; else { if (k==0) afrh[k]=High[shift]; else afrh[k]=zzH[shift]; } afrl[k]=0.0; } k++; if (infoMerrillPattern) { if (m<6) { if (m<5) { mPeak0[m][0]=zz[shift]; } if (m>0) { mPeak1[m-1][0]=zz[shift]; } m++; } } } } if (infoMerrillPattern) { ArraySort(mPeak1,5,0,MODE_ASCEND); ArraySort(mPeak0,5,0,MODE_ASCEND); } if (PeakDet && chHL_PeakDet_or_vts) { // 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 (ExtCustomStaticAP) { screenPitchforkS(); } else { if (newRay && mPitch[2]>0) screenPitchforkS(); if (ExtPitchforkCandle) { if (iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)==0) screenPitchforkS(); } else { if (mPitch[2]==0) screenPitchforkS(); } } } if (ExtPitchforkDinamic>0) screenPitchforkD(); // Âûâîä êàíàëëîâ. if (ExtChannelsNum>1 || DinamicChannels>0) Channels(); // Âûâîä ñòàòè÷åñêèõ è äèíàìè÷åñêèõ ôèá. if (ExtFiboStatic) { if (newRay && mFibo[1]>0) screenFiboS(); if (mFibo[1]==0) screenFiboS(); } if (ExtFiboDinamic) screenFiboD(); // Ðàñøèðåíèÿ Ôèáîíà÷÷è if (ExtFiboExpansion>0) { if (newRay && mExpansion[2]>0) FiboExpansion(); if (mExpansion[2]==0) FiboExpansion(); } // Âûâîä ôèáîâååðîâ if (ExtFiboFanNum>0 && ExtFiboFanColor>0) { if (newRay && mFan[1]>0) screenFiboFan(); if (mFan[1]==0) screenFiboFan(); } if (ExtFiboFanDinamic) screenFiboFanD(); // Âûâîä 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; } 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;i0) { 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=peakRight;j--) // âû÷èñëÿåì tangens { if (fTrend) { if (afrx[baseExtremum] + tangens*(peakBase-j)-Low[j]>0) tangens=(Low[j]-afrx[baseExtremum])/(peakBase-j); } else { if (High[j] - (afrx[baseExtremum] + tangens*(peakBase-j))>0) tangens=(High[j]-afrx[baseExtremum])/(peakBase-j); } } for (j=peakLeft;j>=peakRight;j--) // âû÷èñëÿåì ñäâèãè { if (fTrend) { sdvigH_=High[j] - (afrx[baseExtremum] + tangens*(peakBase-j)); if (sdvigH_>sdvigH) {sdvigH=sdvigH_; cenaLCRight=High[j]+tangens*(j-peakRight);} } else { sdvigL_=afrx[baseExtremum] + tangens*(peakBase-j)-Low[j]; if (sdvigL_>sdvigL) {sdvigL=sdvigL_; cenaLCRight=Low[j]+tangens*(j-peakRight);} } } timeLCRight=afr[mChannels[i]]; if (ExtTypeLineChannels==0) { while (j>0) { if (fTrend) { if (afrx[baseExtremum] + tangens*(peakBase-j)-Low[j]>sdvigL) break; } else { if (High[j] - (afrx[baseExtremum] + tangens*(peakBase-j))>sdvigH) break; } j--; } } if (j<0) j=0; nameObj="LTChannel" + i + ExtComplekt+"_"; if (ExtSave) { if (i!=DinamicChannels) nameObj=nameObj + save; } ObjectDelete(nameObj); if (fTrend) { timeLTLeft=afr[mChannels[i-1]]; cenaLTLeft=afrx[baseExtremum]-tangens*(peakLeft-peakBase); timeLTRight=Time[j]; cenaLTRight=afrx[baseExtremum] + tangens*(peakBase-j)-sdvigL; } else { timeLTLeft=afr[mChannels[i-1]]; cenaLTLeft=afrx[baseExtremum]-tangens*(peakLeft-peakBase); timeLTRight=Time[j]; cenaLTRight=afrx[baseExtremum] + tangens*(peakBase-j)+sdvigH; } if (ExtTypeLineChannels==1 || ExtTypeLineChannels==3) { n=j; wrcenaR=cenaLTRight; if (fTrend) { while (cenaLTRight<=afrx[mChannels[i]] && n>0) {n--; cenaLTRight=wrcenaR+tangens*(j-n);} } else { while (cenaLTRight>=afrx[mChannels[i]] && n>0) {n--; cenaLTRight=wrcenaR+tangens*(j-n);} } timeLTRight=Time[n]; timeLTLeft=afr[baseExtremum]; cenaLTLeft=afrx[baseExtremum]; } ObjectCreate(nameObj,OBJ_TREND,0,timeLTLeft,cenaLTLeft,timeLTRight,cenaLTRight); if (ExtTypeLineChannels<2) ObjectSet(nameObj,OBJPROP_RAY,ExtRay); ObjectSet(nameObj,OBJPROP_COLOR,ExtLTColor); ObjectSet(nameObj,OBJPROP_STYLE,ExtLTChannelsStyle); ObjectSet(nameObj,OBJPROP_WIDTH,ExtLTChannelsWidth); nameObj="LCChannel" + i + ExtComplekt+"_"; if (ExtSave) { if (i!=DinamicChannels) nameObj=nameObj + save; } ObjectDelete(nameObj); if (fTrend) { cenaLCLeft=afrx[baseExtremum]+sdvigH-tangens*(peakLeft-peakBase); } else { cenaLCLeft=afrx[baseExtremum]-sdvigL-tangens*(peakLeft-peakBase); } timeLCLeft=afr[mChannels[i-1]]; if (ExtTypeLineChannels==1 || ExtTypeLineChannels==3) { m=peakLeft; wrcenaL=cenaLCLeft; n=peakRight; wrcenaR=cenaLCRight; if (fTrend) { while (cenaLCLeft>=afrx[baseExtremum] && m<=Bars) {m++; cenaLCLeft=wrcenaL-tangens*(m-peakLeft);} while (cenaLCRight>=afrx[mChannels[i]] && n<=peakLeft) {n++; cenaLCRight=wrcenaR-tangens*(n-peakRight);} } else { while (cenaLCLeft<=afrx[baseExtremum] && m<=Bars) {m++; cenaLCLeft=wrcenaL-tangens*(m-peakLeft);} while (cenaLCRight<=afrx[mChannels[i]] && n<=peakLeft) {n++; cenaLCRight=wrcenaR-tangens*(n-peakRight);} } timeLCLeft=Time[m]; cenaLCRight=wrcenaR-tangens*(n-1-peakRight); timeLCRight=Time[n-1]; } ObjectCreate(nameObj,OBJ_TREND,0,timeLCLeft,cenaLCLeft,timeLCRight,cenaLCRight); if (ExtTypeLineChannels<2) ObjectSet(nameObj,OBJPROP_RAY,ExtRay); ObjectSet(nameObj,OBJPROP_COLOR,ExtLCColor); ObjectSet(nameObj,OBJPROP_STYLE,ExtLCChannelsStyle); ObjectSet(nameObj,OBJPROP_WIDTH,ExtLCChannelsWidth); if (dinamic) break; } } // Êàíàëû ñ ëèíèåé òðåíäà, ïåðâàÿ òî÷êà êîòîðîé íà ïåðåëîìå çèãçàãà, // âòîðàÿ òî÷êà ïîñòðîåíà ïî êàñàòåëüíîé ê ðûíêó íà ó÷àñòêå, îõâàòûâàåìîì êàíàëîì. Êîíåö. // Êàíàëû, ïàðàëëåëüíûå ëó÷ó çèãçàãà. Íà÷àëî. if (ExtTypeChannels==2) { if (dinamic) nul=DinamicChannels; else nul=1; for (i=1;i=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 (cenaLTRight0) {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]] && mafrx[mChannels[i]] && n1) { cena=(zz[peak2]+zz[peak1]+Close[peak1-1])/3; tangens=(zz[peak2]-zz[peak1])/(peak2-peak1); val=zz[peak1]; for (shift=peak1; shiftzz[peak1]) { if (val>cena) break; } else { if (val0) { 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, i_APm=0, count_APm=0; double a1,b1,c1,ab1,bc1,ab2,bc2,tangens,n1,cl1,ch1,cena,wr,wr1,wr2; datetime ta1,tb1,tc1,tab2,tbc2,tcl1,tch1,twr1,twr2; int a0,b0,c0; int i_AM, i_period, tf, k_AM, const_AM, hl, i_tf; datetime end, time_AM[3]; double cena_AM[3]; bool exit_tf, end_tf[3]; int pitch_time[]={0,0,0}; double pitch_cena[]={0,0,0}; double TLine, m618=phi-1, m382=2-phi; bool moveAP=false; string txt=""; if (ExtCustomStaticAP) { if (ObjectFind(nameCheckLabel)==0) { // Ïðîâåðêà ïîëîæåíèÿ ñèãíàëüíîé ìåòêè APm if (ObjectGet(nameCheckLabel,OBJPROP_XDISTANCE)!=vX || ObjectGet(nameCheckLabel,OBJPROP_YDISTANCE)!=vY) { if (ObjectFind(nameCheckLabel_hidden)==0) { i_APm=StrToInteger(StringSubstr(ObjectDescription(nameCheckLabel_hidden),0,1)); count_APm=StrToInteger(StringSubstr(ObjectDescription(nameCheckLabel_hidden),2)); count_APm--; if (count_APm<1) txt=""+i_APm+"_"+i_APm; else txt=""+i_APm+"_"+count_APm; ObjectSetText(nameCheckLabel_hidden,txt); } if (count_APm<1) { ObjectDelete(nameCheckLabel); ObjectCreate(nameCheckLabel,OBJ_LABEL,0,0,0); ObjectSetText(nameCheckLabel,"APm"); ObjectSet(nameCheckLabel, OBJPROP_FONTSIZE, 10); ObjectSet(nameCheckLabel, OBJPROP_COLOR, Red); ObjectSet(nameCheckLabel, OBJPROP_CORNER, 1); ObjectSet(nameCheckLabel, OBJPROP_XDISTANCE, vX); ObjectSet(nameCheckLabel, OBJPROP_YDISTANCE, vY); } if (ObjectFind("pitchforkS" + ExtComplekt+"_")==0) {moveAP=true; nameObj="pitchforkS" + ExtComplekt+"_";} if (ObjectFind("pitchforkS" + ExtComplekt+"_APm_")==0) {moveAP=true; nameObj="pitchforkS" + ExtComplekt+"_APm_";} } else { if (ObjectFind("pitchforkS" + ExtComplekt+"_APm_")==0) return; } } else { ObjectCreate(nameCheckLabel,OBJ_LABEL,0,0,0); ObjectSetText(nameCheckLabel,"APm"); ObjectSet(nameCheckLabel, OBJPROP_FONTSIZE, 10); ObjectSet(nameCheckLabel, OBJPROP_COLOR, Red); ObjectSet(nameCheckLabel, OBJPROP_CORNER, 1); ObjectSet(nameCheckLabel, OBJPROP_XDISTANCE, vX); ObjectSet(nameCheckLabel, OBJPROP_YDISTANCE, vY); } } if (moveAP) { mPitchCena[0]=ObjectGet(nameObj,OBJPROP_PRICE1); mPitchCena[1]=ObjectGet(nameObj,OBJPROP_PRICE2); mPitchCena[2]=ObjectGet(nameObj,OBJPROP_PRICE3); mPitchTime[0]=ObjectGet(nameObj,OBJPROP_TIME1); mPitchTime[1]=ObjectGet(nameObj,OBJPROP_TIME2); mPitchTime[2]=ObjectGet(nameObj,OBJPROP_TIME3); if (AutoMagnet) { for (i=0;i<3;i++) {cena_AM[i]=0;time_AM[i]=0;period_AM[i]=Period();end_tf[i]=true;} // Ñîçäàíèå/êîððåêöèÿ òåêñòîâîé ìåòêè äëÿ AutoMagnet txt=StringSubstr("0000"+Period(),StringLen("0000"+Period())-5,5)+"00000000000"; if (!ObjectFind(nameMagnet[0])==0) { ObjectCreate(nameMagnet[0],OBJ_TEXT,0,0,0); ObjectSet(nameMagnet[0], OBJPROP_COLOR, CLR_NONE); ObjectSetText(nameMagnet[0],txt); ObjectCreate(nameMagnet[1],OBJ_TEXT,0,0,0); ObjectSet(nameMagnet[1], OBJPROP_COLOR, CLR_NONE); ObjectSetText(nameMagnet[1],txt); ObjectCreate(nameMagnet[2],OBJ_TEXT,0,0,0); ObjectSet(nameMagnet[2], OBJPROP_COLOR, CLR_NONE); ObjectSetText(nameMagnet[2],txt); } else { for (i_AM=0;i_AM<3;i_AM++) { period_AM[i_AM]=StrToInteger(StringSubstr(ObjectDescription(nameMagnet[i_AM]),0,5)); cena_AM[i_AM]=StrToDouble(StringSubstr(ObjectDescription(nameMagnet[i_AM]),14,10)); time_AM[i]=StrToTime(StringSubstr(ObjectDescription(nameMagnet[i_AM]),5,10)); if (mPitchCena[i_AM]==cena_AM[i_AM] && mPitchTime[i_AM]==time_AM[i_AM]) end_tf[i_AM]=false; } } for (i_AM=0;i_AM<3;i_AM++) { if (!end_tf[i_AM]) continue; const_AM=AMBars*2+1; hl=0; k_AM=iBarShift(Symbol(),period_AM[i_AM],mPitchTime[i_AM],false); // ïîèñê ýêñòðåìóìà íà òîì òàéìôðåéìå, íà êîòîðîì âêëþ÷èëè ðåæèì APm if (mPitchCena[i_AM]>=iHigh(Symbol(),period_AM[i_AM],k_AM)) { mPitchCena[i_AM]=0; hl=1; for(k_AM=k_AM+AMBars;const_AM>0;const_AM--) { if (iHigh(Symbol(),period_AM[i_AM],k_AM)>mPitchCena[i_AM]) { mPitchCena[i_AM]=iHigh(Symbol(),period_AM[i_AM],k_AM); mPitchTime[i_AM]=iTime(Symbol(),period_AM[i_AM],k_AM); } k_AM--; } } else if (mPitchCena[i_AM]<=iLow(Symbol(),period_AM[i_AM],k_AM)) { mPitchCena[i_AM]=1000000; hl=2; for(k_AM=k_AM+AMBars;const_AM>0;const_AM--) { if (iLow(Symbol(),period_AM[i_AM],k_AM)0) { exit_tf=false; for (i_period=0;i_period=mPitchCena[i_AM]) { mPitchTime[i_AM]=iTime(Symbol(),tf,i_tf); exit_tf=true; break; } } } else { for (i_tf=k_AM;iTime(Symbol(),tf,i_tf)<=end;i_tf--) { if (iLow(Symbol(),tf,i_tf)<=mPitchCena[i_AM]) { mPitchTime[i_AM]=iTime(Symbol(),tf,i_tf); exit_tf=true; break; } } } if (exit_tf) { ObjectSetText(nameMagnet[i_AM],StringSubstr("0000"+tf,StringLen("0000"+tf)-5,5)+StringSubstr("000000000"+mPitchTime[i_AM],StringLen("000000000"+mPitchTime[i_AM])-10,1010)+""+mPitchCena[i_AM]); break; } } } } } } else { if (ExtPitchforkCandle) { if (iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)==0) { if (ExtPitchfork_1_HighLow) { mPitchCena[2]=High[iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)]; } else { mPitchCena[2]=Low[iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)]; } } cena=mPitchCena[0]; if (ExtPitchfork_1_HighLow) { if (ExtCM_0_1A_2B_Static==1) { cena=mPitchCena[0]-(mPitchCena[0]-mPitchCena[1])*ExtCM_FiboStatic; } else if (ExtCM_0_1A_2B_Static==4) { mPitchTimeSave=mPitchTime[0]; mPitchTime[0]=mPitchTime[1]; if (maxGipotenuza4(mPitchTime,mPitchCena)) { cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m618; } else { cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m382; } } else if (ExtCM_0_1A_2B_Static==5) { mPitchTimeSave=mPitchTime[0]; mPitchTime[0]=mPitchTime[1]; if (maxGipotenuza5(mPitchTime,mPitchCena)) { cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m618; } else { cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m382; } } else if (ExtCM_0_1A_2B_Static>1) { if (ExtCM_0_1A_2B_Static==2) mPitchTime[0]=mPitchTime[1]; cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*ExtCM_FiboStatic; } } else { if (ExtCM_0_1A_2B_Static==1) { cena=mPitchCena[0]+(mPitchCena[1]-mPitchCena[0])*ExtCM_FiboStatic; } else if (ExtCM_0_1A_2B_Static==4) { mPitchTimeSave=mPitchTime[0]; mPitchTime[0]=mPitchTime[1]; if (maxGipotenuza4(mPitchTime,mPitchCena)) { cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m618; } else { cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m382; } } else if (ExtCM_0_1A_2B_Static==5) { mPitchTimeSave=mPitchTime[0]; mPitchTime[0]=mPitchTime[1]; if (maxGipotenuza5(mPitchTime,mPitchCena)) { cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m618; } else { cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m382; } } else if (ExtCM_0_1A_2B_Static>1) { if (ExtCM_0_1A_2B_Static==2) mPitchTime[0]=mPitchTime[1]; cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*ExtCM_FiboStatic; } } } else { mPitchTime[0]=afr[mPitch[0]]; mPitchTime[1]=afr[mPitch[1]]; mPitchTime[2]=afr[mPitch[2]]; if (mPitchTime[0]==0) return; if (afrl[mPitch[0]]>0) { cena=afrl[mPitch[0]]; mPitchCena[1]=afrh[mPitch[1]]; mPitchCena[2]=afrl[mPitch[2]]; if (ExtCM_0_1A_2B_Static==1) { cena=mPitchCena[0]+(mPitchCena[1]-mPitchCena[0])*ExtCM_FiboStatic; } else if (ExtCM_0_1A_2B_Static==4) { mPitchTimeSave=mPitchTime[0]; mPitchTime[0]=mPitchTime[1]; if (maxGipotenuza4(mPitchTime,mPitchCena)) { cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m618; } else { cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m382; } } else if (ExtCM_0_1A_2B_Static==5) { mPitchTimeSave=mPitchTime[0]; mPitchTime[0]=mPitchTime[1]; if (maxGipotenuza5(mPitchTime,mPitchCena)) { cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m618; } else { cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m382; } } else if (ExtCM_0_1A_2B_Static>1) { if (ExtCM_0_1A_2B_Static==2) mPitchTime[0]=mPitchTime[1]; cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*ExtCM_FiboStatic; } } else { cena=afrh[mPitch[0]]; mPitchCena[1]=afrl[mPitch[1]]; mPitchCena[2]=afrh[mPitch[2]]; if (ExtCM_0_1A_2B_Static==1) { cena=mPitchCena[0]-(mPitchCena[0]-mPitchCena[1])*ExtCM_FiboStatic; } else if (ExtCM_0_1A_2B_Static==4) { mPitchTimeSave=mPitchTime[0]; mPitchTime[0]=mPitchTime[1]; if (maxGipotenuza4(mPitchTime,mPitchCena)) { cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m618; } else { cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m382; } } else if (ExtCM_0_1A_2B_Static==5) { mPitchTimeSave=mPitchTime[0]; mPitchTime[0]=mPitchTime[1]; if (maxGipotenuza5(mPitchTime,mPitchCena)) { cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m618; } else { cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m382; } } else if (ExtCM_0_1A_2B_Static>1) { if (ExtCM_0_1A_2B_Static==2) mPitchTime[0]=mPitchTime[1]; cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*ExtCM_FiboStatic; } } } mPitchCena[0]=cena; } if (ExtFiboFanStatic) {ExtFiboFanStatic=false; screenFiboFanS();} coordinaty_1_2_mediany_AP(mPitchCena[0], mPitchCena[1], mPitchCena[2], mPitchTime[0], mPitchTime[1], mPitchTime[2], tab2, tbc2, ab1, bc1, ExtPitchforkStatic, ExtPitchforkStaticCustom); pitch_time[0]=tab2;pitch_cena[0]=ab1; // 50% ìåäèàíà if (ExtPitchforkStatic==2) { nameObj="pmedianaS" + ExtComplekt+"_"; if (ExtSave) { if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0) { nameObj=nameObj + save; } else { if (mPitch[2]>0) { nameObj=nameObj + save; } } } ObjectDelete(nameObj); ObjectCreate(nameObj,OBJ_TREND,0,tab2,ab1,tbc2,bc1); ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DASH); ObjectSet(nameObj,OBJPROP_COLOR,ExtLinePitchforkS); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); if (ExtSLMStatic) { b0=iBarShift(Symbol(),Period(),mPitchTime[1]); c0=iBarShift(Symbol(),Period(),mPitchTime[2]); // ñìåùåíèå slm wr=(ObjectGetValueByShift(nameObj,c0)-mPitchCena[2])*(1-2*m382); //íîìåð áàðà òî÷êè 1 a0=c0-(c0-b0)*m382-1; // âðåìÿ òî÷êè 1 twr1=iTime(Symbol(),Period(),a0); // öåíà òî÷êè 1 wr1=ObjectGetValueByShift(nameObj,a0)-wr; // êîîðäèíàòû òî÷êè 2 wr2=ObjectGetValueByShift(nameObj,0)-wr; twr2=iTime(Symbol(),Period(),0); nameObj="SLM382S" + ExtComplekt+"_"; if (ExtSave) { if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0) { nameObj=nameObj + save; } else { if (mPitch[2]>0) { nameObj=nameObj + save; } } } ObjectDelete(nameObj); ObjectCreate(nameObj,OBJ_TREND,0,twr1,wr1,twr2,wr2); ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DASH); ObjectSet(nameObj,OBJPROP_COLOR,ExtSLMStaticColor); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); //íîìåð áàðà òî÷êè 1 a0=c0-(c0-b0)*m618-1; // âðåìÿ òî÷êè 1 twr1=iTime(Symbol(),Period(),a0); // öåíà òî÷êè 1 nameObj="pmedianaS" + ExtComplekt+"_"; wr1=ObjectGetValueByShift(nameObj,a0)+wr; // êîîðäèíàòû òî÷êè 2 wr2=ObjectGetValueByShift(nameObj,0)+wr; twr2=iTime(Symbol(),Period(),0); nameObj="SLM618S" + ExtComplekt+"_"; if (ExtSave) { if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0) { nameObj=nameObj + save; } else { if (mPitch[2]>0) { nameObj=nameObj + save; } } } ObjectDelete(nameObj); ObjectCreate(nameObj,OBJ_TREND,0,twr1,wr1,twr2,wr2); ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DASH); ObjectSet(nameObj,OBJPROP_COLOR,ExtSLMStaticColor); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); } if (ExtFSLShiffLinesStatic) { c0=iBarShift(Symbol(),Period(),mPitchTime[1]); // âðåìÿ òî÷êè 1 twr1=mPitchTime[1]; // öåíà òî÷êè 1 wr1=mPitchCena[1]; // êîîðäèíàòû òî÷êè 2 nameObj="pmedianaS" + ExtComplekt+"_"; wr2=ObjectGetValueByShift(nameObj,0)-ObjectGetValueByShift(nameObj,c0)+mPitchCena[1]; twr2=iTime(Symbol(),Period(),0); nameObj="FSL Shiff Lines S" + ExtComplekt+"_"; if (ExtSave) { if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0) { nameObj=nameObj + save; } else { if (mPitch[2]>0) { nameObj=nameObj + save; } } } ObjectDelete(nameObj); ObjectCreate(nameObj,OBJ_TREND,0,twr1,wr1,twr2,wr2); ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DASH); ObjectSet(nameObj,OBJPROP_COLOR,ExtFSLShiffLinesStaticColor); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); } nameObj="1-2pmedianaS" + ExtComplekt+"_"; if (ExtSave) { if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0) { nameObj=nameObj + save; } else { if (mPitch[2]>0) { nameObj=nameObj + save; } } } ObjectDelete(nameObj); ObjectCreate(nameObj,OBJ_TEXT,0,tab2,ab1+3*Point); ObjectSetText(nameObj," 1/2 ML",9,"Arial", ExtLinePitchforkS); } if (ExtCustomStaticAP) nameObj="pitchforkS" + ExtComplekt+"_APm_"; else nameObj="pitchforkS" + ExtComplekt+"_"; if (ExtSave) { if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0) { nameObj=nameObj + save; } else { if (mPitch[2]>0) { nameObj=nameObj + save; } } } if (ExtPitchforkStatic!=4) { pitch_time[0]=mPitchTime[0];pitch_cena[0]=mPitchCena[0]; if (ExtPitchforkStatic==3) pitch_cena[0]=ab1; } pitch_time[1]=mPitchTime[1];pitch_cena[1]=mPitchCena[1]; pitch_time[2]=mPitchTime[2];pitch_cena[2]=mPitchCena[2]; // Âûâîä ìåòîê â âèëàõ Ýíäðþñà mAPs=false; if (ObjectFind(nameObj)>=0) { if (mAP) { if (ObjectGet(nameObj,OBJPROP_TIME1)!=pitch_time[0] || ObjectGet(nameObj,OBJPROP_PRICE1)!=pitch_cena[0] || ObjectGet(nameObj,OBJPROP_TIME2)!=pitch_time[1] || ObjectGet(nameObj,OBJPROP_PRICE2)!=pitch_cena[1] || ObjectGet(nameObj,OBJPROP_TIME3)!=pitch_time[2] || ObjectGet(nameObj,OBJPROP_PRICE3)!=pitch_cena[2] || ExtCustomStaticAP) {mAPs=true; RZs=-1;} } ObjectDelete(nameObj); } else if (mAP) {mAPs=true; RZs=-1;} if (AutoTestRedZone && !ExtCustomStaticAP && !ExtPitchforkCandle) { if (afr[mPitch[2]-1]>0) { pitch_timeRZ[0]=afr[mPitch[0]-1]; pitch_timeRZ[1]=afr[mPitch[1]-1]; pitch_timeRZ[2]=afr[mPitch[2]-1]; if (afrl[mPitch[0]-1]>0) { pitch_cenaRZ[0]=afrl[mPitch[0]-1]; pitch_cenaRZ[1]=afrh[mPitch[1]-1]; pitch_cenaRZ[2]=afrl[mPitch[2]-1]; } else { pitch_cenaRZ[0]=afrh[mPitch[0]-1]; pitch_cenaRZ[1]=afrl[mPitch[1]-1]; pitch_cenaRZ[2]=afrh[mPitch[2]-1]; } } } if (mOutRedZone && mAuto_s) { pitch_timeS[0]=pitch_time[0]; pitch_timeS[1]=pitch_time[1]; pitch_timeS[2]=pitch_time[2]; pitch_cenaS[0]=pitch_cena[0]; pitch_cenaS[1]=pitch_cena[1]; pitch_cenaS[2]=pitch_cena[2]; aOutRedZone[1]=false; _RZ("RZS", ExtRZStaticValue, ExtRZStaticColor, pitch_timeS, pitch_cenaS, ExtRedZoneStatic, 0, false); } ObjectCreate(nameObj,OBJ_PITCHFORK,0,pitch_time[0],pitch_cena[0],pitch_time[1],pitch_cena[1],pitch_time[2],pitch_cena[2]); ObjectSet(nameObj,OBJPROP_STYLE,ExtPitchforkStyle); ObjectSet(nameObj,OBJPROP_WIDTH,ExtPitchforkWidth); ObjectSet(nameObj,OBJPROP_COLOR,ExtLinePitchforkS); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); if (ExtMasterPitchfork==2) { nameObjAPMaster="Master_"+nameObj; ObjectDelete(nameObjAPMaster); ObjectCreate(nameObjAPMaster,OBJ_PITCHFORK,0,pitch_time[0],pitch_cena[0],pitch_time[1],pitch_cena[1],pitch_time[2],pitch_cena[2]); ObjectSet(nameObjAPMaster,OBJPROP_STYLE,ExtPitchforkStyle); ObjectSet(nameObjAPMaster,OBJPROP_WIDTH,ExtPitchforkWidth); ObjectSet(nameObjAPMaster,OBJPROP_COLOR,CLR_NONE); ObjectSet(nameObjAPMaster,OBJPROP_BACK,true); } if (ExtFiboFanMedianaStaticColor>0) { coordinaty_mediany_AP(pitch_cena[0], pitch_cena[1], pitch_cena[2], pitch_time[0], pitch_time[1], pitch_time[2], tb1, b1); nameObj="FanMedianaStatic" + ExtComplekt+"_"; /* if (ExtSave) { if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0) { nameObj=nameObj + save; } else { if (mPitch[2]>0) { nameObj=nameObj + save; } } } */ ObjectDelete(nameObj); ObjectSet(nameObj,OBJPROP_COLOR,CLR_NONE); ObjectCreate(nameObj,OBJ_FIBOFAN,0,pitch_time[0],pitch_cena[0],tb1,b1); ObjectSet(nameObj,OBJPROP_LEVELSTYLE,STYLE_DASH); ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtFiboFanMedianaStaticColor); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); if (ExtFiboType==0) { screenFibo_st(); } else if (ExtFiboType==1) { screenFibo_Pesavento(); } else if (ExtFiboType==2) { ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi); for (i=0;i0) { nameObj=nameObj + save; } else { if (mPitch[2]>0) { nameObj=nameObj + save; } } } ObjectDelete(nameObj); if (pitch_cena[1]>pitch_cena[2]) { ObjectCreate(nameObj,OBJ_TREND,0,pitch_time[0],pitch_cena[0],pitch_time[1],pitch_cena[1]); } else { ObjectCreate(nameObj,OBJ_TREND,0,pitch_time[0],pitch_cena[0],pitch_time[2],pitch_cena[2]); } ObjectSet(nameObj,OBJPROP_STYLE,STYLE_SOLID); ObjectSet(nameObj,OBJPROP_COLOR,ExtLinePitchforkS); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); } if (ExtPivotZoneStaticColor>0 && ExtPitchforkStatic<4) PivotZone(pitch_time, pitch_cena, ExtPivotZoneStaticColor, "PivotZoneS"); if (ExtLTL) { nameObj=nameLTL; if (ExtSave) { if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0) { nameObj=nameObj + save; } else { if (mPitch[2]>0) { nameObj=nameObj + save; } } } ObjectDelete(nameObj); if (pitch_cena[1]>pitch_cena[2]) { ObjectCreate(nameObj,OBJ_TREND,0,pitch_time[0],pitch_cena[0],pitch_time[2],pitch_cena[2]); } else { ObjectCreate(nameObj,OBJ_TREND,0,pitch_time[0],pitch_cena[0],pitch_time[1],pitch_cena[1]); } ObjectSet(nameObj,OBJPROP_STYLE,STYLE_SOLID); ObjectSet(nameObj,OBJPROP_COLOR,ExtLinePitchforkS); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); } //------------------------------------------------------- if (ExtUWL || ExtLWL) { n1=iBarShift(Symbol(),Period(),pitch_time[0])-(iBarShift(Symbol(),Period(),pitch_time[1])+iBarShift(Symbol(),Period(),pitch_time[2]))/2.0; ta1=pitch_time[0]; tb1=Time[0]; a1=pitch_cena[0]; tangens=(pitch_cena[0]-(pitch_cena[1]+pitch_cena[2])/2.0)/n1; b1=pitch_cena[0]-tangens*iBarShift(Symbol(),Period(),pitch_time[0]); ML_RL400(tangens, pitch_cena, pitch_time, tb1, b1, false); if (pitch_cena[1]>pitch_cena[2]) { if (ExtUWL) { ch1=pitch_cena[1]; tch1=pitch_time[1]; } if (ExtLWL) { cl1=pitch_cena[2]; tcl1=pitch_time[2]; } } else { if (ExtUWL) { ch1=pitch_cena[2]; tch1=pitch_time[2]; } if (ExtLWL) { cl1=pitch_cena[1]; tcl1=pitch_time[1]; } } if (ExtUWL) { nameObj=nameUWL; if (ExtSave) { if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0) { nameObj=nameObj + save; } else { if (mPitch[2]>0) { nameObj=nameObj + save; } } } ObjectDelete(nameObj); ObjectCreate(nameObj,OBJ_FIBOCHANNEL,0,ta1,a1,tb1,b1,tch1,ch1); ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtLinePitchforkS); ObjectSet(nameObj,OBJPROP_LEVELSTYLE,STYLE_DOT); ObjectSet(nameObj,OBJPROP_RAY,ExtLongWL); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); ObjectSet(nameObj,OBJPROP_COLOR,CLR_NONE); UWL_LWL (ExtVisibleUWL,nameObj,"UWL ",ExtFiboFreeUWL); } if (ExtLWL) { nameObj=nameLWL; if (ExtSave) { if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0) { nameObj=nameObj + save; } else { if (mPitch[2]>0) { nameObj=nameObj + save; } } } ObjectDelete(nameObj); ObjectCreate(nameObj,OBJ_FIBOCHANNEL,0,ta1,a1,tb1,b1,tcl1,cl1); ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtLinePitchforkS); ObjectSet(nameObj,OBJPROP_LEVELSTYLE,STYLE_DOT); ObjectSet(nameObj,OBJPROP_RAY,ExtLongWL); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); ObjectSet(nameObj,OBJPROP_COLOR,CLR_NONE); UWL_LWL (ExtVisibleLWL,nameObj,"LWL ",ExtFiboFreeLWL); } } //------------------------------------------------------- if (ExtPitchforkStaticColor>0) { n1=iBarShift(Symbol(),Period(),pitch_time[0])-(iBarShift(Symbol(),Period(),pitch_time[1])+iBarShift(Symbol(),Period(),pitch_time[2]))/2.0; TLine=pitch_cena[1]-iBarShift(Symbol(),Period(),pitch_time[1])*(pitch_cena[0]-(pitch_cena[2]+pitch_cena[1])/2)/n1; nameObj="CL" + ExtComplekt+"_"; /* if (ExtSave) { if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0) { nameObj=nameObj + save; } else { if (mPitch[2]>0) { nameObj=nameObj + save; } } } */ ObjectDelete(nameObj); ObjectCreate(nameObj,OBJ_CHANNEL,0,pitch_time[1],pitch_cena[1],Time[0],TLine,pitch_time[2],pitch_cena[2]); ObjectSet(nameObj, OBJPROP_BACK, true); ObjectSet(nameObj, OBJPROP_COLOR, ExtPitchforkStaticColor); } //------------------------------------------------------- if (ExtISLChannelStaticColor>0) { channelISL(pitch_cena[0], pitch_cena[1], pitch_cena[2], pitch_time[0], pitch_time[1], pitch_time[2], 0); } //------------------------------------------------------- if (ExtISLStatic) { _ISL("ISL_S", pitch_time, pitch_cena, ExtLinePitchforkS, ExtISLStyleStatic, 0, ""); } //------------------------------------------------------- if (ExtRLStatic) { _RL("RLineS", pitch_time, pitch_cena, ExtLinePitchforkS, ExtRLStyleStatic, ExtVisibleRLStatic, 0, ""); } //------------------------------------------------------- if (ExtRedZoneStatic>0) { _RZ("RZS", ExtRZStaticValue, ExtRZStaticColor, pitch_time, pitch_cena, ExtRedZoneStatic, 0, true); } //-------------------------------------------------------- // Âðåìåííûå çîíû Ôèáî â ñîñòàâå ñòàòè÷åñêèõ âèë Ýíäðþñà fiboTimeX (); if (ExtCustomStaticAP) { if (mAPs || mAPd) { metkaAP(true); // Ñîçäàíèå ìåòîê â âèëàõ Ýíäðþñà } i_APm=0; for (i=ObjectsTotal()-1; i>=0; i--) { txt=ObjectName(i); // ïîäñ÷åò êîëè÷åñêòâà âèë ñ ìåòêîé APm if (ObjectType(txt)==OBJ_PITCHFORK) { if (StringFind(txt,"_APm",0)>0) i_APm++; } } ObjectDelete(nameCheckLabel_hidden); if (i_APm>1) { count_APm=StrToInteger(StringSubstr(ObjectDescription(nameCheckLabel_hidden),2)); if (count_APm<1) txt=""+i_APm+"_"+i_APm; else txt=""+i_APm+"_"+count_APm; ObjectCreate(nameCheckLabel_hidden,OBJ_TEXT,0,0,0); ObjectSetText(nameCheckLabel_hidden,txt); ObjectSet(nameCheckLabel_hidden, OBJPROP_COLOR, CLR_NONE); ObjectSet(nameCheckLabel_hidden, OBJPROP_BACK, true); } } } //-------------------------------------------------------- // Âûâîä âèë Ýíäðþñà ñòàòè÷åñêèõ. Êîíåö. //-------------------------------------------------------- //-------------------------------------------------------- // Âûâîä öåíîâûõ ìåòîê (metkaAP) â âèëàõ Ýíäðþñà. // Ïîäãîòîâêà. Âûáîð âèë. Íà÷àëî. //-------------------------------------------------------- void metkaAP(bool create) { color mclr; string prefics=""; double cena1, cena2; int i; if (create) // ñîçäàíèå ìåòîê { if (mSelectVariantsPRZ==0) { for (i=0;i<2;i++) { if (i==0 && mAPs) { if (_ExtPitchforkStatic==0) continue; if (!mStart) { if (mOutRedZone && !aOutRedZone[1] && mAuto_s) continue; } _metkaAP(arrm_s, i, mAuto_s, 0); } else if (i==1 && mAPd) { if (ExtPitchforkDinamic==0) continue; if (!mStart) { if (mOutRedZone && !aOutRedZone[0] && mAuto_d) continue; } _metkaAP(arrm_d, i, mAuto_d, 0); } } } else if(mSelectVariantsPRZ>0) { if (mTypeBasiclAP==0) { _metkaAP(arrm_s, 0, mAuto_s, 1); if (((mOutRedZone && aOutRedZone[0] && mAuto_d) || !mOutRedZone || mStart) && _ExtPitchforkStatic>0) { _metkaAP(arrm_d, 1, mAuto_d, 0); } } else if (mTypeBasiclAP==1) { _metkaAP(arrm_d, 1, mAuto_d, 1); if (((mOutRedZone && aOutRedZone[1] && mAuto_s) || !mOutRedZone || mStart) && ExtPitchforkDinamic>0) { _metkaAP(arrm_s, 0, mAuto_s, 0); } } } mAPs=false; mAPd=false; } else // âûâîä äîïîëíèòåëüíûõ ìåòîê ïðè âûõîäå öåíû ðûíêà çà êðàéíèå ìåòêè íà òåêóùåì áàðå { if (mSelectVariantsPRZ==0) { if (mAuto_s) { if (((mOutRedZone && aOutRedZone[1] && mAuto_s) || !mOutRedZone) && _ExtPitchforkStatic>0) new_metkaAP(arrm_s, 0, mAuto_s); } if (mAuto_d) { if (((mOutRedZone && aOutRedZone[0] && mAuto_d) || !mOutRedZone) && ExtPitchforkDinamic>0) new_metkaAP(arrm_d, 1, mAuto_d); } } else if(mSelectVariantsPRZ>0) { if (mTypeBasiclAP==0) { if (mAuto_d) { if (((mOutRedZone && aOutRedZone[0] && mAuto_d) || !mOutRedZone) && ExtPitchforkDinamic>0) new_metkaAP(arrm_d, 1, mAuto_d); } } else if (mTypeBasiclAP==1) { if (mAuto_s) { if (((mOutRedZone && aOutRedZone[1] && mAuto_s) || !mOutRedZone) && _ExtPitchforkStatic>0) new_metkaAP(arrm_s, 0, mAuto_s); } } } } // çàäàíèå öâåòà ìåòîê prefics="m#"+ExtComplekt+"_"; for (i=ObjectsTotal()-1;i>=0;i--) { nameObj=ObjectName(i); if (StringFind(nameObj,prefics)>-1) { if (ObjectType(nameObj)==OBJ_ARROW) { cena1=ObjectGet(nameObj,OBJPROP_PRICE1); if (iClose(NULL,Period(),0)cena1) mclr=mColorDN; else mclr=mColor; } else if (ObjectType(nameObj)==OBJ_RECTANGLE || ObjectType(nameObj)==OBJ_TREND) { cena1=ObjectGet(nameObj,OBJPROP_PRICE1); cena2=ObjectGet(nameObj,OBJPROP_PRICE2); if (iClose(NULL,Period(),0)cena1 && iClose(NULL,Period(),0)>cena2) mclr=mColorRectangleDN; else mclr=mColor; } if (!mPivotPointsChangeColor) { if (StringFind(nameObj,prefics+"s"+" point")>-1 || StringFind(nameObj,prefics+"d"+" point")>-1) continue; } ObjectSet(nameObj,OBJPROP_COLOR,mclr); } } WindowRedraw(); } //-------------------------------------------------------- // Âûâîä öåíîâûõ ìåòîê (metkaAP) â âèëàõ Ýíäðþñà. // Ïîäãîòîâêà. Âûáîð âèë. Êîíåö. //-------------------------------------------------------- //-------------------------------------------------------- // Âûâîä äîïîëíèòåëüíûé öåíîâûõ ìåòîê â âèëàõ Ýíäðþñà. // Íà÷àëî. //-------------------------------------------------------- void new_metkaAP(double& arrm[][], int sd, bool mAuto) { int i_1, i_2, i_x, ii, n, j, a1, b1, c1; double tangensAP, tangensUTL, tangensLTL; double pitch_cena[]={0,0,0}; datetime pitch_time[]={0,0,0}; string prefics=""; string wl="", tmp="", file="", nameObj=""; int handle=-1; bool writetofile=false; string _nameUWL="", _nameLWL="", _nameUTL="", _nameLTL=""; bool exitSL = false; // ôëàã äëÿ ðàáîòû ïàðàìåòðà mExitFSL_SSL if (mAuto) exitSL=mExitFSL_SSL || Close[0]>=aexitFSL_SSL[1] || Close[0]<=aexitFSL_SSL[0]; else exitSL=true; if (sd==0) file="\\Price Label S\\"; if (sd==1) file="\\Price Label D\\"; if (sd==0) { _nameUWL=nameUWL; _nameLWL=nameLWL; _nameUTL=nameUTL; _nameLTL=nameLTL; } else { _nameUWL=nameUWLd; _nameLWL=nameLWLd; _nameUTL=nameUTLd; _nameLTL=nameLTLd; } if (anum_cena[sd][0]>0 && anum_cena[sd][1]=iClose(NULL,Period(),0)) // ìèíèìóì { i_1=anum_cena[sd][0]-1; i_x=i_1; if (arrm[i_1][0]>0) { anum_cena[sd][0]=i_1; } else return; } else if (arrm[anum_cena[sd][1]][0]<=iClose(NULL,Period(),0)) // ìàêñèìóì { i_2=anum_cena[sd][1]+1; i_x=i_2; if (arrm[i_2][0]>0) { anum_cena[sd][1]=i_2; } else return; } else return; ii=arrm[i_x][5]; if (!exitSL && ii>10) return; // âûâîäèì äîïîëíèòåëüíóþ ìåòêó if (sd==0) { if (ExtCustomStaticAP) nameObj="pitchforkS" + ExtComplekt+"_APm_"; else nameObj="pitchforkS" + ExtComplekt+"_"; prefics="m#"+ExtComplekt+"_"+"s "; //îñíîâà ïðåôèêñà } else if (sd==1) { nameObj="pitchforkD" + ExtComplekt+"_"; prefics="m#"+ExtComplekt+"_"+"d "; } // îïðåäåëÿåì âðåìÿ è öåíó òî÷åê, ê êîòîðûì ïðèâÿçàíû (áàçîâûå) âèëû Ýíäðþñà pitch_time[0]=ObjectGet(nameObj,OBJPROP_TIME1); pitch_cena[0]=ObjectGet(nameObj,OBJPROP_PRICE1); pitch_time[1]=ObjectGet(nameObj,OBJPROP_TIME2); pitch_cena[1]=ObjectGet(nameObj,OBJPROP_PRICE2); pitch_time[2]=ObjectGet(nameObj,OBJPROP_TIME3); pitch_cena[2]=ObjectGet(nameObj,OBJPROP_PRICE3); // îïðåäåëÿåì íîìåðà áàðîâ, ê êîòîðûì ïðèâÿçàíû âèëû Ýíäðþñà a1=iBarShift(NULL,Period(),pitch_time[0],false); b1=iBarShift(NULL,Period(),pitch_time[1],false); c1=iBarShift(NULL,Period(),pitch_time[2],false); tangensAP=atg[sd][0]; atg[sd][3]=tangensUTL; atg[sd][4]=tangensLTL; // îòêðûâàåì ôàéë äëÿ çàïèñè ìåòîê if (mWriteToFile) { // if (mPeriod0) { tmp="_0_"; } else { if (SlavePitchfork) tmp="_"+StringSubstr(""+ExtComplekt,StringLen(""+ExtComplekt)-1)+"_"; else { j=ObjectsTotal(); for (n=0; n=0) { tmp="_"+StringSubstr(""+ExtComplekt,StringLen(""+ExtComplekt)-1)+"_"; break; } } } } } writetofile=true; if (ExtIndicator==6 && GrossPeriod==Period()) file=file+Symbol()+"_"+GrossPeriod+tmp+ExtComplekt+".csv"; else file=file+Symbol()+"_"+Period()+tmp+ExtComplekt+".csv"; handle=FileOpen(file,FILE_CSV | FILE_READ | FILE_WRITE,';'); } } if (ii==11 && mAuto && ObjectFind(_nameUTL)<0) visibleTL(pitch_cena, pitch_time, 11, sd);// UTL if (ii==12 && mAuto && ObjectFind(_nameLTL)<0) visibleTL(pitch_cena, pitch_time, 12, sd);// LTL if (ii>12) wl=DoubleToStr(arrm[i_x][6],3); else wl=""; if (ii==13 && mAuto && ObjectFind(_nameUWL)<0) // UWL { if (ObjectFind(_nameUTL)<0) visibleTL(pitch_cena, pitch_time, 11, sd);// UTL if (sd==0) { visibleWL(pitch_cena, pitch_time, pitch_cena[0], pitch_time[0], pitch_cena[0]-tangensAP*a1, iTime(Symbol(),Period(),0), 13, sd, "", tangensAP, ExtLinePitchforkS, true); } else { visibleWL(pitch_cena, pitch_time, pitch_cena[0], pitch_time[0], pitch_cena[0]-tangensAP*a1, iTime(Symbol(),Period(),0), 13, sd, "", tangensAP, ExtLinePitchforkD, true); } } if (ii==14 && mAuto && ObjectFind(nameLWL)<0) // LWL { if (ObjectFind(_nameLTL)<0) visibleTL(pitch_cena, pitch_time, 12, sd);// LTL if (sd==0) { visibleWL(pitch_cena, pitch_time, pitch_cena[0], pitch_time[0], pitch_cena[0]-tangensAP*a1, iTime(Symbol(),Period(),0), 14, sd, "", tangensAP, ExtLinePitchforkS, true); } else { visibleWL(pitch_cena, pitch_time, pitch_cena[0], pitch_time[0], pitch_cena[0]-tangensAP*a1, iTime(Symbol(),Period(),0), 14, sd, "", tangensAP, ExtLinePitchforkD, true); } } if (aMetki[sd][ii]==1 || aMetki[sd][ii]==0) { nameObj=prefics+atextm[ii]+wl+" x 0-bar"; ObjectCreate(nameObj,OBJ_ARROW,0,iTime(NULL,Period(),0),arrm[i_x][0]); ObjectSet(nameObj,OBJPROP_ARROWCODE,SYMBOL_RIGHTPRICE); ObjectSet(nameObj,OBJPROP_BACK,mBack); if (writetofile) { FileSeek(handle, 0, SEEK_END); FileWrite(handle, 0, ii, aMetki[sd][ii], 0, DoubleToStr(arrm[i_x][0], Digits), 0, DoubleToStr(iClose(NULL,Period(),0), Digits), sd, DoubleToStr(pitch_cena[0], Digits), DoubleToStr(pitch_cena[1], Digits), DoubleToStr(pitch_cena[2], Digits)); } } else if (aMetki[sd][ii]>1 && arrm[i_x][4]>0) { if (aMetki[sd][ii]!=3 && aMetki[sd][ii]!=6 && aMetki[sd][ii]!=8) { nameObj=prefics+atextm[ii]+wl+" left 0-bar"; ObjectCreate(nameObj,OBJ_ARROW,0,arrm[i_x][1],arrm[i_x][2]); ObjectSet(nameObj,OBJPROP_ARROWCODE,SYMBOL_LEFTPRICE); ObjectSet(nameObj,OBJPROP_BACK,mBack); nameObj=prefics+atextm[ii]+wl+" right 0-bar"; ObjectCreate(nameObj,OBJ_ARROW,0,arrm[i_x][3],arrm[i_x][4]); ObjectSet(nameObj,OBJPROP_ARROWCODE,SYMBOL_RIGHTPRICE); ObjectSet(nameObj,OBJPROP_BACK,mBack); } if (aMetki[sd][ii]>7) { nameObj=prefics+atextm[ii]+wl+" line Zones"; ObjectCreate(nameObj,OBJ_TREND,0,arrm[i_x][1],arrm[i_x][2],arrm[i_x][3],arrm[i_x][4]); ObjectSet(nameObj,OBJPROP_WIDTH,mLineZonesWidth); ObjectSet(nameObj,OBJPROP_RAY,false); ObjectSet(nameObj,OBJPROP_BACK,mBackZones); } else if (aMetki[sd][ii]>2 && aMetki[sd][ii]!=5) { if (aMetki[sd][ii]>5) nameObj=prefics+"Shift "+atextm[ii]+wl+" Zones"; else nameObj=prefics+atextm[ii]+wl+" Zones"; ObjectCreate(nameObj,OBJ_RECTANGLE,0,arrm[i_x][1],arrm[i_x][2],arrm[i_x][3],arrm[i_x][4]); ObjectSet(nameObj,OBJPROP_BACK,mBackZones); } if (writetofile) { FileSeek(handle, 0, SEEK_END); FileWrite(handle, 0, ii, aMetki[sd][ii], DoubleToStr(arrm[i_x][2], Digits), 0, DoubleToStr(arrm[i_x][4], Digits), DoubleToStr(iClose(NULL,Period(),0), Digits), sd, DoubleToStr(pitch_cena[0], Digits), DoubleToStr(pitch_cena[1], Digits), DoubleToStr(pitch_cena[2], Digits)); } } // çàêðûâàåì ôàéë äëÿ çàïèñè ìåòîê if (mWriteToFile) { if (FileSize(handle)<1) {FileClose(handle); FileDelete(file);} else FileClose(handle); } } } //-------------------------------------------------------- // Âûâîä äîïîëíèòåëüíûé öåíîâûõ ìåòîê â âèëàõ Ýíäðþñà. // Êîíåö. //-------------------------------------------------------- //-------------------------------------------------------- // Âûâîä öåíîâûõ ìåòîê (metkaAP) â âèëàõ Ýíäðþñà. Íà÷àëî. //-------------------------------------------------------- /* //======================================================== Âûâîä èíôîðìàöèè â ôàéë extern int mPeriodWriteToFile = 240; extern bool mWriteToFile = true; Ñòàíäàðò âûâîäà èíôîðìàöèè: Íàçâàíèå ôàéëà eurusd_1440_0.csv - â ôàéëå ñîäåðæèòñÿ èíôîðìàöèÿ, ïîëó÷åííàÿ ñ òàéìôðåéìà 1440 ìèíóò (D1) äëÿ èíäèêàòîðà ExtComplekt=0 Âíóòðè ôàéëà èíôîðìàöèÿ ïðåäñòàâëåíà â âèäå: Ðåæèì âûâîäà ïîòåíöèàëüíûõ öåëåâûõ çîí; Íàçâàíèå ìåòêè; ðåæèì âûâîäà ìåòêè; öåíà ëåâîé ìåòêè; öåíà ìåòêè íà íóëåâîì áàðå; öåíà ïðàâîé ìåòêè; çíà÷àíèå öåíû çàêðûòèÿ íóëåâîãî áàðà â ìîìåíò ñíÿòèÿ èíôîðìàööèè; íàèìåíîâàíèå âèë (ñòàòè÷åñêèå èëè äèíàìè÷åñêèå); öåíà ïåðâîé òî÷êè ïðèâÿçêè âèë; öåíà âòîðîé òî÷êè ïðèâÿçêè âèë; öåíà òðåòüåé òî÷êè ïðèâÿçêè âèë; Íàçâàíèå ìåòêè: 1 - mSSL; 2 – mSLM382; 3 - m1_2Mediana; 4 – mSLM618; 5 - mISL382; 6 - mMediana; 7 - mISL618; 8 - mFSL; 9 - mFSLShiffLines; 10 - mCriticalPoints - ýòî çíà÷åíèå ïîìåùàåòñÿ â ïîçèöèè: öåíà ëåâîé ìåòêè; è öåíà ïðàâîé ìåòêè; 11 - mUTL 12 - mLTL 13 – mUWL 14 - mLWL Íîìåðà òàéìôðåéìîâ - äëÿ çàïèñè â íàçâàíèå ôàéëà: m1 - 1 m5 - 5 m15 - 15 m30 - 30 h1 - 60 h4 - 240 d1 - 1440 w1 - 10080 mn - 43200 è òàê äàëåå. íàèìåíîâàíèå âèë (ñòàòè÷åñêèå èëè äèíàìè÷åñêèå): ñòàòè÷åñêèå - 0 äèíàìè÷åñêèå - 1 //======================================================== Îïðåäåëåíèå òèïà âûâîäèìûõ ìåòîê mSelectVariantsPRZ = 0 - âûâîäÿòñÿ Ìåòêè "âíóòðè" òåêóùèõ (îäèíî÷íûõ) âèë > 0 - âûâîäÿòñÿ Ìåòêè ïðè ïåðåñå÷åíèè òåêóùèõ (áàçîâûõ) âèë ñ âíåøíèìè âèëàìè = 1 - ìåòêè ïåðåñå÷åíèÿ SSL = 2 - ìåòêè ïåðåñå÷åíèÿ ìåäèàíû = 3 - ìåòêè ïåðåñå÷åíèÿ FSL = 4 - çîíà ïåðåñå÷åíèÿ êàíàëà ìåäèàíû = 5 - çîíà ïåðåñå÷åíèÿ êàíàëà âèë = 6 - ìåòêè ïåðåñå÷åíèÿ 1/2 ìåäèàíû = 7 - çîíà ïåðåñå÷åíèÿ êàíàëà 1/2 ìåäèàíû = 8 - çîíà ïåðåñå÷åíèÿ êàíàëà ëèíèé Øèôôà = 9 - ìåòêè ïåðåñå÷åíèÿ UTL mTypeBasiclAP - âûáîð òèïà áàçîâûõ âèë = 0 - ñòàòè÷åñêèå âèëû èç òåêóùåãî êîìïëåêòà = 1 - äèíàìè÷åñêèå âèëû èç òåêóùåãî êîìïëåêòà mTypeExternalAP - âûáîð òèïà âíåøíèõ âèë = 0 - äèíàìè÷åñêèå èëè ñòàòè÷åñêèå âèëû òåêóùåãî êîìïëåêòà (ïðîòèâîïîëîæíûå áàçîâûì) = 1 - ñîõðàíåííûå âèëû èç òåêóùåãî êîìïëåêòà = 2 - ëþáûå âèëû èç òåêóùåãî êîìïëåêòà = 3 - ñòàòè÷åñêèå âèëû èç äðóãèõ êîìïëåêòîâ ZUP ñ òåêóùåãî ãðàôèêà = 4 - äèíàìè÷åñêèå âèëû èç äðóãèõ êîìïëåêòîâ ZUP ñ òåêóùåãî ãðàôèêà = 5 - ëþáûå âèëû èç äðóãèõ êîìïëåêòîâ ZUP ñ òåêóùåãî ãðàôèêà = 6 - âèëû ñ òåêóùåãî ãðàôèêà, âûâåäåííûå âðó÷íóþ, íå ñ ïîìîùüþ ZUP = 7 - ëþáûå âíåøíèå âèëû mExternalHandAP - çàäàíèå ïðîðèñîâêè èíñòðóìåíòîâ âèë, âûâåäåííûõ âðó÷íóþ, ïðè çàäàíèè âûâîäà ìåòîê ïðè ïåðåñå÷åíèè ñ äàííûìè âèëàìè = 0 - âûâîä ìåòîê òîëüêî ïðè ïåðåñå÷åíèè ñ ìåäèàíîé è SSL/FSL äàííûõ âèë = 1 - ïðîðèñîâêà ëèíèé èíñòðóìåíòîâ âèë, ñ êîòîðûìè çàäàåòñÿ âûâîä ìåòîê = 2 - âûâîä òîëüêî ìåòîê áåç ïðîðèñîâêè ñàìèõ èíñòðóìåíòîâ âíåøíèõ âèë Ñèñòåìà íàèìåíîâàíèé ìåòîê Ìåòêè "âíóòðè" òåêóùèõ (îäèíî÷íûõ) âèë prefics="m#"+ExtComplekt+"_"+"s "; prefics="m#"+ExtComplekt+"_"+"d "; ìåòêè ó òî÷åê ïðèâÿçêè âèë Ýíäðþñà "point 1 AP" "point 2 AP" "point 3 AP" ìåòêè ïðè ïåðåñå÷åíèè 50%-é ìåäèàíû ñ ISL 38.2 è íà÷àëüíîé ñèãíàëüíîé ëèíèåé "50% Mediana x SSL" "50% Mediana x ISL 38.2" ìåòêè ïðè ïåðåñå÷åíèè íóëåâîãî áàðà 50%-é ìåäèàíîé âèë Ýíäðþñà "50% Mediana x 0-bar" "50% Mediana left 0-bar" "50% Mediana right 0-bar" ìåòêè íà SLM382 "SLM 38.2 x 0-bar" "SLM 38.2 left 0-bar" "SLM 38.2 right 0-bar" "Shift SLM 38.2 Zones" "SLM 38.2 Zones" ìåòêè íà SLM618 "SLM 61.8 x 0-bar" "SLM 61.8 left 0-bar" "SLM 61.8 right 0-bar" "Shift SLM 61.8 Zones" "SLM 61.8 Zones" ìåòêè ïðè ïåðåñå÷åíèè íóëåâîãî áàðà ëèíèåé SSL "SSL x 0-bar" "SSL left 0-bar" "SSL right 0-bar" "Shift SSL Zones" "SSL Zones" ìåòêè ïðè ïåðåñå÷åíèè íóëåâîãî áàðà ëèíèåé FSL "FSL x 0-bar" "FSL left 0-bar" "FSL right 0-bar" "Shift FSL Zones" "FSL Zones" ìåòêè ïðè ïåðåñå÷åíèè íóëåâîãî áàðà ìåäèàíîé âèë Ýíäðþñà "Mediana x 0-bar" "Mediana left 0-bar" "Mediana right 0-bar" "Shift Mediana Zones" "Mediana Zones" ìåòêè ïðè ïåðåñå÷åíèè íóëåâîãî áàðà ëèíèåé ISL 38.2 "ISL 38.2 x 0-bar" "ISL 38.2 left 0-bar" "ISL 38.2 right 0-bar" "Shift ISL 38.2 Zones" "ISL 38.2 Zones" ìåòêè ïðè ïåðåñå÷åíèè íóëåâîãî áàðà ëèíèåé ISL 61.8 "ISL 61.8 x 0-bar" "ISL 61.8 left 0-bar" "ISL 61.8 right 0-bar" "Shift ISL 61.8 Zones" "ISL 61.8 Zones" ìåòêè ïðè ïåðåñå÷åíèè íóëåâîãî áàðà ïðåäóïðåæäàþùèìè ëèíèÿìè LWL è/èëè UWL ñòàòè÷åêèõ âèë Ýíäðþñà ObjectGetFiboDescription(nameObj,k), ãäå nameObj=nameLWL; ObjectGetFiboDescription(nameObj,k)+" left 0-bar" ObjectGetFiboDescription(nameObj,k)+" right 0-bar" ObjectGetFiboDescription(nameObj,k)+" Shift Zones" ObjectGetFiboDescription(nameObj,k)+" Zones" ObjectGetFiboDescription(nameObj,k), ãäå nameObj=nameUWL; ObjectGetFiboDescription(nameObj,k)+" left 0-bar" ObjectGetFiboDescription(nameObj,k)+" right 0-bar" ObjectGetFiboDescription(nameObj,k)+" Shift Zones" ObjectGetFiboDescription(nameObj,k)+" Zones" ìåòêè ïðè ïåðåñå÷åíèè íóëåâîãî áàðà êîíòðîëüíûìè ëèíèÿìè LTL è/èëè UTL ñòàòè÷åêèõ âèë Ýíäðþñà "LTL x 0-bar" "LTL left 0-bar" "LTL right 0-bar" "Shift LTL Zones" "LTL Zones" "UTL x 0-bar" "UTL left 0-bar" "UTL right 0-bar" "Shift UTL Zones" "UTL Zones" Ìåòêè ìåæäó òåêóùèìè âèëàìè è äðóãèìè âèëàìè, ïðèñóòñòâóþùèìè íà ãðàôèêå Ýòèõ ìåòîê ìíîãî. Èìåíà ñîñòàâíûå. Ïåðå÷èñëèòü èìåíà ñëîæíî. Îíè ãåíåðèðóþòñÿ àâòîìàòè÷åñêè. -- â ïðåôèêñ äîáàâëÿåòñÿ +"_"+"s ""+ExtComplekt - äëÿ ñòàòè÷åñêèõ âíåøíèõ âèë +"_"+"d ""+ExtComplekt - äëÿ äèíàìè÷åñêèõ âíåøíèõ âèë +"_"+"s ""+ExtComplekt - äëÿ ñîõðàíåííûõ âíåøíèõ âèë - + save prefics="m#"+ExtComplekt+"_"+"s"; prefics="m#"+ExtComplekt+"_"+"d"; aMetki[sd][0]=0; aMetki[sd][1]=mSSL; aMetki[sd][2]=mSLM; aMetki[sd][3]=m1_2Mediana; aMetki[sd][4]=mSLM; aMetki[sd][5]=mISL382; aMetki[sd][6]=mMediana; aMetki[sd][7]=mISL618; aMetki[sd][8]=mFSL; aMetki[sd][9]=mFSLShiffLines; aMetki[sd][10]=mCriticalPoints; aMetki[sd][11]=mUTL; aMetki[sd][12]=mLTL; aMetki[sd][13]=mUWL; aMetki[sd][14]=mLWL; */ void _metkaAP(double& arrm[][], int sd, bool mAuto, int VariantsPRZ) // sd - 0 - îáðàáàòûâàþòñÿ ñòàòè÷åñêèå âèëû, 1 - îáðàáàòûâàþòñÿ äèíàìè÷åñêèå âèëû { int pitch_time[]={0,0,0}; double pitch_cena[]={0,0,0}; double aUWL[], aLWL[]; int i,j,j1,k,m,n, a1=0,b1=0,c1=0,m12, x=0, y=0, z=0, symb; string prefics="", str05median="", strSLM382="", strSLM618="", nameFibo=""; string arrName[]; // ìàññèâ äëÿ õðàíåíèÿ íàèìåíîâàíèé âèë Ýíäðþñà double tangensAP=0, tangensRL=0, tangens05median=0, wr, tangensUTL=0, tangensLTL=0, arrRL[], tangens=0; double cena1, cena2, cenaRL, X, Y, W, cenaUWL, cenaLWL, h=0, delta, rl1, rl2, hAP, hAP1_2mediana, bazaAP, ret, retISL, xISL=0, xret=0; // m382=2-phi, m618=phi-1; datetime time1, time2; bool updn; // ïåðåìåííûå äëÿ ôîðìèðîâàíèÿ ôàéëà CSV string file=""; string tmp="", str1="", str2="", str3="", strUWL="", strLWL=""; int handle=-1; bool writetofile=false; string _nameUWL="", _nameLWL="", _nameUTL="", _nameLTL=""; bool exitSL = false; // ôëàã äëÿ ðàáîòû ïàðàìåòðà mExitFSL_SSL if (sd==0) { _nameUWL=nameUWL; _nameLWL=nameLWL; _nameUTL=nameUTL; _nameLTL=nameLTL; } else { _nameUWL=nameUWLd; _nameLWL=nameLWLd; _nameUTL=nameUTLd; _nameLTL=nameLTLd; } nameObj=""; if (sd==0) { if (ExtCustomStaticAP) nameObj="pitchforkS" + ExtComplekt+"_APm_"; else nameObj="pitchforkS" + ExtComplekt+"_"; prefics="m#"+ExtComplekt+"_"+"s "; //îñíîâà ïðåôèêñà str05median="pmedianaS"; } else if (sd==1) { nameObj="pitchforkD" + ExtComplekt+"_"; prefics="m#"+ExtComplekt+"_"+"d "; str05median="pmedianaD"; } delete_objects6(sd); // îòêðûâàåì ôàéë äëÿ çàïèñè ìåòîê if (sd==0) file="\\Price Label S\\"; if (sd==1) file="\\Price Label D\\"; if (mWriteToFile) { if (mPeriod0) { tmp="_0_"; } else { if (SlavePitchfork) tmp="_"+StringSubstr(""+ExtComplekt,StringLen(""+ExtComplekt)-1)+"_"; else { j=ObjectsTotal(); for (n=0; n=0) { SlavePitchfork = true; tmp="_"+StringSubstr(""+ExtComplekt,StringLen(""+ExtComplekt)-1)+"_"; break; } } } } } writetofile=true; if (ExtIndicator==6 && GrossPeriod==Period()) file=file+Symbol()+"_"+GrossPeriod+tmp+ExtComplekt+".csv"; else file=file+Symbol()+"_"+Period()+tmp+ExtComplekt+".csv"; handle=FileOpen(file,FILE_CSV|FILE_WRITE,';'); } } // îïðåäåëÿåì âðåìÿ è öåíó òî÷åê, ê êîòîðûì ïðèâÿçàíû (áàçîâûå) âèëû Ýíäðþñà pitch_time[0]=ObjectGet(nameObj,OBJPROP_TIME1); pitch_cena[0]=ObjectGet(nameObj,OBJPROP_PRICE1); pitch_time[1]=ObjectGet(nameObj,OBJPROP_TIME2); pitch_cena[1]=ObjectGet(nameObj,OBJPROP_PRICE2); pitch_time[2]=ObjectGet(nameObj,OBJPROP_TIME3); pitch_cena[2]=ObjectGet(nameObj,OBJPROP_PRICE3); // îïðåäåëÿåì íîìåðà áàðîâ, ê êîòîðûì ïðèâÿçàíû (áàçîâûå) âèëû Ýíäðþñà a1=iBarShift(NULL,Period(),pitch_time[0],false); b1=iBarShift(NULL,Period(),pitch_time[1],false); c1=iBarShift(NULL,Period(),pitch_time[2],false); // äîïóñêàåì, ÷òî íå èñïîëüçóþòñÿ âèëû, ó êîòîðûõ 2 è 3 òî÷êè ïðèâÿçêè íàõîäÿòñÿ íà îäíîì áàðå, ò.å. (b!=ñ). if (b1-c1==0 || a1==0) { if (mWriteToFile) { if (FileSize(handle)<1) {FileClose(handle); FileDelete(file);} else FileClose(handle); } return; } // îáíîâëÿåì ôëàãè if (!(aPointAP[sd][0]==pitch_time[0] && aPointAP[sd][1]==pitch_cena[0] && aPointAP[sd][2]==pitch_time[1] && aPointAP[sd][3]==pitch_cena[1] && aPointAP[sd][4]==pitch_time[2] && aPointAP[sd][5]==pitch_cena[2])) { aPointAP[sd][0]=pitch_time[0]; aPointAP[sd][1]=pitch_cena[0]; aPointAP[sd][2]=pitch_time[1]; aPointAP[sd][3]=pitch_cena[1]; aPointAP[sd][4]=pitch_time[2]; aPointAP[sd][5]=pitch_cena[2]; aPointAP[sd][6]=0; aPointAP[sd][7]=0; // if (mAuto) z=1; // äîáàëÿåì ñòðîêó äëÿ mCriticalPoints â àâòîìàòè÷åñêîì ðåæèìå âûâîäà ìåòîê if (VariantsPRZ==0) { if (sd==0) { if (ExtUWL) x=ObjectGet(_nameUWL,OBJPROP_FIBOLEVELS); if (ExtLWL) y=ObjectGet(_nameLWL,OBJPROP_FIBOLEVELS); } if (ExtFiboFreePitchfork || ExtFiboType==2) { strUWL=ExtFiboFreeUWL; strLWL=ExtFiboFreeLWL; } else { strUWL="0.146,0.236,0.382,0.5,0.618,0.764,0.854,1,1.618,2.0,2.618,4.236"; strLWL=strUWL; } if (mAuto && (x==0 || y==0)) { if (VariantsPRZ==0 && sd==0) { if (!ExtUWL) ObjectDelete(_nameUWL); if (!ExtLWL) ObjectDelete(_nameLWL); if (!ExtUTL) ObjectDelete(_nameUTL); if (!ExtLTL) ObjectDelete(_nameLTL); } if (VariantsPRZ==0 && sd==1) { ObjectDelete(_nameUWL); ObjectDelete(_nameLWL); ObjectDelete(_nameUTL); ObjectDelete(_nameLTL); } if (ExtFiboFreePitchfork || ExtFiboType==2) { x=quantityFibo(ExtFiboFreeUWL)+1; y=quantityFibo(ExtFiboFreeLWL)+1; } else { x=12; y=x; } } if (ArrayRange(arrm,0)!=11+x+y+z) ArrayResize(arrm,11+x+y+z); ArrayResize(aUWL,x); for (i=0;i=0) strUWL=StringSubstr(strUWL,k+1); } ArrayResize(aLWL,y); for (i=0;i=0) strLWL=StringSubstr(strLWL,k+1); } } } if (VariantsPRZ==0 && !mSaveWL_TL) { if (mAuto && sd==0) { if (!ExtUWL) ObjectDelete(_nameUWL); if (!ExtLWL) ObjectDelete(_nameLWL); if (!ExtUTL) ObjectDelete(_nameUTL); if (!ExtLTL) ObjectDelete(_nameLTL); } if (VariantsPRZ==0 && sd==1) { ObjectDelete(_nameUWL); ObjectDelete(_nameLWL); ObjectDelete(_nameUTL); ObjectDelete(_nameLTL); } } ArrayInitialize(arrm,0); // îïðåäåëÿåì òàíãåíñû (íàêëîí ëèíèé) è áàçû if ((a1-(c1+b1)/2.0)==0) return; if (a1-c1==0) return; if (aPointAP[sd][7]==0) { // òàíãåíñ óãëà íàêëîíà âèë Ýíäðþñà tangensAP=((pitch_cena[2]+pitch_cena[1])/2-pitch_cena[0])/(a1-(c1+b1)/2.0); atg[sd][0]=tangensAP; // òàíãåíñ óãëà íàêëîíà ëèíèé ðåàêöèè âèë Ýíäðþñà tangensRL=(pitch_cena[2]-pitch_cena[1])/(b1-c1); atg[sd][1]=tangensRL; // òàíãåíñ óãëà íàêëîíà 1/2 ìåäèàíû âèë Ýíäðþñà if (ObjectFind(str05median+ExtComplekt+"_")>=0) { tangens05median=(pitch_cena[2]-pitch_cena[0])/(a1-c1); } atg[sd][2]=tangens05median; if (pitch_cena[1]>pitch_cena[2]) { tangensUTL=(pitch_cena[1]-pitch_cena[0])/(a1-b1); tangensLTL=(pitch_cena[2]-pitch_cena[0])/(a1-c1); } else { tangensUTL=(pitch_cena[2]-pitch_cena[0])/(a1-c1); tangensLTL=(pitch_cena[1]-pitch_cena[0])/(a1-b1); } atg[sd][3]=tangensUTL; atg[sd][4]=tangensLTL; // îïðåäåëÿåì ðàññòîÿíèå ïî âåðòèêàëè îò SSL äî FSL - áàçà ïî âûñîòå âèë Ýíäðþñà hAP=pitch_cena[1]+(b1-c1)*tangensAP-pitch_cena[2]; atg[sd][5]=hAP; // îïðåäåëÿåì ðàññòîÿíèå ïî âåðòèêàëè îò SSL äî FSL - áàçà ïî âûñîòå âèë ëèíèé Øèôôà hAP1_2mediana=pitch_cena[1]-(pitch_cena[2]-tangens05median*(b1-c1)); atg[sd][6]=hAP1_2mediana; // îïðåäåëÿåì áàçó äëÿ âû÷èñëåíèÿ ëèíèé ðåàêöèè RL - áàçà ïî âðåìåíè bazaAP=a1-(b1+c1)/2.0; atg[sd][7]=bazaAP; } else { // òàíãåíñ óãëà íàêëîíà âèë Ýíäðþñà tangensAP=atg[sd][0]; // òàíãåíñ óãëà íàêëîíà ëèíèé ðåàêöèè âèë Ýíäðþñà tangensRL=atg[sd][1]; // òàíãåíñ óãëà íàêëîíà 1/2 ìåäèàíû âèë Ýíäðþñà tangens05median=atg[sd][2]; tangensUTL=atg[sd][3]; tangensLTL=atg[sd][4]; hAP=atg[sd][5]; hAP1_2mediana=atg[sd][6]; bazaAP=atg[sd][7]; } // ñîçäàíèå ìåòîê ó òî÷åê ïðèâÿçêè âèë Ýíäðþñà if (mPivotPoints) { nameObj=prefics+"point 1 AP"; ObjectCreate(nameObj,OBJ_ARROW,0,pitch_time[0],pitch_cena[0]); ObjectSet(nameObj,OBJPROP_ARROWCODE,SYMBOL_LEFTPRICE); ObjectSet(nameObj,OBJPROP_BACK,mBack); if (!mPivotPointsChangeColor) { if (pitch_cena[0]pitch_cena[2]) updn=true; else updn=false; if (updn) ObjectSet(nameObj,OBJPROP_COLOR, mColorDN); else ObjectSet(nameObj,OBJPROP_COLOR, mColorUP); } nameObj=prefics+"point 2 AP"; ObjectCreate(nameObj,OBJ_ARROW,0,pitch_time[1],pitch_cena[1]); ObjectSet(nameObj,OBJPROP_ARROWCODE,SYMBOL_LEFTPRICE); ObjectSet(nameObj,OBJPROP_BACK,mBack); if (!mPivotPointsChangeColor) { if (updn) ObjectSet(nameObj,OBJPROP_COLOR, mColorUP); else ObjectSet(nameObj,OBJPROP_COLOR, mColorDN); } nameObj=prefics+"point 3 AP"; ObjectCreate(nameObj,OBJ_ARROW,0,pitch_time[2],pitch_cena[2]); ObjectSet(nameObj,OBJPROP_ARROWCODE,SYMBOL_LEFTPRICE); ObjectSet(nameObj,OBJPROP_BACK,mBack); if (!mPivotPointsChangeColor) { if (updn) ObjectSet(nameObj,OBJPROP_COLOR, mColorDN); else ObjectSet(nameObj,OBJPROP_COLOR, mColorUP); } } if (VariantsPRZ==0) { if (sd==0) { RLtoArray (arrRL, "RLineS"+ ExtComplekt+"_", ExtFiboFreeRLStatic); strSLM382="SLM382S"; strSLM618="SLM618S"; } else if (sd==1) { RLtoArray (arrRL, "RLineD"+ ExtComplekt+"_", ExtFiboFreeRLDinamic); strSLM382="SLM382D"; strSLM618="SLM618D"; } j1=ArraySize(arrRL); // îïðåäåëÿåì ïåðåñå÷åíèå ISL è RL â òî÷êå òåêóùåé öåíû ðûíêà if (hAP==0 || bazaAP==0) return; xISL=(hAP-(pitch_cena[1]+tangensAP*b1-iClose(NULL,Period(),0)))/hAP; // óñëîâíàÿ ëèíèÿ ISL xret=(c1+(b1-c1)*xISL)/bazaAP; // óñëîâíàÿ ëèíèÿ RL //--- /* Ñòðóêòóðà ìàññèâà arrm[][10] Ïåðâîå èçìåðåíèå - ñòðÎêè 0 - mSSL 1 – mSLM382 2 - m1_2Mediana 3 – mSLM618 4 - mISL382 5 - mMediana 6 - mISL618 7 - mFSL 8 - mFSLShiffLines 9 - mUTL 10 - mLTL Âòîðîå èçìåðåíèå - ñòîëáöÛ 0 - öåíà êâàíòîâîé ìåòêè íà èíñòðóìåíòå 1 - âðåìÿ ëåâîé òî÷êè çîíû 2 - öåíà ëåâîé òî÷êè çîíû 3 - âðåìÿ ïðàâîé òî÷êè çîíû 4 - öåíà ïðàâîé òî÷êè çîíû 5 - íîìåð èíñòðóìåíòà - ñîîòâåòñòâóåò íîìåðàì äëÿ âûâîäà ìåòîê â ôàéë 1 - mSSL; 2 – mSLM382; 3 - m1_2Mediana; 4 – mSLM618; 5 - mISL382; 6 - mMediana; 7 - mISL618; 8 - mFSL; 9 - mFSLShiffLines; //10 - mCriticalPoints - ýòî çíà÷åíèå ïîìåùàåòñÿ â ïîçèöèè: öåíà ëåâîé ìåòêè; è öåíà ïðàâîé ìåòêè; 11 - mUTL 12 - mLTL //13 – mUWL //14 - mLWL 6 - ñëóæåáíàÿ èíôîðìàöèÿ */ //--- // ñîçäàíèå ìåòîê i=0; // îáíóëÿåì ñ÷åò÷èê ñòðîê ìàññèâà arrm nameObj=str05median+ExtComplekt+"_"; if (ExtPitchforkStatic==2 || ExtPitchforkDinamic==2 || ObjectFind(nameObj)>=0) { // ñîçäàíèå ìåòêè ïðè ïåðåñå÷åíèè 50%-é ìåäèàíû ñ ISL 38.2 è íà÷àëüíîé ñèãíàëüíîé ëèíèåé // mCriticalPoints if (!mAuto && aMetki[sd][10]>0) { if (ObjectFind(nameObj)>=0) { // êîëè÷åñòâî áàðîâ îò òðåòüåé òî÷êè ïðèâÿçêè âèë Ýíäðþñà äî òî÷êè ïåðåñå÷åíèÿ 50%-é ìåäèàíû ñ íà÷àëüíîé ñèãíàëüíîé ëèíèåé if ((tangens05median-tangensAP)==0) return; X=(pitch_cena[2]-ObjectGetValueByShift(nameObj,c1))/(tangens05median-tangensAP); x=X; if (xpitch_cena[2]) { for (k=b1-1;k>=c1;k--) { delta=iHigh(NULL,Period(),k)-(pitch_cena[1]+(b1-k)*tangensRL); if (delta>h) h=delta; } } else { for (k=b1-1;k>=c1;k--) { delta=(pitch_cena[1]+(b1-k)*tangensRL)-iLow(NULL,Period(),k); if (delta>h) h=delta; } } if (sd==0) RZs=h; else RZd=h; } else { if (sd==0) h=RZs; else h=RZd; } nameObj=str05median+ExtComplekt+"_"; // êîëè÷åñòâî áàðîâ îò òðåòüåé òî÷êè ïðèâÿçêè âèë Ýíäðþñà äî òî÷êè ïåðåñå÷åíèÿ 50%-é ìåäèàíû ñ íà÷àëüíîé ñèãíàëüíîé ëèíèåé cena2=ObjectGetValueByShift(nameObj,b1); X=(pitch_cena[0]-cena2+(a1-b1)*tangensAP-(phi-1.5)*(pitch_cena[1]+(b1-c1)*tangensAP-pitch_cena[2]))/(tangens05median-tangensAP); x=X; cena2=cena2+X*tangens05median; if (x<=b1) {time2=iTime(NULL,Period(),b1-x); symb=SYMBOL_LEFTPRICE;} else {if (xh) { } else cena2=0; arrm[i][0]=cena1; arrm[i][1]=time1; arrm[i][2]=cena1; arrm[i][3]=time2; arrm[i][4]=cena2; arrm[i][5]=10; i++; if (cena2>0) arrm[i][0]=cena2; arrm[i][1]=time1; arrm[i][2]=cena1; arrm[i][3]=time2; arrm[i][4]=cena2; arrm[i][5]=10; arrm[i][6]=1; i++; } } // ñîçäàíèå ìåòêè ïðè ïåðåñå÷åíèè íóëåâîãî áàðà 50%-é ìåäèàíîé âèë Ýíäðþñà // m1_2Mediana if (mAuto || aMetki[sd][3]>0) { nameObj=str05median+ExtComplekt+"_"; if (ObjectFind(nameObj)>=0) { cena1=ObjectGetValueByShift(nameObj,0); arrm[i][0]=cena1; arrm[i][5]=3; if (aMetki[sd][3]>1) //if ((m1_2Mediana>1 && sd==0) || (m1_2Mediana_d>1 && sd==1)) { retISL=(cena1 -(pitch_cena[2]+c1*tangensAP))/hAP; if (tangensAP==0) { ret=(c1+retISL*(b1-c1))/bazaAP; } else { if ((tangensAP*bazaAP)==0) return; ret=(cena1-pitch_cena[2]-retISL*(hAP-(b1-c1)*tangensAP))/(tangensAP*bazaAP); } if (!mAuto && aMetki[sd][3]>4 && xISL>retISL) ret=xret; rl1=0; rl2=0; for (m=0;m=ret) { rl2=arrRL[m]; break; } else { rl1=arrRL[m]; } } if (rl2>0) { nameObj=str05median+ExtComplekt+"_"; cenaRL=pitch_cena[1]+bazaAP*rl1*(tangensAP-tangensRL); wr=ObjectGetValueByShift(nameObj,b1); X=(cenaRL-wr)/(tangens05median-tangensRL); x=X; if (tangensAP!=0) cena1=wr+X*tangens05median; else cena1=cenaRL+X*tangensRL; if (x<=b1) time1=iTime(NULL,Period(),b1-x); else time1=iTime(NULL,Period(),0)+(x-b1)*Period()*60; cenaRL=pitch_cena[1]+bazaAP*rl2*(tangensAP-tangensRL); X=(cenaRL-wr)/(tangens05median-tangensRL); x=X; if (x0) { // ñîçäàíèå ìåòîê íà SLM382 nameObj=strSLM382+ExtComplekt+"_"; if (ObjectFind(nameObj)>=0) { cena1=ObjectGetValueByShift(nameObj,0); arrm[i][0]=cena1; arrm[i][5]=2; if (aMetki[sd][2]>1) { retISL=(cena1 -(pitch_cena[2]+c1*tangensAP))/hAP; if (tangensAP==0) ret=(c1+retISL*(b1-c1))/bazaAP; else { if ((tangensAP*bazaAP)==0) return; ret=(cena1-pitch_cena[2]-retISL*(hAP-(b1-c1)*tangensAP))/(tangensAP*bazaAP); } if (!mAuto && aMetki[sd][2]>4 && xISL>retISL) ret=xret; rl1=0; rl2=0; for (m=0;m=ret) { rl2=arrRL[m]; break; } else { rl1=arrRL[m]; } } if (rl2>0) { nameObj=strSLM382+ExtComplekt+"_"; cenaRL=pitch_cena[1]+bazaAP*rl1*(tangensAP-tangensRL); wr=ObjectGetValueByShift(nameObj,c1)-tangens05median*(b1-c1); X=(cenaRL-wr)/(tangens05median-tangensRL); x=X; if (tangensAP!=0) cena1=wr+X*tangens05median; else cena1=cenaRL+X*tangensRL; if (x<=b1) time1=iTime(NULL,Period(),b1-x); else time1=iTime(NULL,Period(),0)+(x-b1)*Period()*60; cenaRL=pitch_cena[1]+bazaAP*rl2*(tangensAP-tangensRL); if ((tangens05median-tangensRL)==0) return; X=(cenaRL-wr)/(tangens05median-tangensRL); x=X; if (x=0) { cena1=ObjectGetValueByShift(nameObj,0); arrm[i][0]=cena1; arrm[i][5]=4; if (aMetki[sd][4]>1) { retISL=(cena1 -(pitch_cena[2]+c1*tangensAP))/hAP; if (tangensAP==0) ret=(c1+retISL*(b1-c1))/bazaAP; else { if ((tangensAP*bazaAP)==0) return; ret=(cena1-pitch_cena[2]-retISL*(hAP-(b1-c1)*tangensAP))/(tangensAP*bazaAP); } if (!mAuto && aMetki[sd][4]>4 && xISL>retISL) ret=xret; rl1=0; rl2=0; for (m=0;m=ret) { rl2=arrRL[m]; break; } else { rl1=arrRL[m]; } } if (rl2>0) { nameObj=strSLM618+ExtComplekt+"_"; cenaRL=pitch_cena[1]+bazaAP*rl1*(tangensAP-tangensRL); wr=ObjectGetValueByShift(nameObj,c1)-tangens05median*(b1-c1); X=(cenaRL-wr)/(tangens05median-tangensRL); x=X; if (tangensAP!=0) cena1=wr+X*tangens05median; else cena1=cenaRL+X*tangensRL; if (x<=b1) time1=iTime(NULL,Period(),b1-x); else time1=iTime(NULL,Period(),0)+(x-b1)*Period()*60; cenaRL=pitch_cena[1]+bazaAP*rl2*(tangensAP-tangensRL); if ((tangens05median-tangensRL)==0) return; X=(cenaRL-wr)/(tangens05median-tangensRL); x=X; if (x0) { if (sd==0) nameObj="FSL Shiff Lines S" + ExtComplekt+"_"; else nameObj="FSL Shiff Lines D" + ExtComplekt+"_"; if (ObjectFind(nameObj)>=0) { cena1=ObjectGetValueByShift(nameObj,0); arrm[i][0]=cena1; arrm[i][5]=9; if (aMetki[sd][9]>1) { retISL=(cena1 -(pitch_cena[2]+c1*tangensAP))/hAP; if (tangensAP==0) ret=(c1+retISL*(b1-c1))/bazaAP; else { if ((tangensAP*bazaAP)==0) return; ret=(cena1-pitch_cena[2]-retISL*(hAP-(b1-c1)*tangensAP))/(tangensAP*bazaAP); } if (!mAuto && aMetki[sd][9]>4 && xISL>retISL) ret=xret; rl1=0; rl2=0; for (m=0;m=ret) { rl2=arrRL[m]; break; } else { rl1=arrRL[m]; } } if (rl2>0) { if (sd==0) nameObj="FSL Shiff Lines S" + ExtComplekt+"_"; else nameObj="FSL Shiff Lines D" + ExtComplekt+"_"; cenaRL=pitch_cena[1]+bazaAP*rl1*(tangensAP-tangensRL); wr=ObjectGetValueByShift(nameObj,c1)-tangens05median*(b1-c1); X=(cenaRL-wr)/(tangens05median-tangensRL); x=X; if (tangensAP!=0) cena1=wr+X*tangens05median; else cena1=cenaRL+X*tangensRL; if (x<=b1) time1=iTime(NULL,Period(),b1-x); else time1=iTime(NULL,Period(),0)+(x-b1)*Period()*60; cenaRL=pitch_cena[1]+bazaAP*rl2*(tangensAP-tangensRL); if ((tangens05median-tangensRL)==0) return; X=(cenaRL-wr)/(tangens05median-tangensRL); x=X; if (x0) { cena1=pitch_cena[2]+c1*tangensAP; arrm[i][0]=cena1; arrm[i][5]=1; if (!mExitFSL_SSL) { if (pitch_cena[1]>pitch_cena[2]) aexitFSL_SSL[0]=cena1; else aexitFSL_SSL[1]=cena1; } if (aMetki[sd][1]>1) { if (mAuto || aMetki[sd][1]<5 || (xISL<=0 && aMetki[sd][1]>4)) { if (tangensAP==0) ret=c1/bazaAP; else { if ((tangensAP*bazaAP)==0) return; ret=(cena1-pitch_cena[2])/(tangensAP*bazaAP); } } else ret=xret; rl1=0; rl2=0; for (m=0;m=ret) { rl2=arrRL[m]; break; } else { rl1=arrRL[m]; } } if (rl2>0) { X=bazaAP*rl1; x=X; cena1=pitch_cena[2]+X*tangensAP; if (x<=c1) time1=iTime(NULL,Period(),c1-x); else time1=iTime(NULL,Period(),0)+(x-c1)*Period()*60; X=bazaAP*rl2; x=X; if (x0) { cena1=pitch_cena[1]+b1*tangensAP; arrm[i][0]=cena1; arrm[i][5]=8; if (!mExitFSL_SSL) { if (pitch_cena[1]>pitch_cena[2]) aexitFSL_SSL[1]=cena1; else aexitFSL_SSL[0]=cena1; } if (aMetki[sd][8]>1) { if (mAuto || aMetki[sd][8]<5 || (xISL<=1 && aMetki[sd][8]>4)) { if (tangensAP==0) ret=b1/bazaAP; else { if ((tangensAP*bazaAP)==0) return; ret=(cena1-pitch_cena[1])/(tangensAP*bazaAP); } } else ret=xret; rl1=0; rl2=0; for (m=0;m=ret) { rl2=arrRL[m]; break; } else { rl1=arrRL[m]; } } if (rl2>0) { X=bazaAP*rl1; x=X; cena1=pitch_cena[1]+X*tangensAP; if (x<=b1) time1=iTime(NULL,Period(),b1-x); else time1=iTime(NULL,Period(),0)+(x-b1)*Period()*60; X=bazaAP*rl2; x=X; if (x0) { cena1=pitch_cena[0]+a1*tangensAP; arrm[i][0]=cena1; arrm[i][5]=6; if (aMetki[sd][6]>1) { if (mAuto || aMetki[sd][6]<5 || (xISL<=0.5 && aMetki[sd][6]>4)) { if (tangensAP==0) ret=a1/bazaAP-1; else { if ((tangensAP*bazaAP)==0) return; ret=(cena1-pitch_cena[0])/(tangensAP*bazaAP)-1; } } else ret=xret; rl1=0; rl2=0; for (m=0;m=ret) { rl2=arrRL[m]; break; } else { rl1=arrRL[m]; } } if (rl2>0) { X=bazaAP*(rl1+1); x=X; cena1=pitch_cena[0]+X*tangensAP; if (x<=a1) time1=iTime(NULL,Period(),a1-x); else time1=iTime(NULL,Period(),0)+(x-a1)*Period()*60; X=bazaAP*(rl2+1); x=X; if (x0) { cena1=pitch_cena[2]+c1*tangensAP+hAP*(2-phi); arrm[i][0]=cena1; arrm[i][5]=5; if (aMetki[sd][5]>1) { if (mAuto || aMetki[sd][5]<5 || (xISL<=(2-phi) && aMetki[sd][5]>4)) { if (tangensAP==0) ret=(c1+(2-phi)*(b1-c1))/bazaAP; else { if ((tangensAP*bazaAP)==0) return; ret=(cena1-pitch_cena[2]-(2-phi)*(hAP-(b1-c1)*tangensAP))/(tangensAP*bazaAP); } } else ret=xret; rl1=0; rl2=0; for (m=0;m=ret) { rl2=arrRL[m]; break; } else { rl1=arrRL[m]; } } if (rl2>0) { X=bazaAP*rl1; x=X; cena1=pitch_cena[2]+X*tangensAP+(2-phi)*(hAP-(b1-c1)*tangensAP); if (x<=b1-(b1-c1)*(phi-1)) time1=iTime(NULL,Period(),b1-(b1-c1)*(phi-1)-x); else time1=iTime(NULL,Period(),0)+(x-b1+(b1-c1)*(phi-1))*Period()*60; X=bazaAP*rl2; x=X; if (x0) { cena1=pitch_cena[2]+c1*tangensAP+hAP*(phi-1); arrm[i][0]=cena1; arrm[i][5]=7; if (aMetki[sd][7]>1) { if (mAuto || aMetki[sd][7]<5 || (xISL<=(phi-1) && aMetki[sd][7]>4)) { if (tangensAP==0) ret=(c1+(phi-1)*(b1-c1))/bazaAP; else { if ((tangensAP*bazaAP)==0) return; ret=(cena1-pitch_cena[2]-(phi-1)*(hAP-(b1-c1)*tangensAP))/(tangensAP*bazaAP); } } else ret=xret; rl1=0; rl2=0; for (m=0;m=ret) { rl2=arrRL[m]; break; } else { rl1=arrRL[m]; } } if (rl2>0) { X=bazaAP*rl1; x=X; cena1=pitch_cena[2]+X*tangensAP+(phi-1)*(hAP-(b1-c1)*tangensAP); if (x<=b1-(b1-c1)*(2-phi)) time1=iTime(NULL,Period(),b1-(b1-c1)*(2-phi)-x); else time1=iTime(NULL,Period(),0)+(x-b1+(b1-c1)*(2-phi))*Period()*60; X=bazaAP*rl2; x=X; if (x0 || aMetki[sd][14]>0) { if (pitch_cena[1]>pitch_cena[2]) { cenaUWL=pitch_cena[1]; cenaLWL=pitch_cena[2]; } else { cenaUWL=pitch_cena[2]; cenaLWL=pitch_cena[1]; } if (mAuto || ExtUWL) { nameObj=nameUWL; if (mAuto || ObjectFind(nameObj)>=0) { // ìàêñèìàëüíîå è ìèíèìàëüíîå çíà÷åíèå öåíû ìåòêè if (pitch_cena[1]>pitch_cena[2]) { X=pitch_cena[1]+b1*tangensUTL; Y=pitch_cena[1]+b1*tangensAP; } else { X=pitch_cena[2]+c1*tangensUTL; Y=pitch_cena[2]+c1*tangensAP; } x=ArraySize(aUWL); for (k=0;k1) { retISL=(cena1 -(pitch_cena[2]+c1*tangensAP))/hAP; if (!mAuto && aMetki[sd][13]>4 && xISL>retISL) ret=xret; else { if (tangensAP==0) ret=(c1+retISL*(b1-c1))/bazaAP; else { if ((tangensAP*bazaAP)==0) return; ret=(cena1-pitch_cena[2]-retISL*(hAP-(b1-c1)*tangensAP))/(tangensAP*bazaAP); } } rl1=0; rl2=0; for (m=0;m=ret) { rl2=arrRL[m]; break; } else { rl1=arrRL[m]; } } arrm[i][0]=cena1; arrm[i][5]=13; arrm[i][6]=aUWL[k]; W=bazaAP*rl2; // x=X; if (x=0) { // ìàêñèìàëüíîå è ìèíèìàëüíîå çíà÷åíèå öåíû ìåòêè if (pitch_cena[1]>pitch_cena[2]) { Y=pitch_cena[2]+c1*tangensAP; X=pitch_cena[2]+c1*tangensLTL; } else { Y=pitch_cena[1]+b1*tangensAP; X=pitch_cena[1]+b1*tangensLTL; } x=ArraySize(aLWL); for (k=0;k=X) { arrm[i][0]=cena1; arrm[i][5]=14; arrm[i][6]=aLWL[k]; } else { break; } } else //if (mLWL>1) { retISL=(cena1 -(pitch_cena[2]+c1*tangensAP))/hAP; if (!mAuto && aMetki[sd][14]>4 && xISL>retISL) ret=xret; else { if (tangensAP==0) ret=(c1+retISL*(b1-c1))/bazaAP; else { if ((tangensAP*bazaAP)==0) return; ret=(cena1-pitch_cena[2]-retISL*(hAP-(b1-c1)*tangensAP))/(tangensAP*bazaAP); } } rl1=0; rl2=0; for (m=0;m=ret) { rl2=arrRL[m]; break; } else { rl1=arrRL[m]; } } arrm[i][0]=cena1; arrm[i][5]=14; arrm[i][6]=aLWL[k]; W=bazaAP*rl2; // x=X; if (xcena2) continue; if (W<=c1+(b1-c1)*retISL) time2=iTime(NULL,Period(),c1+(b1-c1)*retISL-W); else time2=iTime(NULL,Period(),0)+(W-c1-(b1-c1)*retISL)*Period()*60; W=bazaAP*rl1; cena1=pitch_cena[2]+W*tangensAP+retISL*(hAP-(b1-c1)*tangensAP); if (W<=c1+(b1-c1)*retISL) time1=iTime(NULL,Period(),c1+(b1-c1)*retISL-W); else time1=iTime(NULL,Period(),0)+(W-c1-(b1-c1)*retISL)*Period()*60; arrm[i][1]=time1; arrm[i][2]=cena1; arrm[i][3]=time2; arrm[i][4]=cena2; } i++; } } } } // ñîçäàíèå ìåòêè ïðè ïåðåñå÷åíèè íóëåâîãî áàðà êîíòðîëüíûìè ëèíèÿìè LTL è/èëè UTL ñòàòè÷åêèõ âèë Ýíäðþñà // mUTL, mLTL if (mAuto || aMetki[sd][11]>0 || aMetki[sd][12]>0) { if (mAuto || ExtUTL) { nameObj=_nameUTL; if (mAuto || ObjectFind(nameObj)>=0) { cena1=pitch_cena[0]+tangensUTL*a1; arrm[i][0]=cena1; arrm[i][5]=11; if (mAuto || aMetki[sd][11]>1) { retISL=(cena1 -(pitch_cena[2]+c1*tangensAP))/hAP; if (!mAuto && aMetki[sd][11]>4 && xISL>retISL) ret=xret; else { if (tangensAP==0) ret=(c1+retISL*(b1-c1))/bazaAP; else { if ((tangensAP*bazaAP)==0) return; ret=(cena1-pitch_cena[2]-retISL*(hAP-(b1-c1)*tangensAP))/(tangensAP*bazaAP); } } rl1=0; rl2=0; for (m=0;m=ret) { rl2=arrRL[m]; break; } else { rl1=arrRL[m]; } } if (rl2>0) { if (pitch_cena[1]>pitch_cena[2]) { X=pitch_cena[1]; } else { X=pitch_cena[2]; } if ((tangensRL-tangensUTL)!=0 && tangensUTL!=0) { cena1=X+bazaAP*rl1*tangensUTL*(tangensRL-tangensAP)/(tangensRL-tangensUTL); x=a1-MathCeil((cena1-pitch_cena[0])/tangensUTL); if (x>0) time1=iTime(Symbol(),Period(),x); else time1=iTime(Symbol(),Period(),0)-x*Period()*60; cena2=X+bazaAP*rl2*tangensUTL*(tangensRL-tangensAP)/(tangensRL-tangensUTL); x=a1-MathCeil((cena2-pitch_cena[0])/tangensUTL); if (x>0) time2=iTime(Symbol(),Period(),x); else time2=iTime(Symbol(),Period(),0)-x*Period()*60; arrm[i][1]=time1; arrm[i][2]=cena1; arrm[i][3]=time2; arrm[i][4]=cena2; } } } i++; } } if (mAuto || ExtLTL) { nameObj=_nameLTL; if (mAuto || ObjectFind(nameObj)>=0) { cena1=pitch_cena[0]+tangensLTL*a1; arrm[i][0]=cena1; arrm[i][5]=12; if (mAuto || aMetki[sd][12]>1) { retISL=(cena1 -(pitch_cena[2]+c1*tangensAP))/hAP; if (!mAuto && aMetki[sd][12]>4 && xISL>retISL) ret=xret; else { if (tangensAP==0) ret=(c1+retISL*(b1-c1))/bazaAP; else { if ((tangensAP*bazaAP)==0) return; ret=(cena1-pitch_cena[2]-retISL*(hAP-(b1-c1)*tangensAP))/(tangensAP*bazaAP); } } rl1=0; rl2=0; for (m=0;m=ret) { rl2=arrRL[m]; break; } else { rl1=arrRL[m]; } } if (rl2>0) { if (pitch_cena[2]>pitch_cena[1]) { X=pitch_cena[1]; } else { X=pitch_cena[2]; } if ((tangensRL-tangensLTL)!=0 && tangensLTL!=0) { cena1=X+bazaAP*rl1*tangensLTL*(tangensRL-tangensAP)/(tangensRL-tangensLTL); x=a1-MathCeil((cena1-pitch_cena[0])/tangensLTL); if (x>0) time1=iTime(Symbol(),Period(),x); else time1=iTime(Symbol(),Period(),0)-x*Period()*60; cena2=X+bazaAP*rl2*tangensLTL*(tangensRL-tangensAP)/(tangensRL-tangensLTL); x=a1-MathCeil((cena2-pitch_cena[0])/tangensLTL); if (x>0) time2=iTime(Symbol(),Period(),x); else time2=iTime(Symbol(),Period(),0)-x*Period()*60; arrm[i][1]=time1; arrm[i][2]=cena1; arrm[i][3]=time2; arrm[i][4]=cena2; } } } } } } } string wl=""; int ii, i_1=0, i_2=ArrayRange(arrm,0)-1; double cl=iClose(NULL,Period(),0), pp; // x - êîëè÷åñòâî ìåòîê ââåðõ îò òåêóùåé öåíû // y - êîëè÷åñòâî ìåòîê âíèç if (mAuto) { exitSL=mExitFSL_SSL || Close[0]>=aexitFSL_SSL[1] || Close[0]<=aexitFSL_SSL[0]; if (aPointAP[sd][3]-aPointAP[sd][1]==0) pp=10; else pp=MathAbs((aPointAP[sd][5]-aPointAP[sd][1])/(aPointAP[sd][3]-aPointAP[sd][1])); if (aPointAP[sd][3]>aPointAP[sd][5]) // âîñõîäÿùèå âèëû - íàïðàâëåíèå ââåðõ { if (aPointAP[sd][5]<=aPointAP[sd][1] && aPointAP[sd][1]=0.854 && pp<=1.146) {x=2; y=2;} // ãîðèçîíòàëüíûå else if ((aPointAP[sd][5]1.146) || aPointAP[sd][1]>aPointAP[sd][3]) {x=3; y=2;} // êîñûå } else if (aPointAP[sd][5]>aPointAP[sd][3]) // íèñõîäÿùèå âèëû - íàïðàâëåíèå âíèç { if (aPointAP[sd][5]>=aPointAP[sd][1] && aPointAP[sd][1]>aPointAP[sd][3] && pp <0.854) {x=2; y=3;} // ðàçâîðîòíûå íèñõîäÿùèå else if (aPointAP[sd][1]>aPointAP[sd][5]) { if (pp<0.854) {x=1; y=3;} // òðåíäîâûå íèñõîäÿùèå else {x=1; y=2;} // êîíå÷íûå íèñõîäÿùèå } else if (aPointAP[sd][5]>aPointAP[sd][1] && aPointAP[sd][1]>aPointAP[sd][3] && pp>=0.854 && pp<=1.146) {x=2; y=2;} // ãîðèçîíòàëüíûå else if ((aPointAP[sd][5]>aPointAP[sd][1] && aPointAP[sd][1]>=aPointAP[sd][3] && pp>1.146) || aPointAP[sd][1]ArrayRange(arrm,0)) i_2=ArrayRange(arrm,0); } else exitSL=true; anum_cena[sd][0]=i_1; anum_cena[sd][1]=i_2-1; for (i=i_1;i10) continue; if (ii==11 && mAuto && ObjectFind(_nameUTL)<0) visibleTL(pitch_cena, pitch_time, 11, sd);// UTL if (ii==12 && mAuto && ObjectFind(_nameLTL)<0) visibleTL(pitch_cena, pitch_time, 12, sd);// LTL if (ii>12) wl=DoubleToStr(arrm[i][6],3); else wl=""; if (ii==13 && (mAuto && ObjectFind(_nameUWL)<0)) // UWL { if (ObjectFind(_nameUTL)<0) visibleTL(pitch_cena, pitch_time, 11, sd);// UTL if (sd==0) { visibleWL(pitch_cena, pitch_time, pitch_cena[0], pitch_time[0], pitch_cena[0]-tangensAP*a1, iTime(Symbol(),Period(),0), 13, sd, "", tangensAP, ExtLinePitchforkS, true); } else { visibleWL(pitch_cena, pitch_time, pitch_cena[0], pitch_time[0], pitch_cena[0]-tangensAP*a1, iTime(Symbol(),Period(),0), 13, sd, "", tangensAP, ExtLinePitchforkD, true); } } if (ii==14 && mAuto && ObjectFind(nameLWL)<0) // LWL { if (ObjectFind(_nameLTL)<0) visibleTL(pitch_cena, pitch_time, 12, sd);// LTL if (sd==0) { visibleWL(pitch_cena, pitch_time, pitch_cena[0], pitch_time[0], pitch_cena[0]-tangensAP*a1, iTime(Symbol(),Period(),0), 14, sd, "", tangensAP, ExtLinePitchforkS, true); } else { visibleWL(pitch_cena, pitch_time, pitch_cena[0], pitch_time[0], pitch_cena[0]-tangensAP*a1, iTime(Symbol(),Period(),0), 14, sd, "", tangensAP, ExtLinePitchforkD, true); } } if (aMetki[sd][ii]==1 || (mAuto &&aMetki[sd][ii]==0)) { nameObj=prefics+atextm[ii]+wl+" x 0-bar"; ObjectCreate(nameObj,OBJ_ARROW,0,iTime(NULL,Period(),0),arrm[i][0]); ObjectSet(nameObj,OBJPROP_ARROWCODE,SYMBOL_RIGHTPRICE); ObjectSet(nameObj,OBJPROP_BACK,mBack); if (writetofile) { FileSeek(handle, 0, SEEK_END); FileWrite(handle, 0, ii, aMetki[sd][ii], 0, DoubleToStr(arrm[i][0], Digits), 0, DoubleToStr(iClose(NULL,Period(),0), Digits), sd, DoubleToStr(pitch_cena[0], Digits), DoubleToStr(pitch_cena[1], Digits), DoubleToStr(pitch_cena[2], Digits)); } } else if (aMetki[sd][ii]>1 && arrm[i][4]>0) { if (aMetki[sd][ii]!=3 && aMetki[sd][ii]!=6 && aMetki[sd][ii]!=8) { nameObj=prefics+atextm[ii]+wl+" left 0-bar"; ObjectCreate(nameObj,OBJ_ARROW,0,arrm[i][1],arrm[i][2]); ObjectSet(nameObj,OBJPROP_ARROWCODE,SYMBOL_LEFTPRICE); ObjectSet(nameObj,OBJPROP_BACK,mBack); nameObj=prefics+atextm[ii]+wl+" right 0-bar"; ObjectCreate(nameObj,OBJ_ARROW,0,arrm[i][3],arrm[i][4]); ObjectSet(nameObj,OBJPROP_ARROWCODE,SYMBOL_RIGHTPRICE); ObjectSet(nameObj,OBJPROP_BACK,mBack); } if (aMetki[sd][ii]>7) { nameObj=prefics+atextm[ii]+wl+" line Zones"; ObjectCreate(nameObj,OBJ_TREND,0,arrm[i][1],arrm[i][2],arrm[i][3],arrm[i][4]); ObjectSet(nameObj,OBJPROP_WIDTH,mLineZonesWidth); ObjectSet(nameObj,OBJPROP_RAY,false); ObjectSet(nameObj,OBJPROP_BACK,mBackZones); } else if (aMetki[sd][ii]>2 && aMetki[sd][ii]!=5) { if (aMetki[sd][ii]>5) nameObj=prefics+"Shift "+atextm[ii]+wl+" Zones"; else nameObj=prefics+atextm[ii]+wl+" Zones"; ObjectCreate(nameObj,OBJ_RECTANGLE,0,arrm[i][1],arrm[i][2],arrm[i][3],arrm[i][4]); ObjectSet(nameObj,OBJPROP_BACK,mBackZones); } if (writetofile) { FileSeek(handle, 0, SEEK_END); FileWrite(handle, 0, ii, aMetki[sd][ii], DoubleToStr(arrm[i][2], Digits), 0, DoubleToStr(arrm[i][4], Digits), DoubleToStr(iClose(NULL,Period(),0), Digits), sd, DoubleToStr(pitch_cena[0], Digits), DoubleToStr(pitch_cena[1], Digits), DoubleToStr(pitch_cena[2], Digits)); } } } } } if(VariantsPRZ==1) { checkAP (arrName); if (ArraySize(arrName)==0) { if (mWriteToFile) { if (FileSize(handle)<1) {FileClose(handle); FileDelete(file);} else FileClose(handle); } return; } str1=DoubleToStr(pitch_cena[0], Digits); str2=DoubleToStr(pitch_cena[1], Digits); str3=DoubleToStr(pitch_cena[2], Digits); /* mSelectVariantsPRZ = 1 - ìåòêè ïåðåñå÷åíèÿ SSL = 2 - ìåòêè ïåðåñå÷åíèÿ ìåäèàíû = 3 - ìåòêè ïåðåñå÷åíèÿ FSL = 4 - çîíà ïåðåñå÷åíèÿ êàíàëà ìåäèàíû = 5 - çîíà ïåðåñå÷åíèÿ êàíàëà âèë = 6 - ìåòêè ïåðåñå÷åíèÿ 1/2 ìåäèàíû = 7 - çîíà ïåðåñå÷åíèÿ êàíàëà 1/2 ìåäèàíû = 8 - çîíà ïåðåñå÷åíèÿ êàíàëà ëèíèé Øèôôà = 9 - ìåòêè ïåðåñå÷åíèÿ UTL, LTL */ if (mSelectVariantsPRZ<6) { if (mSelectVariantsPRZ==1) // ìåòêè ïåðåñå÷åíèÿ SSL { externalAP (c1, pitch_cena[2], 0, 0, tangensAP, prefics+"SSL x ", "", "", arrName, handle, str1 , str2, str3, sd); } else if (mSelectVariantsPRZ==2) // ìåòêè ïåðåñå÷åíèÿ ìåäèàíû { externalAP (a1, pitch_cena[0], 0, 0, tangensAP, prefics+"Mediana x ", "", "", arrName, handle, str1 , str2, str3, sd); } else if (mSelectVariantsPRZ==3) // ìåòêè ïåðåñå÷åíèÿ FSL { externalAP (b1, pitch_cena[1], 0, 0, tangensAP, prefics+"FSL x ", "", "", arrName, handle, str1 , str2, str3, sd); } else if (mSelectVariantsPRZ==4) // çîíà ïåðåñå÷åíèÿ êàíàëà ìåäèàíû { externalAP (b1, pitch_cena[1]-hAP*(2-phi), b1, pitch_cena[1]-hAP*(phi-1), tangensAP, prefics+"ISL 38.2 x ", prefics+"ISL 61.8 x ", prefics+"channal Mediana x ", arrName, handle, str1 , str2, str3, sd); } else if (mSelectVariantsPRZ==5) // çîíà ïåðåñå÷åíèÿ êàíàëà âèë { externalAP (b1, pitch_cena[1], c1, pitch_cena[2], tangensAP, prefics+"SSL x ", prefics+"FSL x ", prefics+"channal AP x ", arrName, handle, str1 , str2, str3, sd); } } else if (mSelectVariantsPRZ<9 && ExtPitchforkStatic==2) { cena2=pitch_cena[1]-hAP1_2mediana/2; if (mSelectVariantsPRZ==6) // ìåòêè ïåðåñå÷åíèÿ 1/2 ìåäèàíû { externalAP (b1, cena2, 0, 0, tangens05median, prefics+"50% Mediana x ", "", "", arrName, handle, str1 , str2, str3, sd); } else if (mSelectVariantsPRZ==7) // çîíà ïåðåñå÷åíèÿ êàíàëà 1/2 ìåäèàíû { externalAP (b1, pitch_cena[1]-hAP1_2mediana*(phi-1), b1, pitch_cena[1]-hAP1_2mediana*(2-phi), tangens05median, prefics+"SLM 38.2 x ", prefics+"SLM 61.8 x ", prefics+"channal 50% Mediana x ", arrName, handle, str1 , str2, str3, sd); } else if (mSelectVariantsPRZ==8) // çîíà ïåðåñå÷åíèÿ êàíàëà ëèíèé Øèôôà { externalAP (b1, pitch_cena[1], c1, pitch_cena[2], tangens05median, prefics+"SSL Shiff Line x ", prefics+"FSL Shiff Line x ", prefics+"channal Shiff Line x ", arrName, handle, str1 , str2, str3, sd); } } else if (mSelectVariantsPRZ==9) { if (ExtLTL) // ìåòêè ïåðåñå÷åíèÿ LTL { externalAP (a1, pitch_cena[0], 0, 0, tangensLTL, prefics+"LTL x ", "", "", arrName, handle, str1 , str2, str3, sd); } if (ExtUTL) // ìåòêè ïåðåñå÷åíèÿ UTL { externalAP (a1, pitch_cena[0], 0, 0, tangensUTL, prefics+"UTL x ", "", "", arrName, handle, str1 , str2, str3, sd); } } } // çàêðûâàåì ôàéë äëÿ çàïèñè ìåòîê if (mWriteToFile) { mPeriod=mPeriod+mPeriodWriteToFile*60; if (FileSize(handle)<1) {FileClose(handle); FileDelete(file);} else FileClose(handle); } } //-------------------------------------------------------- // Âûâîä öåíîâûõ ìåòîê (metkaAP) â âèëàõ Ýíäðþñà. Êîíåö. //-------------------------------------------------------- //-------------------------------------------------------- // Ïîäãîòîâêà ïàðàìåòðîâ âíåøíèõ âèë // Íà÷àëî. //-------------------------------------------------------- /* a1 - íîìåð áàðà íà÷àëà ëèíèè 1 cenaA1 - öåíà íà ëèíèè 1 íà áàðå a1 a2 - íîìåð áàðà íà÷àëà ëèíèè 2 cenaA2 - öåíà íà ëèíèè 2 íà áàðå a2 tangensA - òàíãåíñ óãëà íàêëîíà ëèíèé áàçîâûõ âèë nameMetki1 - íàèìåíîâàíèå ìåòêè 1 nameMetki2 - íàèìåíîâàíèå ìåòêè 2 nameZones - íàèìåíîâàíèå çîíû aName[] - ìàññèâ ñ íàèìåíîâàíèÿìè âíåøíèõ âèë Åñëè âûâîäèòñÿ ìåòêà, òî â äàííûå ïðàâîé ìåòêè è íàèìåíîâàíèå çîíû çàïèñûâàåì 0 èëè "" äëÿ ñòðîêîâîé ïåðåìåííîé int mSSL int mISL382 int mMediana int mISL618 int mFSL int mUWL int mLWL int m1_2Mediana int mSLM int mFSLShiffLines int mUTL int mLTL */ void externalAP (int a1, double cenaA1, int b1, double cenaB1, double tangensA, string nameMetki1, string nameMetki2, string nameZones, string aName[], int handle, string str1 , string str2, string str3, int sd) { int i, j, k, x, y, z , wr, znak; int a2, b2, c2; // íîìåðà áàðîâ ïðèâÿçêè âíåøíèõ âèë double cPitch[3]; // öåíà â òî÷êàõ ïðèâÿçêè âíåøíèõ âèë datetime tPitch[3]; // âðåìÿ â òî÷êàõ ïðèâÿçêè âíåøíèõ âèë color PitchColor; // öâåò âíåøíèõ âèë, ïîñòðîåííûõ âðó÷íóþ double cena1, cena2, cena3; // öåíà â òî÷êàõ ïðèâÿçêè èíñòðóìåíòîâ âèë, ïîñòðîåííûõ âðó÷íóþ datetime time1, time2, time3; // âðåìÿ â òî÷êàõ ïðèâÿçêè èíñòðóìåíòîâ âèë, ïîñòðîåííûõ âðó÷íóþ datetime twr; double tangensAP, tangens05median; // òàíãåíñû óãëîâ íàêëîíà âíåøíèõ âèë. double hAP, hAP1_2mediana; // bool typeAP; // = - false âèëû ñîçäàíû ñ ïîìîùüþ ZUP, = true - âèëû ñîçäàíû âðó÷íóþ string suffics="", sufficsWL="", suffics_APm="", sufficsWL_APm; // èäåíòèôèêàòîð ïðèíàäëåæíîñòè èíñòðóìåíòîâ âèë îäíîìó êîìïëåêòó. string txt=""; string nameObjAP=""; // íàèìåíîâàíèÿ èíñòðóìåíòîâ âèë, ïîñòðîåííûõ âðó÷íóþ string nameObj_=""; // íàçâàíèå þþþ bool canal=true; // ôëàã âûâîäà ìåòîê äëÿ ëèíèè îò áàçîâûõ âèë èëè îò êàíàëà, îáðàçîâàííîãî èíñòðóìåíòàìè áàçîâûõ âèë string str=""; double fi; if (StringLen(nameZones)==0) canal=false; for (i=ArraySize(aName)-1;i>=0;i--) { typeAP=false; if (StringFind(aName[i],"Andrews Pitchfork",0)>=0) typeAP=true; if (typeAP && mExternalHandAP==1) PitchColor=ObjectGet(aName[i],OBJPROP_COLOR); // îïðåäåëÿåì èäåíòèôèêàòîð ïðèíàäëåæíîñòè èíñòðóìåíòîâ âèë îäíîìó êîìïëåêòó. suffics=""; sufficsWL=""; if (StringFind(aName[i],"Andrews Pitchfork",0)>=0) { suffics=StringSubstr(aName[i],17); } else { j=StringFind(aName[i],"_",0); suffics=StringSubstr(aName[i],9); sufficsWL=StringSubstr(aName[i],10); if (StringSubstr(aName[i],9,1)=="S") { if (StringSubstr(aName[i],j+1,3)=="APm") { if (j+50) { suffics_APm=StringSubstr(suffics,0,StringFind(suffics,"APm",0)); sufficsWL_APm=StringSubstr(sufficsWL,0,StringFind(sufficsWL,"APm",0)); } // îïðåäåëÿåì âðåìÿ è öåíó òî÷åê, ê êîòîðûì ïðèâÿçàíû âíåøíèå âèëû Ýíäðþñà tPitch[0]=ObjectGet(aName[i],OBJPROP_TIME1); cPitch[0]=ObjectGet(aName[i],OBJPROP_PRICE1); tPitch[1]=ObjectGet(aName[i],OBJPROP_TIME2); cPitch[1]=ObjectGet(aName[i],OBJPROP_PRICE2); tPitch[2]=ObjectGet(aName[i],OBJPROP_TIME3); cPitch[2]=ObjectGet(aName[i],OBJPROP_PRICE3); // îïðåäåëÿåì íîìåðà áàðîâ, ê êîòîðûì ïðèâÿçàíû âèëû Ýíäðþñà if (typeAP) { twr=iTime(Symbol(),Period(),0); if (tPitch[0]<=twr) a2=iBarShift(NULL,Period(),tPitch[0],false); else a2=-(tPitch[0]-twr)/(Period()*60); if (tPitch[1]<=twr) b2=iBarShift(NULL,Period(),tPitch[1],false); else b2=-(tPitch[1]-twr)/(Period()*60); if (tPitch[2]<=twr) c2=iBarShift(NULL,Period(),tPitch[2],false); else c2=-(tPitch[2]-twr)/(Period()*60); } else { a2=iBarShift(NULL,Period(),tPitch[0],false); b2=iBarShift(NULL,Period(),tPitch[1],false); c2=iBarShift(NULL,Period(),tPitch[2],false); } // òàíãåíñ óãëà íàêëîíà âèë Ýíäðþñà tangensAP=0; if ((a2-(c2+b2)/2.0)!=0) tangensAP=((cPitch[2]+cPitch[1])/2-cPitch[0])/(a2-(c2+b2)/2.0); // îïðåäåëÿåì ðàññòîÿíèå ïî âåðòèêàëè îò SSL äî FSL - áàçà ïî âûñîòå âèë Ýíäðþñà hAP=cPitch[1]+(b2-c2)*tangensAP-cPitch[2]; if (aMetki[sd][3]>0 || aMetki[sd][2]>0) { // òàíãåíñ óãëà íàêëîíà 1/2 ìåäèàíû âèë Ýíäðþñà tangens05median=(cPitch[2]-cPitch[0])/(a2-c2); // îïðåäåëÿåì ðàññòîÿíèå ïî âåðòèêàëè îò SSL äî FSL - áàçà ïî âûñîòå âèë ëèíèé Øèôôà hAP1_2mediana=cPitch[1]-(cPitch[2]-tangens05median*(b2-c2)); } if (aMetki[sd][1]>0) { txt=" SSL "+suffics; visual (a1, cenaA1, b1, cenaB1, tangensA, c2, cPitch[2], tangensAP, nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][1], handle, 1, str1 , str2, str3); } if (aMetki[sd][5]>0) { if (typeAP && mExternalHandAP==1) { _ISL("ISL_", tPitch, cPitch, PitchColor, STYLE_DASH, 2, suffics); } if ((typeAP && mExternalHandAP>0) || !typeAP) { txt=" ISL 38.2 "+suffics; visual (a1, cenaA1, b1, cenaB1, tangensA, b2, cPitch[1]-hAP*(phi-1), tangensAP, nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][5], handle, 5, str1 , str2, str3); } } if (aMetki[sd][6]>0) { txt=" Mediana "+suffics; visual (a1, cenaA1, b1, cenaB1, tangensA, a2, cPitch[0], tangensAP, nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][6], handle, 6, str1 , str2, str3); } if (aMetki[sd][7]>0) { if (typeAP && mExternalHandAP==1) { _ISL("ISL_", tPitch, cPitch, PitchColor, STYLE_DASH, 2, suffics); } if ((typeAP && mExternalHandAP>0) || !typeAP) { txt=" ISL 61.8 "+suffics; visual (a1, cenaA1, b1, cenaB1, tangensA, b2, cPitch[1]-hAP*(2-phi), tangensAP, nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][7], handle, 7, str1 , str2, str3); } } if (aMetki[sd][8]>0) { txt=" FSL "+suffics; visual (a1, cenaA1, b1, cenaB1, tangensA, b2, cPitch[1], tangensAP, nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][8], handle, 8, str1 , str2, str3); } if (aMetki[sd][13]>0 || aMetki[sd][14]>0) { if (typeAP && mExternalHandAP==1) { cena1=cPitch[0]; time1=tPitch[0]; time2=iTime(Symbol(),Period(),0); cena2=cPitch[0]-tangensAP*a2; visibleWL(cPitch, tPitch, cena1, time1, cena2, time2, 13, sd, suffics, tangensAP, PitchColor, false); // UWL visibleWL(cPitch, tPitch, cena1, time1, cena2, time2, 14, sd, suffics, tangensAP, PitchColor, false); // LWL } if (aMetki[sd][13]>0) { if ((typeAP && mExternalHandAP>0) || (!typeAP && ObjectFind("UWL" + sufficsWL_APm)==0)) { if (!typeAP) nameObj_="UWL" + sufficsWL_APm; else if (typeAP && mExternalHandAP>0) nameObj_="UWL"+ ExtComplekt+"_" + suffics; if (cPitch[1]>cPitch[2]) { y=b2; cena3=cPitch[1]; } else { y=c2; cena3=cPitch[2]; } if (ObjectFind(nameObj_)>=0) { x=ObjectGet(nameObj_,OBJPROP_FIBOLEVELS); for (k=0;k=0) str=StringSubstr(str,z+1); } } } } if (aMetki[sd][14]>0) { if ((typeAP && mExternalHandAP>0) || (!typeAP && ObjectFind("LWL" + sufficsWL_APm)==0)) { if (!typeAP) nameObj_="LWL" + sufficsWL_APm; else if (typeAP && mExternalHandAP>0) nameObj_="LWL"+ ExtComplekt+"_" + suffics; if (cPitch[1]>cPitch[2]) { y=c2; cena3=cPitch[2]; } else { y=b2; cena3=cPitch[1]; } if (ObjectFind(nameObj_)>=0) { x=ObjectGet(nameObj_,OBJPROP_FIBOLEVELS); for (k=0;k=0) str=StringSubstr(str,z+1); } } } } } if (aMetki[sd][3]>0) { if (typeAP && mExternalHandAP==1) { coordinaty_1_2_mediany_AP(cPitch[0], cPitch[1], cPitch[2], tPitch[0], tPitch[1], tPitch[2], time1, time2, cena1, cena2, 2, 0); nameObjAP="pmediana_" + ExtComplekt+"_" + suffics; ObjectDelete(nameObjAP); ObjectCreate(nameObjAP,OBJ_TREND,0,time1,cena1,time2,cena2); ObjectSet(nameObjAP,OBJPROP_STYLE,STYLE_DASH); ObjectSet(nameObjAP,OBJPROP_COLOR,PitchColor); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); } if ((typeAP && mExternalHandAP>0) || (!typeAP && ObjectFind("pmediana"+suffics_APm)==0)) { txt=" 50% Mediana "+suffics; visual (a1, cenaA1, b1, cenaB1, tangensA, b2, cPitch[1]-hAP1_2mediana/2, tangens05median, nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][3], handle, 3, str1 , str2, str3); } } if (aMetki[sd][2]>0) { if (typeAP && mExternalHandAP==1) { if (a2>c2) znak=1; else if (a2==c2) znak=0; else znak=-1; // âûâîä SLM 38.2 wr=c2+(b2-c2)*(2-phi); cena1=cPitch[1] + (b2-c2)*(phi-1)*tangens05median-hAP1_2mediana*(phi-1); if (wr>=0) { time1=iTime(Symbol(),Period(),wr); cena2=cena1+znak*wr*tangens05median; if (znak>0) time2=iTime(Symbol(),Period(),0); else if (znak<0) time2=iTime(Symbol(),Period(),2*wr); } else { time1=iTime(Symbol(),Period(),0)-wr*Period()*60; if (znak!=0) cena2=cena1+znak*10*tangens05median; else { if (tangens05median>0) cena2=cena1*1.1; else cena2=cena1*0.9; } time2=iTime(Symbol(),Period(),0)-(wr-znak*10)*Period()*60; } nameObjAP="SLM382_" + ExtComplekt+"_" + suffics; ObjectDelete(nameObjAP); ObjectCreate(nameObjAP,OBJ_TREND,0,time1,cena1,time2,cena2); ObjectSet(nameObjAP,OBJPROP_STYLE,STYLE_DASH); ObjectSet(nameObjAP,OBJPROP_COLOR,PitchColor); ObjectSet(nameObjAP,OBJPROP_BACK,ExtBack); // âûâîä SLM 68.8 wr=c2+(b2-c2)*(phi-1); cena1=cPitch[1] + (b2-c2)*(2-phi)*tangens05median-hAP1_2mediana*(2-phi); if (wr>=0) { time1=iTime(Symbol(),Period(),wr); cena2=cena1+znak*wr*tangens05median; if (znak>0) time2=iTime(Symbol(),Period(),0); else if (znak<0) time2=iTime(Symbol(),Period(),2*wr); } else { time1=iTime(Symbol(),Period(),0)-wr*Period()*60; if (znak!=0) cena2=cena1+znak*10*tangens05median; else { if (tangens05median>0) cena2=cena1*1.1; else cena2=cena1*0.9; } time2=iTime(Symbol(),Period(),0)-(wr-znak*10)*Period()*60; } nameObjAP="SLM618_" + ExtComplekt+"_" + suffics; ObjectDelete(nameObjAP); ObjectCreate(nameObjAP,OBJ_TREND,0,time1,cena1,time2,cena2); ObjectSet(nameObjAP,OBJPROP_STYLE,STYLE_DASH); ObjectSet(nameObjAP,OBJPROP_COLOR,PitchColor); ObjectSet(nameObjAP,OBJPROP_BACK,ExtBack); } if ((typeAP && mExternalHandAP>0) || (!typeAP && ObjectFind("SLM382"+suffics_APm)==0)) { txt=" SLM 38.2 "+suffics; visual (a1, cenaA1, b1, cenaB1, tangensA, b2, cPitch[1]-hAP1_2mediana*(phi-1), tangens05median, nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][2], handle, 2, str1 , str2, str3); } if ((typeAP && mExternalHandAP>0) || (!typeAP && ObjectFind("SLM618"+suffics_APm)==0)) { txt=" SLM 61.8 "+suffics; visual (a1, cenaA1, b1, cenaB1, tangensA, b2, cPitch[1]-hAP1_2mediana*(2-phi), tangens05median, nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][4], handle, 4, str1 , str2, str3); } } if (aMetki[sd][9]>0) { if (typeAP && mExternalHandAP==1) { if (a2>c2) znak=1; else if (a2==c2) znak=0; else znak=-1; // âûâîä FSL Shiff Lines wr=c2+b2-c2; cena1=cPitch[1]; if (wr>=0) { time1=tPitch[1]; cena2=cena1+znak*wr*tangens05median; if (znak>0) time2=iTime(Symbol(),Period(),0); else if (znak<0) time2=iTime(Symbol(),Period(),2*wr); } else { time1=iTime(Symbol(),Period(),0)-wr*Period()*60; if (znak!=0) cena2=cena1+znak*10*tangens05median; else { if (tangens05median>0) cena2=cena1*1.1; else cena2=cena1*0.9; } time2=iTime(Symbol(),Period(),0)-(wr-znak*10)*Period()*60; } nameObjAP="FSL Shiff Lines_" + ExtComplekt+"_" + suffics; ObjectDelete(nameObjAP); ObjectCreate(nameObjAP,OBJ_TREND,0,time1,cena1,time2,cena2); ObjectSet(nameObjAP,OBJPROP_STYLE,STYLE_DASH); ObjectSet(nameObjAP,OBJPROP_COLOR,PitchColor); ObjectSet(nameObjAP,OBJPROP_BACK,ExtBack); } if ((typeAP && mExternalHandAP>0) || (!typeAP && ObjectFind("FSL Shiff Lines "+suffics_APm)==0)) { txt=" FSL Shiff Lines "+suffics; visual (a1, cenaA1, b1, cenaB1, tangensA, b2, cPitch[1], tangens05median, nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][9], handle, 9, str1 , str2, str3); } } if (aMetki[sd][11]>0 || aMetki[sd][12]>0) { if (typeAP && mExternalHandAP==1) { time1=tPitch[0]; cena1=cPitch[0]; if (aMetki[sd][11]>0) { nameObjAP=nameUTL + suffics; if (cPitch[1]>cPitch[2]) { time2=tPitch[1]; cena2=cPitch[1]; } else { time2=tPitch[2]; cena2=cPitch[2]; } ObjectDelete(nameObjAP); ObjectCreate(nameObjAP,OBJ_TREND,0,time1,cena1,time2,cena2); ObjectSet(nameObjAP,OBJPROP_STYLE,STYLE_DASH); ObjectSet(nameObjAP,OBJPROP_COLOR,PitchColor); ObjectSet(nameObjAP,OBJPROP_BACK,ExtBack); } if (aMetki[sd][12]>0) { nameObjAP=nameLTL + suffics; if (cPitch[1]>=cPitch[2]) { time2=tPitch[2]; cena2=cPitch[2]; } else { time2=tPitch[1]; cena2=cPitch[1]; } ObjectDelete(nameObjAP); ObjectCreate(nameObjAP,OBJ_TREND,0,time1,cena1,time2,cena2); ObjectSet(nameObjAP,OBJPROP_STYLE,STYLE_DASH); ObjectSet(nameObjAP,OBJPROP_COLOR,PitchColor); ObjectSet(nameObjAP,OBJPROP_BACK,ExtBack); } } if (aMetki[sd][11]>0) { if ((typeAP && mExternalHandAP>0) || (!typeAP && ObjectFind("UTL"+sufficsWL_APm)==0)) { txt=" UTL "+suffics; if (cPitch[1]>cPitch[2]) { visual (a1, cenaA1, b1, cenaB1, tangensA, b2, cPitch[1], (cPitch[1]-cPitch[0])/(a2-b2), nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][11], handle, 11, str1 , str2, str3); } else { visual (a1, cenaA1, b1, cenaB1, tangensA, c2, cPitch[2], (cPitch[2]-cPitch[0])/(a2-c2), nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][11], handle, 11, str1 , str2, str3); } } } if (aMetki[sd][12]>0) { if ((typeAP && mExternalHandAP>0) || (!typeAP && ObjectFind("LTL"+sufficsWL_APm)==0)) { txt=" LTL "+suffics; if (cPitch[2]>cPitch[1]) { visual (a1, cenaA1, b1, cenaB1, tangensA, b2, cPitch[1], (cPitch[1]-cPitch[0])/(a2-b2), nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][12], handle, 12, str1 , str2, str3); } else { visual (a1, cenaA1, b1, cenaB1, tangensA, c2, cPitch[2], (cPitch[2]-cPitch[0])/(a2-c2), nameMetki1+txt, nameMetki2+txt, nameZones+txt, canal, aMetki[sd][12], handle, 12, str1 , str2, str3); } } } } } } //-------------------------------------------------------- // Ïîäãîòîâêà ïàðàìåòðîâ âíåøíèõ âèë // Êîíåö. //-------------------------------------------------------- //-------------------------------------------------------- // Âûâîä êîíòðîëüíûõ ëèíèé (TL) - UTL è LTL // Íà÷àëî. //-------------------------------------------------------- void visibleTL(double& cPitch[], datetime& tPitch[], int metka, int sd) { string nameObj=""; string _nameUTL="", _nameLTL=""; if (sd==0) { _nameUTL=nameUTL; _nameLTL=nameLTL; } else { _nameUTL=nameUTLd; _nameLTL=nameLTLd; } if (metka==11) nameObj=_nameUTL; if (metka==12) nameObj=_nameLTL; if (cPitch[1]>cPitch[2]) { if (metka==11) ObjectCreate(nameObj,OBJ_TREND,0,tPitch[0],cPitch[0],tPitch[1],cPitch[1]); if (metka==12) ObjectCreate(nameObj,OBJ_TREND,0,tPitch[0],cPitch[0],tPitch[2],cPitch[2]); } else { if (metka==11) ObjectCreate(nameObj,OBJ_TREND,0,tPitch[0],cPitch[0],tPitch[2],cPitch[2]); if (metka==12) ObjectCreate(nameObj,OBJ_TREND,0,tPitch[0],cPitch[0],tPitch[1],cPitch[1]); } ObjectSet(nameObj,OBJPROP_STYLE,STYLE_SOLID); if (sd==0) ObjectSet(nameObj,OBJPROP_COLOR,ExtLinePitchforkS); else ObjectSet(nameObj,OBJPROP_COLOR,ExtLinePitchforkD); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); } //-------------------------------------------------------- // Âûâîä êîíòðîëüíûõ ëèíèé (TL) - UTL è LTL // Êîíåö. //-------------------------------------------------------- //-------------------------------------------------------- // Âûâîä ïðåäóïðåæäàþùèõ ëèíèé (WL) - UWL è LWL // Íà÷àëî. //-------------------------------------------------------- void visibleWL(double& cPitch[], datetime& tPitch[], double cena1, datetime time1, double cena2, datetime time2, int metka, int sd, string suffics, double tangensAP, color PitchColor, bool mAuto) { double cena3; datetime time3; string nameObj=""; string _nameUWL="", _nameLWL=""; if (sd==0) { _nameUWL=nameUWL; _nameLWL=nameLWL; } else { _nameUWL=nameUWLd; _nameLWL=nameLWLd; } ML_RL400(-tangensAP, cPitch, tPitch, time2, cena2, false); if (mAuto || aMetki[sd][metka]>0) { if (metka==13) { nameObj=_nameUWL + suffics; if (cPitch[1]>cPitch[2]) { time3=tPitch[1]; cena3=cPitch[1]; } else { time3=tPitch[2]; cena3=cPitch[2]; } } if (metka==14) { nameObj=_nameLWL + suffics; if (cPitch[1]>=cPitch[2]) { time3=tPitch[2]; cena3=cPitch[2]; } else { time3=tPitch[1]; cena3=cPitch[1]; } } ObjectDelete(nameObj); ObjectCreate(nameObj,OBJ_FIBOCHANNEL,0,time1,cena1,time2,cena2,time3,cena3); ObjectSet(nameObj,OBJPROP_LEVELCOLOR,PitchColor); ObjectSet(nameObj,OBJPROP_LEVELSTYLE,STYLE_DOT); ObjectSet(nameObj,OBJPROP_RAY,ExtLongWL); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); ObjectSet(nameObj,OBJPROP_COLOR,CLR_NONE); if (metka==13) UWL_LWL (true,nameObj,"UWL ",ExtFiboFreeUWL); if (metka==14) UWL_LWL (true,nameObj,"LWL ",ExtFiboFreeLWL); } } //-------------------------------------------------------- // Âûâîä ïðåäóïðåæäàþùèõ ëèíèé (WL) - UWL è LWL // Êîíåö. //-------------------------------------------------------- //-------------------------------------------------------- // Âûâîä öåíîâûõ ìåòîê íà ãðàôèê. // Íà÷àëî. //-------------------------------------------------------- void visual (int a1, double cenaA1, int a2, double cenaA2, double tgA, int b, double cenaB, double tgB, string m1, string m2, string Zones, bool canal, int metka, int handle, int name, string str1 , string str2, string str3) { int x, x1; double cena1, cena2; datetime tcena1, tcena2; string nameObj_=""; x=(cenaA1-cenaB+tgA*a1-tgB*b)/(tgA-tgB); if (x>a1 && !mVisibleST) return; if (canal) { x1=(cenaA2-cenaB+tgA*a2-tgB*b)/(tgA-tgB); cena2=cenaA2+(a2-x1)*tgA; if (x1>=0) tcena2=iTime(Symbol(),Period(),x1); else tcena2=iTime(Symbol(),Period(),0)-x1*Period()*60; } cena1=cenaA1+(a1-x)*tgA; if (x>=0) tcena1=iTime(Symbol(),Period(),x); else tcena1=iTime(Symbol(),Period(),0)-x*Period()*60; if (canal) { if (handle>=0) { FileSeek(handle, 0, SEEK_END); FileWrite(handle, mSelectVariantsPRZ, name, metka, DoubleToStr(cena1, Digits), 0, DoubleToStr(cena2, Digits), DoubleToStr(iClose(NULL,Period(),0), Digits), mTypeBasiclAP, str1, str2, str3); } if (metka==5 || metka==7 || metka==9) { nameObj_=m1; ObjectCreate(nameObj_,OBJ_ARROW,0,tcena1,cena1); if (tcena17) { nameObj_=Zones; ObjectCreate(nameObj_,OBJ_TREND,0,tcena1,cena1,tcena2,cena2); ObjectSet(nameObj_,OBJPROP_WIDTH,mLineZonesWidth); ObjectSet(nameObj_,OBJPROP_RAY,false); ObjectSet(nameObj_,OBJPROP_BACK,mBackZones); } else if (metka>5) { if (metka>5) nameObj_=Zones; ObjectCreate(nameObj_,OBJ_RECTANGLE,0,tcena1,cena1,tcena2,cena2); ObjectSet(nameObj_,OBJPROP_BACK,mBackZones); } } else { nameObj_=m1; ObjectCreate(nameObj_,OBJ_ARROW,0,tcena1,cena1); ObjectSet(nameObj_,OBJPROP_ARROWCODE,SYMBOL_RIGHTPRICE); ObjectSet(nameObj_,OBJPROP_BACK,mBack); if (handle>=0) { FileSeek(handle, 0, SEEK_END); FileWrite(handle, mSelectVariantsPRZ, name, metka, 0, DoubleToStr(cena1, Digits), 0, DoubleToStr(iClose(NULL,Period(),0), Digits), mTypeBasiclAP, str1, str2, str3); } } } //-------------------------------------------------------- // Âûâîä öåíîâûõ ìåòîê íà ãðàôèê. // Êîíåö. //-------------------------------------------------------- //-------------------------------------------------------- // Ïðîâåðêà íàëè÷èÿ âíåøíèõ âèë äëÿ ðàñ÷åòà ìåòîê ïåðåñå÷åíèÿ âèë // è ñîõðàíåíèå íàçâàíèé âíåøíèõ âèë â ìàññèâ. // Íà÷àëî. //-------------------------------------------------------- void checkAP (string& aName[]) //arrName[] { int i, j, k; string name=""; /* mTypeExternalAP - âûáîð òèïà âíåøíèõ âèë = 0 - äèíàìè÷åñêèå èëè ñòàòè÷åñêèå âèëû òåêóùåãî êîìïëåêòà (ïðîòèâîïîëîæíûå áàçîâûì) = 1 - ñîõðàíåííûå âèëû èç òåêóùåãî êîìïëåêòà = 2 - ëþáûå âèëû èç òåêóùåãî êîìïëåêòà = 3 - ñòàòè÷åñêèå âèëû èç äðóãèõ êîìïëåêòîâ ZUP ñ òåêóùåãî ãðàôèêà = 4 - äèíàìè÷åñêèå âèëû èç äðóãèõ êîìïëåêòîâ ZUP ñ òåêóùåãî ãðàôèêà = 5 - ëþáûå âèëû èç äðóãèõ êîìïëåêòîâ ZUP ñ òåêóùåãî ãðàôèêà = 6 - âèëû ñ òåêóùåãî ãðàôèêà, âûâåäåííûå âðó÷íóþ, íå ñ ïîìîùüþ ZUP = 7 - ëþáûå âíåøíèå âèëû mTypeBasiclAP - âûáîð òèïà áàçîâûõ âèë = 0 - ñòàòè÷åñêèå âèëû èç òåêóùåãî êîìïëåêòà = 1 - äèíàìè÷åñêèå âèëû èç òåêóùåãî êîìïëåêòà */ // mSelectVariantsPRZ ExtMasterPitchfork nameObjAPMaster="Master_"+nameObj; j=ObjectsTotal(); SlavePitchfork = false; if (ExtMasterPitchfork==0) { k=0; for (i=0; i=0) { k++; ArrayResize(aName,k); aName[k-1]=StringSubstr(name,7); SlavePitchfork = true; return; } } } } k=0; if (mTypeExternalAP==0) // äèíàìè÷åñêèå èëè ñòàòè÷åñêèå âèëû òåêóùåãî êîìïëåêòà (ïðîòèâîïîëîæíûå áàçîâûì) { if (mTypeBasiclAP==0) // äèíàìè÷åñêèå âèëû òåêóùåãî êîìïëåêòà { name="pitchforkD" + ExtComplekt+"_"; if (ObjectFind(name)==0) { ArrayResize(aName,1); aName[0]=name; } } else if (mTypeBasiclAP==1) // ñòàòè÷åñêèå âèëû òåêóùåãî êîìïëåêòà { name="pitchforkS" + ExtComplekt+"_"; if (ObjectFind(name)==0) { ArrayResize(aName,1); aName[0]=name; } else { name="pitchforkS" + ExtComplekt+"_"+"_APm_"; if (ObjectFind(name)==0) { ArrayResize(aName,1); aName[0]=name; } } } } else if (mTypeExternalAP==1) // ñîõðàíåííûå âèëû èç òåêóùåãî êîìïëåêòà { for (i=0; i=0 && StringLen(name)>StringLen("pitchforkS" + ExtComplekt+"_")+4) { k++; ArrayResize(aName,k); aName[k-1]=name; } } } } else if (mTypeExternalAP==2) // ëþáûå âèëû èç òåêóùåãî êîìïëåêòà { if (mTypeBasiclAP==0) { for (i=0; i=0 && StringLen(name)>StringLen("pitchforkS" + ExtComplekt+"_")+4) { k++; ArrayResize(aName,k); aName[k-1]=name; } } } name="pitchforkD" + ExtComplekt+"_"; if (ObjectFind(name)==0) { k++; ArrayResize(aName,k); aName[k-1]=name; } } else if (mTypeBasiclAP==1) { for (i=0; i=0) { k++; ArrayResize(aName,k); aName[k-1]=name; } } } } } else if (mTypeExternalAP==3) // ñòàòè÷åñêèå âèëû èç äðóãèõ êîìïëåêòîâ ZUP ñ òåêóùåãî ãðàôèêà { for (i=0; i=0) { k++; ArrayResize(aName,k); aName[k-1]=name; } } } } else if (mTypeExternalAP==4) // äèíàìè÷åñêèå âèëû èç äðóãèõ êîìïëåêòîâ ZUP ñ òåêóùåãî ãðàôèêà { for (i=0; i=0) { k++; ArrayResize(aName,k); aName[k-1]=name; } } } } else if (mTypeExternalAP==5) // ëþáûå âèëû èç äðóãèõ êîìïëåêòîâ ZUP ñ òåêóùåãî ãðàôèêà { for (i=0; i=0) { k++; ArrayResize(aName,k); aName[k-1]=name; } if (StringFind(name,"pitchforkS" + ExtComplekt+"_",0)<0 && StringFind(name,"pitchforkS",0)>=0) { k++; ArrayResize(aName,k); aName[k-1]=name; } } } } else if (mTypeExternalAP==6) // âèëû ñ òåêóùåãî ãðàôèêà, âûâåäåííûå âðó÷íóþ, íå ñ ïîìîùüþ ZUP { for (i=0; i=0) { k++; ArrayResize(aName,k); aName[k-1]=name; } } } } else if (mTypeExternalAP==7) // ëþáûå âíåøíèå âèëû { if (mTypeBasiclAP==0) { for (i=0; i=0 && (StringLen(name)>StringLen("pitchforkS" + ExtComplekt+"_")+4 || StringFind(name,"pitchforkS" + ExtComplekt+"_",0)<0)) { k++; ArrayResize(aName,k); aName[k-1]=name; } if (StringFind(name,"pitchforkD",0)>=0) { k++; ArrayResize(aName,k); aName[k-1]=name; } if (StringFind(name,"Andrews Pitchfork",0)>=0) { k++; ArrayResize(aName,k); aName[k-1]=name; } } } } else if (mTypeBasiclAP==1) { for (i=0; i=0 && (StringLen(name)>StringLen("pitchforkD" + ExtComplekt+"_")+4 || StringFind(name,"pitchforkD" + ExtComplekt+"_",0)<0)) { k++; ArrayResize(aName,k); aName[k-1]=name; } if (StringFind(name,"pitchforkS",0)>=0) { k++; ArrayResize(aName,k); aName[k-1]=name; } if (StringFind(name,"Andrews Pitchfork",0)>=0) { k++; ArrayResize(aName,k); aName[k-1]=name; } } } } } } //-------------------------------------------------------- // Ïðîâåðêà íàëè÷èÿ âíåøíèõ âèë äëÿ ðàñ÷åòà ìåòîê ïåðåñå÷åíèÿ âèë // è ñîõðàíåíèå íàçâàíèé âíåøíèõ âèë â ìàññèâ. // Êîíåö. //-------------------------------------------------------- //-------------------------------------------------------- // Çàïîëíåíèå ìàññèâà çíà÷åíèÿìè RL äëÿ ðàñ÷åòà öåíîâûõ // ìåòîê (metkaAP) â âèëàõ Ýíäðþñà. Íà÷àëî. //-------------------------------------------------------- void RLtoArray (double& aRL[], string nameRL, string fiboFree) { int i, j, k; string str; if(ObjectFind(nameRL)>-1) { j=ObjectGet(nameRL,OBJPROP_FIBOLEVELS); ArrayResize(aRL,j); k=0; if (ExtFiboFreePitchfork || ExtFiboType==2) k=0; else if (ExtFiboType==0) { if (ExtRL146) { aRL[0]=0.146; k=1; } } else if (ExtFiboType==1) { if (ExtRL146) { aRL[0]=0.146; aRL[1]=0.236; k=2; } } for (i=0;k=0) str=StringSubstr(str,k+1); } } ArraySort(aRL); } //-------------------------------------------------------- // Çàïîëíåíèå ìàññèâà çíà÷åíèÿìè RL äëÿ ðàñ÷åòà öåíîâûõ // ìåòîê (metkaAP) â âèëàõ Ýíäðþñà. Êîíåö. //-------------------------------------------------------- //-------------------------------------------------------- // Âûâîä UWL_LWL. Íà÷àëî. //-------------------------------------------------------- void UWL_LWL (bool visible, string nameObj_, string WL, string fiboFree) { int i,j,k; string str=""; double fi; if (ExtFiboFreePitchfork || ExtFiboType==2) { str=fiboFree; } else { str="0.146,0.236,0.382,0.5,0.618,0.764,0.854,1,1.618,2.0,2.618,4.236"; } 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 (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 (ExtFiboFreePitchfork || ExtFiboType==2) // Ôèáû ôèáî-Time ñ ïîëüçîâàòåëüñêèìè ÷èñëàìè. { if (number==0) { str=ExtFiboFreeFT1; } else if (number==1) { str=ExtFiboFreeFT2; } else if (number==2) { str=ExtFiboFreeFT3; } } else 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.236"; } 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=phi-1,m382=2-phi,wr,wr1,wr2; datetime tb1,tab2,tbc2,twr1,twr2; int a0,b0,c0; 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]; if (mPitchTime[0]==0) return; 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, ExtPitchforkDinamic, ExtPitchforkDinamicCustom); 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); if (ExtSLMDinamic) { b0=iBarShift(Symbol(),Period(),mPitchTime[1]); c0=iBarShift(Symbol(),Period(),mPitchTime[2]); // ñìåùåíèå slm wr=(ObjectGetValueByShift(nameObj,c0)-mPitchCena[2])*(1-2*m382); //íîìåð áàðà òî÷êè 1 a0=c0-(c0-b0)*m382-1; // âðåìÿ òî÷êè 1 twr1=iTime(Symbol(),Period(),a0); // öåíà òî÷êè 1 wr1=ObjectGetValueByShift(nameObj,a0)-wr; // êîîðäèíàòû òî÷êè 2 wr2=ObjectGetValueByShift(nameObj,0)-wr; twr2=iTime(Symbol(),Period(),0); nameObj="SLM382D" + ExtComplekt+"_"; ObjectDelete(nameObj); ObjectCreate(nameObj,OBJ_TREND,0,twr1,wr1,twr2,wr2); ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DASH); ObjectSet(nameObj,OBJPROP_COLOR,ExtSLMDinamicColor); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); //íîìåð áàðà òî÷êè 1 a0=c0-(c0-b0)*m618-1; // âðåìÿ òî÷êè 1 twr1=iTime(Symbol(),Period(),a0); // öåíà òî÷êè 1 nameObj="pmedianaD" + ExtComplekt+"_"; wr1=ObjectGetValueByShift(nameObj,a0)+wr; // êîîðäèíàòû òî÷êè 2 wr2=ObjectGetValueByShift(nameObj,0)+wr; twr2=iTime(Symbol(),Period(),0); nameObj="SLM618D" + ExtComplekt+"_"; ObjectDelete(nameObj); ObjectCreate(nameObj,OBJ_TREND,0,twr1,wr1,twr2,wr2); ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DASH); ObjectSet(nameObj,OBJPROP_COLOR,ExtSLMDinamicColor); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); } if (ExtFSLShiffLinesDinamic) { c0=iBarShift(Symbol(),Period(),mPitchTime[1]); // âðåìÿ òî÷êè 1 twr1=mPitchTime[1]; // öåíà òî÷êè 1 wr1=mPitchCena[1]; // êîîðäèíàòû òî÷êè 2 nameObj="pmedianaD" + ExtComplekt+"_"; wr2=ObjectGetValueByShift(nameObj,0)-ObjectGetValueByShift(nameObj,c0)+mPitchCena[1]; twr2=iTime(Symbol(),Period(),0); nameObj="FSL Shiff Lines D" + ExtComplekt+"_"; ObjectDelete(nameObj); ObjectCreate(nameObj,OBJ_TREND,0,twr1,wr1,twr2,wr2); ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DASH); ObjectSet(nameObj,OBJPROP_COLOR,ExtFSLShiffLinesDinamicColor); 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+"_"; 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]; // Âûâîä ìåòîê â âèëàõ Ýíäðþñà mAPd=false; if (ObjectFind(nameObj)>=0) { if (mAP) { if (ObjectGet(nameObj,OBJPROP_TIME1)!=pitch_time[0] || ObjectGet(nameObj,OBJPROP_PRICE1)!=pitch_cena[0] || ObjectGet(nameObj,OBJPROP_TIME2)!=pitch_time[1] || ObjectGet(nameObj,OBJPROP_PRICE2)!=pitch_cena[1] || ObjectGet(nameObj,OBJPROP_TIME3)!=pitch_time[2] || ObjectGet(nameObj,OBJPROP_PRICE3)!=pitch_cena[2]) { mAPd=true; RZd=-1; } } ObjectDelete(nameObj); } else if (mAP) {mAPd=true; RZd=-1;} if (mAuto_d) { ObjectDelete(nameUWLd); ObjectDelete(nameLWLd); ObjectDelete(nameUTLd); ObjectDelete(nameLTLd); if (mOutRedZone) { pitch_timeD[0]=pitch_time[0];pitch_cenaD[0]=pitch_cena[0]; pitch_timeD[1]=pitch_time[1];pitch_cenaD[1]=pitch_cena[1]; pitch_timeD[2]=pitch_time[2];pitch_cenaD[2]=pitch_cena[2]; aOutRedZone[0]=false; _RZ("RZD", ExtRZDinamicValue, ExtRZDinamicColor, pitch_timeD, pitch_cenaD, ExtRedZoneDinamic, 1, false); } } ObjectCreate(nameObj,OBJ_PITCHFORK,0,pitch_time[0],pitch_cena[0],pitch_time[1],pitch_cena[1],pitch_time[2],pitch_cena[2]); ObjectSet(nameObj,OBJPROP_STYLE,ExtPitchforkStyle); ObjectSet(nameObj,OBJPROP_WIDTH,ExtPitchforkWidth); ObjectSet(nameObj,OBJPROP_COLOR,ExtLinePitchforkD); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); if (ExtMasterPitchfork==1) { nameObjAPMaster="Master_"+nameObj; ObjectDelete(nameObjAPMaster); ObjectCreate(nameObjAPMaster,OBJ_PITCHFORK,0,pitch_time[0],pitch_cena[0],pitch_time[1],pitch_cena[1],pitch_time[2],pitch_cena[2]); ObjectSet(nameObjAPMaster,OBJPROP_STYLE,ExtPitchforkStyle); ObjectSet(nameObjAPMaster,OBJPROP_WIDTH,ExtPitchforkWidth); ObjectSet(nameObjAPMaster,OBJPROP_COLOR,CLR_NONE); ObjectSet(nameObjAPMaster,OBJPROP_BACK,true); } if (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;i0) { channelISL(pitch_cena[0], pitch_cena[1], pitch_cena[2], pitch_time[0], pitch_time[1], pitch_time[2], 1); } //-------------------------------------------------------- if (ExtISLDinamic) { _ISL("ISL_D", pitch_time, pitch_cena, ExtLinePitchforkD, ExtISLStyleDinamic, 1, ""); } //-------------------------------------------------------- if (ExtRLDinamic) { _RL("RLineD", pitch_time, pitch_cena, ExtLinePitchforkD, ExtRLStyleDinamic, ExtVisibleRLDinamic, 1, ""); } //-------------------------------------------------------- if (ExtRedZoneDinamic>0) { _RZ("RZD", ExtRZDinamicValue, ExtRZDinamicColor, pitch_time, pitch_cena, ExtRedZoneDinamic, 1, true); } //-------------------------------------------------------- } //-------------------------------------------------------- // Âûâîä âèë Ýíäðþñà äèíàìè÷åñêèõ. Êîíåö. //-------------------------------------------------------- //-------------------------------------------------------- // Âûâîä ISL. Íà÷àëî. //-------------------------------------------------------- void _ISL(string nameISL, datetime pitch_time[], double pitch_cena[], color lineColor, int lineStyle, int StaticDinamic, string suffcs) // StaticDinamic 0 - Static, 1 - Dinamic { int i,j,k, a, b, c, znak=1; string str=""; double fi,a1,b1,c1,tangens,x; datetime ta1,tb1,tc1; datetime twr; if (pitch_time[2]=pitch_time[0]) a=iBarShift(Symbol(),Period(),pitch_time[0]); else a=-(pitch_time[0]-twr)/(Period()*60); if (twr>=pitch_time[1]) b=iBarShift(Symbol(),Period(),pitch_time[1]); else b=-(pitch_time[1]-twr)/(Period()*60); if (twr>=pitch_time[2]) c=iBarShift(Symbol(),Period(),pitch_time[2]); else c=-(pitch_time[2]-twr)/(Period()*60); x=a-(b+c)/2.0; ta1=pitch_time[1]; a1=pitch_cena[1]; tangens=znak*(pitch_cena[0]-(pitch_cena[1]+pitch_cena[2])/2.0)/x; ML_RL400(tangens, pitch_cena, pitch_time, tb1, b1, true); tc1=pitch_time[2]; c1=pitch_cena[2]; nameObj=nameISL + ExtComplekt+"_" + suffcs; if (ExtSave && nameISL=="ISL_S") { if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0) { nameObj=nameObj + save; } else { if (mPitch[2]>0) { nameObj=nameObj + save; } } } ObjectDelete(nameObj); ObjectCreate(nameObj,OBJ_FIBOCHANNEL,0,ta1,a1,tb1,b1,tc1,c1); ObjectSet(nameObj,OBJPROP_LEVELCOLOR,lineColor); ObjectSet(nameObj,OBJPROP_LEVELSTYLE,lineStyle); ObjectSet(nameObj,OBJPROP_LEVELWIDTH,ExtISLWidth); ObjectSet(nameObj,OBJPROP_RAY,false); ObjectSet(nameObj,OBJPROP_BACK,ExtBack); ObjectSet(nameObj,OBJPROP_COLOR,CLR_NONE); if (StaticDinamic==2) { str="0.618,0.382"; } else if (ExtFiboFreePitchfork || ExtFiboType==2) { if (StaticDinamic==0) { str=ExtFiboFreeISLStatic ; } else { str=ExtFiboFreeISLDinamic; } } else 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"; } 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 (StaticDinamic==0) { if (ExtVisibleISLStatic) ObjectSetFiboDescription(nameObj, i," ISL "+DoubleToStr(fi*100,1)); } else if (StaticDinamic==1) { if (ExtVisibleISLDinamic) ObjectSetFiboDescription(nameObj, i," ISL "+DoubleToStr(fi*100,1)); } else { if (mVisibleISL) ObjectSetFiboDescription(nameObj, i," ISL "+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, int lineStyle, bool visibleRL, int StaticDinamic, string RZ) // StaticDinamic 0 - Static, 1 - Dinamic { 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 (nameRL=="RZS" || nameRL=="RZD") { if (ExtSave && nameRL=="RZS") { if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0) { nameObj=nameObj + save; } else { if (mPitch[2]>0) { nameObj=nameObj + save; } } } j=1; str=RZ; } else { if (ExtSave && nameRL=="RLineS") { if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0) { nameObj=nameObj + save; } else { if (mPitch[2]>0) { nameObj=nameObj + save; } } } if (ExtFiboFreePitchfork || ExtFiboType==2) { if (StaticDinamic==0) { j=quantityFibo (ExtFiboFreeRLStatic); str=ExtFiboFreeRLStatic; } else { j=quantityFibo (ExtFiboFreeRLDinamic); str=ExtFiboFreeRLDinamic; } } else 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.236,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.236,0.146"; } } 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); } ObjectSet(nameObj,OBJPROP_LEVELSTYLE,lineStyle); 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 (visibleRL) 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 RedZone, int StaticDinamic, bool visible) { int i,j,k,n,_nbase1,_nbase2; double b1=0,hRZ=0,delta=0,h=0,hbase=0,tangens23=0,tangensMediana=0,n1,nbase0=0,nbase1=0,nbase2=0; 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]); if ((nbase1-nbase2)==0) return; tangens23=(pitch_cena[2]-pitch_cena[1])/(nbase1-nbase2); n1=nbase0-(nbase1+nbase2)/2; if (n1==0) return; tangensMediana=((pitch_cena[2]+pitch_cena[1])/2-pitch_cena[0])/n1; 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 (!visible) // ïîâåðêà íà âûõîä èç êðàñíîé çîíû { if (pitch_cena[1]>pitch_cena[2]) { for (i=nbase2+1;i>=0;i--) { delta=(pitch_cena[1]+(_nbase1-i)*tangens23)-High[i]; if (delta=0;i--) { delta=(pitch_cena[1]+(_nbase1-i)*tangens23)-Low[i]; if (delta>h) { if (nameRZ=="RZS") {aOutRedZone[1]=true; return;} if (nameRZ=="RZD") {aOutRedZone[0]=true; return;} if (nameRZ=="RZ_") {aOutRedZone[2]=true; return;} } } } return; } if (tangens23==0) return; hbase=pitch_cena[0]-(pitch_cena[1]-(nbase0-nbase1)*tangens23); hRZ=hbase*RZValue; if (RedZone>1) { if (hbase==0) return; if (StaticDinamic==0) { _RL("RZS", pitch_time, pitch_cena, ExtRZStaticColor, ExtRLStyleStatic, true, 0, DoubleToStr(MathAbs(h/hbase),3)); } else { _RL("RZD", pitch_time, pitch_cena, ExtRZDinamicColor, ExtRLStyleDinamic, true, 1, DoubleToStr(MathAbs(h/hbase),3)); } } else { if (infoTF) { if (hbase==0) return; 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. Êîíåö. //-------------------------------------------------------- //-------------------------------------------------------- // Ïîäïðîãðàììà âûâîäà êàíàëà ïî ISL .382 - .618. Íà÷àëî. //-------------------------------------------------------- void channelISL(double A_1, double B_2, double C_3, datetime T_1, datetime T_2, datetime T_3, int StaticDinamic) { double tangens; int n1, n2, n3, nc1, nb1; double c1, c2, b1, b2, nc1_, nb1_; string nameObj=""; // íîìåðà áàðîâ, îò êîòîðûõ ñòðîÿòñÿ âèëû Ýíäðþñà n1=iBarShift(Symbol(),Period(),T_1); n2=iBarShift(Symbol(),Period(),T_2); n3=iBarShift(Symbol(),Period(),T_3); // òàíãåíñ óãëà íàêëîíà ìåäèàíû âèë Ýíäðþñà tangens=((C_3 + B_2)/2 -A_1)/(n1-(n2 + n3)/2.0); // íîìåðà áàðîâ òî÷åê 1 (nc1) è 3 (nb1) äëÿ ïðèâÿçêè êàíàëà, óìåíüøåííûå íà n3 nc1_=(n2-n3)*(2.0-phi); nb1_=(n2-n3)*(phi-1); nc1=nc1_; nb1=nb1_; // âû÷èñëÿåì öåíó â òî÷êàõ 1 è 3 äëÿ ïðèâÿçêè êàíàëà c2=C_3+(B_2+(n2-n3)*tangens-C_3)*(2-phi); b2=C_3+(B_2+(n2-n3)*tangens-C_3)*(phi-1); c1=c2-tangens*nc1; b1=b2-tangens*nb1; nameObj="CISL" + ExtComplekt+"_" + StaticDinamic; ObjectDelete(nameObj); ObjectCreate(nameObj,OBJ_CHANNEL,0,Time[nc1+n3],c1,Time[0],c2+tangens*n3,Time[nb1+n3],b1); // Time[n3],b2); ObjectSet(nameObj, OBJPROP_BACK, true); if (StaticDinamic==0) { ObjectSet(nameObj, OBJPROP_COLOR, ExtISLChannelStaticColor); } else { ObjectSet(nameObj, OBJPROP_COLOR, ExtISLChannelDinamicColor); } } //-------------------------------------------------------- // Ïîäïðîãðàììà âûâîäâ êàíàëà ïî ISL .382 - .618. Êîíåö. //-------------------------------------------------------- //-------------------------------------------------------- // Ïîäïðîãðàììà ðàñ÷åòà êîîðäèíàò 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, int type, double Custom) { double tangens; int n1, n2, n3, nab2, nbc2; datetime twr; // íîìåðà áàðîâ, îò êîòîðûõ ñòðîÿòñÿ âèëû Ýíäðþñà twr=iTime(Symbol(),Period(),0); if (T_1<=twr) n1=iBarShift(Symbol(),Period(),T_1); else n1=-(T_1-twr)/(Period()*60); if (T_2<=twr) n2=iBarShift(Symbol(),Period(),T_2); else n2=-(T_2-twr)/(Period()*60); if (T_3<=twr) n3=iBarShift(Symbol(),Period(),T_3); else n3=-(T_3-twr)/(Period()*60); // òàíãåíñ óãëà íàêëîíà 1/2 ìåäèàíû âèë Ýíäðþñà if ((n1 - n3)==0) return; tangens=(C_3 - A_1)/(n1 - n3); // íîìåðà áàðîâ, ÷åðåç êîòîðûå áóäåò ïîñòðîåíà 1/2 ìåäèàíà nab2=MathCeil((n1+n2)/2.0); nbc2=MathCeil((n2+n3)/2.0); // çíà÷åíèÿ öåíû òî÷åê, ÷åðåç êîòîðûå áóäåò ïîñòðîåíà 1/2 ìåäèàíà if (type!=3) { AB2=(A_1 + B_2)/2 - (nab2-(n1+n2)/2.0)*tangens; } else { if (type==3 && Custom<0.00000001) { AB2=(A_1 + B_2)/2; } else if (Custom>8.99999999) { AB2=(A_1 + C_3)/2; } else { AB2=B_2+(C_3-B_2)*Custom; } } BC2=(B_2 + C_3)/2 - (nbc2-(n2+n3)/2.0)*tangens; // âðåìÿ áàðîâ, ÷åðåç êîòîðûå áóäåò ïîñòðîåíà 1/2 ìåäèàíà if (nab2>=0) tAB2=iTime(Symbol(),Period(),nab2); else tAB2=iTime(Symbol(),Period(),0)-nab2*Period()*60; if (nbc2>=0) tBC2=iTime(Symbol(),Period(),nbc2); else tBC2=iTime(Symbol(),Period(),0)-nbc2*Period()*60; } //-------------------------------------------------------- // Ïîäïðîãðàììà ðàñ÷åòà êîîðäèíàò 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); // òàíãåíñ óãëà íàêëîíà ìåäèàíû âèë Ýíäðþñà if ((n1 - (n3+n2)/2.0)==0) return; tangens=(A_1-(C_3+B_2)/2)/(n1 - (n3+n2)/2.0); if (tangens==0) return; // íîìåð áàðà, ÷åðåç êîòîðûé ïðîõîäèò ìåäèàíà 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, a, b, c; datetime twr; twr=iTime(Symbol(),Period(),0); if (twr>=pitch_time1[0]) a=iBarShift(Symbol(),Period(),pitch_time1[0]); else a=-(pitch_time1[0]-twr)/(Period()*60); if (twr>=pitch_time1[1]) b=iBarShift(Symbol(),Period(),pitch_time1[1]); else b=-(pitch_time1[1]-twr)/(Period()*60); if (twr>=pitch_time1[2]) c=iBarShift(Symbol(),Period(),pitch_time1[2]); else c=-(pitch_time1[2]-twr)/(Period()*60); m1=a; m2=MathCeil((b+c)/2.0); m=(m1-m2)*6.85; // *4 04-01-2012 if (m>m2) { tB1=Time[0]+(m-m2)*Period()*60; if (tB1<0) tB1=2133648000; if (flag) { B1=pitch_cena1[1]-Tangens*(b+(tB1-Time[0])/(60*Period())); } else { B1=pitch_cena1[0]-Tangens*(a+(tB1-Time[0])/(60*Period())); } } else { tB1=Time[m2-m]; if (flag) B1=pitch_cena1[1]-Tangens*(b-iBarShift(Symbol(),Period(),tB1)); else B1=pitch_cena1[0]-Tangens*(a-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;i0) { 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;i0) { 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,phi-1); 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()-1; i>=0; i--) { txt=ObjectName(i); if (StringFind(txt,txt1)>-1)ObjectDelete (txt); } } //-------------------------------------------------------- // Óäàëåíèå îáúåêòîâ. Êîíåö. // Óäàëåíèå ñîåäèíèòåëüíûõ ëèíèé è ÷èñåë. //-------------------------------------------------------- //-------------------------------------------------------- // Óäàëåíèå îáúåêòîâ. Íà÷àëî. // Óäàëåíèå îáúåêòîâ ïàòòåðíîâ Gartley. //-------------------------------------------------------- void delete_objects3() { int i; string txt=""; for (i=ObjectsTotal()-1; i>=0; i--) { txt=ObjectName(i); if (StringFind(txt,"_"+ExtComplekt+"Triangle")>-1)ObjectDelete (txt); else if (StringFind(txt,"_"+ExtComplekt+"ABCD")>-1)ObjectDelete (txt); if (RangeForPointD==true) { if (StringFind(txt,"_"+ExtComplekt+"PointD")>-1)ObjectDelete (txt); //if (StringFind(txt,"_"+ExtComplekt+"PDL")>-1)ObjectDelete (txt); } if(DrawFibonacciExpansion==true) { if (StringFind(txt,"_"+ExtComplekt+"FibExpansion")>-1)ObjectDelete (txt); //if (StringFind(txt,"_"+ExtComplekt+"PDL")>-1)ObjectDelete (txt); } //if (VectorOfAMirrorTrend>0) if (StringFind(txt,"_"+ExtComplekt+"VectorOfAMirrorTrend")>-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==true) { FlagForD=true; } } //-------------------------------------------------------- // Óäàëåíèå îáúåêòîâ. Êîíåö. // Óäàëåíèå îáúåêòîâ ïàòòåðíîâ Gartley. //-------------------------------------------------------- //-------------------------------------------------------- // Óäàëåíèå îáúåêòîâ. Íà÷àëî. // Óäàëåíèå ñîåäèíèòåëüíûõ ëèíèé è ÷èñåë. //-------------------------------------------------------- void delete_objects4() { int i; string txt=""; for (i=ObjectsTotal()-1; 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()-1; 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_objects6(int sd) { int i, k=0; //, handle; string txt="", tmp="", metka="", file=""; if (sd==0) // ñòàòè÷åñêèõ { file="\\Price Label S\\"; metka="m#"+ExtComplekt+"_"+"s"; } if (sd==1) // äèíàìè÷åñêèõ { file="\\Price Label D\\"; metka="m#"+ExtComplekt+"_"+"d"; } for (i=ObjectsTotal()-1; i>=0; i--) { txt=ObjectName(i); if (StringFind(txt,metka)>-1) {ObjectDelete (txt); k++;} } // óäàëåíèå ôàéëà ñ ìåòêàìè if (k>0 && mWriteToFile && mAP) { tmp="_"; if (ExtMasterPitchfork>0) { tmp="_0_"; } else { if (SlavePitchfork) tmp="_"+StringSubstr(""+ExtComplekt,StringLen(""+ExtComplekt)-1)+"_"; else { for (i=ObjectsTotal()-1; i>=0; i--) { if (ObjectType(ObjectName(i))==OBJ_PITCHFORK) { if (StringFind(ObjectName(i),"Master_",0)>=0) { tmp="_"+StringSubstr(""+ExtComplekt,StringLen(""+ExtComplekt)-1)+"_"; break; } } } } } if (ExtIndicator==6 && GrossPeriod==Period()) file=file+Symbol()+"_"+GrossPeriod+tmp+ExtComplekt+".csv"; else file=file+Symbol()+"_"+Period()+tmp+ExtComplekt+".csv"; // handle=FileOpen(file,FILE_CSV|FILE_WRITE,';'); // FileClose(handle); FileDelete(file); } } //-------------------------------------------------------- // Óäàëåíèå ìåòîê â âèëàõ Ýíäðþñà è ôàéëîâ ñ ìåòêàìè. Êîíåö. //-------------------------------------------------------- /* //-------------------------------------------------------- // Óäàëåíèå ìåòîê â âèëàõ Ýíäðþñà. Íà÷àëî. //-------------------------------------------------------- void delete_objects7(int sd) { int i, k=0; //, handle; string txt="", tmp="", metka="", file=""; if (sd==0) // ñòàòè÷åñêèõ { file="\\Price Label S\\"; metka="m#"+ExtComplekt+"_"+"s"; } if (sd==1) // äèíàìè÷åñêèõ { file="\\Price Label D\\"; metka="m#"+ExtComplekt+"_"+"d"; } for (i=ObjectsTotal()-1; i>=0; i--) { txt=ObjectName(i); if (StringFind(txt,metka)>-1) {ObjectDelete (txt); k++;} } } //-------------------------------------------------------- // Óäàëåíèå ìåòîê â âèëàõ Ýíäðþñà. Êîíåö. //-------------------------------------------------------- */ //-------------------------------------------------------- // Óäàëåíèå îáúåêòîâ. Íà÷àëî. // Óäàëåíèå ñèãíàëüíîé ìåòêè APm. //-------------------------------------------------------- void delete_objects8() { int i, i_APm=0, count_APm=0; string txt=""; if (!ExtCustomStaticAP || !AutoMagnet) { if (ObjectFind("AM_0_" + ExtComplekt)==0) { ObjectDelete("AM_0_" + ExtComplekt); ObjectDelete("AM_1_" + ExtComplekt); ObjectDelete("AM_2_" + ExtComplekt); } } if (!ObjectFind(nameCheckLabel)==0) return; for (i=ObjectsTotal()-1; i>=0; i--) { txt=ObjectName(i); // ïîäñ÷åò êîëè÷åñêòâà âèë ñ ìåòêîé APm if (ObjectType(txt)==OBJ_PITCHFORK) { if (StringFind(txt,"_APm",0)>0) i_APm++; } } ObjectDelete(nameCheckLabel_hidden); if (i_APm>1) { if (ObjectFind(nameCheckLabel)==0) { // Ïðîâåðêà ïîëîæåíèÿ ñèãíàëüíîé ìåòêè APm if (ObjectGet(nameCheckLabel,OBJPROP_XDISTANCE)!=vX || ObjectGet(nameCheckLabel,OBJPROP_YDISTANCE)!=vY) { count_APm=(i_APm-1)*2; } else { count_APm=i_APm; } ObjectCreate(nameCheckLabel_hidden,OBJ_TEXT,0,0,0); ObjectSetText(nameCheckLabel_hidden,""+i_APm+"_"+count_APm); ObjectSet(nameCheckLabel_hidden, OBJPROP_COLOR, CLR_NONE); ObjectSet(nameCheckLabel_hidden, OBJPROP_BACK, true); } } if (i_APm>0) { ObjectDelete(nameCheckLabel); ObjectCreate(nameCheckLabel,OBJ_LABEL,0,0,0); ObjectSetText(nameCheckLabel,"APm"); ObjectSet(nameCheckLabel, OBJPROP_FONTSIZE, 10); ObjectSet(nameCheckLabel, OBJPROP_COLOR, Red); ObjectSet(nameCheckLabel, OBJPROP_CORNER, 1); ObjectSet(nameCheckLabel, OBJPROP_XDISTANCE, vX+2); ObjectSet(nameCheckLabel, OBJPROP_YDISTANCE, vY); } else ObjectDelete(nameCheckLabel); } //-------------------------------------------------------- // Óäàëåíèå îáúåêòîâ. Êîíåö. // Óäàëåíèå ñèãíàëüíîé ìåòêè APm. //-------------------------------------------------------- //-------------------------------------------------------- // Óäàëåíèå îáúåêòîâ. Íà÷àëî. // Óäàëåíèå èíñòðóìåíòîâ âèë, ñîçäàííûõ âðó÷íóþ. //-------------------------------------------------------- void delete_objects9() { int i; string txt=""; for (i=ObjectsTotal()-1; i>=0; i--) { txt=ObjectName(i); if (StringFind(txt,"pmediana_" + ExtComplekt+"_")>-1) ObjectDelete(txt); if (StringFind(txt,"SLM382_" + ExtComplekt+"_")>-1) ObjectDelete(txt); if (StringFind(txt,"SLM618_" + ExtComplekt+"_")>-1) ObjectDelete(txt); if (StringFind(txt,"ISL_" + ExtComplekt+"_")>-1) ObjectDelete(txt); if (StringFind(txt,nameUTL)>-1) ObjectDelete(txt); if (StringFind(txt,nameLTL)>-1) ObjectDelete(txt); if (StringFind(txt,nameUWL)>-1) ObjectDelete(txt); if (StringFind(txt,nameLWL)>-1) ObjectDelete(txt); if (StringFind(txt,"FSL Shiff Lines S_" + ExtComplekt+"_")>-1) ObjectDelete(txt); } } //-------------------------------------------------------- // Óäàëåíèå îáúåêòîâ. Êîíåö. // Óäàëåíèå èíñòðóìåíòîâ âèë, ñîçäàííûõ âðó÷íóþ. //-------------------------------------------------------- //-------------------------------------------------------- // Óäàëåíèå îáúåêòîâ. Íà÷àëî. // Óäàëåíèå èíñòðóìåíòîâ äèíàìè÷åñêèõ âèë. //-------------------------------------------------------- void delete_objects10() { ObjectDelete(nameUTLd);ObjectDelete(nameLTLd); ObjectDelete(nameUWLd);ObjectDelete(nameLWLd); ObjectDelete("RLineD" + ExtComplekt+"_"); ObjectDelete("pitchforkD" + ExtComplekt+"_"); ObjectDelete("Master_pitchforkD" + ExtComplekt+"_"); ObjectDelete("ISL_D" + ExtComplekt+"_"); ObjectDelete("RZD" + ExtComplekt+"_"); ObjectDelete("PivotZoneD" + ExtComplekt+"_"); ObjectDelete("pmedianaD" + ExtComplekt+"_"); ObjectDelete("1-2pmedianaD" + ExtComplekt+"_"); ObjectDelete("SLM382D" + ExtComplekt+"_"); ObjectDelete("SLM618D" + ExtComplekt+"_"); ObjectDelete("FSL Shiff Lines D" + ExtComplekt+"_"); ObjectDelete("FanMedianaDinamic" + ExtComplekt+"_"); ObjectDelete("CISL" + ExtComplekt+"_"+1); delete_objects6(1); } //-------------------------------------------------------- // Óäàëåíèå îáúåêòîâ. Êîíåö. // Óäàëåíèå èíñòðóìåíòîâ äèíàìè÷åñêèõ âèë. //-------------------------------------------------------- //-------------------------------------------------------- // Óäàëåíèå îáúåêòîâ. Íà÷àëî. // Óäàëåíèå ñïèðàëè. //-------------------------------------------------------- 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("Master_pitchforkD" + ExtComplekt+"_"); ObjectDelete("ISL_D" + ExtComplekt+"_"); ObjectDelete("RZD" + ExtComplekt+"_"); ObjectDelete("pmedianaD" + ExtComplekt+"_"); ObjectDelete("1-2pmedianaD" + ExtComplekt+"_"); ObjectDelete("SLM382D" + ExtComplekt+"_"); ObjectDelete("SLM618D" + ExtComplekt+"_"); ObjectDelete("FSL Shiff Lines D" + 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; bool endCyklDirection=true; if (ExtIndicator==11) { bool endCykl=false; Depth = minDepth; if (ExtGartleyTypeSearch!=2) countGartley = 0; countColor = 0; if (flagExtGartleyTypeSearch2==false) {delete_objects3(); 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-=IterationStep; } else { vDepth+=IterationStep; } 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)&&(res0) 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(lasthigh0) { 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 ((vel3vel2)&&(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, shift; double min_DeltaGartley = (1 - FibonacciDeviation); double max_DeltaGartley = (1 + FibonacciDeviation); double bartoD; int aXABCD[6]; // íîìåðà áàðîâ ñ òî÷êàìè XABCD ïÿòèòî÷å÷íûõ ïàòòåðíîâ double retXD; double retXB; double retBD; double retAC; int O=0, X=1, A=2, B=3, C=4, D=5; int aNumBarPeak[]; color colorPattern; //****************************** double dotO; double dotX; double dotA; double dotB; double dotC; double dotD; double retXC; double retOA; double AB; double CD; datetime patternOTime=0; datetime patternXTime=0; datetime patternATime=0; datetime patternBTime=0; datetime patternCTime=0; datetime patternDTime=0; datetime findDTimeMin=0; datetime findDTimeMax=0; int counter=0; double alternateABCDRatios [] = { 1.000, 1.272, 1.618, 2.000, 2.618, 3.000, 3.618 }; double fibABCExpansion=0; double PriceD_XD_Min=0; double PriceD_XD_Max=0; double PriceD_BD_Min=0; double PriceD_BD_Max=0; int numberofDots=0; /* bool passFibTest_XB=false; bool passFibTest_AC=false; bool passFibTest_BD=false; bool passFibTest_XD=false; bool passFibTest_XC=false; double fibRatios[] = { 0.382, 0.447, 0.500, 0.618, 0.707, 0.786, 0.886, 1.000, 1.128, //1.130 1.272, //1.270 1.414, 1.618, 2.000, 2.240, 2.618, 3.140, 3.618, }; */ //Global Variables patternDotC=0; patternDotD=0; alternateABCD=""; vBullBearToNumberPattern = ""; vNamePatternToNumberPattern = ""; //***************************** if (ExtIndicator!=11) delete_objects3(); if ((ExtGartleyTypeSearch==0 && ExtIndicator==11) || ExtIndicator!=11) vPatOnOff = 0; maxPeak = 0; ArrayResize(aNumBarPeak, ArraySize(zz)); for(shift=0; shift<_maxbarZZ; shift++) { if (zz[shift]>0) {aNumBarPeak[maxPeak] = shift; maxPeak++;} } ArrayResize(aNumBarPeak, maxPeak); if (ExtIndicator>5 && ExtIndicator<11 && GrossPeriod>Period()) { bartoD=maxBarToD; } else { if (patternInfluence) { bartoD=AllowedBandPatternInfluence*(aNumBarPeak[4]-aNumBarPeak[0]); } else { bartoD=maxBarToD; } } aXABCD[D] = aNumBarPeak[0]; k = 0; while (k==0) { aXABCD[O] = aNumBarPeak[k + 5]; aXABCD[X] = aNumBarPeak[k + 4]; aXABCD[A] = aNumBarPeak[k + 3]; aXABCD[B] = aNumBarPeak[k + 2]; aXABCD[C] = aNumBarPeak[k + 1]; aXABCD[D] = aNumBarPeak[k]; //****************************************** vBullBear = ""; vNamePattern = ""; numberofDots=0; dotO=zz[aXABCD[O]]; dotX=zz[aXABCD[X]]; dotA=zz[aXABCD[A]]; dotB=zz[aXABCD[B]]; dotC=zz[aXABCD[C]]; dotD=zz[aXABCD[D]]; retXB=(dotA - dotB) / (dotA - dotX + 0.000001); retAC=(dotC - dotB) / (dotA - dotB + 0.000001); retBD=(dotC - dotD) / (dotC - dotB + 0.000001); retXD=(dotA - dotD) / (dotA - dotX + 0.000001); retXC=(dotA - dotC) / (dotA - dotX + 0.000001); //Cypher Patterns retOA=(dotX - dotA) / (dotX - dotO + 0.000001); //3 Drives AB=MathAbs(dotA-dotB); CD=MathAbs(dotC-dotD); patternOTime=Time[aXABCD[O]]; patternXTime=Time[aXABCD[X]]; patternATime=Time[aXABCD[A]]; patternBTime=Time[aXABCD[B]]; patternCTime=Time[aXABCD[C]]; patternDTime=Time[aXABCD[D]]; patternDotC=dotC; patternDotD=dotD; // Search For Classical Harmonic Patterns if (SearchClassicalPatterns==true) { // Define Shape of Classical Patterns if(dotA > dotX && dotB > dotX && dotB < dotA && dotC > dotB && dotC < dotA && dotD < dotB) { vBullBear="Bullish"; } if(dotA < dotX && dotB < dotX && dotB > dotA && dotC < dotB && dotC > dotA && dotD > dotB) { vBullBear="Bearish"; } // Check Fibonacci Retracements & Find Patterns if (StringLen(vBullBear)>0) { //Gartley Pattern Search Start if ( retXB >= 0.618*min_DeltaGartley && retXB <= 0.618*max_DeltaGartley && retAC >= 0.382*min_DeltaGartley && retAC <= 0.886*max_DeltaGartley && retBD >= 1.272*min_DeltaGartley && retBD <= 1.618*max_DeltaGartley && retXD >= 0.786*min_DeltaGartley && retXD <= 0.786*max_DeltaGartley && retXD < 1.000 ) { vNamePattern="Gartley"; // Gartley PriceD_XD_Min=dotA-0.786*min_DeltaGartley*(dotA-dotX); PriceD_XD_Max=dotA-0.786*max_DeltaGartley*(dotA-dotX); PriceD_BD_Min=dotC-1.618*min_DeltaGartley*(dotC-dotB); PriceD_BD_Max=dotC-1.618*max_DeltaGartley*(dotC-dotB); if (vBullBear=="Bullish") { LevelForDmin = PriceD_XD_Min; LevelForDmax = MathMax(PriceD_XD_Max,PriceD_BD_Max); } if (vBullBear=="Bearish") { LevelForDmin = PriceD_XD_Min; LevelForDmax = MathMin(PriceD_XD_Max,PriceD_BD_Max); } } //Gartley Pattern Searh Ends //Butterfly Pattern Search Start else if ( retXB >= 0.786*min_DeltaGartley && retXB <= 0.786*max_DeltaGartley && retAC >= 0.382*min_DeltaGartley && retAC <= 0.886*max_DeltaGartley && retBD >= 1.618*min_DeltaGartley && retBD <= 2.618*max_DeltaGartley && retXD >= 1.272*min_DeltaGartley && retXD <= 1.618*max_DeltaGartley && retXD > 1.000 ) { vNamePattern="Butterfly"; // Butterfly PriceD_XD_Min=dotA-1.272*min_DeltaGartley*(dotA-dotX); PriceD_XD_Max=dotA-1.618*max_DeltaGartley*(dotA-dotX); PriceD_BD_Min=dotC-2.618*min_DeltaGartley*(dotC-dotB); PriceD_BD_Max=dotC-2.618*max_DeltaGartley*(dotC-dotB); if (vBullBear=="Bullish") { LevelForDmin = PriceD_XD_Min; LevelForDmax = MathMax(PriceD_XD_Max,PriceD_BD_Max); } if (vBullBear=="Bearish") { LevelForDmin = PriceD_XD_Min; LevelForDmax = MathMin(PriceD_XD_Max,PriceD_BD_Max); } }//Butterfly Pattern Search Ends //Crab Pattern Search Start else if ( retXB >= 0.382*min_DeltaGartley && retXB <= 0.618*max_DeltaGartley && retAC >= 0.382*min_DeltaGartley && retAC <= 0.886*max_DeltaGartley && retBD >= 2.240*min_DeltaGartley && retBD <= 3.618*max_DeltaGartley && retXD >= 1.618*min_DeltaGartley && retXD <= 1.618*max_DeltaGartley && retXD > 1.000 ) { vNamePattern="Crab"; // Crab PriceD_XD_Min=dotA-1.618*min_DeltaGartley*(dotA-dotX); PriceD_XD_Max=dotA-1.618*max_DeltaGartley*(dotA-dotX); PriceD_BD_Min=dotC-3.618*min_DeltaGartley*(dotC-dotB); PriceD_BD_Max=dotC-3.618*max_DeltaGartley*(dotC-dotB); if (vBullBear=="Bullish") { LevelForDmin = PriceD_XD_Min; LevelForDmax = MathMax(PriceD_XD_Max,PriceD_BD_Max); } if (vBullBear=="Bearish") { LevelForDmin = PriceD_XD_Min; LevelForDmax = MathMin(PriceD_XD_Max,PriceD_BD_Max); } }//Crab Pattern Search Ends //Bat Pattern Search Start else if ( retXB >= 0.382*min_DeltaGartley && retXB <= 0.500*max_DeltaGartley && retAC >= 0.382*min_DeltaGartley && retAC <= 0.886*max_DeltaGartley && retBD >= 1.618*min_DeltaGartley && retBD <= 2.618*max_DeltaGartley && retXD >= 0.886*min_DeltaGartley && retXD <= 0.886*max_DeltaGartley && retXD < 1.000 ) { vNamePattern="Bat"; // Bat PriceD_XD_Min=dotA-0.886*min_DeltaGartley*(dotA-dotX); PriceD_XD_Max=dotA-0.886*max_DeltaGartley*(dotA-dotX); PriceD_BD_Min=dotC-2.618*min_DeltaGartley*(dotC-dotB); PriceD_BD_Max=dotC-2.618*max_DeltaGartley*(dotC-dotB); if (vBullBear=="Bullish") { LevelForDmin = PriceD_XD_Min; LevelForDmax = MathMax(PriceD_XD_Max,PriceD_BD_Max); } if (vBullBear=="Bearish") { LevelForDmin = PriceD_XD_Min; LevelForDmax = MathMin(PriceD_XD_Max,PriceD_BD_Max); } } // Bat Search End // The Alternate Bat Pattern Start else if ( retXB >= 0.382*min_DeltaGartley && retXB <= 0.382*max_DeltaGartley && retAC >= 0.382*min_DeltaGartley && retAC <= 0.886*max_DeltaGartley && retBD >= 2.000*min_DeltaGartley && retBD <= 3.618*max_DeltaGartley && retXD >= 1.128*min_DeltaGartley && retXD <= 1.128*max_DeltaGartley && retXD > 1.000 ) { vNamePattern="Alternate Bat"; PriceD_XD_Min=dotA-1.128*min_DeltaGartley*(dotA-dotX); PriceD_XD_Max=dotA-1.128*max_DeltaGartley*(dotA-dotX); PriceD_BD_Min=dotC-3.618*min_DeltaGartley*(dotC-dotB); PriceD_BD_Max=dotC-3.618*max_DeltaGartley*(dotC-dotB); if (vBullBear=="Bullish") { LevelForDmin = PriceD_XD_Min; LevelForDmax = MathMax(PriceD_XD_Max,PriceD_BD_Max); } if (vBullBear=="Bearish") { LevelForDmin = PriceD_XD_Min; LevelForDmax = MathMin(PriceD_XD_Max,PriceD_BD_Max); } } // The Alternate Bat Pattern Search End // The Deep Crab Pattern Start else if ( retXB >= 0.886*min_DeltaGartley && retXB <= 0.886*max_DeltaGartley && retAC >= 0.382*min_DeltaGartley && retAC <= 0.886*max_DeltaGartley && retBD >= 2.618*min_DeltaGartley && retBD <= 3.618*max_DeltaGartley && retXD >= 1.618*min_DeltaGartley && retXD <= 1.618*max_DeltaGartley && retXD > 1.000 ) { vNamePattern="Deep Crab"; PriceD_XD_Min=dotA-1.618*min_DeltaGartley*(dotA-dotX); PriceD_XD_Max=dotA-1.618*max_DeltaGartley*(dotA-dotX); PriceD_BD_Min=dotC-3.618*min_DeltaGartley*(dotC-dotB); PriceD_BD_Max=dotC-3.618*max_DeltaGartley*(dotC-dotB); if (vBullBear=="Bullish") { LevelForDmin = PriceD_XD_Min; LevelForDmax = MathMax(PriceD_XD_Max,PriceD_BD_Max); } if (vBullBear=="Bearish") { LevelForDmin = PriceD_XD_Min; LevelForDmax = MathMin(PriceD_XD_Max,PriceD_BD_Max); } } // The Deep Crab Pattern Search End } if(vNamePattern != "") { numberofDots=5; _CountBarsFunction (patternXTime,patternBTime,patternBTime,0.618,TimeDeviation,findDTimeMin,findDTimeMax); TimeForDmin=MathMin(findDTimeMin,findDTimeMax); _CountBarsFunction (patternXTime,patternBTime,patternBTime,1.618,TimeDeviation,findDTimeMin,findDTimeMax); TimeForDmax=MathMax(findDTimeMin,findDTimeMax); } }//Search Classical Paterns End // Shark Pattern Search if (StringLen(vNamePattern)==0 && SearchSharkPattern==true) { vBullBear = ""; vNamePattern = ""; if(dotA > dotX && dotB > dotX && dotB < dotA && dotC > dotB && dotC > dotA && dotD < dotB) { vBullBear="Bullish"; } if(dotA < dotX && dotB < dotX && dotB > dotA && dotC < dotB && dotC < dotA && dotD > dotB) { vBullBear="Bearish"; } // îïðåäåëÿåì ðåòðåñìåíòû if (StringLen(vBullBear)>0) { //Shark Pattern Search Start if ( retXB >= 0.382*min_DeltaGartley && retXB < 1.000 && retAC >= 1.128*min_DeltaGartley && retAC <= 1.618*max_DeltaGartley && retBD >= 1.618*min_DeltaGartley && retBD <= 2.240*max_DeltaGartley && retXD >= 0.886*min_DeltaGartley && retXD <= 1.128*max_DeltaGartley ) { vNamePattern="Shark"; // Shark PriceD_XD_Min=dotA-0.886*min_DeltaGartley*(dotA-dotX); PriceD_XD_Max=dotA-1.128*max_DeltaGartley*(dotA-dotX); PriceD_BD_Min=dotC-2.240*min_DeltaGartley*(dotC-dotB); PriceD_BD_Max=dotC-2.240*max_DeltaGartley*(dotC-dotB); if (vBullBear=="Bullish") { LevelForDmin = PriceD_XD_Min; LevelForDmax = MathMax(PriceD_XD_Max,PriceD_BD_Max); } if (vBullBear=="Bearish") { LevelForDmin = PriceD_XD_Min; LevelForDmax = MathMin(PriceD_XD_Max,PriceD_BD_Max); } } //Shark Pattern Search Ends } if(vNamePattern != "") { numberofDots=5; _CountBarsFunction (patternXTime,patternBTime,patternBTime,0.618,TimeDeviation,findDTimeMin,findDTimeMax); TimeForDmin=MathMin(findDTimeMin,findDTimeMax); _CountBarsFunction (patternXTime,patternBTime,patternBTime,1.618,TimeDeviation,findDTimeMin,findDTimeMax); TimeForDmax=MathMax(findDTimeMin,findDTimeMax); } } // Cypher Pattern Search if (StringLen(vNamePattern)==0 && SearchCypherPattern==true) { vBullBear = ""; vNamePattern = ""; if(dotA > dotX && dotB > dotX && dotB < dotA && dotC > dotB && dotC > dotA && dotD < dotB) { vBullBear="Bullish"; } if(dotA < dotX && dotB < dotX && dotB > dotA && dotC < dotB && dotC < dotA && dotD > dotB) { vBullBear="Bearish"; } // îïðåäåëÿåì ðåòðåñìåíòû if (StringLen(vBullBear)>0) { //Cypher Pattern Search Start if ( retXB >= 0.382*min_DeltaGartley && retXB < 0.618*max_DeltaGartley && retXC >= 1.128*min_DeltaGartley && retXC <= 1.414*max_DeltaGartley && retAC > 1.000 && retBD > 1.000 && retXD >= 0.786*min_DeltaGartley && retXD <= 0.786*max_DeltaGartley && retXD < 1.000 ) { vNamePattern="Cypher"; // Cypher LevelForDmin = dotA-0.786*min_DeltaGartley*(dotA-dotX); LevelForDmax = dotA-0.786*max_DeltaGartley*(dotA-dotX); }//Cypher Pattern Search Ends } if(vNamePattern != "") { numberofDots=5; _CountBarsFunction (patternXTime,patternBTime,patternBTime,0.618,TimeDeviation,findDTimeMin,findDTimeMax); TimeForDmin=MathMin(findDTimeMin,findDTimeMax); _CountBarsFunction (patternXTime,patternBTime,patternBTime,1.618,TimeDeviation,findDTimeMin,findDTimeMax); TimeForDmax=MathMax(findDTimeMin,findDTimeMax); } } // Navarro 200 Pattern Search if (StringLen(vNamePattern)==0 && SearchNavarro200Pattern==true) { vBullBear = ""; vNamePattern = ""; if(dotA > dotX && dotB > dotX && dotB < dotA && dotC > dotB && dotD < dotB) { vBullBear="Bullish"; } if(dotA < dotX && dotB < dotX && dotB > dotA && dotC < dotB && dotD > dotB) { vBullBear="Bearish"; } // îïðåäåëÿåì ðåòðåñìåíòû if (StringLen(vBullBear)>0) { //Navarro 200 Pattern Search Start _CountBarsFunction (patternXTime,patternBTime,patternBTime,1.000,TimeDeviation,TimeForDmin,TimeForDmax); if ( patternDTime >=TimeForDmin && patternDTime <=TimeForDmax && retXB >= 0.382*min_DeltaGartley && retXB <= 0.786*max_DeltaGartley && retAC >= 0.886*min_DeltaGartley && retAC <= 1.128*max_DeltaGartley && retBD > 1.000 && retXD >= 0.886*min_DeltaGartley && retXD <= 1.128*max_DeltaGartley ) { vNamePattern="Navarro 200"; // Navarro 200 LevelForDmin = dotA-0.886*min_DeltaGartley*(dotA-dotX); LevelForDmax = dotA-1.128*max_DeltaGartley*(dotA-dotX); } //Navarro 200 Pattern Search Ends } if(vNamePattern != "") { numberofDots=5; } } // Leonardo Pattern Search if (StringLen(vNamePattern)==0 && SearchLeonardoPattern==true) { vBullBear = ""; vNamePattern = ""; // Define Shape of Leonardo Pattern if(dotA > dotX && dotB > dotX && dotB < dotA && dotC > dotB && dotC < dotA && dotD < dotB) { vBullBear="Bullish"; } if(dotA < dotX && dotB < dotX && dotB > dotA && dotC < dotB && dotC > dotA && dotD > dotB) { vBullBear="Bearish"; } // îïðåäåëÿåì ðåòðåñìåíòû if (StringLen(vBullBear)>0) { //Leonardo Pattern Search Start if ( retXB >= 0.500*min_DeltaGartley && retXB <= 0.500*max_DeltaGartley && retXC > 0.000 && retXC <= 0.382*max_DeltaGartley && retXD >= 0.786*min_DeltaGartley && retXD <= 0.786*max_DeltaGartley ) { vNamePattern="Leonardo"; // Leonardo LevelForDmin = dotA-0.786*min_DeltaGartley*(dotA-dotX); LevelForDmax = dotA-0.786*max_DeltaGartley*(dotA-dotX); } //Navarro 200 Pattern Search Ends } if(vNamePattern != "") { numberofDots=5; _CountBarsFunction (patternXTime,patternBTime,patternBTime,0.618,TimeDeviation,findDTimeMin,findDTimeMax); TimeForDmin=MathMin(findDTimeMin,findDTimeMax); _CountBarsFunction (patternXTime,patternBTime,patternBTime,1.618,TimeDeviation,findDTimeMin,findDTimeMax); TimeForDmax=MathMax(findDTimeMin,findDTimeMax); } } // 5-0 Pattern Search if (StringLen(vNamePattern)==0 && Search5_0Pattern==true) { vBullBear = ""; vNamePattern = ""; if(dotA < dotO && dotA > dotX && dotB < dotX && dotB < dotA && dotC > dotB && dotC > dotA && dotD > dotB) { vBullBear="Bullish"; } if(dotA > dotO && dotA < dotX && dotB > dotX && dotB > dotA && dotC < dotB && dotC < dotA && dotD < dotB) { vBullBear="Bearish"; } // îïðåäåëÿåì ðåòðåñìåíòû if (StringLen(vBullBear)>0) { //5-0 Pattern Search Start if ( retXB >= 1.128*min_DeltaGartley && retXB <= 1.618*max_DeltaGartley && retAC >= 1.618*min_DeltaGartley && retAC <= 2.240*max_DeltaGartley && retBD >= 0.500*min_DeltaGartley && retBD <= 0.500*max_DeltaGartley ) { vNamePattern="5-0"; // 5-0 LevelForDmin = dotC-0.500*min_DeltaGartley*(dotC-dotB); LevelForDmax = dotC-0.500*max_DeltaGartley*(dotC-dotB); } //5-0 Pattern Search Ends } if(vNamePattern != "") { numberofDots=6; _CountBarsFunction (patternATime,patternBTime,patternCTime,0.618,TimeDeviation,findDTimeMin,findDTimeMax); TimeForDmin=MathMin(findDTimeMin,findDTimeMax); _CountBarsFunction (patternATime,patternBTime,patternCTime,1.618,TimeDeviation,findDTimeMin,findDTimeMax); TimeForDmax=MathMax(findDTimeMin,findDTimeMax); } } // 3 Drives Pattern Search if (StringLen(vNamePattern)==0 && Search3DrivesPattern==true) { vBullBear = ""; vNamePattern = ""; if(dotX < dotO && dotA > dotX && dotA < dotO && dotB < dotX && dotC > dotB && dotC < dotA && dotD < dotB) { vBullBear="Bullish"; } if(dotX > dotO && dotA < dotX && dotA > dotO && dotB > dotX && dotC < dotB && dotC > dotA && dotD > dotB) { vBullBear="Bearish"; } // îïðåäåëÿåì ðåòðåñìåíòû if (StringLen(vBullBear)>0) { //3 Drives Pattern Search Start if ( retOA >= 0.618*min_DeltaGartley && retOA <= 0.786*max_DeltaGartley && retXB >= 1.272*min_DeltaGartley && retXB <= 1.618*max_DeltaGartley && retAC >= 0.618*min_DeltaGartley && retAC <= 0.786*max_DeltaGartley && retBD >= 1.272*min_DeltaGartley && retBD <= 1.618*max_DeltaGartley ) { vNamePattern="3 Drives"; // 3 Drives LevelForDmin = dotC-1.272*min_DeltaGartley*(dotC-dotB); LevelForDmax = dotC-1.618*max_DeltaGartley*(dotC-dotB); } //3 Drives Pattern Search Ends } if(vNamePattern != "") { numberofDots=6; _CountBarsFunction (patternOTime,patternXTime,patternCTime,0.618,TimeDeviation,findDTimeMin,findDTimeMax); TimeForDmin=MathMin(findDTimeMin,findDTimeMax); _CountBarsFunction (patternOTime,patternXTime,patternCTime,1.618,TimeDeviation,findDTimeMin,findDTimeMax); TimeForDmax=MathMax(findDTimeMin,findDTimeMax); } } // AB=CD Pattern Search if (StringLen(vNamePattern)==0 && SearchABCDPattern==true) { vBullBear = ""; vNamePattern = ""; if(dotB < dotA && dotC > dotB && dotC < dotA && dotD < dotB) { vBullBear="Bullish"; } if(dotB > dotA && dotC < dotB && dotC > dotA && dotD > dotB) { vBullBear="Bearish"; } // îïðåäåëÿåì ðåòðåñìåíòû if (StringLen(vBullBear)>0) { //AB=CD Pattern Search Start _CountBarsFunction (patternATime,patternBTime,patternCTime,1.000,TimeDeviation,TimeForDmin,TimeForDmax); if ( (CD/AB >=(1-LegLengthDeviation) && CD/AB <=(1+LegLengthDeviation) && patternDTime>=TimeForDmin && patternDTime<=TimeForDmax) && ( (retAC >= 0.618*min_DeltaGartley && retAC <= 0.618*max_DeltaGartley && retBD >= 1.618*min_DeltaGartley && retBD <= 1.618*max_DeltaGartley) || (retAC >= 0.786*min_DeltaGartley && retAC <= 0.786*max_DeltaGartley && retBD >= 1.272*min_DeltaGartley && retBD <= 1.272*max_DeltaGartley) ) ) { vNamePattern="AB=CD"; // AB=CD if(retAC >= 0.618*min_DeltaGartley && retAC <= 0.618*max_DeltaGartley) { LevelForDmin = dotC-1.618*min_DeltaGartley*(dotC-dotB); LevelForDmax = dotC-1.618*max_DeltaGartley*(dotC-dotB); } else if(retAC >= 0.786*min_DeltaGartley && retAC <= 0.786*max_DeltaGartley) { LevelForDmin = dotC-1.272*min_DeltaGartley*(dotC-dotB); LevelForDmax = dotC-1.272*max_DeltaGartley*(dotC-dotB); } } //AB=CD Pattern Search Ends } if(vNamePattern != "") { numberofDots=4; } } if (StringLen(vNamePattern)>0) { alternateABCD=""; for(counter=0; counter = MathMin(LevelForDmin,LevelForDmax)) { alternateABCD=alternateABCD + "(" + DoubleToStr(alternateABCDRatios[counter],3) + ") * AB = CD = " + DoubleToStr(fibABCExpansion,Digits) + "\n"; continue; } if(vBullBear=="Bearish" && fibABCExpansion <= MathMax(LevelForDmin,LevelForDmax)) { alternateABCD=alternateABCD + "(" + DoubleToStr(alternateABCDRatios[counter],3) + ") * AB = CD = " + DoubleToStr(fibABCExpansion,Digits) + "\n"; continue; } break; } alternateABCD=alternateABCD + "(" + DoubleToStr(alternateABCDRatios[counter],3) + ") * AB = CD = " + DoubleToStr(fibABCExpansion,Digits) + "\n"; } //***************************************************************************** if (StringLen(vNamePattern)>0 && (aXABCD[D] < bartoD+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) { continue; } if (ArraySize(PeakCenaX)0) { if(numberofDots >=4) { nameObj="_"+ExtComplekt+"ABCDzzAB_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern; ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[A]],zz[aXABCD[A]],Time[aXABCD[B]],zz[aXABCD[B]]); ObjectSet(nameObj,OBJPROP_COLOR,colorPattern); ObjectSet(nameObj,OBJPROP_STYLE,DrawingZZRayStyle); ObjectSet(nameObj,OBJPROP_WIDTH,DrawingZZRayWidth); ObjectSet(nameObj, OBJPROP_RAY, false); nameObj="_"+ExtComplekt+"ABCDzzBC_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern; ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[B]],zz[aXABCD[B]],Time[aXABCD[C]],zz[aXABCD[C]]); ObjectSet(nameObj,OBJPROP_COLOR,colorPattern); ObjectSet(nameObj,OBJPROP_STYLE,DrawingZZRayStyle); ObjectSet(nameObj,OBJPROP_WIDTH,DrawingZZRayWidth); ObjectSet(nameObj, OBJPROP_RAY, false); nameObj="_"+ExtComplekt+"ABCDzzCD_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern; ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[C]],zz[aXABCD[C]],Time[aXABCD[D]],zz[aXABCD[D]]); ObjectSet(nameObj,OBJPROP_COLOR,colorPattern); ObjectSet(nameObj,OBJPROP_STYLE,DrawingZZRayStyle); ObjectSet(nameObj,OBJPROP_WIDTH,DrawingZZRayWidth); ObjectSet(nameObj, OBJPROP_RAY, false); } if(numberofDots >=5) { nameObj="_"+ExtComplekt+"ABCDzzXA_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern; ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[X]],zz[aXABCD[X]],Time[aXABCD[A]],zz[aXABCD[A]]); ObjectSet(nameObj,OBJPROP_COLOR,colorPattern); ObjectSet(nameObj,OBJPROP_STYLE,DrawingZZRayStyle); ObjectSet(nameObj,OBJPROP_WIDTH,DrawingZZRayWidth); ObjectSet(nameObj, OBJPROP_RAY, false); } if(numberofDots >=6) { nameObj="_"+ExtComplekt+"ABCDzz0A_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern; ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[O]],zz[aXABCD[O]],Time[aXABCD[X]],zz[aXABCD[X]]); ObjectSet(nameObj,OBJPROP_COLOR,colorPattern); ObjectSet(nameObj,OBJPROP_STYLE,DrawingZZRayStyle); ObjectSet(nameObj,OBJPROP_WIDTH,DrawingZZRayWidth); ObjectSet(nameObj, OBJPROP_RAY, false); } } if (RangeForPointD==true) // Âûâîä ïðÿìîóãîëüíèêà äëÿ çîíû òî÷êè D { if (FlagForD) { nameObj="_"+ExtComplekt+"PointD_01" + countGartley + ""; ObjectCreate(nameObj,OBJ_RECTANGLE,0,TimeForDmin,LevelForDminToNumberPattern,TimeForDmax,LevelForDmaxToNumberPattern); ObjectSet(nameObj, OBJPROP_BACK, false); ObjectSet(nameObj, OBJPROP_COLOR, ExtColorRangeForPointD); nameObj="_"+ExtComplekt+"PointD_02" + countGartley + ""; ObjectCreate(nameObj,OBJ_TREND,0,TimeForDmin,NormalizeDouble((LevelForDminToNumberPattern+LevelForDmaxToNumberPattern)/2,Digits),TimeForDmax,NormalizeDouble((LevelForDminToNumberPattern+LevelForDmaxToNumberPattern)/2,Digits)); ObjectSet(nameObj, OBJPROP_BACK, false); ObjectSet(nameObj, OBJPROP_RAY, false); ObjectSet(nameObj, OBJPROP_COLOR, ExtColorRangeForPointD); ObjectSet(nameObj, OBJPROP_STYLE, ExtMedianDStyle); } } if(DrawFibonacciExpansion==true) { nameObj="_"+ExtComplekt+"FibExpansion" + countGartley + ""; ObjectCreate(nameObj,OBJ_EXPANSION,0,Time[aXABCD[A]],zz[aXABCD[A]],Time[aXABCD[B]],zz[aXABCD[B]],Time[aXABCD[C]],zz[aXABCD[C]]); ObjectSet(nameObj, OBJPROP_BACK, false); ObjectSet(nameObj, OBJPROP_LEVELCOLOR,FibExpLevelColor); ObjectSet(nameObj, OBJPROP_LEVELSTYLE,FibExpLevelStyle); ObjectSet(nameObj, OBJPROP_LEVELWIDTH,FibExpLevelWidth); ObjectSet(nameObj, OBJPROP_FIBOLEVELS,ArraySize(alternateABCDRatios)); for(counter=0; counter < ArraySize(alternateABCDRatios); counter++) { ObjectSet(nameObj, OBJPROP_FIRSTLEVEL+counter,alternateABCDRatios[counter]); fibABCExpansion=NormalizeDouble(zz[aXABCD[C]]-alternateABCDRatios[counter]*(zz[aXABCD[A]]-zz[aXABCD[B]]),Digits); ObjectSetFiboDescription(nameObj, counter, "FE " + DoubleToStr(alternateABCDRatios[counter] *100,1) + " - " + DoubleToStr(fibABCExpansion,Digits)); } } return(0); } else { vBullBear = ""; vNamePattern = ""; } k++; if (patternInfluence) { if (!(ExtIndicator>5 && ExtIndicator<11 && GrossPeriod>Period())) { bartoD=AllowedBandPatternInfluence*(aNumBarPeak[k+4]-aNumBarPeak[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 (tisi+di && Low[i]si-Low[i]) si=High[i]-di; // Îòêëîíåíèå õàÿ îò ñðåäíåé öåíû áîëüøå îòêëîíåíèÿ ëîâà // else if (High[i]-si=si+di) si=High[i]-di; // else if (Low[i]si+di) si=High[i]-di; // } } // Âû÷èñëåíèå íà÷àëüíîãî çíà÷åíèÿ ñðåäíåé öåíû if (i>cbi-1) {si=(High[i]+Low[i])/2;} // Îïðåäåëÿåì íàïðàâëåíèå òðåíäà äëÿ ðàñ÷åòíîãî áàðà if (si>sip) fs=1; // Òðåíä âîñõîäÿùèé if (si0) { ha[i]=High[i]; la[bi]=Low[bi]; la[i]=0; tmh=Time[i]; ha[i]=High[i]; la[i]=0; // ïðîñòàíîâêà ìåòêè íà âîñõîäÿùåì ëó÷å } } if (fs==2 && fsp==1) // Òðåäí ñìåíèëñÿ ñ âîñõîäÿùåãî íà íèñõîäÿùèé { lm=Low[i]; ai=iBarShift(Symbol(),Period(),tai); zz[ai]=High[ai]; zzH[ai]=High[ai]; tbi=Time[i]; si=Low[i]+di; fsp=fs; sip=si; if (ExtLabel>0) { ha[ai]=High[ai]; ha[i]=0; la[i]=Low[i]; tml=Time[i]; ha[i]=0; la[i]=Low[i]; // ïðîñòàíîâêà ìåòêè íà íèñõîäÿùåì ëó÷å } } // Ïðîäîëæåíèå tðåíäà. Îòñëåæèâàíèå òðåíäà. if (fs==1 && High[i]>hm) {hm=High[i]; tai=Time[i]; si=High[i]-di;} if (fs==2 && Low[i]=0; n--) {zzH[n]=0; zz[n]=0; if (ExtLabel>0) ha[n]=0;} zz[ai0]=High[ai0]; zzH[ai0]=High[ai0]; zzL[ai0]=0; if (ExtLabel>0) ha[ai0]=High[ai0]; } if (fs==2) { for (n=ai0-1; n>=0; n--) {zzL[n]=0; zz[n]=0; if (ExtLabel>0) la[n]=0;} zz[bi0]=Low[bi0]; zzL[bi0]=Low[bi0]; zzH[bi0]=0; if (ExtLabel>0) la[bi0]=Low[bi0]; } if (ExtLabel>0) { if (fs==1) {aim=iBarShift(Symbol(),0,tmh); if (aim0) cbi=ExtMaxBar; else cbi=Bars-1; //--------------------------------- for (i=cbi; i>=ExtMinBar; i--) { //------------------------------------------------- // Óñòàíàâëèâàåì íà÷àëüíûå çíà÷åíèÿ ìèíèìóìà è ìàêñèìóìà áàðà if (lLast==0) {lLast=Low[i];hLast=High[i]; if (ExtIndicator==3) di=hLast-lLast;} // Îïðåäåëÿåì íàïðàâëåíèå òðåíäà äî ïåðâîé òî÷êè ñìåíû òðåíäà. // Èëè äî òî÷êè íà÷àëà ïåðâîãî ëó÷à çà ëåâûì êðàåì. if (fs==0) { if (lLastLow[i] && hLast>High[i]) {fs=2; lLast=Low[i]; si=Low[i]; bi=i; tbi=Time[i]; if (ExtIndicator==3) di=High[i]-Low[i];} // òðåíä íèñõîäÿùèé } if (ti0) {countBar--; if (i==0 && countBar==0) fcount0=true;} // Îñòàíîâêà. Îïðåäåëåíèå äàëüíåéøåãî íàïðàâëåíèÿ òðåíäà. if (fs==1) { if (hLast>High[i] && !fh) fh=true; if (i==0) { if (Close[i+1]Low[i+1] && High[i+1]i+1 && fh && !fcount0) {fs=2; countBar=minBars; fh=false;} if (fs==2) // Òðåäí ñìåíèëñÿ ñ âîñõîäÿùåãî íà íèñõîäÿùèé íà ïðåäûäóùåì áàðå { zz[ai0]=High[ai0]; zzH[ai0]=High[ai0]; lLast=Low[i+1]; if (ExtIndicator==3) di=High[i+1]-Low[i+1]; si=Low[i+1]; bi=i+1; tbi=Time[i+1]; if (ExtLabel>0) { ha[ai0]=High[ai0]; tml=Time[i+1]; ha[i+1]=0; la[i+1]=Low[i+1]; // ïðîñòàíîâêà ìåòêè íà íèñõîäÿùåì ëó÷å } else if (chHL && chHL_PeakDet_or_vts) {ha[i+1]=si+di; la[i+1]=si;} } } else { if (Close[i]Low[i] && High[i]0) { ha[ai]=High[ai]; tml=Time[i]; ha[i]=0; la[i]=Low[i]; // ïðîñòàíîâêà ìåòêè íà íèñõîäÿùåì ëó÷å } else if (chHL && chHL_PeakDet_or_vts) {ha[i]=si+di; la[i]=si;} } } } else // fs==2 { if (lLasthLast && fl) {fs=1; countBar=minBars; fl=false;} if (countBar==0 && si+dilLast && bi0>i+1 && fl && !fcount0) {fs=1; countBar=minBars; fl=false;} if (fs==1) // Òðåäí ñìåíèëñÿ ñ íèñõîäÿùåãî íà âîñõîäÿùèé íà ïðåäûäóùåì áàðå { zz[bi0]=Low[bi0]; zzL[bi0]=Low[bi0]; hLast=High[i+1]; if (ExtIndicator==3) di=High[i+1]-Low[i+1]; si=High[i+1]; ai=i+1; tai=Time[i+1]; if (ExtLabel>0) { la[bi0]=Low[bi0]; tmh=Time[i+1]; ha[i+1]=High[i+1]; la[i+1]=0; // ïðîñòàíîâêà ìåòêè íà âîñõîäÿùåì ëó÷å } else if (chHL && chHL_PeakDet_or_vts) {ha[i+1]=si; la[i+1]=si-di;} } } else { if (Close[i]>hLast && fl) {fs=1; countBar=minBars; fl=false;} if (countBar==0 && si+dilLast && fl) {fs=1; countBar=minBars; fl=false;} if (fs==1) // Òðåäí ñìåíèëñÿ ñ íèñõîäÿùåãî íà âîñõîäÿùèé { zz[bi]=Low[bi]; zzL[bi]=Low[bi]; hLast=High[i]; if (ExtIndicator==3) di=High[i]-Low[i]; si=High[i]; ai=i; tai=Time[i]; if (ExtLabel>0) { la[bi]=Low[bi]; tmh=Time[i]; ha[i]=High[i]; la[i]=0; // ïðîñòàíîâêà ìåòêè íà âîñõîäÿùåì ëó÷å } else if (chHL && chHL_PeakDet_or_vts==1) {ha[i]=si; la[i]=si-di;} } } } } // Ïðîäîëæåíèå òðåíäà if (fs==1 && High[i]>si) {ai=i; tai=Time[i]; hLast=High[i]; si=High[i]; countBar=minBars; fh=false; if (ExtIndicator==3) di=High[i]-Low[i];} if (fs==2 && Low[i]=0; n--) {zzH[n]=0; zz[n]=0; if (ExtLabel>0) ha[n]=0;} zz[ai0]=High[ai0]; zzH[ai0]=High[ai0]; zzL[ai0]=0; if (ExtLabel>0) ha[ai0]=High[ai0]; } if (fs==2) { for (n=ai0-1; n>=0; n--) {zzL[n]=0; zz[n]=0; if (ExtLabel>0) la[n]=0;} zz[bi0]=Low[bi0]; zzL[bi0]=Low[bi0]; zzH[bi0]=0; if (ExtLabel>0) la[bi0]=Low[bi0]; } if (ExtLabel>0) { if (fs==1) {aim=iBarShift(Symbol(),0,tmh); if (aim0) { ArrayInitialize(la,0.0); ArrayInitialize(ha,0.0); } GetHigh(0,Bars,0.0,0); // final cutting lasthigh=-1; lasthighpos=-1; lastlow=-1; lastlowpos=-1; for(shift=Bars; shift>=0; shift--) { curlow=zzL[shift]; curhigh=zzH[shift]; if((curlow==0)&&(curhigh==0)) continue; //--- if(curhigh!=0) { if(lasthigh>0) { if(lasthigh0) { if(lastlow>curlow) zzL[lastlowpos]=0; else zzL[shift]=0; } //--- if((curlow=0; shift--) { zz[shift]=zzL[shift]; res=zzH[shift]; if(res!=0.0) zz[shift]=res; } if (ExtLabel>0) // ðàññòàâëÿåì ìåòêè { for(shift=Bars-1; shift>=0; shift--) { if (zz[shift]>0) { if (zzH[shift]>0) { peak=High[shift]; wrpeak=Low[shift]; ha[shift]=High[shift]; la[shift]=0; metka=2; shift--; } else { peak=Low[shift]; wrpeak=High[shift]; la[shift]=Low[shift]; ha[shift]=0; metka=1; shift--; } } if (metka==1) { if (wrpeakminSize*Point) {metka=0; ha[shift]=High[shift];} } else { wrpeak=High[shift]; } } else if (metka==2) { if (wrpeak>Low[shift]) { if (peak-Low[shift]>minSize*Point) {metka=0; la[shift]=Low[shift];} } else { wrpeak=Low[shift]; } } } } } void GetHigh(int start, int end, double price, int step) { int count=end-start; if (count<=0) return; int i=iHighest(NULL,0,MODE_HIGH,count+1,start); double val=High[i]; if ((val-price)>(minSize*Point)) { zzH[i]=val; if (i==start) {GetLow(start+step,end-step,val,1-step); if (zzL[start-1]>0) zzL[start]=0; return;} if (i==end) {GetLow(start+step,end-step,val,1-step); if (zzL[end+1]>0) zzL[end]=0; return;} GetLow(start,i-1,val,0); GetLow(i+1,end,val,0); } } void GetLow(int start, int end, double price, int step) { int count=end-start; if (count<=0) return; int i=iLowest(NULL,0,MODE_LOW,count+1,start); double val=Low[i]; if ((price-val)>(minSize*Point)) { zzL[i]=val; if (i==start) {GetHigh(start+step,end-step,val,1-step); if (zzH[start-1]>0) zzH[start]=0; return;} if (i==end) {GetHigh(start+step,end-step,val,1-step); if (zzH[end+1]>0) zzH[end]=0; return;} GetHigh(start,i-1,val,0); GetHigh(i+1,end,val,0); } } //-------------------------------------------------------- // ZigZag tauber. Êîíåö. //-------------------------------------------------------- //---------------------------------------------------- // Ñâèíãè Ãàííà. Íà÷àëî. //---------------------------------------------------- void GannSwing() { int i,n; // Ïåðåìåííûå äëÿ Ñâèíãîâ Ãàííà double lLast_m=0, hLast_m=0; int countBarExt=0; // ñ÷åò÷èê âíåøíèõ áàðîâ int countBarl=0,countBarh=0; fs=0; ti=0; // lLast, hLast - ìèíèìóì è ìàêñèìóì àêòèâíîãî áàðà // lLast_m, hLast_m - ìèíèìóì è ìàêñèìóì "ïðîìåæóòî÷íûõ" áàðîâ ArrayInitialize(zz,0.0); ArrayInitialize(zzL,0.0); ArrayInitialize(zzH,0.0); if (ExtLabel>0) { ArrayInitialize(la,0.0); ArrayInitialize(ha,0.0); } // cbi=Bars-IndicatorCounted()-1; //--------------------------------- // cbi=Bars-1; if (ExtMaxBar>0) cbi=ExtMaxBar; else cbi=Bars-1; for (i=cbi; i>=ExtMinBar; i--) { //------------------------------------------------- // Óñòàíàâëèâàåì íà÷àëüíûå çíà÷åíèÿ ìèíèìóìà è ìàêñèìóìà áàðà if (lLast==0) {lLast=Low[i]; hLast=High[i]; ai=i; bi=i;} if (ti!=Time[i]) { ti=Time[i]; if (lLast_m==0 && hLast_m==0) { if (lLast>Low[i] && hLastLow[i] && hLast>=High[i]) // Òåíäåíöèÿ íà òåêóùåì áàðå íèñõîäÿùàÿ { lLast_m=Low[i];hLast_m=0;countBarh=0;countBarExt=0; if (fs!=2) countBarl++; else {lLast=Low[i]; hLast=High[i]; lLast_m=0; hLast_m=0; bi=i; tbi=Time[i];} } } else if (lLast_m>0 && hLast_m>0) // Âíåøíèé áàð (ïðåäûäóùèé) { if (lLast_m>Low[i] && hLast_mLow[i] && hLast_m>=High[i]) // Òåíäåíöèÿ íà òåêóùåì áàðå íèñõîäÿùàÿ { lLast_m=Low[i];hLast_m=0;countBarh=0;countBarExt=0; if (fs!=2) countBarl++; else {lLast=Low[i]; hLast=High[i]; lLast_m=0; hLast_m=0; bi=i; tbi=Time[i];} } } else if (lLast_m>0) { if (lLast_m>Low[i] && hLastLow[i] && hLast>=High[i]) // Òåíäåíöèÿ íà òåêóùåì áàðå íèñõîäÿùàÿ { lLast_m=Low[i];hLast_m=0;countBarh=0;countBarExt=0; if (fs!=2) countBarl++; else {lLast=Low[i]; hLast=High[i]; lLast_m=0; hLast_m=0; bi=i; tbi=Time[i];} } } else if (hLast_m>0) { if (lLast>Low[i] && hLast_mLow[i] && hLast_m>=High[i]) // Òåíäåíöèÿ íà òåêóùåì áàðå íèñõîäÿùàÿ { lLast_m=Low[i];hLast_m=0;countBarh=0;countBarExt=0; if (fs!=2) countBarl++; else {lLast=Low[i]; hLast=High[i]; lLast_m=0; hLast_m=0; bi=i; tbi=Time[i];} } } // Îïðåäåëÿåì íàïðàâëåíèå òðåíäà. if (fs==0) { if (lLasthLast_m) // âíóòðåííèé áàð { lLast=Low[i]; hLast=High[i]; ai=i; bi=i; countBarl=0;countBarh=0;countBarExt=0; } if (countBarh>countBarl && countBarh>countBarExt && countBarh>minBars) { lLast=Low[i]; hLast=High[i]; lLast_m=0; hLast_m=0; fs=1;countBarh=0;countBarl=0;countBarExt=0; zz[bi]=Low[bi]; zzL[bi]=Low[bi]; zzH[bi]=0; ai=i; tai=Time[i]; } else if (countBarl>countBarh && countBarl>countBarExt && countBarl>minBars) { lLast=Low[i]; hLast=High[i]; lLast_m=0; hLast_m=0; fs=2;countBarl=0;countBarh=0;countBarExt=0; zz[ai]=High[ai]; zzH[ai]=High[ai]; zzL[ai]=0; bi=i; tbi=Time[i]; } } else { if (lLast_m==0 && hLast_m==0) { countBarl=0;countBarh=0;countBarExt=0; } // Òåíäåíöèÿ âîñõîäÿùàÿ if (fs==1) { if (countBarl>countBarh && countBarl>countBarExt && countBarl>minBars) // Îïðåäåëÿåì òî÷êó ñìåíû òåíäåíöèè. { // çàïîìèíàåì çíà÷åíèå íàïðàâëåíèÿ òðåíäà fs íà ïðåäûäóùåì áàðå ai=iBarShift(Symbol(),Period(),tai); fs=2; countBarl=0; zz[ai]=High[ai]; zzH[ai]=High[ai]; zzL[ai]=0; bi=i; if (ExtLabel>0) { ha[ai]=High[ai]; la[ai]=0; // ïðîñòàíîâêà ìåòîê íà ìàêñèìóìàõ tml=Time[i]; ha[i]=0; la[i]=Low[i]; // ïðîñòàíîâêà ìåòêè íà íèñõîäÿùåì ëó÷å } tbi=Time[i]; lLast=Low[i]; hLast=High[i]; lLast_m=0; hLast_m=0; for (n=0;countBarExtHigh[i+n+1]) {countBarExt++; countBarh++; lLast=Low[i+n+1]; hLast=High[i+n+1]; hLast_m=High[i];} else break; } lLast=Low[i]; hLast=High[i]; } } // Òåíäåíöèÿ íèñõîäÿùàÿ if (fs==2) { if (countBarh>countBarl && countBarh>countBarExt && countBarh>minBars) // Îïðåäåëÿåì òî÷êó ñìåíû òåíäåíöèè. { // çàïîìèíàåì çíà÷åíèå íàïðàâëåíèÿ òðåíäà fs íà ïðåäûäóùåì áàðå bi=iBarShift(Symbol(),Period(),tbi); fs=1; countBarh=0; zz[bi]=Low[bi]; zzL[bi]=Low[bi]; zzH[bi]=0; ai=i; if (ExtLabel>0) { ha[bi]=0; la[bi]=Low[bi]; // ïðîñòàíîâêà ìåòîê íà ìèíèìóìàõ tmh=Time[i]; ha[i]=High[i]; la[i]=0; // ïðîñòàíîâêà ìåòêè íà âîñõîäÿùåì ëó÷å } tai=Time[i]; lLast=Low[i]; hLast=High[i]; lLast_m=0; hLast_m=0; for (n=0;countBarExtHigh[i+n+1]) {countBarExt++; countBarl++; lLast=Low[i+n+1]; hLast=High[i+n+1]; lLast_m=Low[i];} else break; } lLast=Low[i]; hLast=High[i]; } } } } if (i==0) { if (hLast0) {ha[ai]=High[ai]; la[ai]=0;} // ãóëÿþùàÿ ìåòêà } else if (lLast>Low[i] && fs==2) // Òåíäåíöèÿ íà òåêóùåì áàðå íèñõîäÿùàÿ { bi=i; tbi=Time[i]; zz[bi]=Low[bi]; zzL[bi]=Low[bi]; zzH[bi]=0; if (ExtLabel>0) {la[bi]=Low[bi]; ha[bi]=0;} // ãóëÿþùàÿ ìåòêà } //=================================================================================================== // Íóëåâîé áàð. Ðàñ÷åò ïåðâîãî ëó÷à ZigZag-a ai0=iBarShift(Symbol(),Period(),tai); bi0=iBarShift(Symbol(),Period(),tbi); if (bi0>1) if (fs==1) { for (n=bi0-1; n>=0; n--) {zzH[n]=0.0; zz[n]=0.0; if (ExtLabel>0) ha[n]=0;} zz[ai0]=High[ai0]; zzH[ai0]=High[ai0]; zzL[ai0]=0.0; if (ExtLabel>0) ha[ai0]=High[ai0]; } if (ai0>1) if (fs==2) { for (n=ai0-1; n>=0; n--) {zzL[n]=0.0; zz[n]=0.0; if (ExtLabel>0) la[n]=0;} zz[bi0]=Low[bi0]; zzL[bi0]=Low[bi0]; zzH[bi0]=0.0; if (ExtLabel>0) la[bi0]=Low[bi0]; } if (ExtLabel>0) { if (fs==1) {aim=iBarShift(Symbol(),0,tmh); if (aim0) { // datetime nen_time=iTime(NULL,GrossPeriod,ExtMinBar); datetime nen_time=iTime(NULL,GrossPeriod,0); int i=0, j=0; // j - íîìåð áàðà ñ ìàêñèìàëüíûì ìàêñèìóìîì (ìèíèìàëüíûì ìèíèìóìîì) â ïîëîñêå nen-ZigZag double nen_dt=0, last_j=0, last_nen=0; //last_j - çíà÷åíèå ìàêñèìàëüíîãî ìàêñèìóìà (ìèíèìàëüíîãî ìèíèìóìà) â ïîëîñêå nen_ZigZag int limit, big_limit, bigshift=0; int i_metka=-1, i_metka_m=-1, k, m, jm; bool fl_metka=false; double last_jm=0, last_nen_m=0; // if (ExtLabel>0) metka=1; else metka=0; if (ExtMaxBar>0) _maxbarZZ=ExtMaxBar; else _maxbarZZ=Bars; if (init_zz) { limit=_maxbarZZ-1; big_limit=iBars(NULL,GrossPeriod)-1; } else { limit=iBarShift(NULL,0,afr[2]); big_limit=iBarShift(NULL,GrossPeriod,afr[2]); } while (bigshift=nen_time) { if (ExtIndicator==6) { if (ExtLabel>0) { ha[i]=iCustom(NULL,GrossPeriod,"ZigZag_new_nen4",minBars,ExtDeviation,ExtBackstep,1,1,bigshift); la[i]=iCustom(NULL,GrossPeriod,"ZigZag_new_nen4",minBars,ExtDeviation,ExtBackstep,1,2,bigshift); } nen_ZigZag[i]=iCustom(NULL,GrossPeriod,"ZigZag_new_nen4",minBars,ExtDeviation,ExtBackstep,0,0,bigshift); } else if (ExtIndicator==7) { if (ExtLabel>0) { ha[i]=iCustom(NULL,GrossPeriod,"DT_ZZ_nen",minBars,1,1,bigshift); la[i]=iCustom(NULL,GrossPeriod,"DT_ZZ_nen",minBars,1,2,bigshift); } nen_ZigZag[i]=iCustom(NULL,GrossPeriod,"DT_ZZ_nen",minBars,0,0,bigshift); } else if (ExtIndicator==8) nen_ZigZag[i]=iCustom(NULL,GrossPeriod,"CZigZag",minBars,ExtDeviation,0,bigshift); else if (ExtIndicator==10) { if (ExtLabel>0) { ha[i]=iCustom(NULL,GrossPeriod,"Swing_ZZ_1",minBars,1,1,bigshift); la[i]=iCustom(NULL,GrossPeriod,"Swing_ZZ_1",minBars,1,2,bigshift); } nen_ZigZag[i]=iCustom(NULL,GrossPeriod,"Swing_ZZ_1",minBars,1,0,bigshift); } i++; } else {bigshift++;nen_time=iTime(NULL,GrossPeriod,bigshift);} } if (init_zz) // îáðàáîòêà èñòîðèè { double i1=0, i2=0; init_zz=false; for (i=limit;i>ExtMinBar;i--) // îïðåäåëåíèå íàïðàâëåíèÿ ïåðâîãî ëó÷à { if (nen_ZigZag[i]>0) { if (i1==0) i1=nen_ZigZag[i]; else if (i1>0 && i1!=nen_ZigZag[i]) i2=nen_ZigZag[i]; if (i2>0) { if (i1>i2) hi_nen=true; else hi_nen=false; break; } } } } else // ðåæèì ðåàëüíîãî âðåìåíè { if (afrl[2]>0) hi_nen=false; else hi_nen=true; } for (i=limit;i>=0;i--) { // if (i0) { if (ExtLabel==2) { if (i_metka_m>=0 && !fl_metka) { m=i_metka_m-GrossPeriod/Period(); for (k=i_metka_m; k>m; k--) { ha[k]=0; la[k]=0; } if (hi_nen) ha[jm]=last_nen_m; else la[jm]=last_nen_m; jm=0; last_nen_m=0; last_jm=0; i_metka_m=-1; } if (i_metka<0) i_metka=i; } fl_metka=true; if (nen_dt>0 && nen_dt!=nen_ZigZag[i]) { if (i_metka>=0 && fl_metka) { m=i_metka-GrossPeriod/Period(); for (k=i_metka; k>m; k--) { ha[k]=0; la[k]=0; } if (hi_nen) ha[j]=last_nen; else la[j]=last_nen; i_metka=i; } if (hi_nen) {hi_nen=false;zzH[j]=last_nen;} else {hi_nen=true;zzL[j]=last_nen;} last_j=0;nen_dt=0;zz[j]=last_nen; } if (hi_nen) { nen_dt=nen_ZigZag[i]; if (last_jLow[i]) {j=i;last_j=Low[i];last_nen=nen_ZigZag[i];} } if (nen_dt>0 && i==0) // îïðåäåëåíèå ïåðåëîìà íà íóëåâîì áàðå GrossPeriod { if (i_metka>=0 && fl_metka) { m=i_metka-GrossPeriod/Period(); for (k=i_metka; k>m; k--) { ha[k]=0; la[k]=0; } if (hi_nen) ha[j]=last_nen; else la[j]=last_nen; fl_metka=false; } zz[j]=last_nen; if (hi_nen) zzH[j]=last_nen; else zzL[j]=last_nen; } } else { if (last_j>0 && fl_metka) { if (i_metka>=0 && fl_metka) { m=i_metka-GrossPeriod/Period(); for (k=i_metka; k>m; k--) { ha[k]=0; la[k]=0; } if (hi_nen) ha[j]=last_nen; else la[j]=last_nen; } fl_metka=false; if (hi_nen) {hi_nen=false;zzH[j]=last_nen;} else {hi_nen=true;zzL[j]=last_nen;} last_j=0;nen_dt=0;zz[j]=last_nen; i_metka=-1; } if (ExtLabel==2) { if ((ha[i]>0 || la[i]>0) && !fl_metka) { if (i_metka_m<0) { i_metka_m=i; jm=i; if (hi_nen) { last_jm=High[i];last_nen_m=ha[i]; } else { last_jm=Low[i];last_nen_m=la[i]; } } if (hi_nen) { if (last_nen_m>last_jm) {jm=i;last_jm=High[i];} } else { if (last_nen_mzzbarhigh) {curbar=zzbarhigh; curpr=High[zzbarhigh];} if(zzbarlow==zzbarhigh){curbar=zzbarlow;curpr=funk1(zzbarlow, n);} ArrayResize(Mbar,ExtPoint); ArrayResize(Mprice,ExtPoint); j=0; endpr=curpr; endbar=curbar; Mbar[j]=curbar; Mprice[j]=curpr; EP--; if(curpr==Low[curbar]) flag=true; else flag=false; fl=flag; i=curbar+1; while(EP>0) { if(flag) { while(i<=Bars-1) { curbar1=iHighest(NULL,0,MODE_HIGH,n,i); curbar2=iHighest(NULL,0,MODE_HIGH,n,curbar1); if(curbar1==curbar2){curbar=curbar1;curpr=High[curbar];flag=false;i=curbar+1;j++;break;} else i=curbar2; } Mbar[j]=curbar; Mprice[j]=curpr; EP--; } if(EP==0) break; if(!flag) { while(i<=Bars-1) { curbar1=iLowest(NULL,0,MODE_LOW,n,i); curbar2=iLowest(NULL,0,MODE_LOW,n,curbar1); if(curbar1==curbar2){curbar=curbar1;curpr=Low[curbar];flag=true;i=curbar+1;j++;break;} else i=curbar2; } Mbar[j]=curbar; Mprice[j]=curpr; EP--; } } /* èñïðàâëåíèå âåðøèí */ if(Mprice[0]==Low[Mbar[0]])fd=true; else fd=false; for(k=0;k<=ExtPoint-1;k++) { if(k==0) { if(fd==true) { Mbar[k]=iLowest(NULL,0,MODE_LOW,Mbar[k+1]-Mbar[k],Mbar[k]);Mprice[k]=Low[Mbar[k]];endbar=minBars; } if(fd==false) { Mbar[k]=iHighest(NULL,0,MODE_HIGH,Mbar[k+1]-Mbar[k],Mbar[k]);Mprice[k]=High[Mbar[k]];endbar=minBars; } } if(kMprice[k+1]) { zzH[Mbar[k]]=Mprice[k]; } else { zzL[Mbar[k]]=Mprice[k]; } } else { if (Mprice[k]>Mprice[k-1]) { zzH[Mbar[k]]=Mprice[k]; } else { zzL[Mbar[k]]=Mprice[k]; } } } } //------------------------------------------------------------------ // ZigZag_Talex êîíåö //------------------------------------------------------------------ /*-------------------------------------------------------------------+ / Ôóíöèÿ äëÿ ïîèñêà ó ïåðâîãî áàðà (åñëè îí âíåøíèé) êàêîé ýêñòðåìóì | / áóäåì èñïîëüçîâàòü â êà÷åñòâå âåðøèíû. Äëÿ ZigZag_Talex. | /-------------------------------------------------------------------*/ double funk1(int zzbarlow, int ExtDepth) { double pr; int fbarlow,fbarhigh; fbarlow=iLowest(NULL,0,MODE_LOW,ExtDepth,zzbarlow); fbarhigh=iHighest(NULL,0,MODE_HIGH,ExtDepth,zzbarlow); if(fbarlow>fbarhigh) pr=High[zzbarlow]; if(fbarlowfbarhigh) pr=High[zzbarlow]; if(fbarlowfbarhigh) pr=High[zzbarlow]; if(fbarlowMathAbs(a)) return(a*1.0/b); else return(0);} //============================================================================================= double ray_value(double B1, double P1, double B2, double P2, double AAA){return(P1+( AAA -B1)*div(P2-P1,B2-B1));} //============================================================================================= datetime bar2time(int b){int t,TFsec=Period()*60; if(b<0) t=Time[0]-(b)*TFsec; else if(b>(Bars-1)) t=Time[Bars-1]-(b-Bars+1)*TFsec; else t=Time[b]; return(t);} //============================================================================================= int time2bar(datetime t){int b,t0=Time[0],TFsec=Period()*60; if(t>t0) b=(t0-t)/TFsec; else if(t=0 && a=a; i--) {zzH[i]=zzH[i-a]; zzL[i]=zzL[i-a];} for(;i>=0;i--) {zzH[i]=0; zzL[i]=0;} } } else { ii=barz; H1=ii+1; L1=ii; H2=ii+3; L2=ii+2; L2p=Low[L2];H2p=High[H2]; L1p=Low[L1];H1p=High[H1]; H3=H2; H3p=H2p; L3=L2; L3p=L2p; } act_time=Time[1]; for(c=0; ii>=0; c++, ii--) { // if(c>tb) if(zzFill) zz[ii+mnm]=MathMax(zzL[ii+mnm],zzH[ii+mnm]); // if(c>tb) if(zzFill) zz[ii]=MathMax(zzL[ii],zzH[ii]); H=ii; L=ii; Hp= High[H]; Lp= Low[L]; //------------------------------------------------------------------------------------- if(H2=H1p ) { H1=H; H1p=Hp; if( H1p>H2p ) { zzH[H2]=0; H1=H; H1p=Hp; H2=H1; H2p=H1p; L1=H1; L1p=H1p; zzH[H2]=H2p; } } else if( Lp<=L1p ) { L1=L; L1p=Lp; x=ray_value(L2,L2p,H2+(L2-H3)*0.5,H2p+(L2p-H3p)*0.5,L1); if( L1p<=L2p//òàêæå ðàáîòàåò L1p<=L2p*0.75+H2p*0.25 èëè ëþáûå äðóãèå óñëîâèÿ || tb*tb*Point<(H2p-L1p)*(H2-L1)) { //ñäâèãàåì âñå Low L4=L3; L4p=L3p; L3=L2; L3p=L2p; L2=L1; L2p=L1p; H1=L1; H1p=L1p; zzL[L2]=L2p; } } } //-------------------------------------------------------------- if(L2=H1p ) { H1=H; H1p=Hp; x=ray_value(H2,H2p,L2+0.5*(H2-L3),L2p+0.5*(H2p-L3p),H1); if( H1p>=H2p//ìîæíî è òàê: H1p>=H2p*0.75+L2p*0.25 || tb*tb*Point<(H1p-L2p)*(L2-H1)) { //ñäâèãàåì âñå High H4=H3; H4p=H3p; H3=H2; H3p=H2p; H2=H1; H2p=H1p; L1=H1; L1p=H1p; zzH[H2]=H2p; } } }//-------------------------------------------------------------------------------- }//for for(ii=bb-1; ii>=0; ii--) zz[ii]=MathMax(zzL[ii],zzH[ii]); }//°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° // SQZZ by tovaroved.lv. Êîíåö. //--------------------------------------------------------======================================================================= //-------------------------------------------------------- // ZZ_2L_nen . Íà÷àëî. //#property copyright "Copyright © 2007, wellx. ver 0.07 alpha" //#property link "aveliks@gmail.com" //-------------------------------------------------------- void ZZ_2L_nen() { int count = IndicatorCounted(); int k, i,shift,cnt, pos,curhighpos,curlowpos; if (Bars-count-1>2) { count=0; NewBarTime=0; countbars=0; realcnt=0; ArrayInitialize(zz,0); ArrayInitialize(zzL,0); ArrayInitialize(zzH,0); } for (k=(Bars-count-1);k>=0;k--) { if(( NewBarTime==Time[0]) || (realcnt==Bars)) first=false; else first=true; //-------------------------------------------------------------------- //Íàõîäèì ïåðâóþ òî÷êó èíäèêàòîðà //-------------------------------------------------------------------- if (first) { lastlowpos=Bars-1; lasthighpos=Bars-1; zzL[Bars-1]=0.0; zzH[Bars-1]=0.0; zz[Bars-1]=0.0; realcnt=2; for(shift=(Bars-2); shift>=0; shift--) { if ((High[shift]>High[shift+1]) && (Low[shift]>=Low[shift+1])) { zzL[shift]=0.0; zzH[shift]=High[shift]; zz[shift]=High[shift]; lasthighpos=shift; lasthigh=High[shift]; lastlow=Low[Bars-1]; pos=shift; first=false; break; } if ((High[shift]<=High[shift+1]) && (Low[shift]High[shift+1]) && (Low[shift](Low[shift+1]-Low[shift])) { zzL[shift]=0.0; zzH[shift]=High[shift]; zz[shift]=High[shift]; zzL[shift]=0.0; lasthighpos=shift; lasthigh=High[shift]; lastlow=Low[Bars-1]; pos=shift; first=false; break; } if ((High[shift]-High[shift+1])<(Low[shift+1]-Low[shift])) { zzL[shift]=Low[shift]; zzH[shift]=0.0; zz[shift]=Low[shift]; lasthighpos=shift; lasthigh=High[shift]; lastlow=Low[Bars-1]; pos=shift; first=false; break; } if ((High[shift]-High[shift+1])==(Low[shift+1]-Low[shift])) { zzL[shift]=0.0; zzH[shift]=0.0; zz[shift]=0.0; } } if ((High[shift]Low[shift+1])) { zzL[shift]=0.0; zzH[shift]=0.0; zz[shift]=0.0; } pos=shift; realcnt=realcnt+1; } //------------------------------------------------------------------------- // çäåñü íà÷èíàåòñÿ îòðàáîòêà îñíîâíîãî öèêëà ÇÇ //------------------------------------------------------------------------- for(shift=pos-1; shift>=0; shift--) { if ((High[shift]>High[shift+1]) && (Low[shift]>=Low[shift+1])) { if (lasthighposHigh[lasthighpos]) { zzL[shift]=0.0; zzH[shift]=High[shift]; zz[shift]=High[shift]; zz[lasthighpos]=0.0; if (shift!=0) lasthighpos=shift; lasthigh=High[shift]; if (lastlowpos!=Bars) { // Íàäî ðàññ÷èòàòü ïîçäíåå äëèíû ëó÷åé } } } if (lasthighpos>lastlowpos) { if ((((High[shift]-Low[lastlowpos])>(StLevel*Point)) && ((lastlowpos-shift)>=minBars)) || ((High[shift]-Low[lastlowpos])>=(BigLevel*Point))) { zzL[shift]=0.0; zzH[shift]=High[shift]; zz[shift]=High[shift]; //zz[lasthighpos]=0.0; if (shift!=0) lasthighpos=shift; lasthigh=High[shift]; } } } if ((High[shift]<=High[shift+1]) && (Low[shift]lasthighpos) { if ((((High[lasthighpos]-Low[shift])>(StLevel*Point)) && ((lasthighpos-shift)>=minBars)) || ((High[lasthighpos]-Low[shift])>=(BigLevel*Point))) { zzL[shift]=Low[shift]; zzH[shift]=0.0; zz[shift]=Low[shift]; //zz[lastlowpos]=0.0; if (shift!=0) lastlowpos=shift; lastlow=Low[shift]; } } } if ((High[shift]>High[shift+1]) && (Low[shift]High[lasthighpos]) { zzL[shift]=0.0; zzH[shift]=High[shift]; zz[shift]=High[shift]; zz[lasthighpos]=0.0; if (shift!=0) lasthighpos=shift; lasthigh=High[shift]; } } } realcnt=realcnt+1; // if (shift<=0) } first=false; countbars=Bars; NewBarTime=Time[0]; } //**************************************************************************************************** // // Îáðàáîòêà íóëåâîãî áàðà // //**************************************************************************************************** else //if (!first) { if (realcnt!=Bars) { first=True; return(0); } if (Close[0]>=lasthigh) { if (lastlowposlastlow) { if ((((High[0]-Low[lastlowpos])>(StLevel*Point)) && ((lastlowpos)>=minBars)) || ((High[0]-Low[lastlowpos])>(BigLevel*Point))) { zzL[0]=0.0; zzH[0]=High[0]; zz[0]=High[0]; lasthigh=High[0]; // lasthighpos=0; } } } if (lastlowpos>lasthighpos) { if (High[0]>=lasthigh) { zz[lasthighpos]=0.0; zz[0]=High[0]; zzL[0]=0.0; zzH[0]=High[0]; lasthighpos=0; lasthigh=High[0]; } } //lasthigh=High[0]; } if (Close[0]<=lastlow) { if (lastlowposlasthighpos) { if (High[0](StLevel*Point)) && ((lasthighpos-shift)>=minBars)) || ((High[lasthighpos]-Low[shift])>(BigLevel*Point))) { zz[0]=Low[0]; zzL[0]=Low[0]; zzH[0]=0.0; lastlow=Low[0]; // lastlowpos=0; } } } //lastlow=Low[0]; } } return(0); } } //-------------------------------------------------------- // ZZ_2L_nen . Êîíåö. //#property copyright "Copyright © 2007, wellx. ver 0.07 alpha" //#property link "aveliks@gmail.com" //-------------------------------------------------------- //-------------------------------------------------------- // Èíäèêàòîð i-vts . Íà÷àëî. //-------------------------------------------------------- //+------------------------------------------------------------------+ //| i-VTS.mq4 | //| Òàõèð & KimIV | //| http://www.kimiv.ru | //| | //| 06.12.2005 Èíäèêàòîð VTS | //+------------------------------------------------------------------+ // // Ýòîò èíäèêàòîð Èãîðü Êèì ïåðåâåë ñ MQL íà MQ4 // void i_vts() // { int LoopBegin, sh; if (NumberOfBars==0) LoopBegin=Bars-1; else LoopBegin=NumberOfBars-1; LoopBegin=MathMin(Bars-25, LoopBegin); for (sh=LoopBegin; sh>=0; sh--) { GetValueVTS("", 0, NumberOfVTS, sh); ha[sh]=ms[0]; la[sh]=ms[1]; } } void i_vts1() // { int LoopBegin, sh; if (NumberOfBars==0) LoopBegin=Bars-1; else LoopBegin=NumberOfBars-1; LoopBegin=MathMin(Bars-25, LoopBegin); for (sh=LoopBegin; sh>=0; sh--) { GetValueVTS("", 0, NumberOfVTS1, sh); ham[sh]=ms[0]; lam[sh]=ms[1]; } } //+------------------------------------------------------------------+ //------- Ïîêëþ÷åíèå âíåøíèõ ìîäóëåé --------------------------------- //+------------------------------------------------------------------+ //| Ïàðàìåòðû: | //| sym - íàèìåíîâàíèå èíñòðóìåíòà | //| tf - òàéìôðåéì (êîëè÷åñòâî ìèíóò) | //| ng - íîìåð ãðóïïû | //| nb - íîìåð áàðà | //| ms - ìàññèâ ñèãíàëîâ | //+------------------------------------------------------------------+ void GetValueVTS(string sym, int tf, int ng, int nb) { if (sym=="") sym=Symbol(); double f1, f2, s1, s2; f1=iClose(sym, tf, nb)-3*iATR(sym, tf, 10, nb); f2=iClose(sym, tf, nb)+3*iATR(sym, tf, 10, nb); for (int i=1; i<=ng; i++) { s1=iClose(sym, tf, nb+i)-3*iATR(sym, tf, 10, nb+i); s2=iClose(sym, tf, nb+i)+3*iATR(sym, tf, 10, nb+i); if (f1s2) f2=s2; } ms[0]=f2; // âåðõíÿÿ ëèíèÿ ms[1]=f1; // íèæíÿÿ ëèíèÿ } //+------------------------------------------------------------------+ //-------------------------------------------------------- // Èíäèêàòîð i-vts . Êîíåö. //-------------------------------------------------------- //-------------------------------------------------------- // Ïàðàìåòðû ðàçíûõ òàéìôðåéìîâ è äðóãàÿ èíôîðìàöèÿ. Íà÷àëî. //-------------------------------------------------------- void info_TF() { string info="", info1="", info2="", info3="", info4="", txt="", txt0="", txt1="", regim="", perc="", mp0="", mp1=""; int i, j=0, k; double pips; openTF[0]=iOpen(NULL,PERIOD_MN1,0); closeTF[0]=iClose(NULL,PERIOD_MN1,0); lowTF[0]=iLow(NULL,PERIOD_MN1,0); highTF[0]=iHigh(NULL,PERIOD_MN1,0); openTF[1]=iOpen(NULL,PERIOD_W1,0); closeTF[1]=iClose(NULL,PERIOD_W1,0); lowTF[1]=iLow(NULL,PERIOD_W1,0); highTF[1]=iHigh(NULL,PERIOD_W1,0); openTF[2]=iOpen(NULL,PERIOD_D1,0); closeTF[2]=iClose(NULL,PERIOD_D1,0); lowTF[2]=iLow(NULL,PERIOD_D1,0); highTF[2]=iHigh(NULL,PERIOD_D1,0); openTF[3]=iOpen(NULL,PERIOD_H4,0); closeTF[3]=iClose(NULL,PERIOD_H4,0); lowTF[3]=iLow(NULL,PERIOD_H4,0); highTF[3]=iHigh(NULL,PERIOD_H4,0); openTF[4]=iOpen(NULL,PERIOD_H1,0); closeTF[4]=iClose(NULL,PERIOD_H1,0); lowTF[4]=iLow(NULL,PERIOD_H1,0); highTF[4]=iHigh(NULL,PERIOD_H1,0); if (StringSubstr(info_comment,2,1)=="1") { if (minPercent>0) perc=DoubleToStr(MathAbs(minPercent),1); else perc="0.0"; switch (ExtIndicator) { case 0 : {regim=" | "+ ExtIndicator + " / " + minBars + " / " + ExtDeviation + " / " + ExtBackstep; break;} case 1 : {regim=" | "+ ExtIndicator + " / " + minSize + " / " + perc+" %"; break;} case 2 : {regim=" | "+ ExtIndicator + " / " + minBars + "/" + minSize; break;} case 3 : {regim=" | "+ ExtIndicator + " / " + minBars; break;} case 4 : {regim=" | "+ ExtIndicator + " / " + minSize; break;} case 5 : {regim=" | "+ ExtIndicator + " / " + minBars; break;} case 6 : {regim=" | "+ ExtIndicator + " / " + GrossPeriod + " / " + minBars + " / " + ExtDeviation + " / " + ExtBackstep; break;} case 7 : {regim=" | "+ ExtIndicator + " / " + GrossPeriod + " / " + minBars; break;} case 8 : {regim=" | "+ ExtIndicator + " / " + GrossPeriod + " / " + minBars + " / " + ExtDeviation; break;} case 10 : {regim=" | "+ ExtIndicator + " / " + GrossPeriod + " / " + minBars; break;} case 11 : {regim=" | "+ ExtIndicator + " / " + Depth + " / " + ExtDeviation + " / " + ExtBackstep; break;} case 12 : {regim=" | "+ ExtIndicator + " / " + minSize; break;} case 13 : {regim=" | "+ ExtIndicator + " / " + minBars + " / " + minSize; break;} case 14 : {regim=" | "+ ExtIndicator + " / " + StLevel + " / " + BigLevel + " / " + minBars; break;} } } if (_ExtPitchforkStatic>0) { if (ExtCustomStaticAP) { regim=regim + " / APm"; } else { if (ExtPitchforkCandle) regim=regim + " / APs-bars"; else regim=regim + " / APs-" + ExtPitchforkStaticNum; } } info=""; if (StringSubstr(info_comment,0,1)=="1") { for (i=0;i<5;i++) { pips=(highTF[i]-lowTF[i])/Point; if (pips>0) { if (openTF[i]==closeTF[i]) {txt=" = ";} else if (openTF[i]!=closeTF[i] && MathAbs((highTF[i]-lowTF[i])/(openTF[i]-closeTF[i]))>=6.6) {txt=" -|- ";} else if (openTF[i]>closeTF[i]) {txt=" \/ ";} else if (openTF[i]0) { if (afrh[1]!=0) info1=info1+" "+DoubleToStr(100*MathAbs(afrh[1]-afrl[0])/afrh[1],2)+" %"; } else { if (afrl[1]!=0) info1=info1+" "+DoubleToStr(100*MathAbs(afrh[0]-afrl[1])/afrl[1],2)+" %"; } } info1=info1+regim; if (StringSubstr(info_comment,3,1)=="1") { if (StringLen(vNamePatternToNumberPattern)>0) { //info2="It is found " + countGartley + " patterns - for pattern N " + NumberPattern + " - " + vBullBearToNumberPattern + " " + vNamePatternToNumberPattern + " - " + DoubleToStr(LevelForDminToNumberPattern,Digits) + " < Range of the prices D < " + DoubleToStr(LevelForDmaxToNumberPattern,Digits) + ""; info2=vBullBear + " " + vNamePattern + " pattern found on " + Symbol() + " " + _ChartTimeFrame(Period()) + " time frame"; string directionOfSearchMaxMin=""; if(DirectionOfSearchMaxMin==true) directionOfSearchMaxMin="True"; else directionOfSearchMaxMin="False"; info2=info2 + "\n" + "Direction Of Search MaxMin= " + directionOfSearchMaxMin; info2=info2 + "\n" + DoubleToStr(LevelForDminToNumberPattern,Digits) + " < Range of the Prices D < " + DoubleToStr(LevelForDmaxToNumberPattern,Digits); info2=info2 + "\n" + "Median D= " + DoubleToStr((LevelForDminToNumberPattern+LevelForDmaxToNumberPattern)/2, Digits); info2=info2 + "\n" + TimeToStr(TimeForDmin,TIME_DATE|TIME_MINUTES) + " < Range of the Time D < " + TimeToStr(TimeForDmax,TIME_DATE|TIME_MINUTES); info2=info2 + "\n" + "Dot C= " + DoubleToStr(patternDotC, Digits); } else info2=""; static string foundPattern=""; static string savedBullorBear=""; static double savedDPoint=0; if ((ExtSendMail==true || ExtAlert==true) && info2 !="" && foundPattern !=info2) { if(ExtSendMail==true) SendMail(vBullBear + " " + vNamePattern + " pattern found on " + Symbol() + " " + _ChartTimeFrame(Period()) + " time frame", info2 + "\n" + alternateABCD); if(ExtAlert==true) Alert(vBullBear + " " + vNamePattern + " pattern found on " + Symbol() + " " + _ChartTimeFrame(Period()) + " time frame"); foundPattern=info2; savedBullorBear=vBullBear; savedDPoint=patternDotD; } if ( (ExtSendMail==true || ExtAlert==true) && (foundPattern != "" && info2=="") ) { string invalidationString=""; if(savedBullorBear=="Bullish" && patternDotD < savedDPoint) invalidationString= "Pattern found on " + Symbol() + " " + _ChartTimeFrame(Period()) + " time frame has been invalidated"; else if(savedBullorBear=="Bullish" && patternDotD > savedDPoint) invalidationString= "A new leg has been just formed on " + Symbol() + " " + _ChartTimeFrame(Period()) + "\n" + "All drawn objects will be deleted"; if(savedBullorBear=="Bearish" && patternDotD > savedDPoint) invalidationString= "Pattern found on " + Symbol() + " " + _ChartTimeFrame(Period()) + " time frame has been invalidated"; else if(savedBullorBear=="Bearish" && patternDotD < savedDPoint) invalidationString= "A new leg has been just formed on " + Symbol() + " " + _ChartTimeFrame(Period()) + "\n" + "All drawn objects will be deleted"; if(ExtSendMail==true) SendMail(invalidationString, invalidationString + "\n" + "Last Found Pattern" + "\n" + foundPattern); if(ExtAlert==true) Alert(invalidationString); foundPattern=""; savedBullorBear=""; savedDPoint=0; } } if (StringSubstr(info_comment,4,1)=="1") { if (info_RZS_RL=="") { info=""; } else { info="RL_Static="+info_RZS_RL + " "; } info3=info; if (info_RZD_RL=="") { info3=info; } else { info3=info+"RL_Dinamic="+info_RZD_RL; } } if (infoMerrillPattern) { for (k=4;k>=0;k--) { j=mPeak0[k][1]; txt0=txt0+j; j=mPeak1[k][1]; txt1=txt1+j; } for (k=0;k<32;k++) { if (txt0==mMerrillPatterns[k][0]) {mp0=mMerrillPatterns[k][1]+" "+mMerrillPatterns[k][2];} if (txt1==mMerrillPatterns[k][0]) {mp1=mMerrillPatterns[k][1]+" "+mMerrillPatterns[k][2];} } if (StringLen(mp1)>0 && StringLen(mp0)>0) info4="Static "+mp1+" / "+"Dinamic "+mp0; else if (StringLen(mp1)>0) info4="Static "+mp1; else if (StringLen(mp0)>0) info4="Dinamic "+mp0; } Comment(info1,"\n",info2,"\n",""+info3,"\n",""+info4); // if (RangeForPointD>0 && vNamePatternToNumberPattern != "") if (bigText==true) { nameObj="#_TextPattern_#" + ExtComplekt+"_"; ObjectDelete(nameObj); ObjectCreate(nameObj,OBJ_LABEL,0,0,0); ObjectSetText(nameObj,vBullBearToNumberPattern + " " + vNamePatternToNumberPattern); ObjectSet(nameObj, OBJPROP_FONTSIZE, bigTextSize); ObjectSet(nameObj, OBJPROP_COLOR, bigTextColor); ObjectSet(nameObj, OBJPROP_CORNER, 1); ObjectSet(nameObj, OBJPROP_XDISTANCE, bigTextX); ObjectSet(nameObj, OBJPROP_YDISTANCE, bigTextY); if (infoMerrillPattern) { nameObj="#_TextPatternMP_#" + ExtComplekt+"_"; ObjectDelete(nameObj); ObjectCreate(nameObj,OBJ_LABEL,0,0,0); ObjectSetText(nameObj,info4); ObjectSet(nameObj, OBJPROP_FONTSIZE, bigTextSize); ObjectSet(nameObj, OBJPROP_COLOR, bigTextColor); ObjectSet(nameObj, OBJPROP_CORNER, 1); ObjectSet(nameObj, OBJPROP_XDISTANCE, bigTextX); ObjectSet(nameObj, OBJPROP_YDISTANCE, bigTextY+2+bigTextSize); } } close_TF=Close[0]; } //-------------------------------------------------------- // Ïàðàìåòðû ðàçíûõ òàéìôðåéìîâ è äðóãàÿ èíôîðìàöèÿ. Êîíåö. //-------------------------------------------------------- //-------------------------------------------------------- // Èçìåíåíèå ðàçìåðà ìàññèâîâ. Íà÷àëî. //-------------------------------------------------------- void arrResize(int size) { ArrayResize(fi,size); ArrayResize(fitxt,size); ArrayResize(fitxt100,size); } //-------------------------------------------------------- // Èçìåíåíèå ðàçìåðà ìàññèâîâ. Íà÷àëî. //-------------------------------------------------------- //-------------------------------------------------------- // Ñîçäàåì ìàññèâû ñ ÷èñëàìè. Íà÷àëî. //-------------------------------------------------------- void array_() { for (int i=0; i<65; i++) { numberFibo [i]=0; numberPesavento [i]=0; numberGartley [i]=0; numberGilmorQuality [i]=0; numberGilmorGeometric [i]=0; numberGilmorHarmonic [i]=0; numberGilmorArithmetic[i]=0; numberGilmorGoldenMean[i]=0; numberSquare [i]=0; numberCube [i]=0; numberRectangle [i]=0; numberExt [i]=0; } number [0]=0.111; numbertxt [0]=".111"; numberCube [0]=1; number [1]=0.125; numbertxt [1]=".125"; numberMix [1]=1; numberGilmorHarmonic [1]=1; number [2]=0.146; numbertxt [2]=".146"; numberFibo [2]=1; numberGilmorGeometric [2]=1; number [3]=0.167; numbertxt [3]=".167"; numberGilmorArithmetic[3]=1; number [4]=0.177; numbertxt [4]=".177"; numberGilmorHarmonic [4]=1; numberSquare [4]=1; number [5]=0.186; numbertxt [5]=".186"; numberGilmorGeometric [5]=1; number [6]=0.192; numbertxt [6]=".192"; numberCube [6]=1; number [7]=0.2; numbertxt [7]=".2"; numberRectangle [7]=1; number [8]=0.236; numbertxt [8]=".236"; numberFibo [8]=1; numberMix [8]=1; numberGilmorGeometric [8]=1; numberGilmorGoldenMean[8]=1; number [9]=0.25; numbertxt [9]=".25"; numberPesavento [9]=1; numberGilmorQuality [9]=1; numberGilmorHarmonic [9]=1; numberSquare [9]=1; number [10]=0.3; numbertxt [10]=".3"; numberGilmorGeometric [10]=1; numberGilmorGoldenMean[10]=1; number [11]=0.333; numbertxt [11]=".333"; numberGilmorArithmetic[11]=1; numberCube [11]=1; number [12]=0.354; numbertxt [12]=".354"; numberGilmorHarmonic [12]=1; numberSquare [12]=1; number [13]=0.382; numbertxt [13]=".382"; numberFibo [13]=1; numberPesavento [13]=1; numberGartley [13]=1; numberGilmorQuality [13]=1; numberGilmorGeometric [13]=1; number [14]=0.447; numbertxt [14]=".447"; numberGartley [14]=1; numberRectangle [14]=1; number [15]=0.486; numbertxt [15]=".486"; numberGilmorGeometric [15]=1; numberGilmorGoldenMean[15]=1; number [16]=0.5; numbertxt [16]=".5"; numberFibo [16]=1; numberPesavento [16]=1; numberGartley [16]=1; numberGilmorQuality [16]=1; numberGilmorHarmonic [16]=1; numberSquare [16]=1; number [17]=0.526; numbertxt [17]=".526"; numberGilmorGeometric [17]=1; number [18]=0.577; numbertxt [18]=".577"; numberGilmorArithmetic[18]=1; numberCube [18]=1; number [19]=0.618; numbertxt [19]=".618"; numberFibo [19]=1; numberPesavento [19]=1; numberGartley [19]=1; numberGilmorQuality [19]=1; numberGilmorGeometric [19]=1; numberGilmorGoldenMean[19]=1; number [20]=0.667; numbertxt [20]=".667"; numberGilmorQuality [20]=1; numberGilmorArithmetic[20]=1; number [21]=0.707; numbertxt [21]=".707"; numberPesavento [21]=1; numberGartley [21]=1; numberGilmorHarmonic [21]=1; numberSquare [21]=1; number [22]=0.764; numbertxt [22]=".764"; numberFibo [22]=1; number [23]=0.786; numbertxt [23]=".786"; numberPesavento [23]=1; numberGartley [23]=1; numberGilmorQuality [23]=1; numberGilmorGeometric [23]=1; numberGilmorGoldenMean[23]=1; number [24]=0.809; numbertxt [24]=".809"; numberExt [24]=1; number [25]=0.841; numbertxt [25]=".841"; numberPesavento [25]=1; number [26]=0.854; numbertxt [26]=".854"; numberFibo [26]=1; numberMix [26]=1; number [27]=0.874; numbertxt [27]=".874"; numberExt [27]=1; number [28]=0.886; numbertxt [28]=".886"; numberGartley [28]=1; number [29]=1.0; numbertxt [29]="1."; numberFibo [29]=1; numberPesavento [29]=1; numberGartley [29]=1; numberGilmorQuality [29]=1; numberGilmorGeometric [29]=1; number [30]=1.128; numbertxt [30]="1.128"; numberPesavento [30]=1; numberGartley [30]=1; number [31]=1.236; numbertxt [31]="1.236"; numberFibo [31]=1; number [32]=1.272; numbertxt [32]="1.272"; numberPesavento [32]=1; numberGartley [32]=1; numberGilmorQuality [32]=1; numberGilmorGeometric [32]=1; numberGilmorGoldenMean[32]=1; number [33]=1.309; numbertxt [33]="1.309"; numberExt [33]=1; number [34]=1.414; numbertxt [34]="1.414"; numberPesavento [34]=1; numberGartley [34]=1; numberGilmorHarmonic [34]=1; numberSquare [34]=1; number [35]=1.5; numbertxt [35]="1.5"; // numberPesavento [35]=1; numberGilmorArithmetic[35]=1; number [36]=phi; numbertxt [36]="1.618"; numberFibo [36]=1; numberPesavento [36]=1; numberGartley [36]=1; numberGilmorQuality [36]=1; numberGilmorGeometric [36]=1; numberGilmorGoldenMean[36]=1; number [37]=1.732; numbertxt [37]="1.732"; numberMix [37]=1; numberGilmorQuality [37]=1; numberGilmorArithmetic[37]=1; numberCube [37]=1; number [38]=1.75; numbertxt [38]="1.75"; numberGilmorQuality [38]=1; number [39]=1.902; numbertxt [39]="1.902"; numberMix [39]=1; numberGilmorGeometric [39]=1; number [40]=2.0; numbertxt [40]="2."; numberPesavento [40]=1; numberGartley [40]=1; numberGilmorQuality [40]=1; numberGilmorHarmonic [40]=1; numberSquare [40]=1; number [41]=2.058; numbertxt [41]="2.058"; numberGilmorGeometric [41]=1; numberGilmorGoldenMean[41]=1; number [42]=2.236; numbertxt [42]="2.236"; numberGartley [42]=1; numberGilmorQuality [42]=1; numberRectangle [42]=1; number [43]=2.288; numbertxt [43]="2.288"; numberExt [43]=1; number [44]=2.5; numbertxt [44]="2.5"; numberGilmorQuality [44]=1; number [45]=2.618; numbertxt [45]="2.618"; numberPesavento [45]=1; numberGartley [45]=1; numberGilmorQuality [45]=1; numberGilmorGeometric [45]=1; numberGilmorGoldenMean[45]=1; number [46]=2.828; numbertxt [46]="2.828"; numberGilmorHarmonic [46]=1; numberSquare [46]=1; number [47]=3.0; numbertxt [47]="3.0"; numberGilmorQuality [47]=1; numberGilmorArithmetic[47]=1; numberCube [47]=1; number [48]=3.142; numbertxt [48]="3.142"; numberGartley [48]=1; number [49]=3.236; numbertxt [49]="3.236"; numberExt [49]=1; number [50]=3.33; numbertxt [50]="3.33"; numberGilmorQuality [50]=1; numberGilmorGeometric [50]=1; numberGilmorGoldenMean[50]=1; numberExt [50]=1; number [51]=3.464; numbertxt [51]="3.464"; numberExt [51]=1; number [52]=3.618; numbertxt [52]="3.618"; numberGartley [52]=1; number [53]=4.0; numbertxt [53]="4."; numberPesavento [53]=1; numberGilmorHarmonic [53]=1; numberSquare [53]=1; number [54]=4.236; numbertxt [54]="4.236"; numberFibo [54]=1; numberGilmorQuality [54]=1; numberGilmorGeometric [54]=1; numberExt [54]=1; number [55]=4.472; numbertxt [55]="4.472"; numberExt [55]=1; number [56]=5.0; numbertxt [56]="5."; numberRectangle [56]=1; number [57]=5.2; numbertxt [57]="5.2"; numberCube [57]=1; number [58]=5.388; numbertxt [58]="5.388"; numberGilmorGeometric [58]=1; number [59]=5.657; numbertxt [59]="5.657"; numberGilmorHarmonic [59]=1; numberSquare [59]=1; number [60]=6.0; numbertxt [60]="6."; numberGilmorArithmetic[60]=1; number [61]=6.854; numbertxt [61]="6.854"; numberGilmorQuality [61]=1; numberGilmorGeometric [61]=1; number [62]=8.0; numbertxt [62]="8."; numberGilmorHarmonic [62]=1; number [63]=9.0; numbertxt [63]="9."; numberCube [63]=1; /* number []=; numbertxt []=; // ExtFiboType=0 numberFibo []=; // 0 numberPesavento []=; // 1 numberGartley []=; // 2 numberMix []=; // 3 numberGilmorQuality []=; // 4 numberGilmorGeometric []=; // 5 numberGilmorHarmonic []=; // 6 numberGilmorArithmetic[]=; // 7 numberGilmorGoldenMean[]=; // 8 numberSquare []=; // 9 numberCube []=; // 10 numberRectangle []=; // 11 numberExt []=; */ } //-------------------------------------------------------- // Ñîçäàåì ìàññèâû ñ ÷èñëàìè. Êîíåö. //-------------------------------------------------------- //-------------------------------------------------------- // Îïðåäåëåíèå çíà÷åíèé è öâåòà ÷èñåë äëÿ ïàòòåðíîâ Ïåñàâåíòî. Íà÷àëî. //-------------------------------------------------------- void Pesavento_patterns() { if (ExtFiboType==1) { switch (ExtFiboChoice) { case 0 : {search_number(numberPesavento, ExtPesavento) ;break;} case 1 : {search_number(numberGartley, ExtGartley886) ;break;} case 2 : {search_number(numberGartley, ExtGartley886) ;break;} case 3 : {search_number(numberGilmorQuality, ExtPesavento) ;break;} case 4 : {search_number(numberGilmorGeometric, ExtPesavento) ;break;} case 5 : {search_number(numberGilmorHarmonic, ExtPesavento) ;break;} case 6 : {search_number(numberGilmorArithmetic, ExtPesavento) ;break;} case 7 : {search_number(numberGilmorGoldenMean, ExtPesavento) ;break;} case 8 : {search_number(numberSquare, ExtPesavento) ;break;} case 9 : {search_number(numberCube, ExtPesavento) ;break;} case 10 : {search_number(numberRectangle, ExtPesavento) ;break;} case 11 : {search_number(numberExt, ExtPesavento) ;break;} } } else { search_number(numberFibo, ExtPesavento); } } //-------------------------------------------------------- // Îïðåäåëåíèå çíà÷åíèé è öâåòà ÷èñåë äëÿ ïàòòåðíîâ Ïåñàâåíòî. Êîíåö. //-------------------------------------------------------- //-------------------------------------------------------- // Ïîèñê ÷èñëà äëÿ ïàòòåðíîâ Ïåñàâåíòî. Íà÷àëî. //-------------------------------------------------------- void search_number(int arr[], color cPattern) { int ki; colorPPattern=ExtNotFibo; if (ExtFiboChoice!=2) { if (ExtDeltaType==2) for (ki=kiPRZ;ki<=63;ki++) { if (arr[ki]>0) { if (MathAbs((number[ki]-kj)/number[ki])<=ExtDelta) {kk=number[ki]; txtkk=numbertxt[ki]; k2=-1; colorPPattern=cPattern; break;} } } if (ExtDeltaType==1) for (ki=kiPRZ;ki<=63;ki++) { if (arr[ki]>0) { if (MathAbs(number[ki]-kj)<=ExtDelta) {kk=number[ki]; txtkk=numbertxt[ki]; k2=-1; colorPPattern=cPattern; break;} } } } else { if (ExtDeltaType==2) for (ki=kiPRZ;ki<=63;ki++) { if (arr[ki]>0) { if (MathAbs((number[ki]-kj)/number[ki])<=ExtDelta) {kk=number[ki]; txtkk=numbertxt[ki]; k2=-1; colorPPattern=cPattern; break;} } else if (numberMix[ki]>0) if (MathAbs((number[ki]-kj)/number[ki])<=ExtDelta) {kk=number[ki]; txtkk=numbertxt[ki]; k2=-1; colorPPattern=ExtPesavento; break;} } if (ExtDeltaType==1) for (ki=kiPRZ;ki<=63;ki++) { if (arr[ki]>0) { if (MathAbs(number[ki]-kj)<=ExtDelta) {kk=number[ki]; txtkk=numbertxt[ki]; k2=-1; colorPPattern=cPattern; break;} } else if (numberMix[ki]>0) if (MathAbs(number[ki]-kj)<=ExtDelta) {kk=number[ki]; txtkk=numbertxt[ki]; k2=-1; colorPPattern=ExtPesavento; break;} } } } //-------------------------------------------------------- // Ïîèñê ÷èñëà äëÿ ïàòòåðíîâ Ïåñàâåíòî. Êîíåö. //-------------------------------------------------------- //-------------------------------------------------------- // Îòïðàâêà ñîîáùåíèÿ íà ýëåêòðîííóþ ïî÷òó. Íà÷àëî. //-------------------------------------------------------- void _SendMail(string subject, string some_text) { SendMail(subject, some_text); } //-------------------------------------------------------- // Îòïðàâêà ñîîáùåíèÿ íà ýëåêòðîííóþ ïî÷òó. Êîíåö. //-------------------------------------------------------- //-------------------------------------------------------- // Ïðåîáðàçîâàíèå ñòðîêè â öâåò. Íà÷àëî. // Ôóíêöèþ íàïèñàë Integer. http://forum.mql4.com/ru/7134 //-------------------------------------------------------- color fStrToColor(string aName){ color tColor[]={ Black, DarkGreen, DarkSlateGray, Olive, Green, Teal, Navy, Purple, Maroon, Indigo, MidnightBlue, DarkBlue, DarkOliveGreen, SaddleBrown, ForestGreen, OliveDrab, SeaGreen, DarkGoldenrod, DarkSlateBlue, Sienna, MediumBlue, Brown, DarkTurquoise, DimGray, LightSeaGreen, DarkViolet, FireBrick, MediumVioletRed, MediumSeaGreen, Chocolate, Crimson, SteelBlue, Goldenrod, MediumSpringGreen, LawnGreen, CadetBlue, DarkOrchid, YellowGreen, LimeGreen, OrangeRed, DarkOrange, Orange, Gold, Yellow, Chartreuse, Lime, SpringGreen, Aqua, DeepSkyBlue, Blue, Magenta, Red, Gray, SlateGray, Peru, BlueViolet, LightSlateGray, DeepPink, MediumTurquoise, DodgerBlue, Turquoise, RoyalBlue, SlateBlue, DarkKhaki, IndianRed, MediumOrchid, GreenYellow, MediumAquamarine, DarkSeaGreen, Tomato, RosyBrown, Orchid, MediumPurple, PaleVioletRed, Coral, CornflowerBlue, DarkGray, SandyBrown, MediumSlateBlue, Tan, DarkSalmon, BurlyWood, HotPink, Salmon, Violet, LightCoral, SkyBlue, LightSalmon, Plum, Khaki, LightGreen, Aquamarine, Silver, LightSkyBlue, LightSteelBlue, LightBlue, PaleGreen, Thistle, PowderBlue, PaleGoldenrod, PaleTurquoise, LightGray, Wheat, NavajoWhite, Moccasin, LightPink, Gainsboro, PeachPuff, Pink, Bisque, LightGoldenrod, BlanchedAlmond, LemonChiffon, Beige, AntiqueWhite, PapayaWhip, Cornsilk, LightYellow, LightCyan, Linen, Lavender, MistyRose, OldLace, WhiteSmoke, Seashell, Ivory, Honeydew, AliceBlue, LavenderBlush, MintCream, Snow, White }; string tName[]={ "Black", "DarkGreen", "DarkSlateGray", "Olive", "Green", "Teal", "Navy", "Purple", "Maroon", "Indigo", "MidnightBlue", "DarkBlue", "DarkOliveGreen", "SaddleBrown", "ForestGreen", "OliveDrab", "SeaGreen", "DarkGoldenrod", "DarkSlateBlue", "Sienna", "MediumBlue", "Brown", "DarkTurquoise", "DimGray", "LightSeaGreen", "DarkViolet", "FireBrick", "MediumVioletRed", "MediumSeaGreen", "Chocolate", "Crimson", "SteelBlue", "Goldenrod", "MediumSpringGreen", "LawnGreen", "CadetBlue", "DarkOrchid", "YellowGreen", "LimeGreen", "OrangeRed", "DarkOrange", "Orange", "Gold", "Yellow", "Chartreuse", "Lime", "SpringGreen", "Aqua", "DeepSkyBlue", "Blue", "Magenta", "Red", "Gray", "SlateGray", "Peru", "BlueViolet", "LightSlateGray", "DeepPink", "MediumTurquoise", "DodgerBlue", "Turquoise", "RoyalBlue", "SlateBlue", "DarkKhaki", "IndianRed", "MediumOrchid", "GreenYellow", "MediumAquamarine", "DarkSeaGreen", "Tomato", "RosyBrown", "Orchid", "MediumPurple", "PaleVioletRed", "Coral", "CornflowerBlue", "DarkGray", "SandyBrown", "MediumSlateBlue", "Tan", "DarkSalmon", "BurlyWood", "HotPink", "Salmon", "Violet", "LightCoral", "SkyBlue", "LightSalmon", "Plum", "Khaki", "LightGreen", "Aquamarine", "Silver", "LightSkyBlue", "LightSteelBlue", "LightBlue", "PaleGreen", "Thistle", "PowderBlue", "PaleGoldenrod", "PaleTurquoise", "LightGray", "Wheat", "NavajoWhite", "Moccasin", "LightPink", "Gainsboro", "PeachPuff", "Pink", "Bisque", "LightGoldenrod", "BlanchedAlmond", "LemonChiffon", "Beige", "AntiqueWhite", "PapayaWhip", "Cornsilk", "LightYellow", "LightCyan", "Linen", "Lavender", "MistyRose", "OldLace", "WhiteSmoke", "Seashell", "Ivory", "Honeydew", "AliceBlue", "LavenderBlush", "MintCream", "Snow", "White", "CLR_NONE" }; aName=StringTrimLeft(StringTrimRight(aName)); for(int i=0;i FridayLastM1Time)continue; else if(Period() < 10080 && TimeDayOfWeek(countDateStart)==6)continue; else if(Period() < 10080 && TimeDayOfWeek(countDateStart)==0 && sundayOpenTime=="N/A") continue; else if(Period() < 10080 && TimeDayOfWeek(countDateStart)==0 && sundayOpenTime!="N/A" && TimeToStr(countDateStart,TIME_MINUTES) < sundayOpenTime)continue; counter++; if(counter==minBars && minDTime==0) minDTime=countDateStart; if(counter==maxBars && maxDTime==0) maxDTime=countDateStart; } }