Will Break Down

Not sure why they are keep on trying to put the price back into the ending diagonal (plum) thrust, but the break lower seems inevitable.

Well-rested market, the daily volatility is so low that it should start expanding soon

The red diagonal line is my “liquidity break”, and it works pretty well. Gonna have to face God at 1.1050 in the coming days for sure.

////looking for liquidity breaks "/\"
if (i>2 && Low[i]<Low[i+1] && Low[i]<Low[i+3] && Low[i]<Low[i-1])
{
  j=i-2;  
  if (iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,j))-Low[i]>930*Point  && High[j-1]<High[j]){ 
         ObjectCreate("Liquidityx"+i,OBJ_TREND,0,Time[i],Low[i],Time[iHighest(symbol,0,MODE_HIGH,2,j)],iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,j)));
         ObjectSetInteger(0,"Liquidityx"+i,OBJPROP_RAY_RIGHT,false);
         if (Low[i]==iLow(symbol,0,iLowest(symbol,0,MODE_LOW,7,i))) ObjectSet("Liquidityx"+i,OBJPROP_COLOR,clrGreen);
         else ObjectSet("Liquidityx"+i,OBJPROP_COLOR,clrYellow);
         if (iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,j))-Low[i]>1000*Point && iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,j))<iMA(symbol,0,9,0,MODE_EMA,PRICE_HIGH,iHighest(symbol,0,MODE_HIGH,2,j))+600*Point) ObjectSet("Liquidityx"+i,OBJPROP_COLOR,clrRed);
     //    if (High[j]>ExtLowerBuffer[j]) ObjectSet("Liquidityx"+i,OBJPROP_COLOR,clrGreen);
         
             if (High[i-1]-Low[i]>1300*Point) ObjectSet("Liquidityx"+i,OBJPROP_COLOR,clrGreen);
         ObjectSet("Liquidityx"+i,OBJPROP_WIDTH,9); 
         ObjectSet("Liquidityx"+i,OBJPROP_BACK,1); 
  
   if ((j>=1 && Low[j-1]==iLow(symbol,0,iLowest(symbol,0,MODE_LOW,5,j-1))) || (j>=2 && Low[j-2]==iLow(symbol,0,iLowest(symbol,0,MODE_LOW,5,j-2)))){ 
     if (j>=1) k=j-1;    
         if (Low[k+1]<Low[i]) ObjectCreate("Liquidityy"+j,OBJ_TREND,0,Time[iHighest(symbol,0,MODE_HIGH,2,j)],iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,j)),Time[iLowest(symbol,0,MODE_LOW,2,k+1)],iLow(symbol,0,iLowest(symbol,0,MODE_LOW,5,k+1)));
         else ObjectCreate("Liquidityy"+j,OBJ_TREND,0,Time[iHighest(symbol,0,MODE_HIGH,2,j)],iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,j)),Time[iLowest(symbol,0,MODE_LOW,2,k-1)],iLow(symbol,0,iLowest(symbol,0,MODE_LOW,2,k-1)));
         ObjectSetInteger(0,"Liquidityy"+j,OBJPROP_RAY_RIGHT,false);
         
         ObjectSet("Liquidityy"+j,OBJPROP_COLOR,clrMediumSlateBlue);
         ObjectSet("Liquidityy"+j,OBJPROP_WIDTH,6); 
         ObjectSet("Liquidityy"+j,OBJPROP_BACK,1); 
         }
         
    }     


Lots of Rap on album #67. Eminem and Xzibit are chipping in.

Stair-stepping

I’m not sure what you are going to be doing with all of this, but I decided to share; this is what I am currently preoccupied with.

Those orange triangles mark up stair-stepping breakout failures.

If I were screening for an apprentice, I would ask, What is 17 pips for the Euro?

The answer, of course, is that it is the size of one step. If someone said it meant about one-half of the Euro’s fluctuation size, I would probably pass them still.

When the RSI2 hits in the last 2%, you get the following values: 17 pips out is the next step. 22 pips out, strong fade, 27 pips out, a stair-step breakout is occurring. In the next 4 hours an adjustment can be made to the calculation’s base value, and there are MFI(7) filters applied.

///RSI2 steps up
 if (i>0 && RSI2[i]>98 && RSI2[i-1]<98 && iMFI(symbol,0,7,i)>69){
   j=i-1;
   while (j>i-4 && j>0){
      if (High[j]>High[i]) break;
   j--;}
   if (High[j]>High[i] && RSI2[j]<81) {
            ObjectCreate("Talm"+IntegerToString(j), OBJ_TEXT, indicator_window+1, Time[j], 40); 
            ObjectSetText("Talm"+IntegerToString(j), "C:"+DoubleToStr(NormalizeDouble(High[j]+170*Point,4),4), 21, "Impact", Navy); 
            ObjectCreate("Talmi"+IntegerToString(j), OBJ_TEXT, indicator_window+1, Time[j], 60); 
            ObjectSetText("Talmi"+IntegerToString(j), "S:"+DoubleToStr(NormalizeDouble(High[j]+220*Point,4),4), 21, "Impact", Crimson); 
            ObjectCreate("Talmin"+IntegerToString(j), OBJ_TEXT, indicator_window+1, Time[j], 20); 
            ObjectSetText("Talmin"+IntegerToString(j), "Br:"+DoubleToStr(NormalizeDouble(High[j]+270*Point,4),4)+"->W3C", 21, "Impact", Black); }
            
       else  {
            ObjectCreate("Talm"+IntegerToString(i), OBJ_TEXT, indicator_window+1, Time[i], 40); 
            ObjectSetText("Talm"+IntegerToString(i), "C:"+DoubleToStr(NormalizeDouble(High[i]+170*Point,4),4), 21, "Impact", Navy); 
            ObjectCreate("Talmi"+IntegerToString(i), OBJ_TEXT, indicator_window+1, Time[i], 60); 
            ObjectSetText("Talmi"+IntegerToString(i), "S:"+DoubleToStr(NormalizeDouble(High[i]+220*Point,4),4), 21, "Impact", Crimson); 
            ObjectCreate("Talmin"+IntegerToString(i), OBJ_TEXT, indicator_window+1, Time[i], 20); 
            ObjectSetText("Talmin"+IntegerToString(i), "Br:"+DoubleToStr(NormalizeDouble(High[i]+270*Point,4),4)+"->W3C", 21, "Impact", Black); 
                        if (i>2 && RSI2[i-1]<69 && iMFI(symbol,0,7,i-1)<83 && Close[i-2]<Close[i-1]){ 
               ObjectCreate("Talma"+IntegerToString(i), OBJ_TEXT, indicator_window+1, Time[i], 80); 
               ObjectSetText("Talma"+IntegerToString(i), "Sell4LL:"+DoubleToStr(NormalizeDouble(Close[i],4),4), 21, "Impact", Red); 
            }
         }
   }
   ///RSI2 steps down
    if (i>0 && RSI2[i]<2 && RSI2[i-1]>2 && iMFI(symbol,0,7,i)<31){
   j=i-1;
   while (j>i-4 && j>0){
      if (Low[j]<Low[i]) break;
   j--;}
   if (Low[j]<Low[i] ) {
            ObjectCreate("Talm"+IntegerToString(j), OBJ_TEXT, indicator_window+2, Time[j], 60); 
            ObjectSetText("Talm"+IntegerToString(j), "C:"+DoubleToStr(NormalizeDouble(Low[j]-170*Point,4),4), 21, "Impact", Navy); 
            ObjectCreate("Talmi"+IntegerToString(j), OBJ_TEXT, indicator_window+2, Time[j], 40); 
            ObjectSetText("Talmi"+IntegerToString(j), "B:"+DoubleToStr(NormalizeDouble(Low[j]-220*Point,4),4), 21, "Impact", Green); 
             ObjectCreate("Talmin"+IntegerToString(j), OBJ_TEXT, indicator_window+2, Time[j], 20); 
            ObjectSetText("Talmin"+IntegerToString(j), "Br:"+DoubleToStr(NormalizeDouble(Low[j]-270*Point,4),4)+"->W3C", 21, "Impact", Black);} 
            
       else 
        {
            ObjectCreate("Talm"+IntegerToString(i), OBJ_TEXT, indicator_window+2, Time[i], 60); 
            ObjectSetText("Talm"+IntegerToString(i), "C:"+DoubleToStr(NormalizeDouble(Low[i]-170*Point,4),4), 21, "Impact", Navy); 
            ObjectCreate("Talmi"+IntegerToString(i), OBJ_TEXT, indicator_window+2, Time[i], 40); 
            ObjectSetText("Talmi"+IntegerToString(i), "B:"+DoubleToStr(NormalizeDouble(Low[i]-220*Point,4),4), 21, "Impact", Green); 
            ObjectCreate("Talmin"+IntegerToString(i), OBJ_TEXT, indicator_window+2, Time[i], 20); 
            ObjectSetText("Talmin"+IntegerToString(i), "Br:"+DoubleToStr(NormalizeDouble(Low[i]-270*Point,4),4)+"->W3C", 21, "Impact", Black); 
            if (i>2 && RSI2[i-1]>31 && iMFI(symbol,0,7,i-1)>17 && Close[i-2]>Close[i-1]){ 
           //    ObjectCreate("Talma"+IntegerToString(i), OBJ_TEXT, indicator_window+2, Time[i], 20); 
            //   ObjectSetText("Talma"+IntegerToString(i), "BUY4HH:"+DoubleToStr(NormalizeDouble(Close[i],4),4), 21, "Impact", LimeGreen); 
            }
         }
   }

