Bouncer

The OliveDrab is the subject.

The first hit is a fade, good for 50-57 pips. The second hit can be a slider, a Wave 3.

In plain English 15 pips outside the 60-sample BB HL2.

The current strength would imply a full 5-wave move – this is a Wave 2 up.

I left the continuation divergence plots in as an Xmas present.

#property copyright "Copyright © 2023, Macdulio" 
#property link      "forexfore.blog" 
#property description "Bouncer"


#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color7 Crimson
#property indicator_color8 Yellow 
#property indicator_color9 Tan
extern int lookback = 300;
extern bool plot_divergences = true;
extern int linethickness = 6;
extern int sample = 8;
extern int fontsize = 14;
double BBUP[],BBDM[];
double ATRA, ATRAVG[], RSI2[], stoch[];
datetime UpFractalTime_1,LowFractalTime_1,UpFractalTime_2,LowFractalTime_2,LowFractalTime_3,LowFractalTime_4,    UFT2, LFT2;
int init()
  {
   SetIndexBuffer(0,BBUP);
   SetIndexStyle(0,DRAW_LINE,4,3,clrOliveDrab);   
   SetIndexBuffer(1,BBDM);
   SetIndexStyle(1,DRAW_LINE,4,3,clrOliveDrab);      
   return(0);
  }
  
