Trending

The manner of the return into the compression box is the difference between a trending and a trading market.

You need a big hump – 62+ directional pips within 10 hours.

Upon returning into the sub-31-zone, the new, trending direction would have to stay above the oppressed direction for a bit. I use the RSI2 reading for a bit of disqualification – and the oppressed side has to be oppressed all along (10 hours).

 if (
   ExtATRBuffer2[i+1]<31 && RSI2[i]<90 &&
   ExtATRBuffer[i+2]>31 && ExtATRBuffer[i+1]<31 && ExtATRBuffer[i]<28 && ExtATRBuffer[ArrayMaximum(ExtATRBuffer,10,i)]>62){
          ObjectCreate("LINUS"+IntegerToString(i),OBJ_VLINE,1, Time[i], 0);
            ObjectSet("LINUS"+IntegerToString(i),OBJPROP_COLOR,clrBrown);
            ObjectSet("LINUS"+IntegerToString(i),OBJPROP_WIDTH,6);
            ObjectSet("LINUS"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);
             ObjectSet("LINUS"+IntegerToString(i),OBJPROP_BACK,1);
             
             ObjectCreate("LINUSZ"+IntegerToString(i),OBJ_TEXT, 1, Time[i],55);
             ObjectSetText("LINUSZ"+IntegerToString(i),"Cut/OH: "+DoubleToStr(NormalizeDouble(High[i],4),4)+"+", 26, "Impact", clrCrimson);
             
             }
             
   if (
   ExtATRBuffer[i+1]<31 && RSI2[i]>8 &&
   ExtATRBuffer2[i+2]>31 && ExtATRBuffer2[i+1]<31 && ExtATRBuffer2[i]<28 && ExtATRBuffer2[ArrayMaximum(ExtATRBuffer2,10,i)]>62){
          ObjectCreate("LINUS"+IntegerToString(i),OBJ_VLINE,1, Time[i], 0);
            ObjectSet("LINUS"+IntegerToString(i),OBJPROP_COLOR,clrLimeGreen);
            ObjectSet("LINUS"+IntegerToString(i),OBJPROP_WIDTH,6);
            ObjectSet("LINUS"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);
             ObjectSet("LINUS"+IntegerToString(i),OBJPROP_BACK,1);
             
             ObjectCreate("LINUSZ"+IntegerToString(i),OBJ_TEXT, 1, Time[i],55);
            ObjectSetText("LINUSZ"+IntegerToString(i),"Cut/OH: "+DoubleToStr(NormalizeDouble(Low[i],4),4)+"-", 26, "Impact", clrGreen);
            
             
             }   

This was my project for the day:

10th Hour

There goes the capitulation. 10 hours+ without RSI2 greater than 92.

On the 12th hour NFP.

ObjectCreate("PENELOPED"+6,OBJ_LABEL,2, 0,0);
  ObjectSet("PENELOPED"+6,OBJPROP_CORNER,1);
    ObjectSet("PENELOPED"+6,OBJPROP_XDISTANCE,0);
  ObjectSet("PENELOPED"+6,OBJPROP_YDISTANCE,20);
  ObjectSet("PENELOPED"+6,OBJPROP_COLOR,clrGray); 
  ObjectSetText("PENELOPED"+6, DoubleToStr(NormalizeDouble(ExtATRBuffer[ArrayMaximum(ExtATRBuffer,10,0)],2),1),19,"Arial Black");
  if (ExtATRBuffer[ArrayMaximum(ExtATRBuffer,10,0)]<35 && RSI2[ArrayMaximum(RSI2,10,0)]>8) {ObjectSetText("PENELOPED"+6,"TBUY "+DoubleToStr(NormalizeDouble(ExtATRBuffer2[ArrayMaximum(ExtATRBuffer2,10,0)],2),1),19,"Arial Black");
   ObjectSet("PENELOPED"+6,OBJPROP_COLOR,clrGreen); 
  }
  

  ObjectCreate("PENELOPED"+9,OBJ_LABEL,2, 0,0);
  ObjectSet("PENELOPED"+9,OBJPROP_CORNER,3);
  ObjectSet("PENELOPED"+9,OBJPROP_XDISTANCE,0);
  ObjectSet("PENELOPED"+9,OBJPROP_YDISTANCE,20);
  ObjectSet("PENELOPED"+9,OBJPROP_COLOR,clrGray); 
  ObjectSetText("PENELOPED"+9,DoubleToStr(NormalizeDouble(ExtATRBuffer2[ArrayMaximum(ExtATRBuffer2,10,0)],2),1),19,"Arial Black");
  if (ExtATRBuffer2[ArrayMaximum(ExtATRBuffer2,10,0)]<35 && RSI2[ArrayMaximum(RSI2,10,0)]<92) {ObjectSetText("PENELOPED"+9,"TSELL "+DoubleToStr(NormalizeDouble(ExtATRBuffer2[ArrayMaximum(ExtATRBuffer2,10,0)],2),1),19,"Arial Black");
   ObjectSet("PENELOPED"+9,OBJPROP_COLOR,clrRed); 
  }

Which leaves us with what?

All systems go would be CF1 and CF2 of the same color and Trending Sell / Trending Buy approval from Vax.

CF1 has not changed, until an ECHO or a BBECHO print on the downside, this remains RED. In fact, a fresh ECHO print was made in the hour before the NFP reinforcing the signal.

CF2 has finally changed, it is now red with absolute volatility expansion breaches at over 49.

For the first time since the 1.12 top.

There is a gray volatility compression divergence,

They have utilized the Money Flow reversal zone’s breakout option.

A 3.49x stretch was achieved, which could trigger a mean reversion to the daily E-9. It is going to be at around 1.1060 on Monday, moving about 20 pips a day lower. The bear’s game would be not letting the mean reversion play out by shorting about 40 pips lower than the E9 of Lows.

The Swing High has finally been printed, and a continuation could come 40-56 higher than this week’s low (typically 53/56 pips) which would put the price back at 1.10 at some point.

One last remark is that the daily stochastic reading is too high for today to be the swing low. It was at 13.6 and the optimal range to hit is 8.5 to 4, but of course, this Oscillator is bound to move lower, but typically a lower low is in the cards before a move back up.

1.1008-1.1017 is the optimal zone for a bear to reload.

In the meantime, I made a Synth album to listen to.

The Third Wave

(Second divergent hump that is).

Trading is a never-ending learning curve. I have felt a million times in my life that I had enough edge to make money indefinitely, then the market throws something at you have never seen before. You must evolve.

There are these textbook nonsense ideas about what is a trend. You cannot call anything a trend until you start measuring for volatility compression. That is what my Vax tool is for, but some oscillators like an RSI2 HL2 can be also used for further confirmation. Yup, continuous buying/selling hits close to home.