Now, the blue rectangles are 4 small-bodied candles next to each other (<5 pips typically).

 ///5x4 
 if (MathAbs(Open[i+3]-Close[i+3])<50*Point && MathAbs(Open[i+2]-Close[i+2])<50*Point && MathAbs(Open[i+1]-Close[i+1])<58*Point && MathAbs(Open[i]-Close[i])<50*Point){
     ObjectCreate("Ginner"+IntegerToString(i), OBJ_RECTANGLE, 0,  Time[i+3], iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,3,i)), Time[i], iLow(symbol,0,iLowest(symbol,0,MODE_HIGH,3,i)));
      ObjectSetInteger(0,"Ginner"+IntegerToString(i),OBJPROP_COLOR,clrBlue);
      ObjectSet("Ginner"+IntegerToString(i),OBJPROP_BACK,0);
      ObjectSet("Ginner"+IntegerToString(i),OBJPROP_WIDTH,5);   
 
 }

I find it interesting that swing highs tend to print 56-58 pips (middle number) above the high of the box(es).

They also seem to result in a new low printed below the blue boxes by 10-15 pips.

A Bit Dangerous

I don’t like this kind of sneaky thing. At the very edge of the pendulum (FFF++), you should see rejection and volatility.

Instead, we got a full consolidation (measured by the CI oscillator).

The problem is that this moved the edge of the pendulum from 1.1081 to 1.0916.

Yeah, it feels like I’ve seen this movie before. I’m going to sell below the low and try adding later, too.


Pros On Top

The professional volume prints (cyan) are all on the upside.

The upper trendline is about to be cracked. The next two weekly levels are 1.1234 and 1.1192.

Hmm… 1.1233 again – as for a volatility breakout potential. Of course, the market cannot consolidate if they want to keep that in place. W3M is at 1.1211 – a testament to the 3-day volatility collapse.

It is a wave 5 down in my opinion. The how low starts below 1.1262. The strong move down is looking like a money flow acceleration, meaning that you should see a lower low first (13 pips on average) followed by a thrust to the downside.


What To Know

I have given this lesson many times, the bumper line is a 100-pip displacement with a 20x 4H delay

 if (High[i+20]>iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,200,i+21))) upperbumper[i]=High[i+20]+1000*Point;
    if (Low[i+20]<iLow(symbol,0,iLowest(symbol,0,MODE_LOW,200,i+21))) lowerbumper[i]=Low[i+20]-1000*Point;

The head and the right shoulder tend to have this relationship on EUR/USD. I cannot say anything similar about any other instrument.

Now take a look at where we are, that teal trendline is the very defining low of this current uptrend, I left the connection points lit, so you can see where it started.

Pay attention to how meager the bounce has been.

What are they selling and what are they buying.

I would say that in the last 72 hours, they typically sold after the 3rd hourly close above the E-44 and bought after a red volume print, mostly the undercut.

Now, triangular bells / fractal evaluation.

A gray triangle warns that bull aggression should be measured next. The undercut would likely be 3-30 pips lower. If they bought 3 pips out, they are very aggressive; if they bought 30 pips lower, they are pretty relaxed.

The current squeeze would most likely result in a volatility breakout. The rectangular strips show the numbers where the break could occur, depending on the manner of the approach (outside an expanding BB30 will do), and then you should be targeting the W3M numbers.

These numbers get adjusted when the consolidation mean gets re-adjusted. Do you have any clue about the breakout numbers for any other instrument? I don’t. It took me 12 years to figure these out.

Keep Out, Lock Out

The one example that I had until today for a peak/low coinciding with a stochastic bar print (momentum present) was this:

Note that the market speed print (distance achieved outside the 30 BB) did not coincide with the actual low print. The thin magenta line was the 3-hour span that made a support box for the price in the future, insisting on going lower.

This raises the possibility of a legitimate high made today.

The momentum high and the separation high here are also separated, and there is still momentum showing at the peak, yet it is a tired move for an extra 6 pips thanks to inertia.

I believe that the new magenta box is a sell and may be a sell more than once.

What is important in terms of a swing high getting confirmed in is that the price would close 91+ pips below the 1.1572 high for the week.

Here

…is what I think will happen next.

I think a divergent leg up is missing (arrow).

Divergent in terms of the distance achieved beyond the upper 30BB. Since we are talking 20 pips or so (the scale is set back by 20 pips inside the BB) it would have to be multiple pushes up or a motion that starts the expansion gradually first.

Although after 120 hours of rest, the 1.1473 is no longer safe, I do not think this would get there. The game would start at 1.1429 and could get within 10 pips of the break level, so 1.1457. Can’t narrow it further. That high should be the rest before returning below the daily E-9.

The scissor between the 30-min E-414L and the S-712 is currently 91 pips. I have not seen a larger number. It would be merely impossible to cross. A major consolidation would be necessary below the E-9 before being able to cross that.

I am on the side of Brent Johnson, thinking that the Dollar would make a new higher high next. I think the 1.30-1.40 Euro calls are utter rubbish.

S.B.H.

A current version of the Stochastic Bars Hybrid.

If we get a move back up, I think it will be thrown into the brown box (the wick of the professional volume candle). Otherwise, the red strip is the main obstacle, but a fresh consolidation move it about.

