V-Top, V-Bottom

The confirmation of a V-top / V-bottom is the price making it to the other side of the E-9 within 9-10 hours.

 ///V-top
 if (iFractals(symbol,0,MODE_UPPER,i) && High[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i) && High[i]>iLow(symbol,0,iLowest(symbol,0,MODE_LOW,10,i))+820*Point  && RSI2[i]>96){
      
      ObjectCreate("Talmz"+IntegerToString(i), OBJ_TEXT, 0, Time[i], High[i]+50*Point); 
      ObjectSetText("Talmz"+IntegerToString(i), "V-TOP?", 21, "Impact", Navy); 
 }

 ///V-bottom

 if (iFractals(symbol,0,MODE_LOWER,i) && Low[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i)+150*Point && Low[i]<iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,12,i))-820*Point && RSI2[i]<4){
      
      ObjectCreate("Talmz"+IntegerToString(i), OBJ_TEXT, 0, Time[i], Low[i]-60*Point); 
      ObjectSetText("Talmz"+IntegerToString(i), "V-BOTTOM?", 21, "Impact", Navy); 
 }

V-Top, V-Bottom
TGT1: E16
TGT2: STAIR-STEP BREAKOUT LEVEL
TGT3: THIN YELLOW LINE / 82 pips from the 12-sample high

E-16 HL2 in black

Downgrade

Where do you think they are gapping this to?

1: The trendline. 2: The Server (E-44) 3: The stronghold of the professional shorts. X: All of the above

How do you think the professionals (cyan highlights) would react?

1: Say thank you, I can put on a larger size at a discount. 2: Call Mommy, fold and run for the hills.

Something has changed; the downside would be cut short, but not here.

It is not the first time I had this idea about keeping in/out. The BB in the image is a 120-sample HL2 with a 100-hour delay. I think, this news flipped the game from keeping out to keeping in. 1.1050 I believe is the next point of call still.


Managed to collect enough images for album #66. #68 already has 40 minutes of new material.

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