AIO Divergence

Author:
Indicators Used
Bill Williams Accelerator/Decelerator oscillatorAccumulation/Distribution indicatorMovement directional indexIndicator of the average true rangeBill Williams Awesome oscillatorBears Power indicatorBulls Power indicator Commodity channel indexDeMarker indicatorForce indexMomentum indicatorMoney flow indexMACD HistogramMoving Average of OscillatorOn Balance Volume indicatorRelative Vigor indexStandard Deviation indicatorStochastic oscillatorRelative strength indexLarry William percent range indicator
Miscellaneous
Implements a curve of type %1It issuies visual alerts to the screenIt sends emails
2 Views
1 Downloads
0 Favorites
AIO Divergence
ÿþ//+------------------------------------------------------------------+

//|                                               AIO Divergence.mq4 |

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

#property copyright "" 

#property strict

#property description "All In One Divergence Indicator"

#property stacksize 16384

#property indicator_separate_window 

#property indicator_level1 75

#property indicator_level2 50

#property indicator_level3 25

#property indicator_level4 0

#property indicator_levelstyle STYLE_SOLID

#property indicator_levelcolor DarkSlateGray

#property indicator_buffers 5

#property indicator_color1 DimGray

#property indicator_color2 Red 

#property indicator_color3 Gold

//--- extern parameters



enum osci

  {

   osci1 = 1,//1. AC

   osci2 = 2,//2. A/DS 

   osci3 = 3, //3. ADX 

   osci4 = 4, //4. ATR

   osci5 = 5, //5. AO

   osci6 = 6, //6. Bears

   osci7 = 7, //7. Bulls

   osci8 = 8, //8. CCI

   osci9 = 9, //9. Dem

   osci10 = 10, //10. Force

   osci11 = 11, //11. Momentum

   osci12 = 12, //12. MFI

   osci13 = 13, //13. MACD

   osci14 = 14, //14. OsMA

   osci15 = 15, //15. OBV

   osci16 = 16, //16. RVI

   osci17 = 17, //17. StdDev

   osci18 = 18, //18. Stoch

   osci19 = 19, //19. Volume

   osci20 = 20, //20. Close

   osci21 = 21, //21. Open

   osci22 = 22, //22. High

   osci23 = 23, //23. Low

   osci24 = 24, //24. Median Price

   osci25 = 25, //25. Typical Price

   osci26 = 26, //26. Weighted Close Price

   osci27 = 27, //27. (O+C+H+L)/4

   osci28 = 28, //28. (O+C)/2

   osci29 = 29, //29. RSI

   osci30 = 30  //30. WPR

  };

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

//|                                                                  |

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

enum truefalse

  {

   tf_false= 0,//0. FALSE

   tf_true = 1 //1. TRUE

  };



extern osci Osc=29;

extern truefalse TH=true;

extern truefalse TL=true;

extern truefalse trend=true;

extern truefalse convergen=true;

extern int Complect=1;

int Complect1=1;

int Complect2=2;

int Complect3=3;

int Complect4=4;

int Complect5=5;

int Complect6=6;

int Complect7=7;

int Complect8=8;

int Complect10=10;

int Complect20=20;

int Complect30=30;

int Complect40=40;

int Complect50=50;

int Complect60=60;

int Complect70=70;

int Complect80=80;

extern int BackSteph=0; // number of steps back (h)

extern int BackStepl=0; // the number of steps ago l

extern int BackStep=0; // number of steps backward                       

extern int qSteps=1; // the number of steps, not more than 3

extern int LevDPl=5; // level of Demark points; 2 = central bar is above (below) the 2 bars to the left

extern int LevDPr=1; // level of Demark points; 2 = central bar is above (below) the 2 bars on the right

extern int period=8;

extern int ma_method=0;

extern int ma_shift=0;

extern int applied_price=4;

extern int mode=0;

extern int fast_ema_period=12;

extern int slow_ema_period=26;

extern int signal_period=9;

extern int Kperiod=13;

extern int Dperiod=5;

extern int slowing=3;

extern int price_field=0;

extern int T3_Period=1;

extern double b=0.7;

extern int showBars=1000; // If = 0, then the indicator is displayed for all graphics

extern bool LeftStrong=false;

extern bool RightStrong=true;

//extern bool Anti=true;

extern bool Trend_Down=true;

extern bool Trend_Up=true;

extern bool TrendLine=true; // false = trend lines will not

extern bool HandyColour=true;

extern color Highline=Red;

extern color Lowline=DeepSkyBlue;

extern bool ChannelLine=false; // true = build a parallel trend lines feeds

extern int Trend=0; // 1 = only for UpTrendLines, -1 = only for DownTrendLines, 0 = for all TrendLines 

extern bool Channel=false;

extern bool Regression=true;

extern bool RayH=true;

extern bool RayL=true;

extern color ChannelH=Red;

extern color ChannelL=DeepSkyBlue;

extern double STD_widthH=1.0;

extern double STD_widthL=1.0;

extern int Back=0;

extern bool comment=false;

extern int code=159;

extern bool BuyStop     = false;

extern bool SellLimit   = false;

extern bool SellStop    = false;

extern bool BuyLimit    = false;



extern bool Alerts      = false;

extern bool Email       = false;

extern bool Push        = false;

//--- global parameters

double e1,e2,e3,e4,e5,e6;

double n,c1,c2,c3,c4,w1,w2,b2,b3;

int time2;

double E1,E2,E3,E4,E5,E6;

//---- buffers

double Oscil[],t3_Oscil[];

double Buf1[];

double Buf2[];

double Signal[];

string Col[]={"Red","DeepSkyBlue","Coral","Aqua","SaddleBrown","MediumSeaGreen"};

int ColNum[]={Red,DeepSkyBlue,Coral,Aqua,SaddleBrown,MediumSeaGreen};

//----

int qPoint=0; // variable to normalize prices

int qBars; double qTime=0; // variables to eliminate glitches when loading

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

//| Custom indicator initialization function                         |

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

int init()

  {

   if(BackStep>0)

     {BackSteph=BackStep;  BackStepl=BackStep;}

   string short_name;

   IndicatorBuffers(4);

   qBars=Bars;

   qSteps=MathMin(3,qSteps);

   while(NormalizeDouble(Point,qPoint)==0)qPoint++;



   string Rem="Arrows";

   SetIndexStyle(0,DRAW_LINE);

   SetIndexBuffer(0,t3_Oscil);

   SetIndexDrawBegin(0,2*T3_Period);

   SetIndexStyle(1,DRAW_ARROW);

   SetIndexStyle(2,DRAW_ARROW);



   SetIndexArrow(1,code);

   SetIndexArrow(2,code);

   SetIndexBuffer(1,Buf1);

   SetIndexBuffer(2,Buf2);

   SetIndexEmptyValue(1,0.0);

   SetIndexEmptyValue(2,0.0);

   SetIndexLabel(1,"1. Upper Arrow");

   SetIndexLabel(2,"2. Lower Arrow");



   SetIndexBuffer(3,Oscil);

   SetIndexLabel(3,"3. Oscilator");

   SetIndexStyle(3,DRAW_LINE);



   SetIndexLabel(4,"4. Signal (-1: sell; 1: buy)");

   SetIndexBuffer(4,Signal);

   SetIndexStyle(4,DRAW_NONE);

   SetIndexEmptyValue(4,0.0);

   switch(Osc)

     {

      case  1 : short_name="AC";  break;

      case  2 : short_name="A/D"; break;

      case  3 : short_name="ADX"; break;

      case  4 : short_name="ATR";  break;

      case  5 : short_name="AO"; break;

      case  6 : short_name="Bears"; break;

      case  7 : short_name="Bulls";  break;

      case  8 : short_name="CCI"; break;

      case  9 : short_name="DeM"; break;

      case 10 : short_name="Force";  break;

      case 11 : short_name="Momentum"; break;

      case 12 : short_name="MFI"; break;

      case 13 : short_name="MACD";  break;

      case 14 : short_name="OsMA"; break;

      case 15 : short_name="OBV"; break;

      case 16 : short_name="RVI"; break;

      case 17 : short_name="StdDev"; break;

      case 18 : short_name="Stoch";  break;

      case 19 : short_name="Volume"; break;

      case 20 : short_name="Close";  break;

      case 21 : short_name="Open";  break;

      case 22 : short_name="High"; break;

      case 23 : short_name="Low"; break;

      case 24 : short_name="Median Price";  break;

      case 25 : short_name="Typical Price"; break;

      case 26 : short_name="Weighted Close Price"; break;

      case 27 : short_name="(O+C+H+L)/4";  break;

      case 28 : short_name="(O+C)/2"; break;

      case 29 : short_name="RSI"; break;

      case 30 : short_name="WPR"; break;

      default : short_name="RSI";

     }

   IndicatorShortName(short_name);

   SetIndexLabel(0,short_name);

   b2 = b*b;

   b3 = b2*b;

   c1 = -b3;

   c2 = (3*(b2 + b3));

   c3 = -3*(2*b2 + b + b3);

   c4 = (1 + 3*b + b3 + 3*b2);

   if(T3_Period<1)

      T3_Period=1;

   n=1+0.5*(T3_Period-1);

   w1 = 2 / (n + 1);

   w2 = 1 - w1;

   return(0);

  }

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