//+------------------------------------------------------------------+
//+ Stochastic Bars Hybrid Current 04/2025                           +
//+------------------------------------------------------------------+
#property  copyright "Macdulio"
#property  link      "https://forexfore.blog/"

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Yellow
#property indicator_color2 Red
#property indicator_color3 Blue
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property indicator_maximum 1
#property indicator_minimum 0

extern int indicator_window = 1;
extern bool plot_r1_s1 = true;

double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double RSI2[];
//double ma[];

//
//
//
//
//

extern int    K_Period  = 25;
extern int    K_Period2  = 60;
extern int    K_Period3  = 100;
extern int    D_Period  = 3;
extern int    Slowing  = 3;
extern int    TopBorder=90;
extern int    BotBorder=10;
extern int    BotBorder2=5;
extern int    BotBorder3=3;
extern string TypeMA    = "SMA=0, EMA=1, SMMA=2, LWMA=3";
extern int    MAType    =  0;
//extern int    MAShift   =  0;
extern string TypePrice = "0 - Low/High, 1 - Close/Close";
extern int    PriceType =  0;
double ExtMapBuffer[];
//
//
//
//
//

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

bool starterup[], starterdn[];

int init()
{
   IndicatorBuffers(4);
      SetIndexBuffer(0,ExtMapBuffer1);
      SetIndexBuffer(1,ExtMapBuffer2);
      SetIndexBuffer(2,ExtMapBuffer3);
 //     SetIndexBuffer(3,ma);
      SetIndexStyle(0,DRAW_HISTOGRAM);
      SetIndexStyle(1,DRAW_HISTOGRAM);
      SetIndexStyle(2,DRAW_HISTOGRAM);
      
      
      
   return(0);
}

int start()
{ 
   double weight;
   int      counted_bars=IndicatorCounted();
   int      limit,i,i2,j,j2;
   string symbol = Symbol();
      
   
ArrayResize(RSI2, Bars);
ArrayInitialize(RSI2, 0);
ArrayResize(starterup, Bars);
ArrayInitialize(starterup, false);
ArrayResize(starterdn, Bars);
ArrayInitialize(starterdn, false);
ArrayResize(ExtMapBuffer, Bars);
ArrayInitialize(ExtMapBuffer, 0);
  
 double ATRA = 0;
   for (i=1; i<=3; i++){ 
     ATRA = ATRA+iATR(NULL,1440,14,i);}
 

   i=0;
   while (i<200){
      if (ChoppinessIndex(12*4,i)>53 && ChoppinessIndex(12*4,i+1)<53) break;
   i++;
  }
 

   
   if (i<200) weight=(iHigh(symbol,15,i)+iLow(symbol,15,i))/2;

deletetxt1("First");
deletetxt1("Winner");
deletetxt1("Dinner");
deletetxt1("Pinner");
deletetxt1("Bacadi");
deletetxt1("Dalton");

for(i = 220; i >= 0; i--){
 RSI2[i]=iRSI(symbol,0,2,PRICE_MEDIAN,i);
}
   

   if(counted_bars < 0) return(-1);
   if(counted_bars>0) counted_bars--;
         limit = Bars-counted_bars;

 //    for(i = limit; i >= 0; i--) ma[i]=iMA(NULL,0,MAPeriod,MAShift,MAType,PriceType,i);
   for(i = limit; i >= 0; i--)
   {  
      double St=iStochastic(NULL,0,K_Period,D_Period,Slowing,MAType,PriceType,MODE_MAIN,i);
      double St2=iStochastic(NULL,0,K_Period2,D_Period,Slowing,MAType,PriceType,MODE_MAIN,i);
      double St3=iStochastic(NULL,0,K_Period3,D_Period,Slowing,MAType,PriceType,MODE_MAIN,i);
      ExtMapBuffer1[i] = EMPTY_VALUE;
      ExtMapBuffer2[i] = EMPTY_VALUE;
      ExtMapBuffer3[i] = EMPTY_VALUE;
        // if (St>BotBorder && St<TopBorder) ExtMapBuffer1[i] = 1;
         if (St2<BotBorder2 && (St<BotBorder || St3<BotBorder3)) ExtMapBuffer2[i] = 1;
         if (St>TopBorder) ExtMapBuffer3[i] = 1;       
   }
   

for(i = 1920; i >= 0; i--){
 ///starter candle up
 if (High[i+1]-Open[i+1]>40*Point && High[i+1]-Close[i+1]>40*Point && High[i+2]<High[i+1] && High[i]<High[i+1] &&
 High[i+1]>iMA(symbol,0,16,0,MODE_EMA,PRICE_MEDIAN,i+1)
 && iHigh(symbol,0,i+1)>iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,7,i+2))
 && Close[i]<Close[i+1]
 ){
    ObjectCreate("Dalton"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+1], High[i+1]+20*Point); 
        ObjectSetText("Dalton"+DoubleToStr(i), "ST", 22, "Impact", DimGray);
   starterup[i+1]=true;
 }
 
 ///runner down
 if (starterup[i+2]
 && iLow(symbol,0,i)<iLow(symbol,0,iLowest(symbol,0,MODE_LOW,7,i+1))-20*Point
 ){
//    ObjectCreate("Dalton"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+2], iLow(symbol,0,iLowest(symbol,0,MODE_LOW,14,i+1))+50*Point); 
//        ObjectSetText("Dalton"+DoubleToStr(i), "RUNNER", 22, "Impact", Crimson );
 }
 
 ///eraser down
