TrendMaxMinChartLight

Author: Copyright 2020, Qstr Software Corp.
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
TrendMaxMinChartLight
ÿþ//+------------------------------------------------------------------+

//|                                        TrendMaxMinChartLight.mq4 |

//|                              Copyright 2020, Qstr Software Corp. |

//|                                             https://www.qstr.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2020, Qstr Software Corp."

#property link      "https://www.qstr.com"

#property version   "1.00"

#property strict

//+------------------------------------------------------------------+

#property indicator_chart_window       // =48:. @8AC5BAO 2 >B45;L=>< >:=5



// input bool alert=true; //2:;NG5=85/2K:;NG5=85 2A?><>30B5;L=>3> ;5@B, 

input bool Deinit=true; //2:;NG5=85/2K:;NG5=85 DC=:F88 >G8B:8 3@0D8:0. '8AB8B 2A5 M;5<5=BK =0 3@0D8:5.



input int BarCount=500; // >;8G5AB2> 10@>2 4;O @0AG5B0. 5 <>65B 1KBL 1>;LH5 510

double 

       point,                            // 1@0B=0O 25;8G8=0 Point

       period                            // 1@0B=0O 25;8G8=0 Period()

       ;



int

flagMxn=-1;                         // D;03 ?>A;54=53> ?>2KH5=8O 8;8 ?>=865=8O <0:A, <8= F5=K 1 ?>2KH5=85, 0 ?>=865=85





bool

FlagNewBar=false,

FlagBegin=true,

FlagPrintF=false;



bool bErr;                     //>H81:0 @01>BK



datetime tx,tm,tcl, Maxtime,Mintime,BarTime; //B5E=8G5A:85  ?5@5<5==K5 8 2@5<O <0:A<0;L=>3> 8 <8=8<0;L=>3> 10@0 ?> F5=5 70:@KB8O



string

var1, Maxtm,Mintm,                // 2@5<O 2 B5:AB>2>< 2845, 2@5<O <0:A8<0;L=>3> 8 <8=8<0;L=>3> 10@0 ?> F5=5 70:@KB8O

      Symb;                            // A8<2>; 2K1@0==>3> >@45@0

double Ru[250], Rd[250],Bd[250],Bu[250],                     // 8=B5@20; @>AB0, ?045=8O 2 ?C=:B0E, @0AAB>O=8O 2 10@0E <564C <8= <0E

       Mx[250],Mn[250], Max[250],Min[250],Mxn,                  // <0E, <8= ?> =><5@0< 2 ?C=:B0E

       RMx[250],RMn[250],RMxNb[250],RMnNb[250],                // @07=8F0 <564C =0945==K< 8 ?@54K4CI8< <8=, <0: 8 ?C=:B0E 8 10@0E 1 C@>2=O

       MxNb[250],MnNb[250], MaxNb[250],MinNb[250],             // =><5@0 10@>2 <8= 8 <0E

       RMinMax[600],                                        //  07=8F0 <564C 1;8609H8<8 <8=8<C<>< 8 <0:A8<C<><.

       Maxm,Minm=1000,Maxh,Minh=1000,Maxd,Mind=1000,Maxw,Minw=1000, // <0:A8<C<K <8=8<C<K 01A>;NB=K5 =0 132 10@0E

            MaxmNb,MinmNb, RMaxMin,VBMaxMin,  // =><5@0 10@>2 01A>;NB=KE <0:A8<C<>2 8 <8=8<C<>2, @07=8F0 2 ?C=:B0E 8 10@0E

            // 2B>@>9 C@>25=L <8= <0E

            Ru1[250], Rd1[250],Bd1[250],Bu1[250],                     // 8=B5@20; @>AB0, ?045=8O 2 ?C=:B0E, @0AAB>O=8O 2 10@0E <564C <8= <0E

            Mx1[250],Mn1[250], Mnmx1[250],Mxmn1[250],  Mxn1,Nb1,        // <0E, <8= ?> =><5@0<  2 ?C=:B0E

            RMx1[250],RMn1[250],RMxNb1[250],RMnNb1[250],                // @07=8F0 <564C =0945==K< 8 ?@54K4CI8< <8=, <0: 8 ?C=:B0E 8 10@0E 2 C@>2=O

            MxNb1[250],MnNb1[250], MnxNb1[250],MxnNb1[250],                 // =><5@0 10@>2 <8= 8 <0E, MnxNb1 =><5@ <8=8<C<0 <0:A8<>2 1 C@>2=O

            Nmxd1[250],Nmxu1[250],Nmnd1[250],Nmnu1[250],                     //:>;8G5AB2> <8= <0E ?5@2>3> C@>2=O <564C <8= <0E 2B>@>3> C@>2=O



            // B@5B89 C@>25=L <8= <0E (?>@O4>:)

            Ru2[66], Rd2[66],Bd2[66],Bu2[66],                     // 8=B5@20; @>AB0, ?045=8O 2 ?C=:B0E, @0AAB>O=8O 2 10@0E <564C <8= <0E

            Mx2[66],Mn2[66], Mnmx2[66],Mxmn2[66],  Mxn2,Nb2,        // <0E, <8= ?> =><5@0<  2 ?C=:B0E

            RMx2[66],RMn2[66],RMxNb2[66],RMnNb2[66],                // @07=8F0 <564C =0945==K< 8 ?@54K4CI8< <8=, <0: 8 ?C=:B0E 8 10@0E 2 C@>2=O

            MxNb2[66],MnNb2[66], MnxNb2[66],MxnNb2[66],                 // =><5@0 10@>2 <8= 8 <0E, MnxNb1 =><5@ <8=8<C<0 <0:A8<>2 1 C@>2=O

            Nmxd2[66],Nmxu2[66],Nmnd2[66],Nmnu2[66]                     //:>;8G5AB2> <8= <0E ?5@2>3> C@>2=O <564C <8= <0E 2B>@>3> C@>2=O



            ;