//| Custom indicator deinitialization function                       |       

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

int deinit()

  {

   if(comment) Comment("");

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

     {

      ObjectDelete("HL("+Complect+")_"+i);ObjectDelete("LL("+Complect+")_"+i);

      ObjectDelete("HCL("+Complect+")_"+i);ObjectDelete("LCL("+Complect+")_"+i);

      ObjectDelete("CHAh("+Complect+")_"+i);ObjectDelete("CHAl("+Complect+")_"+i);

     }

   return(0);

  }

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

//| Custom indicator iteration function                              |

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

int start()

  {

   int i,j,counted_bars=IndicatorCounted();

   int shift,limit;

//----

   if(counted_bars<0) return(-1);

   if(counted_bars<1) limit=Bars-1;

   else limit=Bars-counted_bars;

   for(shift=0; shift<=limit; shift++)

     {

      switch(Osc)

        {

         case  1: Oscil[shift] = iAC(NULL,0,shift)+1; break;

         case  2: Oscil[shift] = iAD(NULL,0,shift); break;

         case  3: Oscil[shift] = iADX(NULL,0,period,applied_price,mode,shift); break;

         case  4: Oscil[shift] = iATR(NULL,0,period,shift); break;

         case  5: Oscil[shift] = iAO(NULL,0,shift)+1; break;

         case  6: Oscil[shift] = iBearsPower(NULL,0,period,applied_price,shift)+1; break;

         case  7: Oscil[shift] = iBullsPower(NULL,0,period,applied_price,shift)+1; break;

         case  8: Oscil[shift] = iCCI(NULL,0,period,applied_price,shift)+1000; break;

         case  9: Oscil[shift] = iDeMarker(NULL,0,period,shift); break;

         case 10: Oscil[shift] = iForce(NULL,0,period,ma_method,applied_price,shift)+100; break;

         case 11: Oscil[shift] = iMomentum(NULL,0,period,applied_price,shift); break;

         case 12: Oscil[shift] = iMFI(NULL,0,period,shift); break;

         case 13: Oscil[shift] = iMACD(NULL,0,fast_ema_period,slow_ema_period,signal_period,applied_price,mode,shift)+1; break;

         case 14: Oscil[shift] = iOsMA(NULL,0,fast_ema_period,slow_ema_period,signal_period,applied_price,shift)+1; break;

         case 15: Oscil[shift] = iOBV(NULL,0,applied_price,shift)/10000000+100; break;

         case 16: Oscil[shift] = iRVI(NULL,0,period,mode,shift)+1; break;

         case 17: Oscil[shift] = iStdDev(NULL,0,period,ma_shift,ma_method,applied_price,shift); break;

         case 18: Oscil[shift] = iStochastic(NULL,0,Kperiod,Dperiod,slowing,ma_method,price_field,mode,shift); break;

         case 19: Oscil[shift] = Volume[shift]; break;

         case 20: Oscil[shift] = Close[shift]; break;

         case 21: Oscil[shift] = Open[shift]; break;

         case 22: Oscil[shift] = High[shift]; break;

         case 23: Oscil[shift] = Low[shift]; break;

         case 24: Oscil[shift] = (High[shift]+Low[shift])/2; break;

         case 25: Oscil[shift] = (High[shift]+Low[shift]+Close[shift])/3; break;

         case 26: Oscil[shift] = (High[shift]+Low[shift]+Close[shift]+Close[shift])/4; break;

         case 27: Oscil[shift] = (Open[shift]+Close[shift]+High[shift]+Low[shift])/4; break;

         case 28: Oscil[shift] = (Open[shift]+Close[shift])/2; break;

         case 29: Oscil[shift] = iRSI(NULL,0,period,applied_price,shift); break;

         case 30: Oscil[shift] = iWPR(NULL,0,period,shift); break;

         default: Oscil[shift]=iRSI(NULL,0,period,applied_price,shift);

        }

     }

//----

   if(Bars-1<T3_Period)

      return(0);

//----

   int MaxBar,counted_bars1=IndicatorCounted();

//----

   if(counted_bars1>0)

      counted_bars1--;

//----

   MaxBar=Bars-1-T3_Period;

//----

   limit=(Bars-1-counted_bars1);

//----

   if(limit>MaxBar)

     {

      for(int bar=Bars-1; bar>=MaxBar; bar--)

         t3_Oscil[bar]=0.0;

      limit=MaxBar;

     }

//---

   int Tnew=Time[limit+1];

   if(limit<MaxBar)

      if(Tnew==time2)

        {

         e1 = E1;

         e2 = E2;

         e3 = E3;

         e4 = E4;

         e5 = E5;

         e6 = E6;

        }

   else

     {

      if(Tnew>time2)

         Print("ERROR01");

      else

         Print("ERROR02");

      return(-1);

     }

//---

   for(int bar=limit; bar>=0; bar--)

     {

      if(bar==1)

         if(((limit==1) && (time2!=Time[2])) || (limit>1))

           {

            time2=Time[2];

            E1 = e1;

            E2 = e2;

            E3 = e3;

            E4 = e4;

            E5 = e5;

            E6 = e6;

           }

      //---

      e1 = w1*Oscil[bar] + w2*e1;

      e2 = w1*e1 + w2*e2;

      e3 = w1*e2 + w2*e3;

      e4 = w1*e3 + w2*e4;

      e5 = w1*e4 + w2*e5;

      e6 = w1*e5 + w2*e6;

      t3_Oscil[bar]=c1*e6+c2*e5+c3*e4+c4*e3;

     }

//---- 

   if(qBars!=Bars){ deinit(); Sleep(1000); qBars=Bars; qTime=0; return(0);}

   if(qTime==Time[0]) return(0); qTime=Time[0]; // runs only on the first tick

   if(showBars>Bars-LevDPl-1) showBars=Bars-LevDPl-1;

   if(showBars==0) showBars=Bars-LevDPl-1;

//--- filled and displayed the point of Demark

   for(int cnt=showBars+Back;cnt>LevDPr+Back;cnt--)

     {

      int mx=1,mmx=1,mxx=1;

      if(LevDPl!=0)

        {

         for(i=LevDPl,j=LevDPr; i>0; i--,j--)

           {

            if(LeftStrong)

              {

               if(t3_Oscil[cnt+i]>=t3_Oscil[cnt]) mx=0;

              }

            else

              {

               if(t3_Oscil[cnt+i]>t3_Oscil[cnt]) mx=0;

              }

            if(j>0)

              {

               if(RightStrong)

                 {

                  if(t3_Oscil[cnt-j]>=t3_Oscil[cnt]) mmx=0;

                 }

               else

                 {

                  if(t3_Oscil[cnt-j]>t3_Oscil[cnt]) mmx=0;

                 }

              }

            mxx=mx*mmx*mxx;

           }

         if(mxx>0) Buf1[cnt]=t3_Oscil[cnt];

         else Buf1[cnt]=0;

        }

      else

        {

         for(j=LevDPr; j>0; j--)

           {

            if(RightStrong)

              {

               if(t3_Oscil[cnt-j]>=t3_Oscil[cnt]) mmx=0;

              }

            else

              {

               if(t3_Oscil[cnt-j]>t3_Oscil[cnt]) mmx=0;

              }

            mxx=mmx*mxx;

           }

         if(mxx>0) Buf1[cnt]=t3_Oscil[cnt];

         else Buf1[cnt]=0;

        }

      //----     

      int mn=1,mmn=1,mnn=1;

      if(LevDPl!=0)

        {

         for(i=LevDPl,j=LevDPr; i>0; i--,j--)

           {

            if(LeftStrong)

              {

               if(t3_Oscil[cnt+i]<=t3_Oscil[cnt]) mn=0;

              }

            else

              {

               if(t3_Oscil[cnt+i]<t3_Oscil[cnt]) mn=0;

              }

            if(j>0)

              {

               if(RightStrong)

                 {

                  if(t3_Oscil[cnt-j]<=t3_Oscil[cnt]) mmn=0;

                 }

               else

                 {

                  if(t3_Oscil[cnt-j]<t3_Oscil[cnt]) mmn=0;

                 }

              }

            mnn=mn*mmn*mnn;

           }

         if(mnn>0) Buf2[cnt]=t3_Oscil[cnt];

         else Buf2[cnt]=0;

        }

      else

        {

         for(j=LevDPr; j>0; j--)

           {

            if(RightStrong)

              {

               if(t3_Oscil[cnt-j]<=t3_Oscil[cnt]) mmn=0;

              }

            else

              {

               if(t3_Oscil[cnt-j]<t3_Oscil[cnt]) mmn=0;

              }

            mnn=mmn*mnn;

           }

         if(mnn>0) Buf2[cnt]=t3_Oscil[cnt];

         else Buf2[cnt]=0;

        }

      //----     

     }

   string Comm;

   for(int cnt=1;cnt<=qSteps;cnt++) Comm=Comm+(TDMain(cnt));

   if(comment) Comment(Comm);

   return(0);

  }

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