As Benjamin has pointed out, there’s always a higher timeframe that would be against the narrative you are trying to vindicate. This higher high higher low definition is pure nonsense. By the time you identify a matching pair, the flag could be over with.

Forget the fractal nature, as a trader you would never need to go beyond the 1H metric – or below 30M for that matter.

A EurUsd trending market is without counter-directional moves sustaining for more than an hour (2 candles) beyond 31 pips and having done this for at least 10 hours. The confirmation is when the RSI2 is unable to penetrate the last 10% of the full range.

Here as soon as you could call a trend the trend gets called off.

Understand how black and white this is: once the Expansionary Measuring Leg has printed, there are two options: they get in within the pullback not exceeding 13 pips for a wave 3 up or they let it slide back and close by more than 15. If the latter happens, you have to scale back in your short hedge with the back and fill and slap on some extra to make it worthwhile.

Buying the kickback or selling EM1 failure. The yellow diagonal shows the EM1 failure’s kickback – scale in there, pip by pip (10-13 pips again – how interesting!).

As you can see, if an RSI2 90 (or 10) print happens at the beginning of a trending move, it cancels it whilst appearing after prolonged trending, and it triggers the last, capitulation move.

The last leg is normally 35-53 pips long.

On the upside the 3 legs had a rather similar look – in the opposite color.

When I say, I am a music producer, do not think I am a rapist lacer that is kicking females to shreds.

As for the Wave 2 up, 1.1076 is option #1 and 1.1129 is option #2

2nd Money Flow Reversal zone was hit.

Market Mechanics

I can tell you how things work for real, but not sure what you are going to do with it without plots and proper indicators.

First, get used to the letters. M stands for measuring leg, the EM is an Expansionary Measuring Leg (override) and D is the Divergent leg.

The brown diagonal line is the 10-pips kick back of the EM on the downside that started this prolonged move down.

Yes, this wave is complete to the downside.

Now, why did I text to my coworker today at the open that this could come down to 1.1050?

These were the levels to work with based on the last condolidation mean:

These numbers I refer to as W3C(close end) for the first number and W3F(far end) for the second number. M would be the middle.

When you get a follow-through (up to 13 pips kickback bought) of the EM, you are in a Wave 3.

If you are the visual type, the orange square is the likely target area (bell curve).

This of course is carried over statistical knowledge.

As for finding the consolidation mean, I would use 12-sample CI on the hourly, but for better accuracy, I have actually reached after 15-minute data and half that candle to find the value (48-sample of course). A cross-over above 53 is considered a full charge and 65+ would mean an extra high charge.

I know, this has nothing to do with Inner City Mama’s lectures.

Now to provide you with some garden variety trading stuff, here is the latest Shapiro.

& I have a tendency to pull out my remaining hair every time I hear about Umar Ashraf and his Tradezella.

Who are these people, what do they want and why don’t they just roll over and die???!

Trading menu

ML squeeze breakout w/ 0.2/2 trail -> volatility expansion reversal moratorium

EML1 breakout (kick back <15 pips) trail TGT W3M

EML1 failure (kickback >15 pips) scale in – TGT 50 pips (not preferred near the E50)
EML2 kickback 18, 28, 38 pips size based on control functions alignment TGT 50, 60, 70 pips

A Wave 4 up would break above the SOB confirming that the volatility compression program was turned off (allowing) for a pullback greater than 31 pips. A Wave 5 down would likely print a lower low, but not necessarily by much.

Volatility Expansion

Full title: The Counter-productive Nature of Sudden Volatility Expansion.

Start by accepting the idea of measuring volatility in 1.5-hour terms. Yes, you must go down to 30 mins to do this.

dvol[i]=NormalizeDouble((iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,i+1))-Low[i])*10000,2);
uvol[i]=NormalizeDouble((High[i]-(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,2,i+1))))*10000,2);

The BB filter used is a 60-sample (2SD) over medians.

Off we go.

There are 3 different ways to hit the limit.

An absolute limit is the diagonal going beyond 49 pips outside the bands.

if (uvol[i]>49 || (uvol[i]>32 && High[i]<iBands(symbol,0,60,2,0,PRICE_MEDIAN,MODE_UPPER,i))) ObjectSetText("Citera"+IntegerToString(i), "          "+NormalizeDouble((High[i]-(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,2,i+1))))*10000,2)+" SELL", 18, "Impact", Gold);

if (dvol[i]>49 || (dvol[i]>32 && Low[i]>iBands(symbol,0,60,2,0,PRICE_MEDIAN,MODE_LOWER,i))) ObjectSetText("Citera"+IntegerToString(i), "         "+NormalizeDouble((iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,i+1))-Low[i])*10000,2)+" BUY", 18, "Impact", Gold);

The second way is staying within the bands, but exceeding 32 pips (fluctuation size).

if (uvol[i]>49 || (uvol[i]>32 && High[i]<iBands(symbol,0,60,2,0,PRICE_MEDIAN,MODE_UPPER,i))) 

if (dvol[i]>49 || (dvol[i]>32 && Low[i]>iBands(symbol,0,60,2,0,PRICE_MEDIAN,MODE_LOWER,i))) 

The third way (A & B version) is when the first candle of the diagonal exceeds 22 pips and you get a new 6-sample high or the first low of the diagonal is outside the bands.

if (High[i+3]-Low[i+3]>220*Point && iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,i))==iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,6,i)))

 if (High[i+3]-Low[i+3]>220*Point && Low[i+3]<iBands(symbol,0,60,2,0,PRICE_MEDIAN,MODE_UPPER,i+3))

Tadaa… new directional logic. Almost entirely based on volatility surges.

Weighting

What is up?

For one thing, the lack of supply.

It may not sound like much, but a 22+ pips 30-min candle is rare.

Here’s one.

…and above is Friday’s. Like a left and a right shoulder.

Of course, if it plays out. What normally happens after an extended range is an additional 100-pip move, so a 1.1310+ move may be in the cards.

Currently, in terms of bias, I keep track of two different systems.

My Echo system shows a buy (control function 1)

(the red strike out is too eager selling, not enough separation from the 8 EMO, the yellow divergence has the same issue)

Control function #2 also had the last print in yellow for a buy.

Being all out short may not be the best idea here. We could see a bow back to the lower Bollinger for a “h” print.


Yup, #27.

Doja Cat

First about volatility whips.

When they turn off the buy/sell program, the market – for once – gets a free, balancing move.

It is highlighted by my pitstop dots here. The 3rd close below the 8 EMO gets a red dot and happens to be the end of the first leg of the V, then the counter move does the same thing on the other side with the 3rd hour’s green dot being the end of the V. Of course, there is a larger version of this in the daily chart. A true market clash, a calibration and possibly figuring the right volume/distance for the next compression act.