int start()
{

  string symbol = Symbol();
   int    i,i2,j,j2;       
  ArrayResize(BBUP, Bars);  
  ArrayInitialize(BBUP, EMPTY_VALUE);  
  ArrayResize(BBDM, Bars);  
  ArrayInitialize(BBDM, EMPTY_VALUE);  
  ArrayResize(RSI2, Bars);  
  ArrayInitialize(RSI2, EMPTY_VALUE);  
  ArrayResize(stoch, Bars);   
  ArrayInitialize(stoch, EMPTY_VALUE); 
 
//--------------------------------------------------------------------
   
   
   ATRA = 0;
   for (i=1; i<=3; i++){ 
     ATRA = ATRA+iATR(NULL,1440,14,i);}
   
   for (i=0; i<=160; i++){ 
     ATRAVG[i] = ATRA/3; }


for(i=Bars-60; i>=0; i--){
  stoch[i]=iStochastic(symbol,0,9,3,3,MODE_SMA,0,MODE_SIGNAL,i);
  RSI2[i]=iRSI(symbol,0,2,PRICE_MEDIAN,i);
}


for (i = lookback ; i >=0; i--) {

if (High[i]>iBands(symbol,30,60,2,0,PRICE_MEDIAN,MODE_UPPER,i)) BBUP[i]=iBands(symbol,30,60,2,0,PRICE_MEDIAN,MODE_UPPER,i)+150*Point;
if (Low[i]<iBands(symbol,30,60,2,0,PRICE_MEDIAN,MODE_LOWER,i)) BBDM[i]=iBands(symbol,30,60,2,0,PRICE_MEDIAN,MODE_LOWER,i)-150*Point;
} 


if (plot_divergences) {


deletetxt1("lxr");
 
deletetxt1("BUNA3");
deletetxt1("LUNA3");
deletetxt1("GUNA");
deletetxt1("QUNA");
deletetxt1("PUNA3");
deletetxt1("PUNA4");
deletetxt1("HUNA3");
deletetxt1("DUNA3");
deletetxt1("jxr");
deletetxt1("_UNA3"); 
deletetxt1("ZUNA3");
deletetxt1("Real");   
deletetxt1("lxr");
deletetxt1("lxl");
deletetxt1("Hei"); 
deletetxt1("ouna");
deletetxt1("Ellipse");



   j2=1;
   while (j2<500 ){
    j=j2+3; 
      if (iFractals(Symbol(),0,MODE_LOWER,j2)) 
         while (j<j2+16){
               if (RSI2[j2]<RSI2[j] && iFractals(Symbol(),0,MODE_LOWER,j)   ) break;
       //&& Low[j2]>=Low[j]+10*Point
       
         j++;}
         
         
    if (iFractals(Symbol(),0,MODE_LOWER,j) && iFractals(Symbol(),0,MODE_LOWER,j2) && RSI2[j2]<RSI2[j] && Low[j2]>=Low[j]-10*Point ) break;
        //&& Low[j2]>=Low[j]-10*Point
          j2++;}  


if (j2<500 && Low[j2]>=Low[j]-10*Point) {LowFractalTime_2=iTime(NULL, 0,j2);    LowFractalTime_1=iTime(NULL, 0,j);    }

 if (j<500 && j<j2+16)   {ObjectDelete(0,"BUNA3_2");
     ObjectCreate(0,"BUNA3_2",OBJ_TREND,0,LowFractalTime_1,Low[j],LowFractalTime_2,Low[j2]);
    ObjectSetInteger(0,"BUNA3_2",OBJPROP_RAY_RIGHT,false);
         if (iLow(symbol,0,iLowest(symbol,0,MODE_LOW,j2-1,0))<Low[j2])    ObjectSet("BUNA3_2",OBJPROP_COLOR,clrTan);
        else
          ObjectSet("BUNA3_2",OBJPROP_COLOR,indicator_color9);
         ObjectSet("BUNA3_2",OBJPROP_WIDTH, linethickness);  
         

///first lower continuation divergence         
                if (Period()==60){  
      //    ObjectCreate("BUNA3_3ffx",OBJ_TEXT, 0, Time[j2+3], Low[j2]+20*Point);
      //    ObjectSetText("BUNA3_3ffx", " (Min 16) Short:"+DoubleToStr(NormalizeDouble(Low[j2]-60*Point,4),4), 17, "Impact", clrWhite);
      //    ObjectCreate("BUNA3_3ff",OBJ_TEXT, 0, Time[j2+3], Low[j2]+20*Point);
      //    ObjectSetText("BUNA3_3ff","(Min 16) Short:"+DoubleToStr(NormalizeDouble(Low[j2]-60*Point,4),4), 17, "Impact", clrDarkRed);
           if (iLow(symbol,0,iLowest(symbol,0,MODE_LOW,j2-1,0))<Low[j2])    ObjectSet("BUNA3_3ff",OBJPROP_COLOR,clrRed);
           
           if (j2>2) {
             ObjectCreate("Ellipset"+DoubleToStr(j), OBJ_TRIANGLE, 0, Time[j2-3],  Low[j2]+90*Point, Time[j2-3], Low[j2]-420*Point, Time[j2], Low[j2]);
             ObjectSet("Ellipset"+DoubleToStr(j),OBJPROP_COLOR,clrGray);
             ObjectSet("Ellipset"+DoubleToStr(j),OBJPROP_BACK,0);
             ObjectSet("Ellipset"+DoubleToStr(j),OBJPROP_WIDTH,1);
             ObjectSet("Ellipset"+DoubleToStr(j),OBJPROP_STYLE,1);
           
           }
           
                 }             
         LFT2 = LowFractalTime_2;
    }

 i2=1;
   while (i2<500){
      i=i2+3;
      if (iFractals(Symbol(),0,MODE_UPPER,i2))     
      while (i<i2+16 ){
            if ( RSI2[i2]>RSI2[i] && iFractals(Symbol(),0,MODE_UPPER,i) && High[i2]<=High[i]-10*Point ) break;
         i++;}
      if (iFractals(Symbol(),0,MODE_UPPER,i)  && iFractals(Symbol(),0,MODE_UPPER,i2) && RSI2[i2]>RSI2[i] && High[i2]<=High[i]-10*Point) break;
               i2++;}  


if (i2<500 && High[i2]<=High[i]-10*Point && RSI2[i2]>RSI2[i]) { UpFractalTime_2=iTime(NULL, 0,i2);    UpFractalTime_1=iTime(NULL, 0,i);   }
 
 
if (i<500 && i<i2+16) {   ObjectDelete(0,"LUNA3_1");
         ObjectCreate(0,"LUNA3_1",OBJ_TREND,0,UpFractalTime_1,High[i],UpFractalTime_2,High[i2]);
          ObjectSetInteger(0,"LUNA3_1",OBJPROP_RAY_RIGHT,false);
          
                 if (iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,i2-1,0))>High[i2])    ObjectSet("LUNA3_1",OBJPROP_COLOR,clrTan);
        else ObjectSet("LUNA3_1",OBJPROP_COLOR,indicator_color9);
         ObjectSet("LUNA3_1",OBJPROP_WIDTH, linethickness);

///first upper continuation divergence    
      if (Period()==60){       
     //      ObjectCreate("LUNA3_1ffx",OBJ_TEXT, 0, Time[i2+3], High[i2]+120*Point);
     //      ObjectSetText("LUNA3_1ffx", " (Min 16) Long: "+DoubleToStr(NormalizeDouble(High[i2]+60*Point,4),4), 17, "Impact", clrWhite);
     //      ObjectCreate("LUNA3_1ff",OBJ_TEXT, 0, Time[i2+3], High[i2]+120*Point);
     //      ObjectSetText("LUNA3_1ff", "(Min 16) Long: "+DoubleToStr(NormalizeDouble(High[i2]+60*Point,4),4), 17, "Impact", clrDarkGreen);
               if (iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,i2-1,0))>High[i2])    ObjectSet("LUNA3_1ff",OBJPROP_COLOR,clrGreen);
               
               
                 if (i2>2) {
             ObjectCreate("Ellipset"+DoubleToStr(i), OBJ_TRIANGLE, 0, Time[i2-3],  High[i2]-90*Point, Time[i2-3], High[i2]+420*Point, Time[i2], High[i2]);
             ObjectSet("Ellipset"+DoubleToStr(i),OBJPROP_COLOR,clrGray);
             ObjectSet("Ellipset"+DoubleToStr(i),OBJPROP_BACK,0);
             ObjectSet("Ellipset"+DoubleToStr(i),OBJPROP_WIDTH,1);
             ObjectSet("Ellipset"+DoubleToStr(i),OBJPROP_STYLE,1);
        
           
           }   
               
          }
           
      UFT2=UpFractalTime_2;
      }
  