// if (starterup[i+2]
// && iLow(symbol,0,i)>=iLow(symbol,0,iLowest(symbol,0,MODE_LOW,7,i+1))-20*Point
// ){
//    ObjectCreate("Dalton"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+2], iLow(symbol,0,iLowest(symbol,0,MODE_LOW,14,i+1))+50*Point); 
//        ObjectSetText("Dalton"+DoubleToStr(i), "ERASER", 22, "Impact", Green);
// }
 
 
 ///hot fractal on top (must overhedge for the break)
     if (iFractals(symbol,0,MODE_UPPER,i) && ExtMapBuffer3[i]!=EMPTY_VALUE  && ExtMapBuffer3[i+1]!=EMPTY_VALUE 
     //&& ExtMapBuffer3[i+2]!=EMPTY_VALUE 
     && (Close[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i) || Close[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1))
     
     )   {
        ObjectCreate("Daltoni"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+5], High[i]+20*Point); 
        ObjectSetText("Daltoni"+DoubleToStr(i), "CAT V BACK", 22, "Impact", DarkGreen);
 }
 
 ///hot fractal on bottom (must overhedge for the break)
     if (iFractals(symbol,0,MODE_LOWER,i) && ExtMapBuffer2[i]!=EMPTY_VALUE  && ExtMapBuffer2[i+1]!=EMPTY_VALUE 
     //&& ExtMapBuffer2[i+2]!=EMPTY_VALUE 
     && (Close[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i) || Close[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+1))
     
     )   {
        ObjectCreate("Daltoni"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+5], Low[i]-20*Point); 
        ObjectSetText("Daltoni"+DoubleToStr(i), "CAT V BACK", 22, "Impact", Crimson);
 }
 
 
 ///starter candle dn
 if (Open[i+1]-Low[i+1]>50*Point && Close[i+1]-Low[i+1]>50*Point && Low[i+2]>Low[i+1] && Low[i]>Low[i+1] &&
 Low[i+1]<iMA(symbol,0,16,0,MODE_EMA,PRICE_MEDIAN,i+1)
 && iLow(symbol,0,i+1)<iLow(symbol,0,iLowest(symbol,0,MODE_LOW,7,i+2))
  && Close[i]>Close[i+1]
 ){
    ObjectCreate("Dalton"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+1], Low[i+1]-30*Point); 
        ObjectSetText("Dalton"+DoubleToStr(i), "ST", 22, "Impact", DimGray);
   starterdn[i+1]=true;
 }
 
 
 
 ///rat poison going up
 if (Close[i]>Open[i] && Close[i+1]>Open[i+1] 
 && (Close[i+2]>Open[i+2] || Close[i+2]>Low[i+2]+120*Point) 
 && High[i]-Low[i]<360*Point
 && High[i+2]-Low[i+2]<340*Point
 && High[i]>High[i+1]
 && High[i+1]>High[i+2]
 && Low[i+1]>Low[i+2]
 && Low[i+3]>Low[i+2]
 && (Low[i+9]>iMA(symbol,0,8,0,MODE_EMA,PRICE_OPEN,i+9) || High[i+9]<iMA(symbol,0,8,0,MODE_EMA,PRICE_OPEN,i+9)) 
 && ((Open[i+2]-Low[i+2]>50*Point && Close[i+2]-Low[i+2]>50*Point && Low[i+2]<iMA(symbol,0,16,0,MODE_EMA,PRICE_OPEN,i+2) && iMA(symbol,0,16,0,MODE_EMA,PRICE_OPEN,i)<iMA(symbol,0,8,0,MODE_EMA,PRICE_MEDIAN,i) && High[i+2]-Low[i+2]<400*Point) 
  || (Open[i+3]-Low[i+3]>50*Point && Close[i+3]-Low[i+3]>50*Point && Low[i+3]<iMA(symbol,0,16,0,MODE_EMA,PRICE_OPEN,i+3)  && iMA(symbol,0,16,0,MODE_EMA,PRICE_OPEN,i)<iMA(symbol,0,8,0,MODE_EMA,PRICE_MEDIAN,i) && High[i+3]-Low[i+3]<400*Point)  )
){
       ObjectCreate("Firstrat"+IntegerToString(i), OBJ_TREND, 0,  Time[i+3], Open[i]-40*Point, Time[i], Open[i]-40*Point);
       ObjectSetInteger(0,"Firstrat"+IntegerToString(i),OBJPROP_COLOR,clrYellow);
                     ObjectSet("Firstrat"+IntegerToString(i),OBJPROP_BACK,0);
                     ObjectSet("Firstrat"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);
                     ObjectSet("Firstrat"+IntegerToString(i),OBJPROP_WIDTH,3);  
                     
                      ObjectCreate("Firstrats"+IntegerToString(i), OBJ_TREND, 0,  Time[i+3], Close[i]-20*Point, Time[i], Close[i]-20*Point);
       ObjectSetInteger(0,"Firstrats"+IntegerToString(i),OBJPROP_COLOR,clrGreen);
                     ObjectSet("Firstrats"+IntegerToString(i),OBJPROP_BACK,0);
                     ObjectSet("Firstrats"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);
                     ObjectSet("Firstrats"+IntegerToString(i),OBJPROP_WIDTH,6); 
                     
        ObjectCreate("Bacadiy"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+6], Close[i]+20*Point);  
          ObjectSetText("Bacadiy"+DoubleToStr(i), "RPBUY @"+DoubleToStr(NormalizeDouble(Close[i]-20*Point,4),4), 17, "Impact", MediumOrchid);                  
   if (High[i]-Low[i]<140*Point && High[i+1]-Low[i+1]<140*Point && High[i+2]-Low[i+2]<140*Point) ObjectSetText("Bacadiy"+DoubleToStr(i), "NOT ENOUGH VOLATILIY", 17, "Impact", Gray);   
   if (High[i]-iLow(symbol,0,iLowest(symbol,0,MODE_LOW,200,i))<800*Point) ObjectSetText("Bacadiy"+DoubleToStr(i), "NO RAT, NOT OUTSIDE...", 17, "Impact", DimGray);                  
 }

/// clutch on the upside
   if (Open[i]<Close[i] && High[i]>High[i+1] && Open[i+1]>Close[i+1] && Open[i+2]<Close[i+2] && Open[i+3]<Close[i+3]  && Open[i+4]<Close[i+4]
         && High[i+2]>High[i+3] && High[i+3]>High[i+4] && Low[i+2]>Low[i+3] && Low[i+3]>Low[i+4]
     //  && High[i+2]-Low[i+2]<240*Point
     && (Close[i]>Open[i+1] || Close[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1))
       && High[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)
       //&& Close[i]>High[i]-(High[i]-Low[i])/5
       // && High[i+1]>weight+960*Point 
         ){
           ObjectCreate("Bacadiy"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+6], Close[i]+20*Point);  
             ObjectSetText("Bacadiy"+DoubleToStr(i), "CLUTCH!!!", 47, "Impact", MediumSeaGreen);                  
             
                  ObjectCreate("Pinner"+IntegerToString(i),OBJ_TREND,0, Time[i+4], Low[i+4], Time[i], Close[i]);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_COLOR,Khaki); 
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_WIDTH,15);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);
   }



/// clutch on the downide
   if (Open[i]>Close[i] && Low[i]<Low[i+1] && Open[i+1]<Close[i+1] && Open[i+2]>Close[i+2] && Open[i+3]>Close[i+3]  && Open[i+4]>Close[i+4]
         && Low[i+2]<Low[i+3] && Low[i+3]<Low[i+4] && Low[i+4]<Low[i+5] && High[i+2]<High[i+3] && High[i+3]<High[i+4] && High[i+4]<High[i+5]
        && Low[i]<Low[i+2]
        && High[i+4]-Low[i+4]<250*Point
        //&& Low[i+1]<weight-960*Point 
         ){
           ObjectCreate("Bacadiy"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+6], Close[i]+20*Point);  
             ObjectSetText("Bacadiy"+DoubleToStr(i), "CLUTCH!!!", 47, "Impact", Crimson);                  
             
                 ObjectCreate("Pinner"+IntegerToString(i),OBJ_TREND,0, Time[i+4], High[i+4], Time[i], Close[i]);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_COLOR,Khaki); 
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_WIDTH,15);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);
   }