I currently only have a pimped-out Doji version here, sorry for that. The idea of 2 and 6 dojis back provides some context for plausible support/resistance starting where. Just comment out whatever you don’t want to be plotted.

//+------------------------------------------------------------------+
//|                                                Dojis By_Macdulio |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Macdulio"
#property link      "https://forexfore.blog"


#property description "Change the parameters for"
#property description "desired results if in need to."

extern int lookback = 300;
//---- input parameters for regular doji
extern int       MinLengthOfUpTail=5; //candle with upper tail equal or more than this will show up
extern int       MinLengthOfLoTail=6; //candle with lower tail equal or more than this will show up
extern int    MaxLengthOfBody=16; //candle with body less or equal with this will show up
     
//---- input parameters for dragonfly doji
extern int       MaxLengthOfUpTail1=10; //candle with upper tail equal or more than this will show up
extern int       MinLengthOfLoTail1=13; //candle with lower tail equal or more than this will show up
extern int    MaxLengthOfBody1=11; //candle with body less or equal with this will show up

//---- input parameters for gravestone doji
extern int       MinLengthOfUpTail2=13; //candle with upper tail equal or more than this will show up
extern int       MaxLengthOfLoTail2=10; //candle with lower tail equal or more than this will show up
extern int    MaxLengthOfBody2=20; //candle with body less or equal with this will show up
double pt=0.00001;

#property indicator_chart_window
#property indicator_buffers 9



 


double doji[];
double doji2[];
double EU[],ED[], exit[], e8h[];
double EU2[],ED2[];
double dojir[],dojig[], dojib[];
double RSI2[];

//---- indicator buffers

  double xLo[]; 
//+------------------------------------------------------------------+
int init()  {
//+------------------------------------------------------------------+
  string short_name;
  
   SetIndexStyle(0,DRAW_ARROW,EMPTY,13,Orange);
   SetIndexBuffer(0,exit);
  
 SetIndexStyle(1,DRAW_ARROW,EMPTY,8,Orchid);
   SetIndexBuffer(1,doji);
  SetIndexArrow(1,108); 
  SetIndexStyle(2,DRAW_ARROW,EMPTY,10,White);
     SetIndexBuffer(2,doji2);
  SetIndexArrow(2,82);     

  SetIndexStyle(3,DRAW_ARROW,EMPTY,10,Red);
     SetIndexBuffer(3,dojir);
  SetIndexArrow(3,82);  
  
    SetIndexStyle(4,DRAW_ARROW,EMPTY,10,Green);
     SetIndexBuffer(4,dojig);
  SetIndexArrow(4,82);  
  
      SetIndexStyle(5,DRAW_ARROW,EMPTY,10,Blue);
     SetIndexBuffer(5,dojib);
  SetIndexArrow(5,82);  
  
     SetIndexStyle(6,DRAW_LINE,EMPTY,7,Magenta);
   SetIndexBuffer(6,e8h);
  
      SetIndexBuffer(7,EU);
    SetIndexBuffer(8,ED);  
//---- drawing settings
    SetIndexStyle(7,DRAW_ARROW,EMPTY,7,Yellow);
    SetIndexArrow(7,119);
    SetIndexStyle(8,DRAW_ARROW,EMPTY,7,Yellow);
    SetIndexArrow(8,119);
  
    SetIndexBuffer(9,EU2);
    SetIndexBuffer(10,ED2);  
//---- drawing settings
    SetIndexStyle(9,DRAW_ARROW,EMPTY,13,OrangeRed);
    SetIndexArrow(9,119);
    SetIndexStyle(10,DRAW_ARROW,EMPTY,13,OrangeRed);
    SetIndexArrow(10,119);
    
   
    ArrayResize(dojir, lookback);  
  ArrayInitialize(dojir, EMPTY_VALUE);  
      ArrayResize(dojig, lookback);  
  ArrayInitialize(dojig, EMPTY_VALUE);
         ArrayResize(dojib, lookback);  
  ArrayInitialize(dojib, EMPTY_VALUE);
   ArrayResize(doji, lookback);  
     ArrayInitialize(dojib, EMPTY_VALUE);
   ArrayResize(exit, lookback); 
  ArrayInitialize(exit, EMPTY_VALUE);
     ArrayResize(doji2, lookback);  
  ArrayInitialize(doji2, 0);
       ArrayResize(RSI2, lookback);         
 ArrayInitialize(RSI2, EMPTY_VALUE);  
ArrayResize(EU, lookback+30);         
 ArrayInitialize(EU, EMPTY_VALUE); 
ArrayResize(ED, lookback+30);         
 ArrayInitialize(ED, EMPTY_VALUE); 
ArrayResize(EU2, lookback+30);         
 ArrayInitialize(EU2, EMPTY_VALUE); 
ArrayResize(ED2, lookback+30);         
 ArrayInitialize(ED2, EMPTY_VALUE); 
 ArrayResize(e8h, Bars);         
 ArrayInitialize(e8h, EMPTY_VALUE); 
  short_name="Dojis";
  IndicatorShortName(short_name);
  IndicatorDigits(5);
  
  return(0);
}