int keepj=j;
int keepi=i;

  
   j2=keepj;
   while (j2<500 ){
    j=j2+3; 
      if (iFractals(Symbol(),0,MODE_LOWER,j2)) 
         while (j<j2+16){
               if (RSI2[j2]<RSI2[j] && iFractals(Symbol(),0,MODE_LOWER,j) && Low[j2]>=Low[j]+10*Point) break;
         j++;}
    if (iFractals(Symbol(),0,MODE_LOWER,j) && iFractals(Symbol(),0,MODE_LOWER,j2) && RSI2[j2]<RSI2[j]  && Low[j2]>=Low[j]+10*Point) break;
        
          j2++;}  


if (j2<500 && Low[j2]>=Low[j]+10*Point) {LowFractalTime_2=iTime(NULL, 0,j2);    LowFractalTime_1=iTime(NULL, 0,j);    }

 if (j<500 && j<j2+16)   {ObjectDelete(0,"PUNA3_2");
     ObjectCreate(0,"PUNA3_2",OBJ_TREND,0,LowFractalTime_1,Low[j],LowFractalTime_2,Low[j2]);
    ObjectSetInteger(0,"PUNA3_2",OBJPROP_RAY_RIGHT,false);
        if (iLow(symbol,0,iLowest(symbol,0,MODE_LOW,j2-1,0))<Low[j2])    ObjectSet("PUNA3_2",OBJPROP_COLOR,clrNONE);
         else
          ObjectSet("PUNA3_2",OBJPROP_COLOR,indicator_color9);
         ObjectSet("PUNA3_2",OBJPROP_WIDTH, linethickness); 
         
///second lower continuation divergence           
         if (Period()==60){  
      //      ObjectCreate("PUNA3_2ffx",OBJ_TEXT, 0, Time[j2+3], Low[j2]+20*Point);
      //    ObjectSetText("PUNA3_2ffx", " (Min 16) Short:"+DoubleToStr(NormalizeDouble(Low[j2]-60*Point,4),4), 17, "Impact", clrWhite);
      //    ObjectCreate("PUNA3_2ff",OBJ_TEXT, 0, Time[j2+3], Low[j2]+20*Point);
      //    ObjectSetText("PUNA3_2ff","(Min 16) Short:"+DoubleToStr(NormalizeDouble(Low[j2]-60*Point,4),4), 17, "Impact", clrDarkRed);
           if (iLow(symbol,0,iLowest(symbol,0,MODE_LOW,j2-1,0))<Low[j2])    ObjectSet("PUNA3_2ff",OBJPROP_COLOR,clrRed);
             
              if (j2>2) {
             ObjectCreate("Ellipset"+DoubleToStr(j), OBJ_TRIANGLE, 0, Time[j2-3],  Low[j2]+90*Point, Time[j2-3], Low[j2]-420*Point, Time[j2], Low[j2]);
             ObjectSet("Ellipset"+DoubleToStr(j),OBJPROP_COLOR,clrGray);
             ObjectSet("Ellipset"+DoubleToStr(j),OBJPROP_BACK,0);
             ObjectSet("Ellipset"+DoubleToStr(j),OBJPROP_WIDTH,1);
             ObjectSet("Ellipset"+DoubleToStr(j),OBJPROP_STYLE,1);
        
           
           }
             
         }
         LFT2 = LowFractalTime_2;     
    
}

//////////////////////////
    
i2=0;
   while (i2<500){
      i=i2+3;
      if (iFractals(Symbol(),0,MODE_UPPER,i2))     
      while (i<i2+16 ){
            if (RSI2[i2]>RSI2[i] && iFractals(Symbol(),0,MODE_UPPER,i) && High[i2]<=High[i]-10*Point ) break;
         i++;}
      if (iFractals(Symbol(),0,MODE_UPPER,i)  && iFractals(Symbol(),0,MODE_UPPER,i2) && RSI2[i2]>RSI2[i] && High[i2]<=High[i]-10*Point) break;
               i2++;}  