///rat poison going down
 if (Close[i]<Open[i] && Close[i+1]<Open[i+1] 
 && (Close[i+2]<Open[i+2] || Close[i+2]<High[i+2]-120*Point) 
 && High[i]-Low[i]<360*Point
 && High[i]<High[i+1]
 && High[i+1]<High[i+2]
 && Low[i+1]<Low[i+2]
 //&& Low[i+3]<Low[i+2]
 && ((High[i+2]-Open[i+2]>50*Point && High[i+2]-Close[i+2]>50*Point && High[i+2]>iMA(symbol,0,16,0,MODE_EMA,PRICE_MEDIAN,i+2) && iMA(symbol,0,16,0,MODE_EMA,PRICE_MEDIAN,i)>iMA(symbol,0,8,0,MODE_EMA,PRICE_OPEN,i) && High[i+2]-Low[i+2]<400*Point) 
  || (High[i+3]-Open[i+3]>50*Point && High[i+3]-Close[i+3]>50*Point && Low[i+3]>iMA(symbol,0,16,0,MODE_EMA,PRICE_MEDIAN,i+3)  && iMA(symbol,0,16,0,MODE_EMA,PRICE_MEDIAN,i)>iMA(symbol,0,8,0,MODE_EMA,PRICE_OPEN,i) && High[i+3]-Low[i+3]<400*Point)  
 )){
       ObjectCreate("Firstrat"+IntegerToString(i), OBJ_TREND, 0,  Time[i+3], Open[i]+40*Point, Time[i], Open[i]+40*Point);
       ObjectSetInteger(0,"Firstrat"+IntegerToString(i),OBJPROP_COLOR,clrYellow);
                     ObjectSet("Firstrat"+IntegerToString(i),OBJPROP_BACK,0);
                     ObjectSet("Firstrat"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);
                     ObjectSet("Firstrat"+IntegerToString(i),OBJPROP_WIDTH,3);  
                     
                      ObjectCreate("Firstrats"+IntegerToString(i), OBJ_TREND, 0,  Time[i+3], Close[i]+20*Point, Time[i], Close[i]+20*Point);
       ObjectSetInteger(0,"Firstrats"+IntegerToString(i),OBJPROP_COLOR,clrRed);
                     ObjectSet("Firstrats"+IntegerToString(i),OBJPROP_BACK,0);
                     ObjectSet("Firstrats"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);
                     ObjectSet("Firstrats"+IntegerToString(i),OBJPROP_WIDTH,6); 
                     
        ObjectCreate("Bacadiy"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+6], Close[i]-20*Point);  
          ObjectSetText("Bacadiy"+DoubleToStr(i), "RPSELL @"+DoubleToStr(NormalizeDouble(Close[i]+20*Point,4),4), 17, "Impact", MediumOrchid);                  
          if (High[i]-Low[i]<140*Point && High[i+1]-Low[i+1]<140*Point && High[i+2]-Low[i+2]<140*Point) ObjectSetText("Bacadiy"+DoubleToStr(i), "NOT ENOUGH VOLATILIY", 17, "Impact", Gray);                 
         if (iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,200,i))-Low[i]<800*Point) ObjectSetText("Bacadiy"+DoubleToStr(i), "NO RAT, NOT OUTSIDE...", 17, "Impact", DimGray);                  
         
         if (High[i+1]-Low[i+1]>200*Point && Low[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+1))
         ObjectSetText("Bacadiy"+DoubleToStr(i), "RPSELL INTO BB30 ONLY from "+DoubleToStr(NormalizeDouble(Close[i]+20*Point,4),4), 17, "Impact", MediumOrchid);                       
   
 }
 
 
 
 ///cat exit on top
 if (High[i]>=iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,20,i+1))-40*Point && 
 (Low[i]<iMA(symbol,0,8,0,MODE_EMA,PRICE_OPEN,i)+40*Point 
 ||  Low[i+1]<iMA(symbol,0,8,0,MODE_EMA,PRICE_OPEN,i+1)+40*Point)
   && 
 i>0 && iFractals(symbol,0,MODE_UPPER,i) && ExtMapBuffer3[i]==EMPTY_VALUE && ExtMapBuffer3[i-1]==EMPTY_VALUE){
    j=i+2;
    while (j<i+30){
      if (iFractals(symbol,0,MODE_UPPER,j) && (ExtMapBuffer3[j]!=EMPTY_VALUE || ExtMapBuffer3[j-1]!=EMPTY_VALUE)) break;
      j++;
    }
    if (iFractals(symbol,0,MODE_UPPER,j) && j<i+30){
      
      ObjectCreate("Bacadiy"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+3], High[i]+20*Point);  
          ObjectSetText("Bacadiy"+DoubleToStr(i), "CAT EXIT @"+DoubleToStr(NormalizeDouble(High[i],4),4), 27, "Impact", Magenta); 
            if (i>1 && Low[i-2]<Low[i-1]){ 
      ObjectDelete("Pinner"+IntegerToString(i));
      ObjectCreate("Pinner"+IntegerToString(i),OBJ_TREND,0, Time[i], High[i], Time[i-2], Low[i-2]);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_COLOR,Magenta); 
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_WIDTH,5);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);}
          
          if (High[i]-Close[i]>500*Point && High[i]-Open[i]>500*Point) ObjectSetText("Bacadiy"+DoubleToStr(i), "Runway Candle @"+DoubleToStr(NormalizeDouble(High[i],4),4), 17, "Impact", Green); 
          if (High[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i) && High[i]>iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,20,i+1))) ObjectSetText("Bacadiy"+DoubleToStr(i), "TEMP CAT EXIT @"+DoubleToStr(NormalizeDouble(High[i],4),4)+" Back In at 3/4 BB", 17, "Impact", Orange); 
          ObjectCreate("Bacadiyy"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+3], iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_MAIN,i)-80*Point);  
          ObjectSetText("Bacadiyy"+DoubleToStr(i), "-> BB30L-10 RES, (BB30L+10 means break)", 17, "Impact", Crimson); 
          if (High[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)) ObjectSetText("Bacadiyy"+DoubleToStr(i), "-> doji queue, resumption", 17, "Impact", OrangeRed);
      
          
    } 
    
     
 }
 
 ///cat exit on bottom
 if (Low[i]<=iLow(symbol,0,iLowest(symbol,0,MODE_LOW,20,i)) &&     
 i>0 && iFractals(symbol,0,MODE_LOWER,i) && ExtMapBuffer2[i]==EMPTY_VALUE && ExtMapBuffer2[i-1]==EMPTY_VALUE){
    j=i+2;
    while (j<i+30){
      if (iFractals(symbol,0,MODE_LOWER,j) && (ExtMapBuffer2[j]!=EMPTY_VALUE || ExtMapBuffer2[j-1]!=EMPTY_VALUE)) break;
      j++;
    }
    if (iFractals(symbol,0,MODE_LOWER,j) && j<i+30){
      
      ObjectCreate("Bacadiy"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+3], Low[i]+20*Point);  
          ObjectSetText("Bacadiy"+DoubleToStr(i), "CAT EXIT @"+DoubleToStr(NormalizeDouble(Low[i],4),4), 27, "Impact",Magenta);                  
            ObjectCreate("Bacadiyy"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+3], iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_MAIN,i)+80*Point);  
          ObjectSetText("Bacadiyy"+DoubleToStr(i), "-> BB30L+10 SUP, (BB30L-10 means break)", 17, "Impact", Green); 
          if (i>2){ 
      ObjectDelete("Pinner"+IntegerToString(i));
      ObjectCreate("Pinner"+IntegerToString(i),OBJ_TREND,0, Time[i], Low[i], Time[i-2], High[i-2]);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_COLOR,Magenta); 
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_WIDTH,15);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);
      
  } 
          
    } 
     
 }
 
 ///support made
 if (High[i+1]-Low[i+1]>140*Point && Close[i+1]<Open[i+1] 
 && Low[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+1) 
 && Close[i]>Open[i] && Close[i]-Open[i]>(Open[i+1]-Close[i+1])*.51)
 {
    if (Open[i+1]-Close[i+1]<50*Point) ObjectCreate("Winner"+IntegerToString(i),OBJ_TREND,0, Time[i+7], Low[i+1]+20*Point, Time[i+1], Low[i+1]);
       else ObjectCreate("Winner"+IntegerToString(i),OBJ_TREND,0, Time[i+7], Close[i+1]+20*Point, Time[i+1], Close[i+1]);
      ObjectSet("Winner"+IntegerToString(i),OBJPROP_COLOR,clrBlue); 
      ObjectSet("Winner"+IntegerToString(i),OBJPROP_WIDTH,8);
      ObjectSet("Winner"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);
      }
      
  ///support with doji made
 if (High[i+2]-Low[i+2]>140*Point && Close[i+2]<Open[i+2] 
 && Low[i+2]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+2) 
 && (Close[i+1]-Open[i+1]<20*Point && Open[i+1]-Close[i+1]<20*Point)
 && Close[i]>Open[i] && Close[i]-Open[i]>(Open[i+2]-Close[i+2])*.51)
 {
    if (Open[i+1]-Close[i+1]<50*Point) ObjectCreate("Winner"+IntegerToString(i),OBJ_TREND,0, Time[i+7], Low[i+1]+20*Point, Time[i+1], Low[i+1]);
       else ObjectCreate("Winner"+IntegerToString(i),OBJ_TREND,0, Time[i+7], Close[i+2]+20*Point, Time[i+1], Close[i+2]);
      ObjectSet("Winner"+IntegerToString(i),OBJPROP_COLOR,clrBlue); 
      ObjectSet("Winner"+IntegerToString(i),OBJPROP_WIDTH,8);
      ObjectSet("Winner"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);
      }     
      
   
  
 ///s0 made
 if (Low[i+1]<Low[i+2] && High[i+1]-Low[i+1]>140*Point && Close[i+1]<Open[i+1] && Low[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+1) && Close[i]>Open[i] && Close[i]-Open[i]>(Open[i+1]-Close[i+1])*.55)
 {
      ObjectCreate("Winner"+IntegerToString(i),OBJ_TREND,0, Time[i+7], Close[i+1]+20*Point, Time[i+1], Close[i+1]);
      ObjectSet("Winner"+IntegerToString(i),OBJPROP_COLOR,clrGray); 
      ObjectSet("Winner"+IntegerToString(i),OBJPROP_WIDTH,8);
      ObjectSet("Winner"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);
      }
       
      
      
  ///resistance made
 if (High[i+1]-Low[i+1]>120*Point && Close[i+1]>Open[i+1] 
 && High[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1) && Close[i]<Open[i] && Open[i]-Close[i]>(Close[i+1]-Open[i+1])*.55)
 {
      if (Close[i+1]-Open[i+1]<50*Point) ObjectCreate("Winner"+IntegerToString(i),OBJ_TREND,0, Time[i+7], High[i+1]-20*Point, Time[i+1], High[i+1]);
    else 
      
      ObjectCreate("Winner"+IntegerToString(i),OBJ_TREND,0, Time[i+7], Close[i+1]-20*Point, Time[i+1], Close[i+1]);
      ObjectSet("Winner"+IntegerToString(i),OBJPROP_COLOR,clrRed); 
      ObjectSet("Winner"+IntegerToString(i),OBJPROP_WIDTH,8);
      ObjectSet("Winner"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);
      }     
      
     ///resistance made (dark cloud)
 if (i>0 && High[i]-Low[i]>210*Point && Close[i+1]>Open[i+1] && High[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Close[i]<Open[i] && Open[i]-Close[i]>(Close[i+1]-Open[i+1])*.25 && Close[i-1]<Low[i+1])
 {
      ObjectCreate("Winner"+IntegerToString(i),OBJ_TREND,0, Time[i+7], Close[i+1]-20*Point, Time[i+1], Close[i+1]);
      ObjectSet("Winner"+IntegerToString(i),OBJPROP_COLOR,clrRed); 
      ObjectSet("Winner"+IntegerToString(i),OBJPROP_WIDTH,8);
      ObjectSet("Winner"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);
      }        
      
      
 
   ///resistance with doji made
 if (High[i+2]-Low[i+2]>140*Point && Close[i+2]>Open[i+2] && High[i+2]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+2) 
 && (Close[i+1]-Open[i+1]<20*Point && Open[i+1]-Close[i+1]<20*Point)
 && Close[i]<Open[i] && Open[i]-Close[i]>(Close[i+1]-Open[i+1])*.55)
 {
      ObjectCreate("Winner"+IntegerToString(i),OBJ_TREND,0, Time[i+8], Close[i+2]-20*Point, Time[i+2], Close[i+2]);
      ObjectSet("Winner"+IntegerToString(i),OBJPROP_COLOR,clrRed); 
      ObjectSet("Winner"+IntegerToString(i),OBJPROP_WIDTH,8);
      ObjectSet("Winner"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);
      }     
      
 
  ///r0 made
 if (High[i+1]>High[i+2] && High[i+1]-Low[i+1]>140*Point && Close[i+1]>Open[i+1] && High[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1) && Close[i]<Open[i] && Open[i]-Close[i]>(Close[i+1]-Open[i+1])*.55)
 {
      ObjectCreate("Winner"+IntegerToString(i),OBJ_TREND,0, Time[i+7], Close[i+1]-20*Point, Time[i+1], Close[i+1]);
      ObjectSet("Winner"+IntegerToString(i),OBJPROP_COLOR,clrGray); 
      ObjectSet("Winner"+IntegerToString(i),OBJPROP_WIDTH,8);
      ObjectSet("Winner"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);
      }     
 
 ///45+pips rejection
  if (i>1 && iFractals(symbol,0,MODE_UPPER,i) && High[i]==iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,200,i))
  && High[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)
  ){
  if (High[i]-Low[i-1]>450*Point){ 
      ObjectCreate("Pinner"+IntegerToString(i),OBJ_TREND,0, Time[i], High[i], Time[i-1], Low[i-1]);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_COLOR,Magenta); 
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_WIDTH,5);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);}
  if (Low[i-2]<Low[i-1] && High[i]-Low[i-2]>450*Point){ 
      ObjectDelete("Pinner"+IntegerToString(i));
      ObjectCreate("Pinner"+IntegerToString(i),OBJ_TREND,0, Time[i], High[i], Time[i-2], Low[i-2]);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_COLOR,Magenta); 
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_WIDTH,5);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);}
      if (ExtMapBuffer3[i]==EMPTY_VALUE) ObjectSet("Pinner"+IntegerToString(i),OBJPROP_WIDTH,15);
  } 
 
   if (i>2 && iFractals(symbol,0,MODE_LOWER,i) && Low[i]==iLow(symbol,0,iLowest(symbol,0,MODE_LOW,200,i))
   && Low[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i)
   ){
  if (High[i-1]-Low[i]>450*Point){ 
      ObjectCreate("Pinner"+IntegerToString(i),OBJ_TREND,0, Time[i], Low[i], Time[i-1], High[i-1]);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_COLOR,Magenta); 
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_WIDTH,5);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);}
  if (High[i-2]>High[i-1] && High[i-2]-Low[i]>450*Point){ 
      ObjectDelete("Pinner"+IntegerToString(i));
      ObjectCreate("Pinner"+IntegerToString(i),OBJ_TREND,0, Time[i], Low[i], Time[i-2], High[i-2]);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_COLOR,Magenta); 
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_WIDTH,5);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);}
  if (High[i-3]>High[i-1] && High[i-3]-Low[i]>310*Point){ 
      ObjectDelete("Pinner"+IntegerToString(i));
      ObjectCreate("Pinner"+IntegerToString(i),OBJ_TREND,0, Time[i], Low[i], Time[i-3], High[i-3]);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_COLOR,Magenta); 
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_WIDTH,5);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);}
      if (ExtMapBuffer2[i]==EMPTY_VALUE) ObjectSet("Pinner"+IntegerToString(i),OBJPROP_WIDTH,15);
  }  
}
   