int m,bd,bu,mn,mx,nb,m1,mn1,mx1,

    m2,mn2,mx2,m3,mn3,mx3,n1,n2,n3,             // m ?>@O4:>2K5 =><5@0 <8=, <0E//bd,bu @0AAB>O=85 2 10@0E <564C <8= <0E//nb =><5@ <8= <0E

    vb ;                //AG5BG8: ?>A;5 ?>O2;5=8O =>2>3> 10@0





//--------------------------------------------------------------------

int OnInit()                             // !?5F80;L=0O DC=:F8O init()

  {

   bErr = false;

if(BarCount>510)

{bErr = true;Alert("0@>2 1>;LH5 510, A45;09B5 <5=LH5");}

//--------------------------------------------------------------------



   point = 1/Point;

   period = 1.0/(double) Period();//GB> 1K =5 45;8BL =0 ?5@8>4

   return(INIT_SUCCEEDED);                             // KE>4 87 A?5F. D-88 init()

  }

//--------------------------------------------------------------------

//int start()                            // !?5F80;L=0O DC=:F8O start()

int OnCalculate(const int rates_total,

                const int prev_calculated,

                const datetime &time[],

                const double &open[],

                const double &high[],

                const double &low[],

                const double &close[],

                const long &tick_volume[],

                const long &volume[],

                const int &spread[])



  {

   if(bErr == true)

      return(rates_total);

   int// i,                              // =45:A 10@0



   k=0                   // >=B@>;L=K9 ?0@0<5B@ F8:;0, 2K2>48B A:>;L:> F8:;>2 ?@8A2>5=8O ?@>H;>.

     ;



//--------------------------------------------------------------------



   TREND();

   tm=TimeCurrent();

   var1=TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS);

   



Comment(" m1= ",m1," mx1= ",mx1," mn1= ",mn1," m2= ",m2," mx2= ",mx2," mn2= ",mn2," m3=",m3," mx3= ",mx3," mn3= ",mn3,"\n",

                                " RMx[1]= ",RMx[1]," RMn[1]= ",RMn[1]," RMinMax[1]= ",RMinMax[1],"\n",

                                " RMx1[1]= ", RMx1[1]," RMn1[1]= ",RMn1[1],"\n",

                                " RMx2[1]= ", RMx2[1]," RMn2[1]= ",RMn2[1],"\n",

                                " BarCount= ",BarCount

                                ); 



   



//--------------------------------------------------------------------

   return(rates_total);                           // KE>4 87 A?5F. D-88 start()

  }

//--------------------------------------------------------------------

void OnDeinit(const int reason)

  {



   if(Deinit == true)                         // !B8@05< B8:8 A 3@0D8:0, 5A;8 2:;NG5=0 DC=:F8O >G8AB:8 3@0D8:0

     {

      int obj_total=ObjectsTotal();

      PrintFormat("A53> %d >1J5:B>2",obj_total);

      for(int i=obj_total-1; i>=0; i--)

        {

         string name=ObjectName(i);

         //         PrintFormat("1J5:B %d: %s",i,name);

         ObjectDelete(name);

        }

     }

//--- destroy timer

   EventKillTimer();



  }





//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

