Gone Too Far

(subject of my life)

It’s an interesting one. A wave structure has gone too far by plotting a driven thrust.

I auto-plot the Thrusts in purple.

The bottom color-changing line is called the Master. It is only affected by the Accelerations (green/orange diagonals and Thrusts).

A cascade is rare, but you should spot it within 3 hours of the last thrust – price going stubborn and bowing back to the terminal.

The upper line is the Directional logic. This one is also affected by displacements and Bollinger Band rejections.

When it plots yellow, both sides have the chance (not entirely equal) to grab the lead and print an Acceleration (Drive).

There is actually one other thing that can be useful sometimes. The CounterForce52 is set to 18 samples and it plots purple bars after a 93-pip range. After the first finished purple, you want to scale out / scale in in the following 10-15 pips.

//////////drive up         
      if (High[i]>L80[i] 
      && iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,5,i))-iLow(symbol,0,iLowest(symbol,0,MODE_LOW,10,i))>460*Point 
      && Close[i]>Close[i+10]
      && (High[i]>cover[i]-100*Point || High[i+1]>cover[i+1]-100*Point || High[i+2]>cover[i+2]-100*Point)
       && (MFI[i]>72 || MFI[i+1]>72 || MFI[i+2]>72)      
       && ((Low[i+5]>L80[i+5]-100*Point && Low[i+9]>L80[i+9]-100*Point && Low[i+8]>L80[i+8]-100*Point && Low[i+7]>L80[i+7]-100*Point && Low[i+6]>L80[i+6]-100*Point) || iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,5,i))-iLow(symbol,0,iLowest(symbol,0,MODE_LOW,10,i))>1100*Point)  
     && !hh[i] && !hh[i+1] && !hh[i+2] && !hh[i+3] && !hh[i+4] && !hh[i+5] && !hh[i+6]
        ){
                     ObjectCreate("Drive"+IntegerToString(i), OBJ_TREND, 0,  Time[iLowest(symbol,0,MODE_LOW,10,i)], iLow(symbol,0,iLowest(symbol,0,MODE_LOW,10,i)), Time[iHighest(symbol,0,MODE_HIGH,5,i)], iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,5,i)));
                     ObjectSetInteger(0,"Drive"+IntegerToString(i),OBJPROP_COLOR,clrSpringGreen);
                     ObjectSet("Drive"+IntegerToString(i),OBJPROP_BACK,1);
                     ObjectSet("Drive"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);
                     ObjectSet("Drive"+IntegerToString(i),OBJPROP_WIDTH,12);
                     
                     Drive[iHighest(symbol,0,MODE_HIGH,5,i)]=1;
                     Drive[i]=1;
                     }
   
   
   //////////Thrust up         
      if (i>0 && (Low[i+1]<iMA(symbol,0,8,0,MODE_EMA,PRICE_MEDIAN,i+1) || Low[i+2]<iMA(symbol,0,8,0,MODE_EMA,PRICE_MEDIAN,i+2)  || Low[i+3]<iMA(symbol,0,8,0,MODE_EMA,PRICE_MEDIAN,i+3) || Low[i+4]<iMA(symbol,0,8,0,MODE_EMA,PRICE_MEDIAN,i+4))
       && Low[i+1]>iMA(symbol,0,8,0,MODE_EMA,PRICE_MEDIAN,i+1)-100*Point 
       && Low[i+2]>iMA(symbol,0,8,0,MODE_EMA,PRICE_MEDIAN,i+2)-180*Point
       && High[i-1]<High[i] 
       && High[i]>cover[i]-200*Point 
       && Low[i]>L53[i]
       && L53[i]>L80[i]
        && Low[i+3]<iMA(symbol,0,8,0,MODE_EMA,PRICE_OPEN,i+3)
      // && High[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)-70*Point
       && Drive[ArrayMaximum(Drive,42,i+10)]>0
       && thrust[ArrayMinimum(thrust,52,i)]>=0
       && (Drive[ArrayMaximum(Drive,22,i)]==0 || High[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i))
        ){
                     ObjectCreate("Thrust"+IntegerToString(i), OBJ_TREND, 0,  Time[iLowest(symbol,0,MODE_LOW,5,i+1)], iLow(symbol,0,iLowest(symbol,0,MODE_LOW,5,i+1)), Time[iHighest(symbol,0,MODE_HIGH,2,i)], iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,i)));
                     ObjectSetInteger(0,"Thrust"+IntegerToString(i),OBJPROP_COLOR,clrMediumPurple);
                     ObjectSet("Thrust"+IntegerToString(i),OBJPROP_BACK,0);
                     ObjectSet("Thrust"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);
                     ObjectSet("Thrust"+IntegerToString(i),OBJPROP_WIDTH,12);
                     
                         if (High[i]>cover[i]-200*Point && High[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i)){
                            ObjectCreate("PINUSX"+IntegerToString(i),OBJ_TEXT, 0, Time[i+8],(Low[i]+High[i])/2+200*Point);
                           ObjectSetText("PINUSX"+IntegerToString(i),"Ding! Ding! Ding!", 26, "Impact", clrCrimson);}
                             
                        thrust[i]=-1;
                     }
           
      //////////LL
      if (i>0 && MFI[i]>19 && MFI[i]<68 
      && Drive[ArrayMinimum(Drive,28,i)]<0 
      && Low[i]==iLow(symbol,0,iLowest(symbol,0,MODE_LOW,40,i))
      && Low[i-1]>Low[i] && thrust[i]<1 && thrust[i+1]<1 && thrust[i+2]<1  && thrust[i-1]<1
      && L80[i]>Close[i]
      ){
                            ObjectCreate("PINUSXY"+IntegerToString(i),OBJ_TEXT, 0, Time[i],Low[i]-50*Point);
                           ObjectSetText("PINUSXY"+IntegerToString(i),"LL", 26, "Impact", clrCrimson);
                           ObjectCreate("PINUSXX"+IntegerToString(i),OBJ_TEXT, 2, Time[i],70);
                           ObjectSetText("PINUSXX"+IntegerToString(i),"S/L53+/S30+", 21, "Impact", clrCrimson);
                           if (ll[i+4]==true || ll[i+5]==true || ll[i+5]==true) ObjectSetText("PINUSXX"+IntegerToString(i),"S/E8!!!", 21, "Impact", clrCrimson);
         
         ll[i]=true;
                   
      }
      
      
      //////////HH
      if (i>0 
      && MFI[i]>40 && MFI[i]<85
      && Drive[ArrayMaximum(Drive,40,i)]>0 
      && High[i]==iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,36,i))
      && High[i-1]<=High[i]+20*Point && thrust[i]>-1 && thrust[i+1]>-1 && thrust[i+2]>-1  && thrust[i-1]>-1
      && L80[i]<L63[i]
      && (High[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)-20*Point || (High[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i)+20*Point && iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i)-iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i)>840*Point))
      && Drive[ArrayMaximum(Drive,3,i)]==0 
      ){
                            ObjectCreate("PINUSXY"+IntegerToString(i),OBJ_TEXT, 0, Time[i],High[i]+150*Point);
                           ObjectSetText("PINUSXY"+IntegerToString(i),"HH", 26, "Impact", clrDarkGreen);
                           hh[i]=true;
                           if (Drive[ArrayMaximum(Drive,28,i)]<=0) {ObjectSetText("PINUSXY"+IntegerToString(i),"HH", 26, "Impact", clrRed);
                           disp[i]=-1;
                           ObjectCreate("PINUSXX"+IntegerToString(i),OBJ_TEXT, 2, Time[i],80);
                           ObjectSetText("PINUSXX"+IntegerToString(i),"B/L63-", 21, "Impact", clrGreen);
                           }
                           else {ObjectCreate("PINUSXX"+IntegerToString(i),OBJ_TEXT, 2, Time[i],80);
                           ObjectSetText("PINUSXX"+IntegerToString(i),"B/21...42pips", 21, "Impact", clrGreen);}
                     }