//+------------------------------------------------------------------+
int start()   {
//+------------------------------------------------------------------+
  
  int j;
 string symbol = Symbol();

if (Period()==1440){
//---- input parameters for regular doji
MinLengthOfUpTail=5; //candle with upper tail equal or more than this will show up
MinLengthOfLoTail=5; //candle with lower tail equal or more than this will show up
MaxLengthOfBody=150; //candle with body less or equal with this will show up
     
//---- input parameters for dragonfly doji
MaxLengthOfUpTail1=700; //candle with upper tail equal or more than this will show up
MinLengthOfLoTail1=13; //candle with lower tail equal or more than this will show up
MaxLengthOfBody1=150; //candle with body less or equal with this will show up

//---- input parameters for gravestone doji
MinLengthOfUpTail2=10; //candle with upper tail equal or more than this will show up
MaxLengthOfLoTail2=1400; //candle with lower tail equal or more than this will show up
MaxLengthOfBody2=20; //candle with body less or equal with this will show up

}

deletetxt1("Bacardi"); 
  
 for (int i=lookback-1; i>=0; i--) 
    {
 
         if ((High[i]<iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,i) && High[i+1]<iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,i+1) && High[i+2]<iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,i+2) && High[i+3]<iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,i+3) && High[i+4]<iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,i+4) )  || (Low[i]>iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,i) && Low[i+1]>iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,i+1) && Low[i+2]>iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,i+2) && Low[i+3]>iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,i+3)&& Low[i+4]>iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,i+4) )) e8h[i]=iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,i);
 
           doji[i]=EMPTY_VALUE;

         RSI2[i]=iRSI(symbol,0,2,PRICE_MEDIAN,i);  
       
        if (Period()==1440 || (Period()<1440 && i>0)){ 
       if(High[i]-Close[i]>=MinLengthOfUpTail*pt && Close[i]-Low[i]>=MinLengthOfLoTail*pt  && MathAbs(Close[i]-Open[i])<=MaxLengthOfBody*pt && doji[i+1]==EMPTY_VALUE) doji[i]=Close[i]; 
       //(Open[i]+Close[i])/2+.000042;
       if(High[i]-Close[i]<=MaxLengthOfUpTail1*pt && Close[i]-Low[i]>=MinLengthOfLoTail1*pt  && MathAbs(Close[i]-Open[i])<=MaxLengthOfBody1*pt && doji[i+1]==EMPTY_VALUE)  doji[i]=Close[i]; 
       //doji[i]=(Open[i]+Close[i])/2+.000042;
       if(High[i]-Close[i]>=MinLengthOfUpTail2*pt && Close[i]-Low[i]<=MaxLengthOfLoTail2*pt  && MathAbs(Close[i]-Open[i])<=MaxLengthOfBody2*pt && doji[i+1]==EMPTY_VALUE) doji[i]= doji[i]=Close[i]; 
       }
       
       //(Open[i]+Close[i])/2+.000042;
           doji2[i]=doji[i];
           ///reds
           if (RSI2[i]<12.5 && RSI2[i]>2.4) dojir[i]=doji[i];
           if (RSI2[i]>97 && RSI2[i+2]>90 && Close[i]>iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,i) && Close[i]<iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,i)) dojir[i]=doji[i];
           ///greens
           if (RSI2[i]>2.5 && RSI2[i+1]<4.5 && dojir[i+2]==EMPTY_VALUE) dojig[i]=doji[i];
           if (RSI2[i]<94 && RSI2[i]>90 && RSI2[i+3]>14 && RSI2[i+4]>16) dojig[i]=doji[i];
           
           //blue
           
           
           if (High[i]>iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,i)&& Open[i]<iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,i) && Close[i]<iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,i)
           && iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,i+1)-Low[i+1]<250*Point 
           && RSI2[i]>22
           && doji[i]==EMPTY_VALUE
           && !(doji[i+1]!=EMPTY_VALUE && dojig[i+1]==EMPTY_VALUE)
           && dojig[i+1]==EMPTY_VALUE
           )
           {dojib[i]=High[i]+80*Point;
                if(i<80){    
           j=i-1;
      while (j>0){
         if (High[j]>High[i]+80*Point) break;
         j--;
      }
        if (j<0) j=0;  
         
             }    
         if (j>0){
            ObjectCreate("Bacardi"+IntegerToString(i), OBJ_RECTANGLE, 0,  Time[i], High[i]+80*Point, Time[j], High[i]+85*Point);
          ObjectSetInteger(0,"Bacardi"+IntegerToString(i),OBJPROP_COLOR,clrGreen);
          ObjectSet("Bacardi"+IntegerToString(i),OBJPROP_BACK,1);
          ObjectSet("Bacardi"+IntegerToString(i),OBJPROP_WIDTH,3);
             ObjectCreate("Bacardix"+DoubleToStr(j), OBJ_TEXT, 0, Time[j+8], High[i]+180*Point);  
          ObjectSetText("Bacardix"+DoubleToStr(j), "Initiate Long @"+DoubleToStr(NormalizeDouble(High[i]+80*Point,4),4), 13, "Impact", Green); 
         
         }    
             
           
           }
           
              if (i>0 && Low[i]<iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,i) && Open[i]>iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,i) && Close[i]>iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,i)
              && Low[i-1]<iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,i-1) 
              && High[i+3]-iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,i+3)<130*Point
              && High[i+2]-iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,i+2)<130*Point
              && High[i+1]-iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,i+1)<130*Point
              && RSI2[i]<87.5
              && RSI2[i]>2.5
              //&& MathAbs(iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,i)-iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,i)>30*Point)
              )
           {dojib[i]=Low[i]-80*Point;
           
                if(i<80){    
           j=i-1;
      while (j>0){
         if (Low[j]<Low[i]-80*Point) break;
         j--;
      }
        if (j<0) j=0;  
            
    }    
         if (j>0){
         ObjectCreate("Bacardi"+IntegerToString(i), OBJ_RECTANGLE, 0,  Time[i], Low[i]-80*Point, Time[j], Low[i]-85*Point);
          ObjectSetInteger(0,"Bacardi"+IntegerToString(i),OBJPROP_COLOR,clrRed);
          ObjectSet("Bacardi"+IntegerToString(i),OBJPROP_BACK,1);
          ObjectSet("Bacardi"+IntegerToString(i),OBJPROP_WIDTH,3);
               ObjectCreate("Bacardix"+DoubleToStr(j), OBJ_TEXT, 0, Time[j+8], Low[i]-180*Point);  
          ObjectSetText("Bacardix"+DoubleToStr(j), "Initiate Short @"+DoubleToStr(NormalizeDouble(Low[i]-80*Point,4),4), 13, "Impact", Crimson); 
         
         }
       }    
               
}

double fibecup=0;
double fibecdn=1000;

deletetxt1("Fibec");
i=1;
j=0;
while (i<lookback) {
  if (doji[i]!=EMPTY_VALUE){
      j++;
    if (Close[i]+160*Point>fibecup) fibecup=Close[i]+160*Point;
    if (Close[i]-160*Point<fibecdn) fibecdn=Close[i]-160*Point;
  }
  if (j>4) break;
  i++;    
}

ObjectCreate( "Fibeca", OBJ_TREND, 0, Time[1], fibecup, Time[0], fibecup );
ObjectSet("Fibeca", OBJPROP_COLOR, clrDimGray );
ObjectSet("Fibeca", OBJPROP_WIDTH, 2 );
ObjectSet("Fibeca", OBJPROP_STYLE, 2 );

ObjectCreate( "Fibecb", OBJ_TREND, 0, Time[1], fibecdn, Time[0], fibecdn  );
ObjectSet("Fibecb", OBJPROP_COLOR, clrDimGray );
ObjectSet("Fibecb", OBJPROP_WIDTH, 2 );
ObjectSet("Fibecb", OBJPROP_STYLE, 2 );