deletetxt1("Eclipse");



   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;
         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++;}  

    

///first lower continuation divergence         
                if (Period()==60 && plot_r1_s1){  
           if (j2>2) {
             ObjectCreate("Eclipset"+DoubleToStr(j), OBJ_TRIANGLE, 0, Time[j2-3],  Low[j2]+90*Point, Time[j2-3], Low[j2]-420*Point, Time[j2], Low[j2]);
             ObjectSet("Eclipset"+DoubleToStr(j),OBJPROP_COLOR,clrNavy);
             ObjectSet("Eclipset"+DoubleToStr(j),OBJPROP_BACK,0);
             ObjectSet("Eclipset"+DoubleToStr(j),OBJPROP_WIDTH,1);
             ObjectSet("Eclipset"+DoubleToStr(j),OBJPROP_STYLE,1);
        
            ObjectCreate("Eclipse3_3ffx",OBJ_TEXT, 0, Time[j2-3], Low[j2]-400*Point);
            ObjectSetText("Eclipse3_3ffx", " S1:"+DoubleToStr(NormalizeDouble(Low[j2]-410*Point,4),4), 17, "Impact", clrWhite);
             ObjectCreate("Eclipse3_3ffy",OBJ_TEXT, 0, Time[j2-3], Low[j2]-400*Point);
            ObjectSetText("Eclipse3_3ffy", "S1:"+DoubleToStr(NormalizeDouble(Low[j2]-410*Point,4),4), 17, "Impact", clrBlue);
            
            
            
              ObjectCreate("Eclipse33_3ffx",OBJ_TEXT, 0, Time[j2-3], Low[j2]-ATRA*0.43);
            ObjectSetText("Eclipse33_3ffx", " S2:"+DoubleToStr(NormalizeDouble(Low[j2]-ATRA*0.43,4),4), 17, "Impact", clrWhite);
             ObjectCreate("Eclipse33_3ffy",OBJ_TEXT, 0, Time[j2-3], Low[j2]-ATRA*0.43);
            ObjectSetText("Eclipse33_3ffy", "S2:"+DoubleToStr(NormalizeDouble(Low[j2]-ATRA*0.43,4),4), 17, "Impact", clrBlue);
           
           }
           
                 }             
     

 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++;}  

 