if (i2<500 && High[i2]<=High[i]-10*Point && RSI2[i2]>RSI2[i]) { UpFractalTime_2=iTime(NULL, 0,i2);    UpFractalTime_1=iTime(NULL, 0,i);   }
 
 
if (i<500 && i<i2+16 && RSI2[i2]>RSI2[i]) {   ObjectDelete(0,"PUNA3_1");
         ObjectCreate(0,"PUNA3_1",OBJ_TREND,0,UpFractalTime_1,High[i],UpFractalTime_2,High[i2]);
          ObjectSetInteger(0,"PUNA3_1",OBJPROP_RAY_RIGHT,false);
                if (iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,i2-1,0))>High[i2])    ObjectSet("PUNA3_1",OBJPROP_COLOR,clrNONE);
         else ObjectSet("PUNA3_1",OBJPROP_COLOR,indicator_color9);
         
         ObjectSet("PUNA3_1",OBJPROP_WIDTH, linethickness);


///second upper continuation divergence    
      if (Period()==60){       
      //     ObjectCreate("PUNA3_1ffx",OBJ_TEXT, 0, Time[i2+3], High[i2]+120*Point);
      //     ObjectSetText("PUNA3_1ffx", " (Min 16) Long: "+DoubleToStr(NormalizeDouble(High[i2]+60*Point,4),4), 17, "Impact", clrWhite);
      //     ObjectCreate("PUNA3_1ff",OBJ_TEXT, 0, Time[i2+3], High[i2]+120*Point);
      //     ObjectSetText("PUNA3_1ff", "(Min 16) Long: "+DoubleToStr(NormalizeDouble(High[i2]+60*Point,4),4), 17, "Impact", clrDarkGreen);
               if (iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,i2-1,0))>High[i2])    ObjectSet("PUNA3_1ff",OBJPROP_COLOR,clrGreen);
                   
           if (i2>2) {
             ObjectCreate("Ellipset"+DoubleToStr(i), OBJ_TRIANGLE, 0, Time[i2-3],  High[i2]-90*Point, Time[i2-3], High[i2]+420*Point, Time[i2], High[i2]);
             ObjectSet("Ellipset"+DoubleToStr(i),OBJPROP_COLOR,clrGray);
             ObjectSet("Ellipset"+DoubleToStr(i),OBJPROP_BACK,0);
             ObjectSet("Ellipset"+DoubleToStr(i),OBJPROP_WIDTH,1);
             ObjectSet("Ellipset"+DoubleToStr(i),OBJPROP_STYLE,1);
           
           }                    
                   
 }
         
      UFT2=UpFractalTime_2;
    
}

keepj=j;
keepi=i;
  
   j2=keepj;
   while (j2<500 ){
    j=j2+3; 
      if (iFractals(Symbol(),0,MODE_LOWER,j2)) 
         while (j<j2+16){
               if (RSI2[j2]<RSI2[j] && iFractals(Symbol(),0,MODE_LOWER,j) && Low[j2]>=Low[j]+10*Point) break;
         j++;}
    if (iFractals(Symbol(),0,MODE_LOWER,j) && iFractals(Symbol(),0,MODE_LOWER,j2) && RSI2[j2]<RSI2[j]  && Low[j2]>=Low[j]+10*Point) break;
        
          j2++;}  