int TREND()

  {



//--------------------<0:A8<C<K <8=8<C<K ?5@2>3> ?>@O4:0 -----------------------------------

   m=1;

   mn=1;

   mx=1;

   bu=1;

   bd=1;

   Mxn=Close[1];

   Mx[0]=Close[1];

   Mn[0]=Close[1];

   Max[0]=Close[1];

   Min[0]=Close[1];                       



   for(int i=1; i<BarCount; i++)

     {

      if(

         Close[i]>=Close[i+1] && Close[i+1]>=Close[i+2]

      )

        {bu++;}                          // :>;8G5AB2> 10@>2 @>AB0 4> <8=8<C<0, AG5B 2 10@0E 845B =0704 ?> 2@5<5=8, ?>MB><C =0>1>@>B



      if(

         Close[i]<=Close[i+1] && Close[i+1]<=Close[i+2]

      )

        {bd++;}                         // :>;8G5AB2> 10@>2 ?045=8O 4> <0:A8<C<0



      //-------------------- <0:A8<C<K ?5@2>3> ?>@O4:0 -----------------------------------

      if(

         Close[i]<Close[i+1] && Close[i+1]>Close[i+2]

      )

        {

         Mx[mx]=Close[i+1];                             // C@>25=L <0:A8<C<0

         Bd[mx]=bd;                             //:>;8G5AB2> 10@>2 <564C ?@54K4CH8< <8= 8 =0945==K< <0:A, ?5@2K9 <8= <0E @02=K C@>2=N ?5@2>3> 10@0

         Rd[mx]=round((Mxn-Mx[mx])* point);             // @07=8F0 2 ?C=:B0E <564C ?@54K4CI8< <8=8<C<>< 8 =0945==K< <0:A8<C<><

         MxNb[mx]=i+1;                                 // =><5@ 10@0 <0:A8<C<0

         RMx[mx]=round((Mx[mx-1]- Mx[mx])* point);            //@07=8F0 2 ?C=:B0E <564C =0945==K< 8 ?@54K4CI8< <0:A8<C<><, >B@8F0B ?045=85 ?>;>68B @>AB

      

         RMxNb[mx]= MxNb[mx]- MxNb[mx-1];      //:>;8G5AB2> 10@>2 <564C =0945==K< 8 ?@54K4CI8< <0:A8<C<><

         Mxn=Mx[mx];                  // ?@8A20820=85 7=0G5=8O C@>2=O 4;O ?>4AG5B0 @07=8FK 2 ?C=:B0E A> A;54CNI8< <8=8<C<>< 8;8 <0:A8<C<><

         RMinMax[m] =round((Mx[mx] - Mn[mn]) * point);

      



         if(i<BarCount-1)

           {

            string NameObjmx="Max_" + (string)(i+1) + "_"+(string)Time[i+1];

            bool   created=ObjectCreate(0,NameObjmx,OBJ_ARROW_THUMB_DOWN,0,Time[i+1],High[i+1]);

            if(created)// 5A;8 A>740;AO - A45;05< 5<C BN=8=3

              {

               //--- B>G:0 ?@82O7:8 A25@EC, GB>1K =5 =05760BL =0 10@

               ObjectSetInteger(0,NameObjmx,OBJPROP_ANCHOR,ANCHOR_BOTTOM);

               //--- ?>A;54=89 HB@8E - ?>:@0A8<

               ObjectSetInteger(0,NameObjmx,OBJPROP_COLOR,clrRed);

              }

           }

     

         m++;

         mx++;            // 2 :>=F5 m :>;8G5AB2> M:AB@5<C<>2, mx :>;8G5AB2> <0:A8<C<>2

         bu=1;

         bd=1;



        }

      //--------------------<8=8<C<K ?5@2>3> ?>@O4:0 -----------------------------------

      if(

         Close[i]>Close[i+1] && Close[i+1]<Close[i+2]

      )

        {

         Mn[mn]=Close[i+1];                       // C@>25=L <8=8<C<0

         Bu[mn]=bu;                          //:>;8G5AB2> 10@>2 <564C ?@54K4CH8< <0E 8 =0945==K< <8=, ?5@2K9 <8= <0E @02=K C@>2=N 13> 10@0

         Ru[mn]=round((Mxn-Mn[mn])* point);           // @07=8F0 2 ?C=:B0E <564C ?@54K4CI8< <0:A8<C<>< 8 =0945==K< <8=88<C<><

         MnNb[mn]=i+1;                             // =><5@ 10@0 =0945==>3> <8=88<C<0

         RMn[mn]=round((Mn[mn-1]- Mn[mn])* point);           //@07=8F0 2 ?C=:B0E <564C =0945==K< 8 ?@54K4CI8< <8=8<C<><, >B@8F0B ?045=85 ?>;>68B @>AB

        

         RMnNb[mn]= MnNb[mn]- MnNb[mn-1];      //:>;8G5AB2> 10@>2 <564C =0945==K< 8 ?@54K4CI8< <8=8<C<><

         Mxn=Mn[mn];

         RMinMax[m] =round((Mx[mx] - Mn[mn]) * point);









         if(i<BarCount-1)

           {

            string NameObjmn="Min_" +(string)(i+1) + "_"+(string)Time[i+1];

            bool   created=ObjectCreate(0,NameObjmn,OBJ_ARROW_THUMB_DOWN,0,Time[i+1],Low[i+1]);

            if(created)// 5A;8 A>740;AO - A45;05< 5<C BN=8=3

              {

               //--- B>G:0 ?@82O7:8 A25@EC, GB>1K =5 =05760BL =0 10@

               ObjectSetInteger(0,NameObjmn,OBJPROP_ANCHOR,ANCHOR_TOP);

               //--- ?>A;54=89 HB@8E - ?>:@0A8<

               ObjectSetInteger(0,NameObjmn,OBJPROP_COLOR,clrBlue);

              }

           }



         m++;

         mn++;

         bu=1;

         bd=1;



        }





     }



   m1=m;

   mx1=mx;

   mn1=mn; // :>;8G5AB2> M:AB@5<C<>2, <0:A8<C<>2 8 <8=8<C<>2 13> ?>@O4:0



//-------------------- <0:A8<C<K <8=8<C<K 2B>@>3> ?>@O4:0-----------------------------------

//--------------------AG8B05< @>AB ?045=85 A@548 <0:A8<C<>2 ?5@2>3> ?>@O4:0----------------------------------------------

   m=1;

   mn=1;

   mx=1;

   bu=1;

   bd=1;

   Nb1=1;

   int Nbxn1=1;

   Mxn1=Mx[1];

   Mx1[0]=Mx[1];

   Mn1[0]=Mn[1];

   Mnmx1[0]=Mx[1];

   Mxmn1[0]=Mn[1];

   MxNb1[0]=MxNb[1];

   MnxNb1[0]=MxNb[1];



   for(int i=1; i<mx1-2; i++)

     {

      var1=TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS);

      if(

         Mx[i]>=Mx[i+1] && Mx[i+1]>=Mx[i+2]

      )

        {bu++;}



      if(

         Mx[i]<=Mx[i+1] && Mx[i+1]<=Mx[i+2]

      )

        {bd++;}



      //-------------------- 8I5< <0:A8<C<K 2 ?>@O4:0 A@548 <0:A8<C<>2 1 ?>@O4:0-------------------



      if(

         Mx[i]<Mx[i+1] && Mx[i+1]>Mx[i+2]

      )

        {

         Mx1[mx]=Mx[i+1];                      //C@>25=L =0945==>3> <0:A8<C<0 2 ?>@O4:0 <564C <0:A8<C<0<8 1 ?>@O4:0 (F5=0)

         MxNb1[mx]=MxNb[i+1];                  //=><5@ 10@0 =0945==>3> <0:A8<C<0 2 ?>@O4:0

         Nmxd1[mx]=bd;                    // :>;8G5AB2> <0:A8<C<>2 1 ?>@O4:0 <564C =0945==K< <0:A8<C<>< 2 ?>@O4:0 8 ?@54K4CI8< <8=8<0;L=K< <0:A8<C<>< 2 ?>@O4:0

         Bd1[mx]=MxNb1[mx]-Nbxn1;           // :>;8G5AB2> 10@>2 <564C =0945==K< <0:A8<C<>< 2 ?>@O4:0 8 ?@54K4CI8< <8=8<0;L=K< <0:A8<C<>< 2 ?>@O4:0

         Rd1[mx]=round((Mxn1-Mx1[mx])* point); // ?045=85 2 ?C=:B0E >B =0945==>3> <0:A8<C<0 2 ?>@O4:0 4> ?@54K4CH53> <8=8<0;L=>3> <0:A8<C<0 2 ?>@O4:0

         RMx1[mx]=round((Mx1[mx]- Mx1[mx-1])* point);  //@07=8F0 2 ?C=:B0E <564C =0945==K< 8 ?@54K4CI8< <0:A8<C<>< 2 ?>@O4:0, >B@8F0B ?045=85 ?>;>68B @>AB

         RMxNb1[mx]= MxNb1[mx]- MxNb1[mx-1];      //:>;8G5AB2> 10@>2 <564C =0945==K< 8 ?@54K4CI8< <0:A8<C<>< 2 ?>@O4:0

         Mxn1=Mx1[mx];

         Nb1=(int)MxNb1[mx];





         string NameObjmx1="Max2_"+(string)(int)Nb1+"_"+(string)Time[(int)Nb1];

         bool   created=ObjectCreate(0,NameObjmx1,OBJ_ARROW_THUMB_DOWN,0,Time[(int)Nb1],High[(int)Nb1]+(15*Point));

         if(created)// 5A;8 A>740;AO - A45;05< 5<C BN=8=3

           {

            //--- B>G:0 ?@82O7:8 A25@EC, GB>1K =5 =05760BL =0 10@

            ObjectSetInteger(0,NameObjmx1,OBJPROP_ANCHOR,ANCHOR_BOTTOM);

            //--- ?>A;54=89 HB@8E - ?>:@0A8<

            ObjectSetInteger(0,NameObjmx1,OBJPROP_COLOR,clrPeru);

           }



      

         m++;

         mx++;

         bu=1;

         bd=1;



        }

      //-------------------- 8I5< <8=<<0;L=K5 <0:A8<C<K 2 ?>@O4:0 A@548 <0:A8<C<>2 1 ?>@O4:0-------------------

      if(

         Mx[i]> Mx[i+1] &&  Mx[i+1]<Mx[i+2]  // 8I5< <8=<0EA A@548 <0:A<8<>2 1 ?>@O4:0

      )

        {

         Mnmx1[mn]=Mx[i+1];                   // 8=<0:A 2 ?>@O4:0 <564C <0:A8<C<0<8 1 ?>@O4:0 7=0G5=85 C@>2=O (F5=0)

         MnxNb1[mn]=MxNb[i+1];                // <8=<0:A 2 ?>@O4:0 <564C <0:A8<C<0<8 1 ?>@O4:0 =><5@ 10@0

         Nmxu1[mn]=bu;                        // :>;8G5AB2> <0:A8<C<>2 1 ?>@O4:0 <564C =0945==K< <8=8<0;L=K< <0:A8<C<>< 2 ?>@O4:0 8 ?@54K4CI8< <0:A8<C<>< 2 ?>@O4:0

         Bu1[mn]=MnxNb1[mn]-Nb1;     //:>;8G5AB2> 10@>2 <564C =0945==K< <8=8<0;L=K< <0:A8<C<>< 2 ?>@O4:0 8 ?@5;K;CH8< <0:A8<C<>< 2 ?>@O4:0

         Ru1[mn]=round((Mxn1-Mnmx1[mn])* point); // @>AB 2 ?C=:B0E >B =0945==>3> <8=8<0;L=>3> <0:A8<C<0 2 ?>@O4:0 4> ?@54K4CI53> <0:A8<C<0 2 ?>@O4:0



         Mxn1=Mnmx1[mn];

         Nbxn1=(int)MnxNb1[mn];





         m++;

         mn++;

         bu=1;

         bd=1;



        }



     }

   mx2=mx;        //:>;8G5AB2> <0:A8<C<>2 2 ?>@O4:0

   m2=m;          //:>;8G5AB2> M:AB@5<C<>2 2 <0:A8<C<0E 2 ?>@O4:0