//|                                                                  |

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

string TDMain(int Step)

  {

   Signal[Step]=0.0;

   

   int H1,H2,H3,H4,H5,H6,H7,H8,H9,H10,H11,H12,H13,H14,L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,L13,L14,qExt,col; // ,i,Ls,Hb

   double qTL; // ,qLevel

   string Comm="» » » Step "+Step+" 87 "+qSteps+" (BackStep "+BackStep+")\n",Rem,Rem1,Rem2,Rem3,Rem4,Rem5,Rem6,Rem7,Rem8; // ,qp,Text

   string Short_name;

   switch(Osc)

     {

      case  1 : Short_name="AC";  break;

      case  2 : Short_name="A/D"; break;

      case  3 : Short_name="ADX"; break;

      case  4 : Short_name="ATR";  break;

      case  5 : Short_name="AO"; break;

      case  6 : Short_name="Bears"; break;

      case  7 : Short_name="Bulls";  break;

      case  8 : Short_name="CCI"; break;

      case  9 : Short_name="DeM"; break;

      case 10 : Short_name="Force";  break;

      case 11 : Short_name="Momentum"; break;

      case 12 : Short_name="MFI"; break;

      case 13 : Short_name="MACD";  break;

      case 14 : Short_name="OsMA"; break;

      case 15 : Short_name="OBV"; break;

      case 16 : Short_name="RVI"; break;

      case 17 : Short_name="StdDev"; break;

      case 18 : Short_name="Stoch";  break;

      case 19 : Short_name="Volume"; break;

      case 20 : Short_name="Close";  break;

      case 21 : Short_name="Open";  break;

      case 22 : Short_name="High"; break;

      case 23 : Short_name="Low"; break;

      case 24 : Short_name="Median Price";  break;

      case 25 : Short_name="Typical Price"; break;

      case 26 : Short_name="Weighted Close Price"; break;

      case 27 : Short_name="(O+C+H+L)/4";  break;

      case 29 : Short_name="RSI"; break;

      case 30 : Short_name="WPR"; break;

      default : Short_name="RSI";

     }

//--- for DownTrendLines

   if(Trend<=0)

     {

      Comm=Comm+"» "+Col[Step*2-2]+" DownTrendLine ";

      if(HandyColour) col=Highline; else col=ColNum[Step*2-2];

      H1=GetTD(Step+BackSteph,Buf1);

      H2=GetNextHighTD(H1);

      H3=GetNextHighTD(H2);

      H4=GetNextHighTD(H3);

      H5=GetNextHighTD(H4);

      H6=GetNextHighTD(H5);

      H7=GetNextHighTD(H6);

      H8=GetNextHighTD(H7);

      H9=GetNextHighTD(H8);

      H10=GetNextHighTD(H9);

      H11=GetNextHighTD(H10);

      H12=GetNextHighTD(H11);

      H13=GetNextHighTD(H12);

      H14=GetNextHighTD(H13);



      qTL=(t3_Oscil[H2]-t3_Oscil[H1])/(H2-H1);

      int nn,sn,r,result; // n->nn

      for(nn=1,r=H1+1; nn<H2-H1-1; nn++) // n->nn

        {

         sn=H1+1+nn; // n->nn

         if(t3_Oscil[r]<t3_Oscil[sn]) result=r;

         else result=sn;

         r=result;

        }

      double Complect1,Complect2,Complect3,Complect4,Complect5,Complect6,Complect7,Complect8,buy,sell; // ,sell1,buy1

      if(Complect>0)

        {

         Complect1=Complect+Complect10;

         Complect2=Complect+Complect20;

         Complect3=Complect+Complect30;

         Complect4=Complect+Complect40;

         Complect5=Complect+Complect50;

         Complect6=Complect+Complect60;

         Complect7=Complect+Complect70;

         Complect8=Complect+Complect80;

        }



      qExt=r; // local minimum between points



      Comm=Comm+"\n";

      int indicatorWindow=WindowFind(Short_name);

      Rem="HL("+Complect+")_"+Step;

      Rem1="HL("+Complect8+")_"+Step;

      Rem2="HL("+Complect1+")_"+Step;

      Rem3="HL("+Complect2+")_"+Step;

      Rem4="HL("+Complect3+")_"+Step;

      Rem5="HL("+Complect4+")_"+Step;

      Rem6="HL("+Complect5+")_"+Step;

      Rem7="HL("+Complect6+")_"+Step;

      Rem8="HL("+Complect7+")_"+Step;

      if(BuyStop==true && SellLimit==false)

        {

         Rem="BuyStop   "+Step+Step;

           }else if(BuyStop==false && SellLimit==true){



         Rem="SellLimit   "+Step+Step;



        }

      else Rem="Trendh   "+Step+Step;



      if(trend==1 && Oscil[H2]>Oscil[H1]) // the actual trend line

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[H2]);ObjectSet(Rem,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[H2]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[H3]>Oscil[H1]) // the actual trend line

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[H3]);ObjectSet(Rem,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[H3]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[H4]>Oscil[H1]) // the actual trend line

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[H4]);ObjectSet(Rem,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[H4]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[H5]>Oscil[H1]) // the actual trend line

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[H5]);ObjectSet(Rem,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[H5]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[H6]>Oscil[H1]) // the actual trend line

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[H6]);ObjectSet(Rem,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[H6]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[H7]>Oscil[H1]) // the actual trend line

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[H7]);ObjectSet(Rem,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[H7]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[H8]>Oscil[H1]) // the actual trend line

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[H8]);ObjectSet(Rem,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[H8]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[H9]>Oscil[H1]) // the actual trend line

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[H9]);ObjectSet(Rem,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[H9]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[H10]>Oscil[H1]) // the actual trend line

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[H10]);ObjectSet(Rem,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[H10]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[H11]>Oscil[H1]) // the actual trend line

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[H11]);ObjectSet(Rem,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[H11]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[H12]>Oscil[H1]) // the actual trend line

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[H12]);ObjectSet(Rem,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[H12]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[H13]>Oscil[H1]) // the actual trend line

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[H13]);ObjectSet(Rem,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[H13]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[H14]>Oscil[H1]) // the actual trend line

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[H14]);ObjectSet(Rem,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[H14]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[H2]<Oscil[H1] && Oscil[H3]<Oscil[H1] && Oscil[H4]<Oscil[H1] && Oscil[H5]<Oscil[H1] && 

         Oscil[H6]<Oscil[H1] && Oscil[H7]<Oscil[H1] && Oscil[H8]<Oscil[H1] && Oscil[H9]<Oscil[H1] && Oscil[H10]<Oscil[H1] && 

         Oscil[H11]<Oscil[H1] && Oscil[H12]<Oscil[H1] && Oscil[H13]<Oscil[H1] && Oscil[H14]<Oscil[H1]) // A>1AB25==> ;8=8O B@5=40

           {

            ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

            ObjectSet(Rem,OBJPROP_TIME1,Time[H1]);ObjectSet(Rem,OBJPROP_TIME2,Time[H1]);

            ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[H1]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[H1]);

            ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

            ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



           }



         else    ObjectDelete(Rem);



      if(TrendLine && Oscil[H2]>Oscil[H1] && High[H2]<High[H1])// OSCILLATOR DOWNTREND && PRICE UPTREND (STANDARD BEARISH DIVERGENCE)

        {

         ObjectCreate(Rem1,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem1,OBJPROP_TIME1,Time[H2]);

         ObjectSet(Rem1,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem1,OBJPROP_PRICE1,t3_Oscil[H2]);

         ObjectSet(Rem1,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem1,OBJPROP_COLOR,Red);

         ObjectSet(Rem1,OBJPROP_WIDTH,2);

         ObjectSet(Rem1,OBJPROP_RAY,false);

         sell=true;

         SellSignal(Step);

        }else if(convergen==1 && TrendLine && Oscil[H2]<Oscil[H1] && High[H2]>High[H1]) //OSCILLATOR UPTREND && PRICE DOWNTREND (HIDDEN BEARISH DIVERGENCE)

        {

         ObjectCreate(Rem1,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem1,OBJPROP_TIME1,Time[H2]);ObjectSet(Rem1,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem1,OBJPROP_PRICE1,t3_Oscil[H2]);ObjectSet(Rem1,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem1,OBJPROP_COLOR,Gold);

         ObjectSet(Rem1,OBJPROP_WIDTH,2);

         ObjectSet(Rem1,OBJPROP_RAY,false);

         sell=true;

         SellSignal(Step);

        }



      else    ObjectDelete(Rem1);



      //////////////////////////////



      if(TrendLine && TH==1 && Oscil[H2]<Oscil[H1] && High[H2]<High[H1] && 

         Oscil[H3]>Oscil[H1] && High[H3]<High[H1] && High[H3]>High[H2])

        {

         ObjectCreate(Rem2,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem2,OBJPROP_TIME1,Time[H3]);ObjectSet(Rem2,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem2,OBJPROP_PRICE1,t3_Oscil[H3]);ObjectSet(Rem2,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem2,OBJPROP_COLOR,Red);

         ObjectSet(Rem2,OBJPROP_WIDTH,2);

         ObjectSet(Rem2,OBJPROP_RAY,false);

        }



      else if(convergen==1 && TrendLine && TH==1 && Oscil[H2]<Oscil[H1] && High[H2]<High[H1] && 

         Oscil[H3]<Oscil[H1] && High[H3]>High[H1] && High[H3]>High[H2] && Oscil[H3]>Oscil[H2])

           {

            ObjectCreate(Rem2,OBJ_TREND,indicatorWindow,0,0,0,0);

            ObjectSet(Rem2,OBJPROP_TIME1,Time[H3]);ObjectSet(Rem2,OBJPROP_TIME2,Time[H1]);

            ObjectSet(Rem2,OBJPROP_PRICE1,t3_Oscil[H3]);ObjectSet(Rem2,OBJPROP_PRICE2,t3_Oscil[H1]);

            ObjectSet(Rem2,OBJPROP_COLOR,Gold);

            ObjectSet(Rem2,OBJPROP_WIDTH,2);

            ObjectSet(Rem2,OBJPROP_RAY,false);

           }



         else    ObjectDelete(Rem2);



      if(TrendLine && TH==1 && Oscil[H2]<Oscil[H1] && High[H2]<High[H1] && Oscil[H3]<Oscil[H1] && 

         High[H3]<High[H1] && Oscil[H4]>Oscil[H1] && 

         High[H4]<High[H1] && High[H4]>High[H3] && High[H4]>High[H2])

        {

         ObjectCreate(Rem3,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem3,OBJPROP_TIME1,Time[H4]);ObjectSet(Rem3,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem3,OBJPROP_PRICE1,t3_Oscil[H4]);ObjectSet(Rem3,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem3,OBJPROP_COLOR,Red);

         ObjectSet(Rem3,OBJPROP_WIDTH,2);

         ObjectSet(Rem3,OBJPROP_RAY,false);

        }



      else if(convergen==1 && TrendLine && TH==1 && Oscil[H2]<Oscil[H1] && High[H2]<High[H1] && Oscil[H3]<Oscil[H1] && 

         High[H3]<High[H1] && Oscil[H4]<Oscil[H1] && 

         High[H4]>High[H1] && High[H4]>High[H3] && High[H4]>High[H2] && Oscil[H4]>Oscil[H2] && Oscil[H4]>Oscil[H3])

           {

            ObjectCreate(Rem3,OBJ_TREND,indicatorWindow,0,0,0,0);

            ObjectSet(Rem3,OBJPROP_TIME1,Time[H4]);ObjectSet(Rem3,OBJPROP_TIME2,Time[H1]);

            ObjectSet(Rem3,OBJPROP_PRICE1,t3_Oscil[H4]);ObjectSet(Rem3,OBJPROP_PRICE2,t3_Oscil[H1]);

            ObjectSet(Rem3,OBJPROP_COLOR,Gold);

            ObjectSet(Rem3,OBJPROP_WIDTH,2);

            ObjectSet(Rem3,OBJPROP_RAY,false);

           }



         else    ObjectDelete(Rem3);



      if(TrendLine && TH==1 && Oscil[H2]<Oscil[H1] && High[H2]<High[H1] && Oscil[H3]<Oscil[H1] && 

         High[H3]<High[H1] && 

         Oscil[H4]<Oscil[H1] && High[H4]<High[H1] && 

         Oscil[H5]>Oscil[H1] && High[H5]<High[H1] && High[H5]>High[H4] && High[H5]>High[H3] && High[H5]>High[H2])

        {

         ObjectCreate(Rem4,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem4,OBJPROP_TIME1,Time[H5]);ObjectSet(Rem4,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem4,OBJPROP_PRICE1,t3_Oscil[H5]);ObjectSet(Rem4,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem4,OBJPROP_COLOR,Red);

         ObjectSet(Rem4,OBJPROP_WIDTH,2);

         ObjectSet(Rem4,OBJPROP_RAY,false);

        }



      else if(convergen==1 && TrendLine && TH==1 && Oscil[H2]<Oscil[H1] && High[H2]<High[H1] && Oscil[H3]<Oscil[H1] && 

         High[H3]<High[H1] && 

         Oscil[H4]<Oscil[H1] && High[H4]<High[H1] && 

         Oscil[H5]<Oscil[H1] && High[H5]>High[H1] && High[H5]>High[H4] && High[H5]>High[H3] && High[H5]>High[H2] && 

         Oscil[H5]>Oscil[H2] && Oscil[H5]>Oscil[H3] && Oscil[H5]>Oscil[H4])

           {

            ObjectCreate(Rem4,OBJ_TREND,indicatorWindow,0,0,0,0);

            ObjectSet(Rem4,OBJPROP_TIME1,Time[H5]);ObjectSet(Rem4,OBJPROP_TIME2,Time[H1]);

            ObjectSet(Rem4,OBJPROP_PRICE1,t3_Oscil[H5]);ObjectSet(Rem4,OBJPROP_PRICE2,t3_Oscil[H1]);

            ObjectSet(Rem4,OBJPROP_COLOR,Gold);

            ObjectSet(Rem4,OBJPROP_WIDTH,2);

            ObjectSet(Rem4,OBJPROP_RAY,false);

           }



         else    ObjectDelete(Rem4);



      if(TrendLine && TH==1 && Oscil[H2]<Oscil[H1] && High[H2]<High[H1] && Oscil[H3]<Oscil[H1] && High[H3]<High[H1] && 

         Oscil[H4]<Oscil[H1] && High[H4]<High[H1] && Oscil[H5]<Oscil[H1] && High[H5]<High[H1] && 

         Oscil[H6]>Oscil[H1] && High[H6]<High[H1] && High[H6]>High[H5] && High[H6]>High[H4] && High[H6]>High[H3] && High[H6]>High[H2])

        {

         ObjectCreate(Rem5,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem5,OBJPROP_TIME1,Time[H6]);ObjectSet(Rem5,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem5,OBJPROP_PRICE1,t3_Oscil[H6]);ObjectSet(Rem5,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem5,OBJPROP_COLOR,Red);

         ObjectSet(Rem5,OBJPROP_WIDTH,2);

         ObjectSet(Rem5,OBJPROP_RAY,false);

        }



      else if(convergen==1 && TrendLine && TH==1 && Oscil[H2]<Oscil[H1] && High[H2]<High[H1] && Oscil[H3]<Oscil[H1] && High[H3]<High[H1] && 

         Oscil[H4]<Oscil[H1] && High[H4]<High[H1] && Oscil[H5]<Oscil[H1] && High[H5]<High[H1] && 

         Oscil[H6]<Oscil[H1] && High[H6]>High[H1] && High[H6]>High[H5] && High[H6]>High[H4] && High[H6]>High[H3] && High[H6]>High[H2] && 

         Oscil[H6]>Oscil[H2] && Oscil[H6]>Oscil[H3] && Oscil[H6]>Oscil[H4] && Oscil[H6]>Oscil[H5])

           {

            ObjectCreate(Rem5,OBJ_TREND,indicatorWindow,0,0,0,0);

            ObjectSet(Rem5,OBJPROP_TIME1,Time[H6]);ObjectSet(Rem5,OBJPROP_TIME2,Time[H1]);

            ObjectSet(Rem5,OBJPROP_PRICE1,t3_Oscil[H6]);ObjectSet(Rem5,OBJPROP_PRICE2,t3_Oscil[H1]);

            ObjectSet(Rem5,OBJPROP_COLOR,Gold);

            ObjectSet(Rem5,OBJPROP_WIDTH,2);

            ObjectSet(Rem5,OBJPROP_RAY,false);

           }



         else    ObjectDelete(Rem5);



      //////////////



      if(TrendLine && TH==1 && Oscil[H2]<Oscil[H1] && High[H2]<High[H1] && Oscil[H3]<Oscil[H1] && High[H3]<High[H1] && 

         Oscil[H4]<Oscil[H1] && High[H4]<High[H1] && Oscil[H5]<Oscil[H1] && High[H5]<High[H1] && 

         Oscil[H6]<Oscil[H1] && High[H6]<High[H1] && 

         Oscil[H7]>Oscil[H1] && High[H7]<High[H1] && High[H7]>High[H6] && High[H7]>High[H5] && High[H7]>High[H4] && 

         High[H7]>High[H3] && High[H7]>High[H2])

        {

         ObjectCreate(Rem6,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem6,OBJPROP_TIME1,Time[H7]);ObjectSet(Rem6,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem6,OBJPROP_PRICE1,t3_Oscil[H7]);ObjectSet(Rem6,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem6,OBJPROP_COLOR,Red);

         ObjectSet(Rem6,OBJPROP_WIDTH,2);

         ObjectSet(Rem6,OBJPROP_RAY,false);

        }



      else if(convergen==1 && TrendLine && TH==1 && Oscil[H2]<Oscil[H1] && High[H2]<High[H1] && Oscil[H3]<Oscil[H1] && High[H3]<High[H1] && 

         Oscil[H4]<Oscil[H1] && High[H4]<High[H1] && Oscil[H5]<Oscil[H1] && High[H5]<High[H1] && 

         Oscil[H6]<Oscil[H1] && High[H6]<High[H1] && 

         Oscil[H7]<Oscil[H1] && High[H7]>High[H1] && High[H7]>High[H6] && High[H7]>High[H5] && High[H7]>High[H4] && 

         High[H7]>High[H3] && High[H7]>High[H2] && 

         Oscil[H7]>Oscil[H2] && Oscil[H7]>Oscil[H3] && Oscil[H7]>Oscil[H4] && Oscil[H7]>Oscil[H5] && Oscil[H7]>Oscil[H6])

           {

            ObjectCreate(Rem6,OBJ_TREND,indicatorWindow,0,0,0,0);

            ObjectSet(Rem6,OBJPROP_TIME1,Time[H7]);ObjectSet(Rem6,OBJPROP_TIME2,Time[H1]);

            ObjectSet(Rem6,OBJPROP_PRICE1,t3_Oscil[H7]);ObjectSet(Rem6,OBJPROP_PRICE2,t3_Oscil[H1]);

            ObjectSet(Rem6,OBJPROP_COLOR,Gold);

            ObjectSet(Rem6,OBJPROP_WIDTH,2);

            ObjectSet(Rem6,OBJPROP_RAY,false);

           }



         else    ObjectDelete(Rem6);



      if(TrendLine && TH==1 && Oscil[H2]<Oscil[H1] && High[H2]<High[H1] && Oscil[H3]<Oscil[H1] && High[H3]<High[H1] && 

         Oscil[H4]<Oscil[H1] && High[H4]<High[H1] && Oscil[H5]<Oscil[H1] && High[H5]<High[H1] && 

         Oscil[H6]<Oscil[H1] && High[H6]<High[H1] && Oscil[H7]<Oscil[H1] && High[H7]<High[H1] && 

         Oscil[H8]>Oscil[H1] && High[H8]<High[H1] && High[H8]>High[H7] && High[H8]>High[H6] && High[H8]>High[H5] && 

         High[H8]>High[H4] && High[H8]>High[H3] && High[H8]>High[H2])

        {

         ObjectCreate(Rem7,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem7,OBJPROP_TIME1,Time[H8]);ObjectSet(Rem7,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem7,OBJPROP_PRICE1,t3_Oscil[H8]);ObjectSet(Rem7,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem7,OBJPROP_COLOR,Red);

         ObjectSet(Rem7,OBJPROP_WIDTH,2);

         ObjectSet(Rem7,OBJPROP_RAY,false);

        }



      else if(convergen==1 && TrendLine && TH==1 && Oscil[H2]<Oscil[H1] && High[H2]<High[H1] && Oscil[H3]<Oscil[H1] && High[H3]<High[H1] && 

         Oscil[H4]<Oscil[H1] && High[H4]<High[H1] && Oscil[H5]<Oscil[H1] && High[H5]<High[H1] && 

         Oscil[H6]<Oscil[H1] && High[H6]<High[H1] && Oscil[H7]<Oscil[H1] && High[H7]<High[H1] && 

         Oscil[H8]<Oscil[H1] && High[H8]>High[H1] && High[H8]>High[H7] && High[H8]>High[H6] && High[H8]>High[H5] && 

         High[H8]>High[H4] && High[H8]>High[H3] && High[H8]>High[H2] && 

         Oscil[H8]>Oscil[H2] && Oscil[H8]>Oscil[H3] && Oscil[H8]>Oscil[H4] && Oscil[H8]>Oscil[H5] && Oscil[H8]>Oscil[H6] && Oscil[H8]>Oscil[H7])

           {

            ObjectCreate(Rem7,OBJ_TREND,indicatorWindow,0,0,0,0);

            ObjectSet(Rem7,OBJPROP_TIME1,Time[H8]);ObjectSet(Rem7,OBJPROP_TIME2,Time[H1]);

            ObjectSet(Rem7,OBJPROP_PRICE1,t3_Oscil[H8]);ObjectSet(Rem7,OBJPROP_PRICE2,t3_Oscil[H1]);

            ObjectSet(Rem7,OBJPROP_COLOR,Gold);

            ObjectSet(Rem7,OBJPROP_WIDTH,2);

            ObjectSet(Rem7,OBJPROP_RAY,false);

           }



         else    ObjectDelete(Rem7);



      if(TrendLine && TH==1 && Oscil[H2]<Oscil[H1] && High[H2]<High[H1] && Oscil[H3]<Oscil[H1] && High[H3]<High[H1] && 

         Oscil[H4]<Oscil[H1] && High[H4]<High[H1] && Oscil[H5]<Oscil[H1] && High[H5]<High[H1] && 

         Oscil[H6]<Oscil[H1] && High[H6]<High[H1] && Oscil[H7]<Oscil[H1] && High[H7]<High[H1] && 

         Oscil[H8]<Oscil[H1] && High[H8]<High[H1] && 

         Oscil[H9]>Oscil[H1] && High[H9]<High[H1] && High[H9]>High[H8] && High[H9]>High[H7] && High[H9]>High[H6] && 

         High[H9]>High[H5] && High[H9]>High[H4] && High[H9]>High[H3] && High[H9]>High[H2])

        {

         ObjectCreate(Rem8,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem8,OBJPROP_TIME1,Time[H9]);ObjectSet(Rem8,OBJPROP_TIME2,Time[H1]);

         ObjectSet(Rem8,OBJPROP_PRICE1,t3_Oscil[H9]);ObjectSet(Rem8,OBJPROP_PRICE2,t3_Oscil[H1]);

         ObjectSet(Rem8,OBJPROP_COLOR,Red);

         ObjectSet(Rem8,OBJPROP_WIDTH,2);

         ObjectSet(Rem8,OBJPROP_RAY,false);

        }



      else    ObjectDelete(Rem8);



      //////////////////////



      if(Trend_Down==false)

         ObjectDelete(Rem);



      Rem="HCL("+Complect+")_"+Step; // line channel



      if(ChannelLine)

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[qExt]);ObjectSet(Rem,OBJPROP_TIME2,Time[0]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[qExt]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[qExt]-qTL*qExt);

         ObjectSet(Rem,OBJPROP_COLOR,col);

        }



      else ObjectDelete(Rem);



      if(HandyColour) col=ChannelH; else col=ColNum[Step*2-2];

      Rem="CHAh("+Complect+")_"+Step;



      if(Channel)

        {

         if(Regression)

           {

            ObjectCreate(Rem,OBJ_REGRESSION,indicatorWindow,Time[H2],t3_Oscil[H2],Time[H1],t3_Oscil[H1]);

            ObjectSet(Rem,OBJPROP_COLOR,col);

            ObjectSet(Rem,OBJPROP_RAY,RayH);

           }

         else

           {

            ObjectCreate(Rem,OBJ_STDDEVCHANNEL,indicatorWindow,Time[H2],t3_Oscil[H2],Time[H1],t3_Oscil[H1]);

            ObjectSet(Rem,OBJPROP_DEVIATION,STD_widthH);

            ObjectSet(Rem,OBJPROP_COLOR,col);

            ObjectSet(Rem,OBJPROP_RAY,RayH);

           }

        }



      else ObjectDelete(Rem);

     }