if (j2<500 && Low[j2]>=Low[j]+10*Point) {LowFractalTime_2=iTime(NULL, 0,j2);    LowFractalTime_1=iTime(NULL, 0,j);    }

 if (j<500 && j<j2+16)   {ObjectDelete(0,"PUNA4_2");
     ObjectCreate(0,"PUNA4_2",OBJ_TREND,0,LowFractalTime_1,Low[j],LowFractalTime_2,Low[j2]);
    ObjectSetInteger(0,"PUNA4_2",OBJPROP_RAY_RIGHT,false);
        if (iLow(symbol,0,iLowest(symbol,0,MODE_LOW,j2-1,0))<Low[j2])    ObjectSet("PUNA4_2",OBJPROP_COLOR,clrNONE);
       else 
        ObjectSet("PUNA4_2",OBJPROP_COLOR,indicator_color9);
         ObjectSet("PUNA4_2",OBJPROP_WIDTH, linethickness); 
         
///third lower continuation divergence         
      if (Period()==60){    
     //     ObjectCreate("PUNA4_2ffx",OBJ_TEXT, 0, Time[j2+3], Low[j2]+20*Point);
     //     ObjectSetText("PUNA4_2ffx", " (Min 16) Short:"+DoubleToStr(NormalizeDouble(Low[j2]-60*Point,4),4), 17, "Impact", clrWhite);
     //     ObjectCreate("PUNA4_2ff",OBJ_TEXT, 0, Time[j2+3], Low[j2]+20*Point);
     //     ObjectSetText("PUNA4_2ff","(Min 16) Short:"+DoubleToStr(NormalizeDouble(Low[j2]-60*Point,4),4), 17, "Impact", clrDarkRed);
           if (iLow(symbol,0,iLowest(symbol,0,MODE_LOW,j2-1,0))<Low[j2])    ObjectSet("PUNA4_2ff",OBJPROP_COLOR,clrRed);
           
            if (j2>2) {
             ObjectCreate("Ellipset"+DoubleToStr(j), OBJ_TRIANGLE, 0, Time[j2-3],  Low[j2]+90*Point, Time[j2-3], Low[j2]-420*Point, Time[j2], Low[j2]);
             ObjectSet("Ellipset"+DoubleToStr(j),OBJPROP_COLOR,clrGray);
             ObjectSet("Ellipset"+DoubleToStr(j),OBJPROP_BACK,0);
             ObjectSet("Ellipset"+DoubleToStr(j),OBJPROP_WIDTH,1);
             ObjectSet("Ellipset"+DoubleToStr(j),OBJPROP_STYLE,1);
           }
           
        }  
         
         LFT2 = LowFractalTime_2;     
    
}

 i2=keepi;
   while (i2<500){
      i=i2+3;
      if (iFractals(Symbol(),0,MODE_UPPER,i2))     
      while (i<i2+16 ){
            if ( RSI2[i2]>RSI2[i] && iFractals(Symbol(),0,MODE_UPPER,i) && High[i2]<=High[i]-10*Point ) break;
         i++;}
      if (iFractals(Symbol(),0,MODE_UPPER,i)  && iFractals(Symbol(),0,MODE_UPPER,i2) && RSI2[i2]>RSI2[i] && High[i2]<=High[i]-10*Point) break;
               i2++;}  


if (i2<500 && High[i2]<=High[i]-10*Point) { UpFractalTime_2=iTime(NULL, 0,i2);    UpFractalTime_1=iTime(NULL, 0,i);   }
 
 
if (i<500 && i<i2+16) {   ObjectDelete(0,"PUNA4_1");
         ObjectCreate(0,"PUNA4_1",OBJ_TREND,0,UpFractalTime_1,High[i],UpFractalTime_2,High[i2]);
          ObjectSetInteger(0,"PUNA4_1",OBJPROP_RAY_RIGHT,false);
                 if (iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,i2-1,0))>High[i2])    ObjectSet("PUNA4_1",OBJPROP_COLOR,clrNONE);
         else ObjectSet("PUNA4_1",OBJPROP_COLOR,indicator_color9);
         ObjectSet("PUNA4_1",OBJPROP_WIDTH, linethickness);

///third upper continuation divergence           
               if (Period()==60){  
      //   ObjectCreate("PUNA4_1ffx",OBJ_TEXT, 0, Time[i2+3], High[i2]+120*Point);
      //     ObjectSetText("PUNA4_1ffx", " (Min 16) Long: "+DoubleToStr(NormalizeDouble(High[i2]+60*Point,4),4), 17, "Impact", clrWhite);
      //     ObjectCreate("PUNA4_1ff",OBJ_TEXT, 0, Time[i2+3], High[i2]+120*Point);
      //     ObjectSetText("PUNA4_1ff", "(Min 16) Long: "+DoubleToStr(NormalizeDouble(High[i2]+60*Point,4),4), 17, "Impact", clrDarkGreen);
               if (iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,i2-1,0))>High[i2])    ObjectSet("PUNA4_1ff",OBJPROP_COLOR,clrGreen);
                 
                 if (i2>2) {
             ObjectCreate("Ellipset"+DoubleToStr(i), OBJ_TRIANGLE, 0, Time[i2-3],  High[i2]-90*Point, Time[i2-3], High[i2]+420*Point, Time[i2], High[i2]);
             ObjectSet("Ellipset"+DoubleToStr(i),OBJPROP_COLOR,clrGray);
             ObjectSet("Ellipset"+DoubleToStr(i),OBJPROP_BACK,0);
             ObjectSet("Ellipset"+DoubleToStr(i),OBJPROP_WIDTH,1);
             ObjectSet("Ellipset"+DoubleToStr(i),OBJPROP_STYLE,1);
           
           }    
                 
         }
         
      UFT2=UpFractalTime_2;
    
}