//-------------------- 8=8<C<K 2 ?>@O4:0 -----------------------------------



   m=1;

   mn=1;

   mx=1;

   bu=1;

   bd=1;

   Nb1=1;

   Nbxn1=1;

   Mxn1=Mn[1];

   Mx1[0]=Mx[1];

   Mn1[0]=Mn[1];

   Mnmx1[0]=Mx[1];

   Mxmn1[0]=Mn[1];

   MxNb1[0]=MxNb[0];

   MnxNb1[0]=MxNb[0];





   for(int i=1; i<mn1-2; i++)

     {

      var1=TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS);

      if(

         Mn[i]>=Mn[i+1] && Mn[i+1]>=Mn[i+2]

      )

        {bu++;}



      if(

         Mn[i]<=Mn[i+1] && Mn[i+1]<=Mn[i+2]

      )

        {bd++;}



      //-------------------- 8I5< <8=<<C<K 2 ?>@O4:0 A@548 <8=8<C<>2 1 ?>@O4:0-------------------



      if(

         Mn[i]>Mn[i+1] && Mn[i+1]<Mn[i+2]

      )

        {



         Mn1[mn]=Mn[i+1];                      //C@>25=L =0945==>3> <0:A8<C<0 2 ?>@O4:0 <564C <0:A8<C<0<8 1 ?>@O4:0 (F5=0)

         MnNb1[mn]=MnNb[i+1];                  //=><5@ 10@0 =0945==>3> <0:A8<C<0 2 ?>@O4:0

         Nmnu1[mn]=bu;                    // :>;8G5AB2> <0:A8<C<>2 1 ?>@O4:0 <564C =0945==K< <0:A8<C<>< 2 ?>@O4:0 8 ?@54K4CI8< <8=8<0;L=K< <0:A8<C<>< 2 ?>@O4:0

         Bu1[mn]=MnNb1[mn]-Nbxn1;           // :>;8G5AB2> 10@>2 <564C =0945==K< <0:A8<C<>< 2 ?>@O4:0 8 ?@54K4CI8< <8=8<0;L=K< <0:A8<C<>< 2 ?>@O4:0

         Ru1[mn]=round((Mxn1-Mn1[mn])* point); // ?045=85 2 ?C=:B0E >B =0945==>3> <0:A8<C<0 2 ?>@O4:0 4> ?@54K4CH53> <8=8<0;L=>3> <0:A8<C<0 2 ?>@O4:0

         RMn1[mn]=round((Mn1[mn]- Mn1[mn-1])* point); //@07=8F0 2 ?C=:B0E <564C =0945==K< 8 ?@54K4CI8< <0:A8<C<>< 2 ?>@O4:0, >B@8F0B ?045=85 ?>;>68B @>AB

         RMnNb1[mn]= MnNb1[mn]- MnNb1[mn-1];      //:>;8G5AB2> 10@>2 <564C =0945==K< 8 ?@54K4CI8< <0:A8<C<>< 2 ?>@O4:0

         Mxn1=Mn1[mn];

         Nb1=(int)MnNb1[mn];







         string NameObjmn1="Min2_"+(string)(int)Nb1+"_"+(string)Time[(int)Nb1];

         bool   created=ObjectCreate(0,NameObjmn1,OBJ_ARROW_THUMB_DOWN,0,Time[(int)Nb1],Low[(int)Nb1]-(15*Point));

         if(created)// 5A;8 A>740;AO - A45;05< 5<C BN=8=3

           {

            //--- B>G:0 ?@82O7:8 A25@EC, GB>1K =5 =05760BL =0 10@

            ObjectSetInteger(0,NameObjmn1,OBJPROP_ANCHOR,ANCHOR_TOP);

            //--- ?>A;54=89 HB@8E - ?>:@0A8<

            ObjectSetInteger(0,NameObjmn1,OBJPROP_COLOR,clrAquamarine);

           }



         m++;

         mn++;

         bu=1;

         bd=1;



        }





      //-------------------- 8I5< <0:A8<0;L=K5 <8=<<C<K  2 ?>@O4:0 A@548 <8=8<C<>2 1 ?>@O4:0-------------------

      if(

         Mn[i]< Mn[i+1] &&  Mn[i+1]> Mn[i+2]

      )

        {



         Mxmn1[mx]=Mn[i+1];                   // 8=<0:A 2 ?>@O4:0 <564C <0:A8<C<0<8 1 ?>@O4:0 7=0G5=85 C@>2=O (F5=0)

         MxnNb1[mx]=MnNb[i+1];                // <8=<0:A 2 ?>@O4:0 <564C <0:A8<C<0<8 1 ?>@O4:0 =><5@ 10@0

         Nmnd1[mx]=bd;                        // :>;8G5AB2> <0:A8<C<>2 1 ?>@O4:0 <564C =0945==K< <8=8<0;L=K< <0:A8<C<>< 2 ?>@O4:0 8 ?@54K4CI8< <0:A8<C<>< 2 ?>@O4:0

         Bd1[mn]=MxnNb1[mx]-Nb1;     //:>;8G5AB2> 10@>2 <564C =0945==K< <8=8<0;L=K< <0:A8<C<>< 2 ?>@O4:0 8 ?@5;K;CH8< <0:A8<C<>< 2 ?>@O4:0

         Rd1[mn]=round((Mxn1-Mxmn1[mx])* point); // @>AB 2 ?C=:B0E >B =0945==>3> <8=8<0;L=>3> <0:A8<C<0 2 ?>@O4:0 4> ?@54K4CI53> <0:A8<C<0 2 ?>@O4:0



         Mxn1=Mxmn1[mx];

         Nbxn1=(int)MxnNb1[mx];







         m++;

         mx++;

         bu=1;

         bd=1;





        }



     }

   mn2=mn;       // :>;8G5AB2> <8=8<C<>2 2 ?>@O4:0

   m2=m2+m;     // :>;8G5AB2> M:AB@5<C<>2 2 <8=8<C<0E 8 <0:A8<C<0E 2 ?>@O4:0