///first upper continuation divergence    
      if (Period()==60 && plot_r1_s1){       
             if (i2>2) {
             ObjectCreate("Eclipset"+DoubleToStr(i), OBJ_TRIANGLE, 0, Time[i2-3],  High[i2]-90*Point, Time[i2-3], High[i2]+420*Point, Time[i2], High[i2]);
             ObjectSet("Eclipset"+DoubleToStr(i),OBJPROP_COLOR,clrNavy);
             ObjectSet("Eclipset"+DoubleToStr(i),OBJPROP_BACK,0);
             ObjectSet("Eclipset"+DoubleToStr(i),OBJPROP_WIDTH,1);
             ObjectSet("Eclipset"+DoubleToStr(i),OBJPROP_STYLE,1);
        
            ObjectCreate("Eclipse3_1ffx",OBJ_TEXT, 0, Time[i2-3], High[i2]+450*Point);
            ObjectSetText("Eclipse3_1ffx", " R1:"+DoubleToStr(NormalizeDouble(High[i2]+410*Point,4),4), 17, "Impact", clrWhite);
             ObjectCreate("Eclipse3_1ffy",OBJ_TEXT, 0, Time[i2-3], High[i2]+450*Point);
            ObjectSetText("Eclipse3_1ffy", "R1:"+DoubleToStr(NormalizeDouble(High[i2]+410*Point,4),4), 17, "Impact", clrBlue);
           
           
            ObjectCreate("Eclipse33_1ffx",OBJ_TEXT, 0, Time[i2-3], High[i2]+ATRA*0.43+40*Point);
            ObjectSetText("Eclipse33_1ffx", " R2:"+DoubleToStr(NormalizeDouble(High[i2]+ATRA*0.43,4),4), 17, "Impact", clrWhite);
             ObjectCreate("Eclipse33_1ffy",OBJ_TEXT, 0, Time[i2-3], High[i2]+ATRA*0.43+40*Point);
            ObjectSetText("Eclipse33_1ffy", "R2:"+DoubleToStr(NormalizeDouble(High[i2]+ATRA*0.43,4),4), 17, "Impact", clrBlue);
           
           }   
               
          }   
 
deletetxt1("BverD");

if (Close[0]>weight+960*Point || Close[0]<weight-960*Point) 
ObjectCreate("BverD",OBJ_LABEL,indicator_window, 0,0);
ObjectSet("BverD",OBJPROP_CORNER,2);
    ObjectSet("BverD",OBJPROP_XDISTANCE,20);
  ObjectSet("BverD",OBJPROP_YDISTANCE,27);
ObjectSetText("BverD","Parabolic Market?",40,"Impact",DeepPink);



 
 ///parabolic rectangles
      ObjectCreate("Dinner", OBJ_RECTANGLE, 0,  Time[1], weight+960*Point, Time[5], weight+4960*Point);
      ObjectSetInteger(0,"Dinner",OBJPROP_COLOR,clrChartreuse);
      ObjectSet("Dinner",OBJPROP_BACK,1);
      ObjectSet("Dinner",OBJPROP_WIDTH,5);   
      ObjectCreate("Dinner_25", OBJ_TEXT, 0, Time[0], weight+960*Point+80*Point); 
      ObjectSetText("Dinner_25", "                              BRK: "+DoubleToStr(NormalizeDouble(weight+960*Point,4),4), 14, "Arial Black", Green);

 
      ObjectCreate("Dinners", OBJ_RECTANGLE, 0,  Time[1], weight-960*Point, Time[5], weight-4960*Point);
      ObjectSetInteger(0,"Dinners",OBJPROP_COLOR,clrRed);
      ObjectSet("Dinners",OBJPROP_BACK,1);
      ObjectSet("Dinners",OBJPROP_WIDTH,5);   
 
     ObjectCreate("Dinner_26", OBJ_TEXT, 0, Time[0], weight-960*Point+30*Point); 
      ObjectSetText("Dinner_26", "                              BRK: "+DoubleToStr(NormalizeDouble(weight-960*Point,4),4), 14, "Arial Black", Red);

   
   return(0);
}


 
double ChoppinessIndex(int period, int bar)
  {
    double Low0 = 0, High0 = 0, Close1 = 0;
    double TrueRangeLow = 0, TrueRangeHigh = 0, TrueRangeSum = 0, Input = 0;
    double PeriodTrueRangeLow = 999999999, PeriodTrueRangeHigh = 0, PeriodTrueRange = 0;

    for(int k=bar; k<bar+period; k++)
    {
      Low0   = iLow(NULL,15,k);
      High0  = iHigh(NULL,15,k);
      Close1 = iClose(NULL,15,k+1);

      if (Low0<Close1)  TrueRangeLow  = Low0;  else TrueRangeLow  = Close1;
      if (High0>Close1) TrueRangeHigh = High0; else TrueRangeHigh = Close1;
      
      if (TrueRangeLow <PeriodTrueRangeLow)  PeriodTrueRangeLow  = TrueRangeLow;  // find true low of period
      if (TrueRangeHigh>PeriodTrueRangeHigh) PeriodTrueRangeHigh = TrueRangeHigh; // find true high of period

      TrueRangeSum += TrueRangeHigh;
      TrueRangeSum -= TrueRangeLow;
    }

    PeriodTrueRange = PeriodTrueRangeHigh - PeriodTrueRangeLow;
    if (PeriodTrueRange==0) PeriodTrueRange = MathPow(10, -12); // avoid possibility of division by zero
    Input = TrueRangeSum / PeriodTrueRange;
    return ((logN(Input, 10, MathPow(10, -12)) / logN(period, 10, MathPow(10, -12))) * 100);
  }
  