keepj=j;
keepi=i;
  
   j2=keepj;
   while (j2<500 ){
    j=j2+3; 
      if (iFractals(Symbol(),0,MODE_LOWER,j2)) 
         while (j<j2+16){
               if (RSI2[j2]<RSI2[j] && iFractals(Symbol(),0,MODE_LOWER,j) && Low[j2]>=Low[j]+10*Point) break;
         j++;}
    if (iFractals(Symbol(),0,MODE_LOWER,j) && iFractals(Symbol(),0,MODE_LOWER,j2) && RSI2[j2]<RSI2[j]  && Low[j2]>=Low[j]+10*Point) break;
        
          j2++;}  


if (j2<500 && Low[j2]>=Low[j]+10*Point) {LowFractalTime_2=iTime(NULL, 0,j2);    LowFractalTime_1=iTime(NULL, 0,j);    }

 if (j<500 && j<j2+16)   {ObjectDelete(0,"PUNA5_2");
     ObjectCreate(0,"PUNA5_2",OBJ_TREND,0,LowFractalTime_1,Low[j],LowFractalTime_2,Low[j2]);
    ObjectSetInteger(0,"PUNA5_2",OBJPROP_RAY_RIGHT,false);
        if (iLow(symbol,0,iLowest(symbol,0,MODE_LOW,j2-1,0))<Low[j2])    ObjectSet("PUNA5_2",OBJPROP_COLOR,clrNONE);
         else ObjectSet("PUNA5_2",OBJPROP_COLOR,indicator_color9);
         ObjectSet("PUNA5_2",OBJPROP_WIDTH, linethickness); 
         
///fourth lower continuation divergence      
         if (Period()==60){       
       //      ObjectCreate("PUNA5_2ffx",OBJ_TEXT, 0, Time[j2+3], Low[j2]+20*Point);
      //    ObjectSetText("PUNA5_2ffx", " (Min 16) Short:"+DoubleToStr(NormalizeDouble(Low[j2]-60*Point,4),4), 17, "Impact", clrWhite);
      //    ObjectCreate("PUNA5_2ff",OBJ_TEXT, 0, Time[j2+3], Low[j2]+20*Point);
      //    ObjectSetText("PUNA5_2ff","(Min 16) Short:"+DoubleToStr(NormalizeDouble(Low[j2]-60*Point,4),4), 17, "Impact", clrDarkRed);
           if (iLow(symbol,0,iLowest(symbol,0,MODE_LOW,j2-1,0))<Low[j2])    ObjectSet("PUNA5_2ff",OBJPROP_COLOR,clrRed);
              
               if (j2>2) {
             ObjectCreate("Ellipset"+DoubleToStr(j), OBJ_TRIANGLE, 0, Time[j2-3],  Low[j2]+90*Point, Time[j2-3], Low[j2]-420*Point, Time[j2], Low[j2]);
             ObjectSet("Ellipset"+DoubleToStr(j),OBJPROP_COLOR,clrGray);
             ObjectSet("Ellipset"+DoubleToStr(j),OBJPROP_BACK,0);
             ObjectSet("Ellipset"+DoubleToStr(j),OBJPROP_WIDTH,1);
             ObjectSet("Ellipset"+DoubleToStr(j),OBJPROP_STYLE,1);
           
           }
              
          }
          
         LFT2 = LowFractalTime_2;     
    
}

 i2=keepi;
   while (i2<500){
      i=i2+3;
      if (iFractals(Symbol(),0,MODE_UPPER,i2))     
      while (i<i2+16 ){
            if ( RSI2[i2]>RSI2[i] && iFractals(Symbol(),0,MODE_UPPER,i) && High[i2]<=High[i]-10*Point ) break;
         i++;}
      if (iFractals(Symbol(),0,MODE_UPPER,i)  && iFractals(Symbol(),0,MODE_UPPER,i2) && RSI2[i2]>RSI2[i] && High[i2]<=High[i]-10*Point) break;
               i2++;}  


if (i2<500 && High[i2]<=High[i]-10*Point) { UpFractalTime_2=iTime(NULL, 0,i2);    UpFractalTime_1=iTime(NULL, 0,i);   }
 
 
if (i<500 && i<i2+16) {   ObjectDelete(0,"PUNA5_1");
         ObjectCreate(0,"PUNA5_1",OBJ_TREND,0,UpFractalTime_1,High[i],UpFractalTime_2,High[i2]);
          ObjectSetInteger(0,"PUNA5_1",OBJPROP_RAY_RIGHT,false);
                 if (iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,i2-1,0))>High[i2])    ObjectSet("PUNA5_1",OBJPROP_COLOR,clrNONE);
       else  ObjectSet("PUNA5_1",OBJPROP_COLOR,indicator_color9);
         ObjectSet("PUNA5_1",OBJPROP_WIDTH, linethickness);