//------------------------------------------------------------------------------

//!;8O=85 <0AA82>2 <0:A8<0;L=KE <0:A8<C<>2 8 <8=8<0;L=KE <8=8<C<>2 2 ?>@O4:0 2 >48=

 





//-------------------- <0:A8<C<K <8=8<C<K "@5BL53> ?>@O4:0-----------------------------------

//--------------------AG8B05< @>AB ?045=85 A@548 <0:A8<C<>2 2B>@>3> ?>@O4:0----------------------------------------------

   int i3;

   m=1;

   mn=1;

   mx=1;

   bu=1;

   bd=1;

   Nb2=1;

   int Nbxn2=1;

   Mxn2=Mx1[1];

   Mx2[0]=Mx1[1];

   Mn2[0]=Mn1[1];

   Mnmx2[0]=Mnmx1[1];

   Mxmn2[0]=Mxmn1[1];

   MxNb2[0]=MxNb1[1];

   MnxNb2[0]=MnxNb1[1];

   bool FlagMax3 = false;



   for(int i=1; i<mx2-1; i++)

     {

      var1=TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS);

      if(

         Mx1[i]>=Mx1[i+1] && Mx1[i+1]>=Mx1[i+2]

      )

        {bu++;}



      if(

         Mx1[i]<=Mx1[i+1] && Mx1[i+1]<=Mx1[i+2]

      )

        {bd++;}



      //-------------------- 8I5< <0:A8<C<K 3 ?>@O4:0 A@548 <0:A8<C<>2 2 ?>@O4:0-------------------



      if(

         Mx1[i]<Mx1[i+1] && Mx1[i+1]>Mx1[i+2]

      )

        {

         FlagMax3 = true;

         Mx2[mx]=Mx1[i+1];                      //C@>25=L =0945==>3> <0:A8<C<0 2 ?>@O4:0 <564C <0:A8<C<0<8 1 ?>@O4:0 (F5=0)

         MxNb2[mx]=MxNb1[i+1];                  //=><5@ 10@0 =0945==>3> <0:A8<C<0 2 ?>@O4:0

         Nmxd2[mx]=bd;                    // :>;8G5AB2> <0:A8<C<>2 1 ?>@O4:0 <564C =0945==K< <0:A8<C<>< 2 ?>@O4:0 8 ?@54K4CI8< <8=8<0;L=K< <0:A8<C<>< 2 ?>@O4:0

         Bd2[mx]=MxNb2[mx]-Nbxn2;           // :>;8G5AB2> 10@>2 <564C =0945==K< <0:A8<C<>< 2 ?>@O4:0 8 ?@54K4CI8< <8=8<0;L=K< <0:A8<C<>< 2 ?>@O4:0

         Rd2[mx]=round((Mxn2-Mx2[mx])* point); // ?045=85 2 ?C=:B0E >B =0945==>3> <0:A8<C<0 2 ?>@O4:0 4> ?@54K4CH53> <8=8<0;L=>3> <0:A8<C<0 2 ?>@O4:0

         RMx2[mx]=round((Mx2[mx]- Mx2[mx-1])* point);            //@07=8F0 2 ?C=:B0E <564C =0945==K< 8 ?@54K4CI8< <0:A8<C<>< 2 ?>@O4:0, >B@8F0B ?045=85 ?>;>68B @>AB

         RMxNb2[mx]= MxNb2[mx]- MxNb2[mx-1];      //:>;8G5AB2> 10@>2 <564C =0945==K< 8 ?@54K4CI8< <0:A8<C<>< 2 ?>@O4:0

         Mxn2=Mx2[mx];

         Nb2=MxNb2[mx];











         string NameObjmx2="Max3_"+(string)(int)Nb2+"_"+(string)Time[(int)Nb2];

         bool   created=ObjectCreate(0,NameObjmx2,OBJ_ARROW_THUMB_DOWN,0,Time[(int)Nb2],High[(int)Nb2]+(30*Point));

         if(created)// 5A;8 A>740;AO - A45;05< 5<C BN=8=3

           {

            //--- B>G:0 ?@82O7:8 A25@EC, GB>1K =5 =05760BL =0 10@

            ObjectSetInteger(0,NameObjmx2,OBJPROP_ANCHOR,ANCHOR_BOTTOM);

            //--- ?>A;54=89 HB@8E - ?>:@0A8<

            ObjectSetInteger(0,NameObjmx2,OBJPROP_COLOR,clrYellow);

           }



         m++;

         mx++;

         bu=1;

         bd=1;



        }

      if(!FlagMax3 && i==mx2-2)

        {

         (Mx1[1]>Mx1[mx2-2])?i3 = 1 : i3 = 2;



         Mx2[1]=Mx1[1];                      //C@>25=L =0945==>3> <0:A8<C<0 2 ?>@O4:0 <564C <0:A8<C<0<8 1 ?>@O4:0 (F5=0)

         Mx2[2]=Mx1[mx2-2];                 // ?> :@0O5<, 5A;8 =5 1K;> =0945=> =8 >4=>3> <0:A8<C<0

         MxNb2[1]=MxNb1[1];                  //=><5@ 10@0 =0945==>3> <0:A8<C<0 2 ?>@O4:0

         MxNb2[2]=MxNb1[mx2-2];

         Nmxd2[1]=bd;                    // :>;8G5AB2> <0:A8<C<>2 1 ?>@O4:0 <564C =0945==K< <0:A8<C<>< 2 ?>@O4:0 8 ?@54K4CI8< <8=8<0;L=K< <0:A8<C<>< 2 ?>@O4:0

         Bd2[1]=MxNb2[i3]-Nb2;           // :>;8G5AB2> 10@>2 <564C =0945==K< <0:A8<C<>< 2 ?>@O4:0 8 ?@54K4CI8< <8=8<0;L=K< <0:A8<C<>< 2 ?>@O4:0

         Rd2[1]=round((Mxn2-Mx2[i3])* point); // ?045=85 2 ?C=:B0E >B =0945==>3> <0:A8<C<0 2 ?>@O4:0 4> ?@54K4CH53> <8=8<0;L=>3> <0:A8<C<0 2 ?>@O4:0

         RMx2[1]=round((Mx2[2]- Mx2[1])* point);            //@07=8F0 2 ?C=:B0E <564C =0945==K< 8 ?@54K4CI8< <0:A8<C<>< 2 ?>@O4:0, >B@8F0B ?045=85 ?>;>68B @>AB

         RMxNb2[1]= MxNb2[2]- MxNb2[1];      //:>;8G5AB2> 10@>2 <564C =0945==K< 8 ?@54K4CI8< <0:A8<C<>< 2 ?>@O4:0

         Mxn2=Mx2[i3];

         Nb2=MxNb2[i3];



        }

      //-------------------- 8I5< <8=<<0;L=K5 <0:A8<C<K 3 ?>@O4:0 A@548 <0:A8<C<>2 2 ?>@O4:0-------------------

      if(

         Mx1[i]> Mx1[i+1] &&  Mx1[i+1]<Mx1[i+2]  // 8I5< <8=<0EA A@548 <0:A<8<>2 2 ?>@O4:0

      )

        {

         Mnmx2[mn]=Mx1[i+1];                   // 8=<0:A 2 ?>@O4:0 <564C <0:A8<C<0<8 1 ?>@O4:0 7=0G5=85 C@>2=O (F5=0)

         MnxNb2[mn]=MxNb1[i+1];                // <8=<0:A 2 ?>@O4:0 <564C <0:A8<C<0<8 1 ?>@O4:0 =><5@ 10@0

         Nmxu2[mn]=bu;                        // :>;8G5AB2> <0:A8<C<>2 1 ?>@O4:0 <564C =0945==K< <8=8<0;L=K< <0:A8<C<>< 2 ?>@O4:0 8 ?@54K4CI8< <0:A8<C<>< 2 ?>@O4:0

         Bu2[mn]=MnxNb2[mn]-Nb2;     //:>;8G5AB2> 10@>2 <564C =0945==K< <8=8<0;L=K< <0:A8<C<>< 2 ?>@O4:0 8 ?@5;K;CH8< <0:A8<C<>< 2 ?>@O4:0

         Ru2[mn]=round((Mxn2-Mnmx2[mn])* point); // @>AB 2 ?C=:B0E >B =0945==>3> <8=8<0;L=>3> <0:A8<C<0 2 ?>@O4:0 4> ?@54K4CI53> <0:A8<C<0 2 ?>@O4:0



         Mxn2=Mnmx2[mn];

         Nbxn2=(int)MnxNb2[mn];



         m++;

         mn++;

         bu=1;

         bd=1;

        };

     };





   mx3=mx;        //:>;8G5AB2> <0:A8<C<>2 3 ?>@O4:0

   m3=m;          //:>;8G5AB2> M:AB@5<C<>2 2 <0:A8<C<0E 3 ?>@O4:0