//--- for UpTrendLines

   if(Trend>=0)

     {

      Comm=Comm+"» "+Col[Step*2-1]+" UpTrendLine ";

      if(HandyColour) col=Lowline; else col=ColNum[Step*2-1];

      L1=GetTD(Step+BackStepl,Buf2);

      L2=GetNextLowTD(L1);

      L3=GetNextLowTD(L2);

      L4=GetNextLowTD(L3);

      L5=GetNextLowTD(L4);

      L6=GetNextLowTD(L5);

      L7=GetNextLowTD(L6);

      L8=GetNextLowTD(L7);

      L9=GetNextLowTD(L8);

      L10=GetNextLowTD(L9);

      L11=GetNextLowTD(L10);

      L12=GetNextLowTD(L11);

      L13=GetNextLowTD(L12);

      L14=GetNextLowTD(L13);



      qTL=(t3_Oscil[L1]-t3_Oscil[L2])/(L2-L1);



      int r=0;

      for(int nn=1,r=L1+1; nn<L2-L1-1; nn++) // n->nn

        {

         int result = 0;

         int sn=L1+1+nn; // n->nn

         if(t3_Oscil[r]>t3_Oscil[sn]) result=r;

         else result=sn;

         r=result;

        }



      qExt=r;   // local maximum between points

      Comm=Comm+"\n";

      int indicatorWindow=WindowFind(Short_name);

      Rem="LL("+Complect+")_"+Step;

      Rem1="LL("+Complect8+")_"+Step;

      Rem2="LL("+Complect1+")_"+Step;

      Rem3="LL("+Complect2+")_"+Step;

      Rem4="LL("+Complect3+")_"+Step;

      Rem5="LL("+Complect4+")_"+Step;

      Rem6="LL("+Complect5+")_"+Step;

      Rem7="LL("+Complect6+")_"+Step;

      Rem8="LL("+Complect7+")_"+Step;



      if(SellStop==true && BuyLimit==false)

        {

         Rem="SellStop   "+Step+Step;

        }

      else if(SellStop==false && BuyLimit==true)

        {

         Rem="BuyLimit   "+Step+Step;

        }

      else Rem="Trendl   "+Step+Step;



      if(trend==1 && Oscil[L2]<Oscil[L1]) // the actual trend line 

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[L2]);ObjectSet(Rem,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[L2]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[L3]<Oscil[L1]) // the actual trend line 

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[L3]);ObjectSet(Rem,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[L3]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[L4]<Oscil[L1]) // the actual trend line 

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[L4]);ObjectSet(Rem,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[L4]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[L5]<Oscil[L1]) // the actual trend line 

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[L5]);ObjectSet(Rem,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[L5]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[L6]<Oscil[L1]) // the actual trend line 

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[L6]);ObjectSet(Rem,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[L6]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[L7]<Oscil[L1]) // the actual trend line 

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[L7]);ObjectSet(Rem,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[L7]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[L8]<Oscil[L1]) // the actual trend line 

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[L8]);ObjectSet(Rem,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[L8]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[L9]<Oscil[L1]) // the actual trend line 

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[L9]);ObjectSet(Rem,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[L9]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[L10]<Oscil[L1]) // the actual trend line 

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[L10]);ObjectSet(Rem,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[L10]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[L11]<Oscil[L1]) // the actual trend line 

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[L11]);ObjectSet(Rem,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[L11]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[L12]<Oscil[L1]) // the actual trend line 

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[L12]);ObjectSet(Rem,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[L12]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[L13]<Oscil[L1]) // the actual trend line 

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[L13]);ObjectSet(Rem,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[L13]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[L14]<Oscil[L1]) // the actual trend line 

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[L14]);ObjectSet(Rem,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[L14]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

         ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



        }



      else if(trend==1 && Oscil[L2]<Oscil[L1] && Oscil[L3]<Oscil[L1] && Oscil[L4]<Oscil[L1] && Oscil[L5]<Oscil[L1] && 

         Oscil[L6]<Oscil[L1] && Oscil[L7]<Oscil[L1] && Oscil[L8]<Oscil[L1] && Oscil[L9]<Oscil[L1] && Oscil[L10]<Oscil[L1] && 

         Oscil[L11]<Oscil[L1] && Oscil[L12]<Oscil[L1] && Oscil[L13]<Oscil[L1] && Oscil[L14]<Oscil[L1]) // A>1AB25==> ;8=8O B@5=40

           {

            ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

            ObjectSet(Rem,OBJPROP_TIME1,Time[L1]);ObjectSet(Rem,OBJPROP_TIME2,Time[L1]);

            ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[L1]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[L1]);

            ObjectSet(Rem,OBJPROP_COLOR,DarkOliveGreen);

            ObjectSet(Rem,OBJPROP_WIDTH,3-MathMax(4,Step));



           }



         else    ObjectDelete(Rem);



      if(TrendLine && Oscil[L2]<Oscil[L1] && Low[L2]>Low[L1]) // OSCILLATOR UPTREND && PRICE DOWNTREND (STANDARD BULLISH DIVERGENCE)

        {

         ObjectCreate(Rem1,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem1,OBJPROP_TIME1,Time[L2]);ObjectSet(Rem1,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem1,OBJPROP_PRICE1,t3_Oscil[L2]);ObjectSet(Rem1,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem1,OBJPROP_COLOR,Red);

         ObjectSet(Rem1,OBJPROP_WIDTH,2);

         ObjectSet(Rem1,OBJPROP_RAY,false);

         //buy=true;

         BuySignal(Step);

        }



      else if(convergen==1 && TrendLine && Oscil[L2]>Oscil[L1] && Low[L2]<Low[L1]) // OSCILLATOR DOWNTREND && PRICE UPTREND (HIDDEN BULLISH DIVERGENCE)

        {

         ObjectCreate(Rem1,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem1,OBJPROP_TIME1,Time[L2]);ObjectSet(Rem1,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem1,OBJPROP_PRICE1,t3_Oscil[L2]);ObjectSet(Rem1,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem1,OBJPROP_COLOR,Gold);

         ObjectSet(Rem1,OBJPROP_WIDTH,2);

         ObjectSet(Rem1,OBJPROP_RAY,false);

         //buy=true;

         BuySignal(Step);

        }



      else    ObjectDelete(Rem1);



      ///////////////////////////



      if(TrendLine && TL==1 && Oscil[L2]>Oscil[L1] && Low[L2]>Low[L1] && Oscil[L3]<Oscil[L1] && 

         Low[L3]>Low[L1] && Low[L3]<Low[L2])

        {

         ObjectCreate(Rem2,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem2,OBJPROP_TIME1,Time[L3]);ObjectSet(Rem2,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem2,OBJPROP_PRICE1,t3_Oscil[L3]);ObjectSet(Rem2,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem2,OBJPROP_COLOR,Red);

         ObjectSet(Rem2,OBJPROP_WIDTH,2);

         ObjectSet(Rem2,OBJPROP_RAY,false);

        }



      else if(convergen==1 && TrendLine && TL==1 && Oscil[L2]>Oscil[L1] && Low[L2]>Low[L1] && 

         Oscil[L3]>Oscil[L1] && Low[L3]<Low[L1] && Low[L3]<Low[L2] && Oscil[L3]<Oscil[L2])

           {

            ObjectCreate(Rem2,OBJ_TREND,indicatorWindow,0,0,0,0);

            ObjectSet(Rem2,OBJPROP_TIME1,Time[L3]);ObjectSet(Rem2,OBJPROP_TIME2,Time[L1]);

            ObjectSet(Rem2,OBJPROP_PRICE1,t3_Oscil[L3]);ObjectSet(Rem2,OBJPROP_PRICE2,t3_Oscil[L1]);

            ObjectSet(Rem2,OBJPROP_COLOR,Gold);

            ObjectSet(Rem2,OBJPROP_WIDTH,2);

            ObjectSet(Rem2,OBJPROP_RAY,false);

           }



         else    ObjectDelete(Rem2);



      if(TrendLine && TL==1 && Oscil[L2]>Oscil[L1] && Low[L2]>Low[L1] && Oscil[L3]>Oscil[L1] && 

         Low[L3]>Low[L1] && Oscil[L4]<Oscil[L1] && 

         Low[L4]>Low[L1] && Low[L4]<Low[L3] && Low[L4]<Low[L2])

        {

         ObjectCreate(Rem3,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem3,OBJPROP_TIME1,Time[L4]);ObjectSet(Rem3,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem3,OBJPROP_PRICE1,t3_Oscil[L4]);ObjectSet(Rem3,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem3,OBJPROP_COLOR,Red);

         ObjectSet(Rem3,OBJPROP_WIDTH,2);

         ObjectSet(Rem3,OBJPROP_RAY,false);

        }



      else if(convergen==1 && TrendLine && TL==1 && Oscil[L2]>Oscil[L1] && Low[L2]>Low[L1] && Oscil[L3]>Oscil[L1] && 

         Low[L3]>Low[L1] && Oscil[L4]>Oscil[L1] && 

         Low[L4]<Low[L1] && Low[L4]<Low[L3] && Low[L4]<Low[L2] && Oscil[L4]<Oscil[L3] && Oscil[L4]<Oscil[L2])

           {

            ObjectCreate(Rem3,OBJ_TREND,indicatorWindow,0,0,0,0);

            ObjectSet(Rem3,OBJPROP_TIME1,Time[L4]);ObjectSet(Rem3,OBJPROP_TIME2,Time[L1]);

            ObjectSet(Rem3,OBJPROP_PRICE1,t3_Oscil[L4]);ObjectSet(Rem3,OBJPROP_PRICE2,t3_Oscil[L1]);

            ObjectSet(Rem3,OBJPROP_COLOR,Gold);

            ObjectSet(Rem3,OBJPROP_WIDTH,2);

            ObjectSet(Rem3,OBJPROP_RAY,false);

           }



         else    ObjectDelete(Rem3);



      if(TrendLine && TL==1 && Oscil[L2]>Oscil[L1] && Low[L2]>Low[L1] && Oscil[L3]>Oscil[L1] && Low[L3]>Low[L1] && 

         Oscil[L4]>Oscil[L1] && Low[L4]>Low[L1] && 

         Oscil[L5]<Oscil[L1] && Low[L5]>Low[L1] && Low[L5]<Low[L4] && Low[L5]<Low[L3] && Low[L5]<Low[L2])

        {

         ObjectCreate(Rem4,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem4,OBJPROP_TIME1,Time[L5]);ObjectSet(Rem4,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem4,OBJPROP_PRICE1,t3_Oscil[L5]);ObjectSet(Rem4,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem4,OBJPROP_COLOR,Red);

         ObjectSet(Rem4,OBJPROP_WIDTH,2);

         ObjectSet(Rem4,OBJPROP_RAY,false);

        }



      else if(convergen==1 && TrendLine && TL==1 && Oscil[L2]>Oscil[L1] && Low[L2]>Low[L1] && Oscil[L3]>Oscil[L1] && Low[L3]>Low[L1] && 

         Oscil[L4]>Oscil[L1] && Low[L4]>Low[L1] && 

         Oscil[L5]>Oscil[L1] && Low[L5]<Low[L1] && Low[L5]<Low[L4] && Low[L5]<Low[L3] && Low[L5]<Low[L2] && 

         Oscil[L5]<Oscil[L4] && Oscil[L5]<Oscil[L3] && Oscil[L5]<Oscil[L2])

           {

            ObjectCreate(Rem4,OBJ_TREND,indicatorWindow,0,0,0,0);

            ObjectSet(Rem4,OBJPROP_TIME1,Time[L5]);ObjectSet(Rem4,OBJPROP_TIME2,Time[L1]);

            ObjectSet(Rem4,OBJPROP_PRICE1,t3_Oscil[L5]);ObjectSet(Rem4,OBJPROP_PRICE2,t3_Oscil[L1]);

            ObjectSet(Rem4,OBJPROP_COLOR,Gold);

            ObjectSet(Rem4,OBJPROP_WIDTH,2);

            ObjectSet(Rem4,OBJPROP_RAY,false);

           }



         else    ObjectDelete(Rem4);



      if(TrendLine && TL==1 && Oscil[L2]>Oscil[L1] && Low[L2]>Low[L1] && Oscil[L3]>Oscil[L1] && Low[L3]>Low[L1] && 

         Oscil[L4]>Oscil[L1] && Low[L4]>Low[L1] && Oscil[L5]>Oscil[L1] && Low[L5]>Low[L1] && 

         Oscil[L6]<Oscil[L1] && Low[L6]>Low[L1] && Low[L6]<Low[L5] && Low[L6]<Low[L4] && Low[L6]<Low[L3] && Low[L6]<Low[L2])

        {

         ObjectCreate(Rem5,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem5,OBJPROP_TIME1,Time[L6]);ObjectSet(Rem5,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem5,OBJPROP_PRICE1,t3_Oscil[L6]);ObjectSet(Rem5,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem5,OBJPROP_COLOR,Red);

         ObjectSet(Rem5,OBJPROP_WIDTH,2);

         ObjectSet(Rem5,OBJPROP_RAY,false);

        }



      else if(convergen==1 && TrendLine && TL==1 && Oscil[L2]>Oscil[L1] && Low[L2]>Low[L1] && Oscil[L3]>Oscil[L1] && Low[L3]>Low[L1] && 

         Oscil[L4]>Oscil[L1] && Low[L4]>Low[L1] && Oscil[L5]>Oscil[L1] && Low[L5]>Low[L1] && 

         Oscil[L6]>Oscil[L1] && Low[L6]<Low[L1] && Low[L6]<Low[L5] && Low[L6]<Low[L4] && Low[L6]<Low[L3] && Low[L6]<Low[L2] && 

         Oscil[L6]<Oscil[L5] && Oscil[L6]<Oscil[L4] && Oscil[L6]<Oscil[L3] && Oscil[L6]<Oscil[L2])

           {

            ObjectCreate(Rem5,OBJ_TREND,indicatorWindow,0,0,0,0);

            ObjectSet(Rem5,OBJPROP_TIME1,Time[L6]);ObjectSet(Rem5,OBJPROP_TIME2,Time[L1]);

            ObjectSet(Rem5,OBJPROP_PRICE1,t3_Oscil[L6]);ObjectSet(Rem5,OBJPROP_PRICE2,t3_Oscil[L1]);

            ObjectSet(Rem5,OBJPROP_COLOR,Gold);

            ObjectSet(Rem5,OBJPROP_WIDTH,2);

            ObjectSet(Rem5,OBJPROP_RAY,false);

           }



         else    ObjectDelete(Rem5);



      ////////////////////////



      if(TrendLine && TL==1 && Oscil[L2]>Oscil[L1] && Low[L2]>Low[L1] && Oscil[L3]>Oscil[L1] && Low[L3]>Low[L1] && 

         Oscil[L4]>Oscil[L1] && Low[L4]>Low[L1] && Oscil[L5]>Oscil[L1] && Low[L5]>Low[L1] && 

         Oscil[L6]>Oscil[L1] && Low[L6]>Low[L1] && 

         Oscil[L7]<Oscil[L1] && Low[L7]>Low[L1] && Low[L7]<Low[L6] && Low[L7]<Low[L5] && Low[L7]<Low[L4] && 

         Low[L7]<Low[L3] && Low[L7]<Low[L2])

        {

         ObjectCreate(Rem6,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem6,OBJPROP_TIME1,Time[L7]);ObjectSet(Rem6,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem6,OBJPROP_PRICE1,t3_Oscil[L7]);ObjectSet(Rem6,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem6,OBJPROP_COLOR,Red);

         ObjectSet(Rem6,OBJPROP_WIDTH,2);

         ObjectSet(Rem6,OBJPROP_RAY,false);

        }



      else if(convergen==1 && TrendLine && TL==1 && Oscil[L2]>Oscil[L1] && Low[L2]>Low[L1] && Oscil[L3]>Oscil[L1] && Low[L3]>Low[L1] && 

         Oscil[L4]>Oscil[L1] && Low[L4]>Low[L1] && Oscil[L5]>Oscil[L1] && Low[L5]>Low[L1] && 

         Oscil[L6]>Oscil[L1] && Low[L6]>Low[L1] && 

         Oscil[L7]>Oscil[L1] && Low[L7]<Low[L1] && Low[L7]<Low[L6] && Low[L7]<Low[L5] && Low[L7]<Low[L4] && 

         Low[L7]<Low[L3] && Low[L7]<Low[L2] && 

         Oscil[L7]<Oscil[L6] && Oscil[L7]<Oscil[L5] && Oscil[L7]<Oscil[L4] && Oscil[L7]<Oscil[L3] && Oscil[L7]<Oscil[L2])

           {

            ObjectCreate(Rem6,OBJ_TREND,indicatorWindow,0,0,0,0);

            ObjectSet(Rem6,OBJPROP_TIME1,Time[L7]);ObjectSet(Rem6,OBJPROP_TIME2,Time[L1]);

            ObjectSet(Rem6,OBJPROP_PRICE1,t3_Oscil[L7]);ObjectSet(Rem6,OBJPROP_PRICE2,t3_Oscil[L1]);

            ObjectSet(Rem6,OBJPROP_COLOR,Gold);

            ObjectSet(Rem6,OBJPROP_WIDTH,2);

            ObjectSet(Rem6,OBJPROP_RAY,false);

           }



         else    ObjectDelete(Rem6);



      if(TrendLine && TL==1 && Oscil[L2]>Oscil[L1] && Low[L2]>Low[L1] && Oscil[L3]>Oscil[L1] && Low[L3]>Low[L1] && 

         Oscil[L4]>Oscil[L1] && Low[L4]>Low[L1] && Oscil[L5]>Oscil[L1] && Low[L5]>Low[L1] && 

         Oscil[L6]>Oscil[L1] && Low[L6]>Low[L1] && Oscil[L7]>Oscil[L1] && Low[L7]>Low[L1] && 

         Oscil[L8]<Oscil[L1] && Low[L8]>Low[L1] && Low[L8]<Low[L7] && Low[L8]<Low[L6] && Low[L8]<Low[L5] && 

         Low[L8]<Low[L4] && Low[L8]<Low[L3] && Low[L8]<Low[L2])

        {

         ObjectCreate(Rem7,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem7,OBJPROP_TIME1,Time[L8]);ObjectSet(Rem7,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem7,OBJPROP_PRICE1,t3_Oscil[L8]);ObjectSet(Rem7,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem7,OBJPROP_COLOR,Red);

         ObjectSet(Rem7,OBJPROP_WIDTH,2);

         ObjectSet(Rem7,OBJPROP_RAY,false);

        }



      else if(convergen==1 && TrendLine && TL==1 && Oscil[L2]>Oscil[L1] && Low[L2]>Low[L1] && Oscil[L3]>Oscil[L1] && Low[L3]>Low[L1] && 

         Oscil[L4]>Oscil[L1] && Low[L4]>Low[L1] && Oscil[L5]>Oscil[L1] && Low[L5]>Low[L1] && 

         Oscil[L6]>Oscil[L1] && Low[L6]>Low[L1] && Oscil[L7]>Oscil[L1] && Low[L7]>Low[L1] && 

         Oscil[L8]>Oscil[L1] && Low[L8]<Low[L1] && Low[L8]<Low[L7] && Low[L8]<Low[L6] && Low[L8]<Low[L5] && 

         Low[L8]<Low[L4] && Low[L8]<Low[L3] && Low[L8]<Low[L2] && 

         Oscil[L8]<Oscil[L7] && Oscil[L8]<Oscil[L6] && Oscil[L8]<Oscil[L5] && Oscil[L8]<Oscil[L4] && 

         Oscil[L8]<Oscil[L3] && Oscil[L8]<Oscil[L2])

           {

            ObjectCreate(Rem7,OBJ_TREND,indicatorWindow,0,0,0,0);

            ObjectSet(Rem7,OBJPROP_TIME1,Time[L8]);ObjectSet(Rem7,OBJPROP_TIME2,Time[L1]);

            ObjectSet(Rem7,OBJPROP_PRICE1,t3_Oscil[L8]);ObjectSet(Rem7,OBJPROP_PRICE2,t3_Oscil[L1]);

            ObjectSet(Rem7,OBJPROP_COLOR,Gold);

            ObjectSet(Rem7,OBJPROP_WIDTH,2);

            ObjectSet(Rem7,OBJPROP_RAY,false);

           }



         else    ObjectDelete(Rem7);



      if(TrendLine && TL==1 && Oscil[L2]>Oscil[L1] && Low[L2]>Low[L1] && Oscil[L3]>Oscil[L1] && Low[L3]>Low[L1] && 

         Oscil[L4]>Oscil[L1] && Low[L4]>Low[L1] && Oscil[L5]>Oscil[L1] && Low[L5]>Low[L1] && 

         Oscil[L6]>Oscil[L1] && Low[L6]>Low[L1] && Oscil[L7]>Oscil[L1] && Low[L7]>Low[L1] && 

         Oscil[L8]>Oscil[L1] && Low[L8]>Low[L1] && 

         Oscil[L9]<Oscil[L1] && Low[L9]>Low[L1] && Low[L9]<Low[L8] && Low[L9]<Low[L7] && Low[L9]<Low[L6] && 

         Low[L9]<Low[L5] && Low[L9]<Low[L4] && Low[L9]<Low[L3] && Low[L9]<Low[L2])

        {

         ObjectCreate(Rem8,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem8,OBJPROP_TIME1,Time[L9]);ObjectSet(Rem8,OBJPROP_TIME2,Time[L1]);

         ObjectSet(Rem8,OBJPROP_PRICE1,t3_Oscil[L9]);ObjectSet(Rem8,OBJPROP_PRICE2,t3_Oscil[L1]);

         ObjectSet(Rem8,OBJPROP_COLOR,Red);

         ObjectSet(Rem8,OBJPROP_WIDTH,2);

        }



      else    ObjectDelete(Rem8);



      ////////////////////////// 



      if(Trend_Up==false)

         ObjectDelete(Rem);



      Rem="LCL("+Complect+")_"+Step; // line channel



      if(ChannelLine)

        {

         ObjectCreate(Rem,OBJ_TREND,indicatorWindow,0,0,0,0);

         ObjectSet(Rem,OBJPROP_TIME1,Time[qExt]);ObjectSet(Rem,OBJPROP_TIME2,Time[0]);

         ObjectSet(Rem,OBJPROP_PRICE1,t3_Oscil[qExt]);ObjectSet(Rem,OBJPROP_PRICE2,t3_Oscil[qExt]+qTL*qExt);

         ObjectSet(Rem,OBJPROP_COLOR,col);

        }



      else ObjectDelete(Rem);



      if(HandyColour) col=ChannelL; else col=ColNum[Step*2-1];



      Rem="CHAl("+Complect+")_"+Step;



      if(Channel)

        {

         if(Regression)

           {

            ObjectCreate(Rem,OBJ_REGRESSION,indicatorWindow,Time[L2],t3_Oscil[L2],Time[L1],t3_Oscil[L1]);

            ObjectSet(Rem,OBJPROP_COLOR,col);

            ObjectSet(Rem,OBJPROP_RAY,RayL);

           }

         else

           {

            ObjectCreate(Rem,OBJ_STDDEVCHANNEL,indicatorWindow,Time[L2],t3_Oscil[L2],Time[L1],t3_Oscil[L1]);

            ObjectSet(Rem,OBJPROP_DEVIATION,STD_widthL);

            ObjectSet(Rem,OBJPROP_COLOR,col);

            ObjectSet(Rem,OBJPROP_RAY,RayL);

           }

        }



      else ObjectDelete(Rem);

     }



   return(Comm);

  }

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