///fourth upper continuation divergence           
               if (Period()==60){  
       //  ObjectCreate("PUNA5_1ffx",OBJ_TEXT, 0, Time[i2+3], High[i2]+120*Point);
       //    ObjectSetText("PUNA5_1ffx", " (Min 16) Long: "+DoubleToStr(NormalizeDouble(High[i2]+60*Point,4),4), 17, "Impact", clrWhite);
       //    ObjectCreate("PUNA5_1ff",OBJ_TEXT, 0, Time[i2+3], High[i2]+120*Point);
       //    ObjectSetText("PUNA5_1ff", "(Min 16) Long: "+DoubleToStr(NormalizeDouble(High[i2]+60*Point,4),4), 17, "Impact", clrDarkGreen);
               if (iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,i2-1,0))>High[i2])    ObjectSet("PUNA5_1ff",OBJPROP_COLOR,clrGreen);
                 
              if (i2>3) {
             ObjectCreate("Ellipset"+DoubleToStr(i), OBJ_TRIANGLE, 0, Time[i2-3],  High[i2]-90*Point, Time[i2-3], High[i2]+420*Point, Time[i2], High[i2]);
             ObjectSet("Ellipset"+DoubleToStr(i),OBJPROP_COLOR,clrGray);
             ObjectSet("Ellipset"+DoubleToStr(i),OBJPROP_BACK,0);
             ObjectSet("Ellipset"+DoubleToStr(i),OBJPROP_WIDTH,1);
             ObjectSet("Ellipset"+DoubleToStr(i),OBJPROP_STYLE,1);
           }       
         }
         
      UFT2=UpFractalTime_2;
    
}




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

  
   j2=0;
   while (j2<500 ){
    j=j2+3; 
      if (iFractals(Symbol(),0,MODE_LOWER,j2)) 
         while (j<j2+26){
               if (stoch[j2]>stoch[j] && iFractals(Symbol(),0,MODE_LOWER,j) && Low[j2]<=Low[j]-10*Point ) break;
         j++;}
    if (iFractals(Symbol(),0,MODE_LOWER,j) && iFractals(Symbol(),0,MODE_LOWER,j2) && stoch[j2]>stoch[j]  && Low[j2]<=Low[j]-10*Point ) break;
        
          j2++;}  


if (j2<500 && iFractals(Symbol(),0,MODE_LOWER,j) && iFractals(Symbol(),0,MODE_LOWER,j2) && Low[j2]<=Low[j]-10*Point ) {LowFractalTime_2=iTime(NULL, 0,j2);    LowFractalTime_1=iTime(NULL, 0,j);    }


         


 i2=0;
   while (i2<500){
      i=i2+3;
      if (iFractals(Symbol(),0,MODE_UPPER,i2))     
      while (i<i2+26 ){
            if ( RSI2[i2]<RSI2[i] && iFractals(Symbol(),0,MODE_UPPER,i) && High[i2]>=High[i]+10*Point ) break;
         i++;}
      if (iFractals(Symbol(),0,MODE_UPPER,i)  && iFractals(Symbol(),0,MODE_UPPER,i2) && RSI2[i2]<RSI2[i] && High[i2]>=High[i]+10*Point ) break;
               i2++;}  


if (iFractals(Symbol(),0,MODE_UPPER,i)  && iFractals(Symbol(),0,MODE_UPPER,i2) &&  i2<500 && High[i2]>=High[i]+10*Point && RSI2[i2]<RSI2[i]) { UpFractalTime_2=iTime(NULL, 0,i2);    UpFractalTime_1=iTime(NULL, 0,i);   }
 
  
 
 
int keepj2=j+1;
int keepi2=i+1; 
 
  
   j2=keepj2;
   while (j2<500 ){
    j=j2+3; 
      if (iFractals(Symbol(),0,MODE_LOWER,j2)) 
         while (j<j2+26){
               if (stoch[j2]>stoch[j] && iFractals(Symbol(),0,MODE_LOWER,j) && Low[j2]<=Low[j]-10*Point && !(j2<7 && Low[j2-6]>Low[j2])) break;
         j++;}
    if (iFractals(Symbol(),0,MODE_LOWER,j) && iFractals(Symbol(),0,MODE_LOWER,j2) && stoch[j2]>stoch[j]  && Low[j2]<=Low[j]-10*Point && !(j2<7 && Low[j2-6]>Low[j2])) break;
        
          j2++;}  