ObjectCreate("Fibec8", OBJ_TEXT, 0, Time[0], fibecup+65*Point);  
      ObjectSetText("Fibec8", "                      "+DoubleToStr(NormalizeDouble(fibecup,4),4)+"-6Res.", 11, "Arial Black", Maroon);  
       ObjectCreate("Fibec7", OBJ_TEXT, 0, Time[0], fibecdn-25*Point);  
      ObjectSetText("Fibec7", "                      "+DoubleToStr(NormalizeDouble(fibecdn,4),4)+"-6Sup.", 11, "Arial Black", Teal);  




double libecup=0;
double libecdn=1000;

deletetxt1("Libec");
i=1;
j=0;
while (i<lookback) {
  if (doji[i]!=EMPTY_VALUE){
      j++;
    if (Close[i]+100*Point>libecup) libecup=Close[i]+100*Point;
    if (Close[i]-100*Point<libecdn) libecdn=Close[i]-100*Point;
  }
  if (j>3) break;
  i++;    
}

ObjectCreate( "Libeca", OBJ_TREND, 0, Time[1], libecup, Time[0], libecup );
ObjectSet("Libeca", OBJPROP_COLOR, clrDimGray );
ObjectSet("Libeca", OBJPROP_WIDTH, 2 );
ObjectSet("Libeca", OBJPROP_STYLE, 3 );

ObjectCreate( "Libecb", OBJ_TREND, 0, Time[1], libecdn, Time[0], libecdn );
ObjectSet("Libecb", OBJPROP_COLOR, clrDimGray );
ObjectSet("Libecb", OBJPROP_WIDTH, 2 );
ObjectSet("Libecb", OBJPROP_STYLE, 3 );

//ObjectCreate("Libec8", OBJ_TEXT, 0, Time[0], libecup+65*Point);  
//      ObjectSetText("Libec8", "                      "+DoubleToStr(NormalizeDouble(libecup,4),4)+"-3Res.", 11, "Arial Black", Maroon);  
//      ObjectCreate("Libec7", OBJ_TEXT, 0, Time[0], libecdn-25*Point);  
//      ObjectSetText("Libec7", "                      "+DoubleToStr(NormalizeDouble(libecdn,4),4)+"-3Sup.", 11, "Arial Black", Teal);  

// ObjectCreate("Libec16", OBJ_TEXT, 1, Time[0], 75);  
//      ObjectSetText("Libec16", "                      VOL", 11, "Arial Black", DarkViolet); 


// ObjectCreate("Libec6", OBJ_TEXT, 1, Time[0], 65);  
//     ObjectSetText("Libec6", "                      0M / MMM", 11, "Arial Black", DarkViolet);  

//  ObjectCreate("Libec5", OBJ_TEXT, 1, Time[0], 55);  
//     ObjectSetText("Libec5", "                      ABC / SSS", 11, "Arial Black", DarkViolet);  


//  ObjectCreate("Libec3", OBJ_TEXT, 1, Time[0], 45);  
//     ObjectSetText("Libec3", "                      DEEP M EVAL", 11, "Arial Black", DarkViolet);  


// ObjectCreate("Libec2", OBJ_TEXT, 1, Time[0], 35);  
//     ObjectSetText("Libec2", "                      9PM CLOSE", 11, "Arial Black", DarkViolet); 

// ObjectCreate("Libec4", OBJ_TEXT, 2, Time[0], 65);  
//     ObjectSetText("Libec4", "                            #6 For M (25pips)", 11, "Arial Black", Blue);  


// ObjectCreate("Libec1", OBJ_TEXT, 2, Time[0], 45);  
//       ObjectSetText("Libec1", "                          PARA REVR>E44", 11, "Arial Black", Navy);  
// if ((High[5]<iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,5) && High[4]<iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,4) && High[3]<iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,3) && High[2]<iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,2) && High[1]<iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,1) && High[0]<iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,0)) || 
//      (Low[5]>iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,5) && Low[4]>iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,4) && Low[3]>iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,3) && Low[2]>iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,2) && Low[1]>iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,1) && Low[0]>iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,0)) 
//   && MathAbs(Close[0]-iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,0))>180*Point)
//   ObjectSetText("Libec1", "                          PARA REVR>E44", 16, "Arial Black", Magenta);  

// if (High[0]>iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,0) && Low[0]<iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,0)) deletetxt1("PARALINE");


///parabolic reversal back up
if (Low[5]>iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,5) && Low[4]>iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,4) && Low[3]>iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,3) && Low[2]>iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,2) && Low[1]>iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,1) && Low[0]>iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,0) 
   && MathAbs(Close[0]-iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,0))>180*Point && High[1]-Close[1]>38*Point && High[1]-Open[1]>38*Point
   && Close[0]<iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,0)
   ){
   
ObjectCreate(0,"PARALINE",OBJ_TREND,0,Time[1],High[1],Time[0],High[1]);
                          ObjectSetInteger(0,"PARALINE",OBJPROP_RAY_RIGHT,true);
                          ObjectSet("PARALINE",OBJPROP_COLOR,Black);
                          ObjectSet("PARALINE",OBJPROP_WIDTH, 3);   
                          
                          ObjectCreate("PARALINE2", OBJ_TEXT, 0, Time[0], High[1]);  
      ObjectSetText("PARALINE2", "                      "+DoubleToStr(NormalizeDouble(High[1],4),4)+"->"+DoubleToStr(NormalizeDouble(iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,1),4),4), 11, "Arial Black", DarkGreen);   
  }    

///parabolic reversal back down
if (High[5]<iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,5) && High[4]<iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,4) && High[3]<iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,3) && High[2]<iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,2) && High[1]<iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,1) && High[0]<iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,0) 
   && MathAbs(Close[0]-iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,0))>180*Point && Close[1]-Low[1]>38*Point && Open[1]-Low[1]>38*Point
      && Close[0]>iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,0)
   ){
   
ObjectCreate(0,"PARALINE",OBJ_TREND,0,Time[1],Low[1],Time[0],Low[1]);
                          ObjectSetInteger(0,"PARALINE",OBJPROP_RAY_RIGHT,true);
                          ObjectSet("PARALINE",OBJPROP_COLOR,Black);
                          ObjectSet("PARALINE",OBJPROP_WIDTH, 3);   
                          
                          ObjectCreate("PARALINE2", OBJ_TEXT, 0, Time[0], Low[1]);  
      ObjectSetText("PARALINE2", "                      "+DoubleToStr(NormalizeDouble(Low[1],4),4)+"->"+DoubleToStr(NormalizeDouble(iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,1),4),4), 11, "Arial Black", DarkGreen);   
  }    



ObjectCreate("Libec11", OBJ_TEXT, 2, Time[0], 85);  
      ObjectSetText("Libec11", "                          PARA BRK>CONSM", 11, "Arial Black", Navy);      