//|                                                                  |

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

int GetTD(int P,const double &Arr[])

  {

   int i=0,j=0;

   while(j<P){ i++; while(Arr[i]==0){i++;if(i>showBars-2)return(-1);} j++;}

   return (i);

  }

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

//|                                                                  |

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

int GetNextHighTD(int P)

  {

   int i=P+1;

   while(Buf1[i]==0){i++;if(i>showBars-2)return(-1);}

   return (i);

  }

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

//|                                                                  |

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

int GetNextLowTD(int P)

  {

   int i=P+1;

   while(Buf2[i]==0){i++;if(i>showBars-2)return(-1);}

   return (i);

  }

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



void SellSignal(int sStep)

  {

   Signal[sStep]=-1;

   if(Alerts)Alert("SELL SIGNAL ON "+Symbol());

   if(Email)SendMail("SELL SIGNAL ON "+Symbol(),"Signal Sent From AIO Divergence Indicator");

   if(Push)SendNotification("AIO Divergence: SELL SIGNAL ON "+Symbol());

   Print("SELLSIGNAL");

  }

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



void BuySignal(int sStep)

  {

   Signal[sStep]=1;

   if(Alerts)Alert("BUY SIGNAL ON "+Symbol());

   if(Email)SendMail("BUY SIGNAL ON "+Symbol(),"Signal Sent From AIO Divergence Indicator");

   if(Push)SendNotification("AIO Divergence: BUY SIGNAL ON "+Symbol());

   Print("BUYSIGNAL");

  }

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

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 ---