if (j2<500 && Low[j2]<=Low[j]-10*Point  && !(j2<7 && Low[j2-6]>Low[j2])) {LowFractalTime_2=iTime(NULL, 0,j2);    LowFractalTime_1=iTime(NULL, 0,j);    }



 i2=keepi2;
   while (i2<500){
      i=i2+3;
      if (iFractals(Symbol(),0,MODE_UPPER,i2))     
      while (i<i2+26 ){
            if ( stoch[i2]<stoch[i] && iFractals(Symbol(),0,MODE_UPPER,i) && High[i2]>=High[i]+10*Point && !(i2<7 && High[i2-6]<High[i2])) break;
         i++;}
      if (iFractals(Symbol(),0,MODE_UPPER,i)  && iFractals(Symbol(),0,MODE_UPPER,i2) && stoch[i2]<stoch[i] && High[i2]>=High[i]+10*Point && !(i2<7 && High[i2-6]<High[i2])) break;
               i2++;}  


if (i2<500 && High[i2]>=High[i]+10*Point && !(i2<7 && High[i2-6]<High[i2])) { UpFractalTime_2=iTime(NULL, 0,i2);    UpFractalTime_1=iTime(NULL, 0,i);   }
 
 
 
/////////////////////////// 



  
   j2=1;
 while (j2<500 ){
    j=j2+23; 
      if (iFractals(Symbol(),0,MODE_LOWER,j2)) 
         while (j<j2+256){
               if (stoch[j2]<stoch[j] && iFractals(Symbol(),0,MODE_LOWER,j) && Low[j2]>=Low[j]+10*Point && stoch[j2]<10) break;
         j++;}
    if (iFractals(Symbol(),0,MODE_LOWER,j) && iFractals(Symbol(),0,MODE_LOWER,j2) && stoch[j2]<stoch[j]  && Low[j2]>=Low[j]+10*Point && stoch[j2]<10) break;
        
          j2++;}  


if (j2<500 && Low[j2]>=Low[j]+10*Point  && stoch[j2]<10) {LowFractalTime_2=iTime(NULL, 0,j2);    LowFractalTime_1=iTime(NULL, 0,j);    }




 if (j<500 && j<j2+256)   {ObjectDelete(0,"ZUNA3_2");
     ObjectCreate(0,"ZUNA3_2",OBJ_TREND,0,LowFractalTime_1,Low[j]-40* Point,LowFractalTime_2,Low[j2]-40* Point);
    ObjectSetInteger(0,"ZUNA3_2",OBJPROP_RAY_RIGHT,false);
         ObjectSet("ZUNA3_2",OBJPROP_COLOR,indicator_color7);
         ObjectSet("ZUNA3_2",OBJPROP_WIDTH, linethickness); 
         LFT2 = LowFractalTime_2;         
         }


 i2=1;
  while (i2<500){
      i=i2+23;
      if (iFractals(Symbol(),0,MODE_UPPER,i2))     
      while (i<i2+256 ){
            if ( stoch[i2]>stoch[i] && iFractals(Symbol(),0,MODE_UPPER,i) && High[i2]<=High[i]-10*Point && stoch[i2]>90 ) break;
         i++;}
      if (iFractals(Symbol(),0,MODE_UPPER,i)  && iFractals(Symbol(),0,MODE_UPPER,i2) && stoch[i2]>stoch[i] && High[i2]<=High[i]-10*Point && stoch[i2]>90) break;
               i2++;}  


if (i2<500 && High[i2]<=High[i]-10*Point && stoch[i2]>90) { UpFractalTime_2=iTime(NULL, 0,i2);    UpFractalTime_1=iTime(NULL, 0,i);   }
 
 
if (i<500 && i<i2+256  && stoch[i2]>80) {   ObjectDelete(0,"ZUNA3_1");
         ObjectCreate(0,"ZUNA3_1",OBJ_TREND,0,UpFractalTime_1,High[i]+40* Point,UpFractalTime_2,High[i2]+40* Point);
          ObjectSetInteger(0,"ZUNA3_1",OBJPROP_RAY_RIGHT,false);
         ObjectSet("ZUNA3_1",OBJPROP_COLOR,indicator_color7);
         ObjectSet("ZUNA3_1",OBJPROP_WIDTH, linethickness);
      UFT2=UpFractalTime_2; 

              }
               
               
}

               
   return(0);
  }
 


   void deletetxt1(string text){
   for(int iObj=ObjectsTotal()-1; iObj >= 0; iObj--){
      string   on = ObjectName(iObj);
      if(StringFind(on, text) == 0)  ObjectDelete(on);
}  }