double logN(double x, double base, double epsilon)
  {
    double integer = 0.0;
    if ((x < 1) || (base < 1)) return(0);

    while (x < 1)
    {
      integer -= 1;
      x *= base;
    }
  
    while (x >= base)
    {
      integer += 1;
      x /= base;
    }
  
    double partial = 0.5;
    x *= x;
    double decimal = 0.0;

    while (partial > epsilon)
    {
      if (x >= base)
      {
        decimal += partial;
        x = x / base;
      }
      partial *= 0.5;
      x *= x;
    }
    
    return (integer + decimal);
  } 


double StdDev(int shift, int samples)
  {
  double x0=0, x1=0, x2=0;
  for (int m=0; m<samples; m++)
    {
    x0 = ExtMapBuffer[m+shift];
    x1 += x0;
    x2 += MathPow(x0,2);
    }
  return(MathSqrt((x2-(x1*x1/samples))/(samples-1))); // minimum samples is 2, enforced in the init section
}

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

Sequence

When you get a momentum loss (CAT EXIT) combined with a counter-directional move of strength (thick magenta diagonal), the next call point is the 30-sample BB plus 5 pips.

From there, there are different paths to take. My guess is a back test of the 1.1150-1.1130 zone. This would also coincide with the 120 BB (blue line) top. A leg up is a good likelihood.

///45+pips rejection
  if (i>1 && iFractals(symbol,0,MODE_UPPER,i) && High[i]==iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,200,i))
  && High[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)
  ){
  if (High[i]-Low[i-1]>450*Point){ 
      ObjectCreate("Pinner"+IntegerToString(i),OBJ_TREND,0, Time[i], High[i], Time[i-1], Low[i-1]);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_COLOR,Magenta); 
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_WIDTH,5);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);}
  if (Low[i-2]<Low[i-1] && High[i]-Low[i-2]>450*Point){ 
      ObjectDelete("Pinner"+IntegerToString(i));
      ObjectCreate("Pinner"+IntegerToString(i),OBJ_TREND,0, Time[i], High[i], Time[i-2], Low[i-2]);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_COLOR,Magenta); 
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_WIDTH,5);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);}
      if (ExtMapBuffer3[i]==EMPTY_VALUE) ObjectSet("Pinner"+IntegerToString(i),OBJPROP_WIDTH,15);
  } 
 
   if (i>2 && iFractals(symbol,0,MODE_LOWER,i) && Low[i]==iLow(symbol,0,iLowest(symbol,0,MODE_LOW,200,i))
   && Low[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i)
   ){
  if (High[i-1]-Low[i]>450*Point){ 
      ObjectCreate("Pinner"+IntegerToString(i),OBJ_TREND,0, Time[i], Low[i], Time[i-1], High[i-1]);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_COLOR,Magenta); 
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_WIDTH,5);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);}
  if (High[i-2]>High[i-1] && High[i-2]-Low[i]>450*Point){ 
      ObjectDelete("Pinner"+IntegerToString(i));
      ObjectCreate("Pinner"+IntegerToString(i),OBJ_TREND,0, Time[i], Low[i], Time[i-2], High[i-2]);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_COLOR,Magenta); 
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_WIDTH,5);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);}
  if (High[i-3]>High[i-1] && High[i-3]-Low[i]>310*Point){ 
      ObjectDelete("Pinner"+IntegerToString(i));
      ObjectCreate("Pinner"+IntegerToString(i),OBJ_TREND,0, Time[i], Low[i], Time[i-3], High[i-3]);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_COLOR,Magenta); 
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_WIDTH,5);
      ObjectSet("Pinner"+IntegerToString(i),OBJPROP_RAY_RIGHT,false);}
      if (ExtMapBuffer2[i]==EMPTY_VALUE) ObjectSet("Pinner"+IntegerToString(i),OBJPROP_WIDTH,15);
  }  
}


Usually, a disco track / EDM becomes popular. This time, they started listening to an Oasis parody.

Parabolic Features

The Clutch

This is where they put the gear in parabolic.

/// clutch on the upside
   if (Open[i]<Close[i] && High[i]>High[i+1] && Open[i+1]>Close[i+1] && Open[i+2]<Close[i+2] && Open[i+3]<Close[i+3]  && Open[i+4]<Close[i+4]
         && High[i+2]>High[i+3] && High[i+3]>High[i+4] && Low[i+2]>Low[i+3] && Low[i+3]>Low[i+4] && High[i+1]>weight+960*Point){
           ObjectCreate("Bacadiy"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+6], Close[i]+20*Point);  
             ObjectSetText("Bacadiy"+DoubleToStr(i), "CLUTCH!!!", 47, "Impact", MediumSeaGreen);                  
   }

The exit needs to meet 2 criteria: the move has to end in a capitulation that bounces back 100+ pips within 2 hours, and the momentum has to be gone = absence of a stochastic bar.

A couple of things I did not know the right answer to until today:

The flick flack around the BB is not a prerequisite; a rat poison sequence followed by a clutch is enough. However, I think you want to see the clutch pressed far enough from the consolidation weight i.e., past the “180 break” line. This means 96 pips.

As long as there is momentum still, further capituation moves can & will follow.

Now, let’s talk about the other catastrophic feature, the CAT HOT V. This is a fractal that is preceded by stochastic bar prints.

The take back of the high/low is a continuation entry, although when things aren’t hopping, price may need to return twice before the ball gets rolling again.

The V works wonders during a thrust/capitulation move.

 ///hot fractal on top (must overhedge for the break)
     if (iFractals(symbol,0,MODE_UPPER,i) && ExtMapBuffer3[i]!=EMPTY_VALUE  && ExtMapBuffer3[i+1]!=EMPTY_VALUE 
     //&& ExtMapBuffer3[i+2]!=EMPTY_VALUE 
     && (Close[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i) || Close[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1))
     
     )   {
        ObjectCreate("Daltoni"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+5], High[i]+20*Point); 
        ObjectSetText("Daltoni"+DoubleToStr(i), "CAT V BACK", 22, "Impact", DarkGreen);
 }

Now, check out what happens when a capitulation is qualified & sticks.

Within 9 hours, a consolidation takes place, and the E-16 gets touched. Since during the parabolic move, full consolidation does not

There may or may not be an echo move triggered here. Obviously, the capitulation / catastrophic terminal isn’t gonna be reached, but the price could come within 10 pips of it.

After the E-16 affair and/or the lastful reach, I would say the next call point would exceed the 30BB on the opposite end by 10 pips.

I liked today’s price action as well as the new lessons I was taught.