ObjectCreate("Libec12", OBJ_TEXT, 3, Time[0], 105);  
      ObjectSetText("Libec12", "                             MSR, DVGNT", 11, "Arial Black", Crimson); 

ObjectCreate("Libec0", OBJ_TEXT, 3, Time[0], 65);  
      ObjectSetText("Libec0", "                            MUST>FDF/0M", 11, "Arial Black", Navy); 
      ObjectCreate("Libec9", OBJ_TEXT, 3, Time[0], 45);  
      ObjectSetText("Libec9", "                            MUST>E8/RES", 11, "Arial Black", Navy); 
       ObjectCreate("Libec10", OBJ_TEXT, 3, Time[0], 85);  
      ObjectSetText("Libec10", "                          E44 PROMO", 11, "Arial Black", Navy); 

double kibecup=0;
double kibecdn=1000;

deletetxt1("Kibec");
i=1;
j=0;
while (i<lookback) {
  if (doji[i]!=EMPTY_VALUE){
      j++;
    if (Close[i]+100*Point>kibecup) kibecup=Close[i]+80*Point;
    if (Close[i]-100*Point<kibecdn) kibecdn=Close[i]-80*Point;
  }
  if (j>1) break;
  i++;    
}

ObjectCreate( "Kibeca", OBJ_TREND, 0, Time[1], kibecup, Time[0], kibecup );
ObjectSet("Kibeca", OBJPROP_COLOR, clrDimGray );
ObjectSet("Kibeca", OBJPROP_WIDTH, 2 );
ObjectSet("Kibeca", OBJPROP_STYLE, 4 );

ObjectCreate( "Kibecb", OBJ_TREND, 0, Time[1], kibecdn, Time[0], kibecdn  );
ObjectSet("Kibecb", OBJPROP_COLOR, clrDimGray );
ObjectSet("Kibecb", OBJPROP_WIDTH, 2 );
ObjectSet("Kibecb", OBJPROP_STYLE, 3 );

ObjectCreate("Kibec8", OBJ_TEXT, 0, Time[0], kibecup+65*Point);  
      ObjectSetText("Kibec8", "                      "+DoubleToStr(NormalizeDouble(kibecup,4),4)+"-2Res.", 11, "Arial Black", Maroon);  
       ObjectCreate("Kibec7", OBJ_TEXT, 0, Time[0], kibecdn-25*Point);  
      ObjectSetText("Kibec7", "                      "+DoubleToStr(NormalizeDouble(kibecdn,4),4)+"-2Sup.", 11, "Arial Black", Teal);  