//-------------------- 8=8<C<K 3 ?>@O4:0 -----------------------------------



   m=1;

   mn=1;

   mx=1;

   bu=1;

   bd=1;

   Nb2=1;

   Nbxn2=1;

   Mxn2=Mn1[1];

   Mx2[0]=Mx1[1];

   Mn2[0]=Mn1[1];

   Mnmx2[0]=Mnmx1[1];

   Mxmn2[0]=Mxmn1[1];

   MnNb2[0]=MnNb1[1];

   MxnNb2[0]=MxnNb1[1];

   bool FlagMin3 = false;





   for(int i=1; i<mn2-1; i++)

     {

      var1=TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS);

      if(

         Mn1[i]>=Mn1[i+1] && Mn1[i+1]>=Mn1[i+2]

      )

        {bu++;}



      if(

         Mn1[i]<=Mn1[i+1] && Mn1[i+1]<=Mn1[i+2]

      )

        {bd++;}



      //-------------------- 8I5< <8=<<C<K 3 ?>@O4:0 A@548 <8=8<C<>2 2 ?>@O4:0-------------------



      if(

         Mn1[i]>Mn1[i+1] && Mn1[i+1]<Mn1[i+2]

      )

        {

         FlagMin3 = true;

         Mn2[mn]=Mn1[i+1];                      //C@>25=L =0945==>3> <8=8<C<0 3 ?>@O4:0 <564C <8=8<C<0<8 2 ?>@O4:0 (F5=0)

         MnNb2[mn]=MnNb1[i+1];                  //=><5@ 10@0 =0945==>3> <8=88<C<0 3 ?>@O4:0

         Nmnu2[mn]=bu;                    // :>;8G5AB2> <8=8<C<>2 2 ?>@O4:0 <564C =0945==K< <8=8<C<>< 3 ?>@O4:0 8 ?@54K4CI8< <0:A8<0;L=K< <8=8<C<>< 3 ?>@O4:0

         Bu2[mn]=MnNb2[mn]-Nbxn2;           // :>;8G5AB2> 10@>2 <564C =0945==K< <8=8<C<>< 3 ?>@O4:0 8 ?@54K4CI8< <0:A8<0;L=K< <8=8<C<>< 3 ?>@O4:0

         Ru2[mn]=round((Mxn2-Mn2[mn])* point); // @>AB 2 ?C=:B0E >B =0945==>3> <8=8<C<0 3 ?>@O4:0 4> ?@54K4CH53> <0:A8<0;L=>3> <8=8<C<0 3 ?>@O4:0

         RMn2[mn]=round((Mn2[mn]- Mn2[mn-1])* point);            //@07=8F0 2 ?C=:B0E <564C =0945==K< 8 ?@54K4CI8< <8=8<C<>< 3 ?>@O4:0, >B@8F0B ?045=85 ?>;>68B @>AB

         RMnNb2[mn]= MnNb2[mn]- MnNb2[mn-1];      //:>;8G5AB2> 10@>2 <564C =0945==K< 8 ?@54K4CI8< <8=8<C<>< 3 ?>@O4:0

         Mxn2=Mn2[mn];

         Nb2=MnNb2[mn];







         string NameObjmn2="Min3_"+(string)(int)Nb2+"_"+(string)Time[(int)Nb2];

         bool   created=ObjectCreate(0,NameObjmn2,OBJ_ARROW_THUMB_DOWN,0,Time[(int)Nb2],Low[(int)Nb2]-(30*Point));

         if(created)// 5A;8 A>740;AO - A45;05< 5<C BN=8=3

           {

            //--- B>G:0 ?@82O7:8 A25@EC, GB>1K =5 =05760BL =0 10@

            ObjectSetInteger(0,NameObjmn2,OBJPROP_ANCHOR,ANCHOR_TOP);

            //--- ?>A;54=89 HB@8E - ?>:@0A8<

            ObjectSetInteger(0,NameObjmn2,OBJPROP_COLOR,clrMagenta);

           }





         m++;

         mn++;

         bu=1;

         bd=1;



        }



      if(!FlagMin3 && i==mn2-2)

        {

         (Mn1[1]<Mn1[mn2-2])?i3 = 1 : i3 = 2;



         Mn2[1]=Mn1[1];

         Mn2[2]=Mn1[mn2-2];              //C@>25=L =0945==>3> <8=8<C<0 3 ?>@O4:0 <564C <8=8<C<0<8 2 ?>@O4:0 (F5=0)?> :@0O< AB028<

         MnNb2[1] = MnNb1[1];

         MnNb2[2] = MnNb1[mn2-2];          //=><5@ 10@0 =0945==>3> <8=88<C<0 3 ?>@O4:0

         Nmnu2[1]=bu;                    // :>;8G5AB2> <8=8<C<>2 2 ?>@O4:0 <564C =0945==K< <8=8<C<>< 3 ?>@O4:0 8 ?@54K4CI8< <0:A8<0;L=K< <8=8<C<>< 3 ?>@O4:0

         Bu2[1]=MnNb2[i3]-Nb2;           // :>;8G5AB2> 10@>2 <564C =0945==K< <8=8<C<>< 3 ?>@O4:0 8 ?@54K4CI8< <0:A8<0;L=K< <8=8<C<>< 3 ?>@O4:0

         Ru2[1]=round((Mxn2-Mn2[i3])* point); // @>AB 2 ?C=:B0E >B =0945==>3> <8=8<C<0 3 ?>@O4:0 4> ?@54K4CH53> <0:A8<0;L=>3> <8=8<C<0 3 ?>@O4:0

         RMn2[1]=round((Mn2[2]- Mn2[1])* point);            //@07=8F0 2 ?C=:B0E <564C =0945==K< 8 ?@54K4CI8< <8=8<C<>< 3 ?>@O4:0, >B@8F0B ?045=85 ?>;>68B @>AB

         RMnNb2[1]= MnNb2[2]- MnNb2[1];      //:>;8G5AB2> 10@>2 <564C =0945==K< 8 ?@54K4CI8< <8=8<C<>< 3 ?>@O4:0

         Mxn2=Mn2[i3];

         Nb2=MnNb2[i3];



        }



      //-------------------- 8I5< <0:A8<0;L=K5 <8=<<C<K  3 ?>@O4:0 A@548 <8=8<C<>2 2 ?>@O4:0-------------------

      if(

         Mn1[i]< Mn1[i+1] &&  Mn1[i+1]> Mn1[i+2]

      )

        {



         Mxmn2[mx]=Mn1[i+1];                   // 0:A8<0;L=K9 <8=8<C< (<0:A<8=) 3 ?>@O4:0 <564C <8=8<C<0<8 2 ?>@O4:0 7=0G5=85 C@>2=O (F5=0)

         MxnNb2[mx]=MnNb1[i+1];                // <0:A<8= 3 ?>@O4:0 <564C <8=8<C<0<8 2 ?>@O4:0 =><5@ 10@0

         Nmnd2[mx]=bd;                        // :>;8G5AB2> <8=8<C<>2 2 ?>@O4:0 <564C =0945==K< <0:A<8= 3 ?>@O4:0 8 ?@54K4CI8< <8=8<C<>8 3 ?>@O4:0

         Bd2[mn]=MxnNb2[mx]-Nb2;     //:>;8G5AB2> 10@>2 <564C =0945==K< <0:A<8= 3 ?>@O4:0 8 ?@5;K;CH8< <8=8<C<>< 3 ?>@O4:0

         Rd2[mn]=round((Mxn2-Mxmn2[mx])* point); // @>AB 2 ?C=:B0E >B =0945==>3> <0:A<8= 3 ?>@O4:0 4> ?@54K4CI53> <8=8<C<0 3 ?>@O4:0



         Mxn2=Mxmn2[mx];

         Nbxn2=(int)MxnNb2[mx];







         m++;

         mx++;

         bu=1;

         bd=1;





        }



     }

   mn3=mn;       // :>;8G5AB2> <8=8<C<>2 2 ?>@O4:0

   m3=m3+m;     // :>;8G5AB2> M:AB@5<C<>2 2 <8=8<C<0E 8 <0:A8<C<0E 2 ?>@O4:0

//------------------------------------------------------------------------------

//------------------------------------------------------------------------------





   return(m);

  }



//----------------------------:>=5F "@5=4()---------------------------------



//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---