The directional logic:

  dire[i]=dire[i+1];      
      master[i]=master[i+1];
   
   
      if (master[i]>0 && dire[i]==0 && Low[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i) && Close[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i)+100*Point && Open[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i)
   && MFI[i]>25)
     thrust[i]=1;     
   
       
      if (Drive[i]>0) dire[i]=1;
      if (Drive[i]<0) dire[i]=-1;
      
      if (thrust[i]<0) dire[i]=-1;
      if (thrust[i]>0) dire[i]=1;
   
      if (disp[i]>0) dire[i]=0;
      if (disp[i]<0) dire[i]=0;
   
   
      if (thrust[i]<0) master[i]=-1;
      if (thrust[i]>0) master[i]=1;
   
   
      if (thrust[i+5]>0 && thrust[i]>0) master[i]=1;
      if (thrust[i+5]<0 && thrust[i]<0) master[i]=-1;
      
      if (Drive[i+5]>0) master[i]=1;
      if (Drive[i+5]<0) master[i]=-1;
 if (i>0 && ExtATRBuffer3[i+4]==EMPTY_VALUE && ExtATRBuffer3[i+2]==EMPTY_VALUE && ExtATRBuffer3[i+3]==EMPTY_VALUE && 
 ExtATRBuffer3[i+1]>0 && ExtATRBuffer3[i+1]<200 && Close[i+2]>iMA(symbol,0,17,0,MODE_SMA,PRICE_MEDIAN,i+2)){ 
                     ObjectCreate("Scalein"+IntegerToString(i), OBJ_RECTANGLE, 0,  Time[i+7], High[i+1], Time[i+3], High[i]+200*Point);
                     ObjectSetInteger(0,"Scalein"+IntegerToString(i),OBJPROP_COLOR,clrRed);
                     ObjectSet("Scalein"+IntegerToString(i),OBJPROP_BACK,0);
                     ObjectSet("Scalein"+IntegerToString(i),OBJPROP_WIDTH,5); }
                     
 if (i>0 && ExtATRBuffer3[i+4]==EMPTY_VALUE && ExtATRBuffer3[i+3]==EMPTY_VALUE && 
 ExtATRBuffer3[i+1]<0 && ExtATRBuffer3[i+1]>-200 && High[i+2]-Low[i+2]<1100*Point && High[i+1]<iMA(symbol,0,17,0,MODE_SMA,PRICE_MEDIAN,i+1) ){ 
                     if (High[i+1]-Low[i+1]>1100*Point) ObjectCreate("Scalein"+IntegerToString(i), OBJ_RECTANGLE, 0,  Time[i+7], Close[i+1], Time[i+3], Close[i+1]-150*Point);  
                     else ObjectCreate("Scalein"+IntegerToString(i), OBJ_RECTANGLE, 0,  Time[i+7], Low[i+1], Time[i+3], Low[i+1]-150*Point);
                     ObjectSetInteger(0,"Scalein"+IntegerToString(i),OBJPROP_COLOR,clrGreen);
                     ObjectSet("Scalein"+IntegerToString(i),OBJPROP_BACK,0);
                     ObjectSet("Scalein"+IntegerToString(i),OBJPROP_WIDTH,5); }