deletetxt1("Ricky"); 

  
  for (i=lookback-1; i>=0; i--){ 
  
  
  ///exit dojis
  if (Period()!=1440 && RSI2[ArrayMinimum(RSI2,9,i)]<2.5 && doji[i]!=EMPTY_VALUE && RSI2[i]>10) exit[i]=doji[i];
  if (Period()!=1440 && RSI2[ArrayMaximum(RSI2,9,i)]>97.5 && doji[i]!=EMPTY_VALUE && RSI2[i]<90 && High[i]>High[i+1]) exit[i]=doji[i];
  
  ///downside fractal highlight
  if (i>2 && iFractals(symbol,0,MODE_LOWER,i) && iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,i)-Low[i]>220*Point && iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,i)-Low[i]<1000*Point && iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,i)-Low[i]>110*Point && High[i]<iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,i) ) {ED[i]=Low[i]-40*Point;
  
   if (ED[i+1]==EMPTY_VALUE && ED[i+2]==EMPTY_VALUE && ED[i+3]==EMPTY_VALUE && ED[i+4]==EMPTY_VALUE && ED[i+5]==EMPTY_VALUE && ED[i+6]==EMPTY_VALUE && ED[i+7]==EMPTY_VALUE && ED[i+8]==EMPTY_VALUE && ED[i+9]==EMPTY_VALUE && ED[i+10]==EMPTY_VALUE &&
        ED[i+11]==EMPTY_VALUE && ED[i+12]==EMPTY_VALUE && ED[i+13]==EMPTY_VALUE && ED[i+14]==EMPTY_VALUE && ED[i+15]==EMPTY_VALUE && ED[i+16]==EMPTY_VALUE && ED[i+17]==EMPTY_VALUE && ED[i+18]==EMPTY_VALUE && ED[i+19]==EMPTY_VALUE && ED[i+20]==EMPTY_VALUE &&
        ED[i+21]==EMPTY_VALUE && ED[i+22]==EMPTY_VALUE && ED[i+23]==EMPTY_VALUE && ED[i+24]==EMPTY_VALUE && ED[i+25]==EMPTY_VALUE){
            ObjectCreate("Bacardiy"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+3], Low[i]-30*Point);  
          ObjectSetText("Bacardiy"+DoubleToStr(i), "Cover @"+DoubleToStr(NormalizeDouble(Low[i],4),4), 13, "Impact", Green); 
           ObjectCreate("Bacardiyy"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+3], Low[i]-130*Point);  
          ObjectSetText("Bacardiyy"+DoubleToStr(i), "Buy @"+DoubleToStr(NormalizeDouble(Low[i]-100*Point,4),4), 13, "Impact", DodgerBlue); 
         ED2[i]=Low[i]-45*Point;
       }
  }
  ///upnside fractal highlight
  if (i>2 && iFractals(symbol,0,MODE_UPPER,i) && High[i]-iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,i)>220*Point && High[i]-iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,i)<1000*Point  && High[i]-iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,i)>110*Point && Low[i]>iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,i)) {EU[i]=High[i]+40*Point;
   if (EU[i+1]==EMPTY_VALUE && EU[i+2]==EMPTY_VALUE && EU[i+3]==EMPTY_VALUE && EU[i+4]==EMPTY_VALUE && EU[i+5]==EMPTY_VALUE && EU[i+6]==EMPTY_VALUE && EU[i+7]==EMPTY_VALUE && EU[i+8]==EMPTY_VALUE && EU[i+9]==EMPTY_VALUE && EU[i+10]==EMPTY_VALUE &&
        EU[i+11]==EMPTY_VALUE && EU[i+12]==EMPTY_VALUE && EU[i+13]==EMPTY_VALUE && EU[i+14]==EMPTY_VALUE && EU[i+15]==EMPTY_VALUE && EU[i+16]==EMPTY_VALUE && EU[i+17]==EMPTY_VALUE && EU[i+18]==EMPTY_VALUE && EU[i+19]==EMPTY_VALUE && EU[i+20]==EMPTY_VALUE &&
        EU[i+21]==EMPTY_VALUE && EU[i+22]==EMPTY_VALUE && EU[i+23]==EMPTY_VALUE && EU[i+24]==EMPTY_VALUE && EU[i+25]==EMPTY_VALUE){
            ObjectCreate("Bacardiy"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+3], High[i]+80*Point);  
          ObjectSetText("Bacardiy"+DoubleToStr(i), "Cover @"+DoubleToStr(NormalizeDouble(High[i],4),4), 13, "Impact", Purple); 
           ObjectCreate("Bacardiyy"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+3], High[i]+180*Point);  
          ObjectSetText("Bacardiyy"+DoubleToStr(i), "Sell @"+DoubleToStr(NormalizeDouble(High[i]+100*Point,4),4), 13, "Impact", DodgerBlue); 
         EU2[i]=High[i]+45*Point;
       }
  
  }
  
  ///must go short on red doji if no downside fractals in the prior 7 candles & below E-44 && E-44 declining
    if (dojir[i]!=EMPTY_VALUE && !iFractals(symbol,0,MODE_LOWER,i+1)&& !iFractals(symbol,0,MODE_LOWER,i+2) && !iFractals(symbol,0,MODE_LOWER,i+3)&& !iFractals(symbol,0,MODE_LOWER,i+4)&& !iFractals(symbol,0,MODE_LOWER,i+5)&& !iFractals(symbol,0,MODE_LOWER,i+6)&& !iFractals(symbol,0,MODE_LOWER,i+7) 
   && Close[i]<iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,i)
   &&  iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,i)<iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,i+6)
  ){
  
       ObjectCreate("Rickyt"+IntegerToString(i),OBJ_VLINE,0, Time[i], 0);
         ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_COLOR,clrRed );
            ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_WIDTH,6);
            ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);
          ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_BACK,1);   
  }
  
  ///must go short on red doji if price is below 8EMA & above E-44
    if (dojir[i]!=EMPTY_VALUE && Close[i]>iMA(NULL,0,44,0,MODE_EMA, PRICE_MEDIAN,i) && Close[i]<iMA(NULL,0,8,0,MODE_EMA, PRICE_OPEN,i)
    
  ){
  
       ObjectCreate("Rickyt"+IntegerToString(i),OBJ_VLINE,0, Time[i], 0);
         ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_COLOR,clrRed );
            ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_WIDTH,6);
            ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);
          ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_BACK,1);   
  }
  
  //low close doji
  
   if ((doji[i+1]!=EMPTY_VALUE  && Close[i]<=Open[i]) || dojir[i]!=EMPTY_VALUE   )
   {
          ObjectCreate("Ricky"+IntegerToString(i),OBJ_VLINE,1, Time[i], 0);
         ObjectSet("Ricky"+IntegerToString(i),OBJPROP_COLOR,clrRed );
            ObjectSet("Ricky"+IntegerToString(i),OBJPROP_WIDTH,4);
            ObjectSet("Ricky"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);
          ObjectSet("Ricky"+IntegerToString(i),OBJPROP_BACK,1);   
      
    if(i<40){    
           j=i-1;
      while (j>0){
         if (Close[j]<Close[i+1]-100*Point) break;
         j--;
      }
        if (j<0) j=0;  
            ObjectCreate("Bacardis"+IntegerToString(i), OBJ_RECTANGLE, 0,  Time[i+1], Close[i+1]-90*Point, Time[j], Close[i+1]-100*Point);
          if (j!=0) ObjectSetInteger(0,"Bacardis"+IntegerToString(i),OBJPROP_COLOR,clrRed);
          else ObjectSetInteger(0,"Bacardis"+IntegerToString(i),OBJPROP_COLOR,clrBlue);
          ObjectSet("Bacardis"+IntegerToString(i),OBJPROP_BACK,1);
          ObjectSet("Bacardis"+IntegerToString(i),OBJPROP_WIDTH,3);
    }      
   }
   
   ///high close doji
   if ((doji[i+1]!=EMPTY_VALUE && dojir[i+1]==EMPTY_VALUE && Close[i]>Open[i]) || dojig[i]!=EMPTY_VALUE)
   {
          ObjectCreate("Ricky"+IntegerToString(i),OBJ_VLINE,1, Time[i], 0);
         ObjectSet("Ricky"+IntegerToString(i),OBJPROP_COLOR,clrGreen );
            ObjectSet("Ricky"+IntegerToString(i),OBJPROP_WIDTH,4);
            ObjectSet("Ricky"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);
          ObjectSet("Ricky"+IntegerToString(i),OBJPROP_BACK,1);
          
          
          if(i<40){    
           j=i-1;
      while (j>0){
         if (Close[j]>Close[i+1]+100*Point) break;
         j--;
      }
        if (j<0) j=0;  
            ObjectCreate("Bacardis"+IntegerToString(i), OBJ_RECTANGLE, 0,  Time[i+1], Close[i+1]+90*Point, Time[j], Close[i+1]+100*Point);
          if (j!=0) ObjectSetInteger(0,"Bacardis"+IntegerToString(i),OBJPROP_COLOR,clrGreen);
          else ObjectSetInteger(0,"Bacardis"+IntegerToString(i),OBJPROP_COLOR,clrBlue);
          ObjectSet("Bacardis"+IntegerToString(i),OBJPROP_BACK,1);
          ObjectSet("Bacardis"+IntegerToString(i),OBJPROP_WIDTH,3);
    }    
          
             
   }
   
   
   ///////////////Wyckoff doji demand dry up
   if (i>0 && High[i-1]<High[i] && doji[i]!=EMPTY_VALUE && iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,1,i))==iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,5,i)) && Volume[i]<Volume[i+1] && Volume[i]<Volume[i+2] && Volume[i]<Volume[i+3]){ 
   
         ObjectCreate("Rickyt"+IntegerToString(i),OBJ_VLINE,0, Time[i], 0);
         ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_COLOR,clrPurple );
         if (Close[i]<iMA(symbol,0,8,0,MODE_EMA, PRICE_OPEN,i)) ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_WIDTH,10);
            else ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_WIDTH,5);
            ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);
          ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_BACK,1);  
   }
   
   ///////////////Wyckoff doji supply dry up
   if (i>0 && Low[i-1]>Low[i] && doji[i]!=EMPTY_VALUE && iLow(symbol,0,iLowest(symbol,0,MODE_LOW,1,i))==iLow(symbol,0,iLowest(symbol,0,MODE_LOW,4,i)) && Volume[i]<Volume[i+1] && Volume[i]<Volume[i+2] && Volume[i]<Volume[i+3]  && Volume[i]<Volume[i+4]  && Volume[i]<Volume[i+5]){ 
   
         ObjectCreate("Rickyt"+IntegerToString(i),OBJ_VLINE,0, Time[i], 0);
         ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_COLOR,clrYellowGreen );
            ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_WIDTH,10);
            ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);
          ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_BACK,1);  
   } 
   
  if (Period()==1440){ 
   ///daily doji reversi up
   if (doji[i]!=EMPTY_VALUE && iLow(symbol,0,iLowest(symbol,0,MODE_LOW,2,i))==iLow(symbol,0,iLowest(symbol,0,MODE_LOW,4,i))
      && Close[i]-iLow(symbol,0,iLowest(symbol,0,MODE_LOW,2,i))>190*Point
      && (Volume[i]<Volume[i+1] || Volume[i+2]<Volume[i+4])
      
      && High[i+1]<High[i+2]  
    
      ){
       ObjectCreate("Bacardit"+IntegerToString(i), OBJ_RECTANGLE, 0,  Time[i+3], Close[i+1]+50*Point, Time[i], iLow(symbol,0,iLowest(symbol,0,MODE_LOW,2,i))-200*Point);
          ObjectSetInteger(0,"Bacardit"+IntegerToString(i),OBJPROP_COLOR,clrChartreuse);
          ObjectSet("Bacardit"+IntegerToString(i),OBJPROP_BACK,1);
          ObjectSet("Bacardit"+IntegerToString(i),OBJPROP_WIDTH,3);
   }
  
    ///daily doji reversi dn
     if (doji[i]!=EMPTY_VALUE && iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,i))==iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,4,i))
      && iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,i))-Close[i]>190*Point
      && Volume[i]<Volume[i+1] && Low[i+1]>Low[i+2] && High[i]>High[i+1]-100*Point 
      && iVolume(symbol,0,i+4)<iVolume(symbol,0,i+7)
        && iVolume(symbol,0,i+2)<iVolume(symbol,0,i+4)
      && iLow(symbol,0,iLowest(symbol,0,MODE_LOW,3,i))>iLow(symbol,0,iLowest(symbol,0,MODE_LOW,6,i))
      ){
       ObjectCreate("Bacardit"+IntegerToString(i), OBJ_RECTANGLE, 0,  Time[i+3], Close[i+1]-50*Point, Time[i], iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,i))+200*Point);
          ObjectSetInteger(0,"Bacardit"+IntegerToString(i),OBJPROP_COLOR,clrCrimson);
          ObjectSet("Bacardit"+IntegerToString(i),OBJPROP_BACK,1);
          ObjectSet("Bacardit"+IntegerToString(i),OBJPROP_WIDTH,3);
   }
   
   }
   
  }
  
  
  return(0);	
}


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

W3F+ without consolidation is cca 1.1243

Labeling Example

M = Measuring Leg

E-M = Expansion Measuring Leg Override

D = Divergent Leg (drop of directional volatility)

Next should be an M+D on the downside. Not certain that the price would be let beyond the SOB at 1.1141.

However, in the next leg up, the Red volatility line would be compressed below 14 (pips) and a further push higher would have to set up a Gray divergence for a peak. The brown bow is my idea of how the measuring leg would print.

…below 14 print, managed it on this very leg

After an E-M the expectation should be a W3M print. Why? Because if an E-M gets broken, you are likely in a Wave 3.

About halfway through these two numbers (W3Close and W3Far):

M+EM

Here’s what happened:

The downside Echo’s doji received a back test.

There was an extra high energy level reached allowing for an oversized move beyond W3D which was at 1.1088 at the time.

There was a kiss exchange between the red and green volatility lines, but overall the compression receiving side remains the downside (meaning the market is going higher).

Just like I never understand when people talk about a “structure”, I don’t ever understand when they refer to a “buy/sell setup”. Don’t even get me started on “generating money”.

I understand things when I can write binary filters for something.

Yes, I would call an M & M-expansionary sequence a buy / sell setup but only because I have tangible proof for increasing directional volatility with an expectation of a break out with a kickback zone of typically 12 pips to accumulate in and add the remainder fancied size upon the violation of the E-M.

The directional volatility has to stop expanding for a wave to end. On the way up the pullbacks are greater than usual, but the directional volatility has not stopped expanding yet.


It is sheer luck to be born in this era when people are enabled by AI.

I made this entire album with all of its contents in 3 days. Not because I was rushed by anything, but I was in a creative enough mode to make 16 new tracks.

 if ((Open[i]<Close[i] || Open[i+1]<Open[i+1]) && Low[i]<iMA(symbol,0,8,0,MODE_EMA,PRICE_MEDIAN,i)) { 
         if (Low[i+1]<Low[i] && Open[i+1]>Close[i+1]) ObjectCreate("Citera"+IntegerToString(i), OBJ_TEXT, 0, Time[i+1], Low[i+1]-20*Point);
         else ObjectCreate("Citera"+IntegerToString(i), OBJ_TEXT, 0, Time[i], Low[i]-20*Point);
         if ((iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,i+1))-Low[i])*10000<3.2) ObjectSetText("Citera"+IntegerToString(i), NormalizeDouble((iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,i+1))-Low[i])*10000,2), 17, "Impact", Green);
         else ObjectSetText("Citera"+IntegerToString(i), NormalizeDouble((iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,i+1))-Low[i])*10000,2), 11, "Impact", Navy);
         if (High[i+3]-Low[i+3]>220*Point && Low[i+3]<iBands(symbol,0,60,2,0,PRICE_MEDIAN,MODE_UPPER,i+3)) ObjectSetText("Citera"+IntegerToString(i), "    "+NormalizeDouble((iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,i+1))-Low[i])*10000,2)+" BUY", 11, "Impact", Black);
       }
         if ((Open[i]>Close[i] || Open[i+1]>Open[i+1]) && High[i]>iMA(symbol,0,8,0,MODE_EMA,PRICE_MEDIAN,i)) { 
      if (High[i+1]>High[i] && Open[i+1]<Close[i+1]) ObjectCreate("Citera"+IntegerToString(i), OBJ_TEXT, 0, Time[i+1], High[i+1]+35*Point); 
       else 
         ObjectCreate("Citera"+IntegerToString(i), OBJ_TEXT, 0, Time[i], High[i]+35*Point); 
         if ((High[i]-(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,2,i+1))))*10000<3.2)
         ObjectSetText("Citera"+IntegerToString(i), NormalizeDouble((High[i]-(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,2,i+1))))*10000,2), 18, "Impact", Red);
         else ObjectSetText("Citera"+IntegerToString(i), NormalizeDouble((High[i]-(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,2,i+1))))*10000,2), 11, "Impact", Brown);
         if (High[i+3]-Low[i+3]>220*Point) ObjectSetText("Citera"+IntegerToString(i), "    "+NormalizeDouble((High[i]-(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,2,i+1))))*10000,2)+" SELL", 11, "Impact", Black);
       }