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

M+D

The Measuring leg is where the directional volatility peaks, the Divergent leg is the higher / lower close made with a diverging directional volatility peak.

The two sides work independently, so there may be overlaps.

Some people are talking 1.1380 already. We shall see. One step at a time. The current consolidation level would allow for 1.1250.

for (i=60; i>=0; i--){
       if (Open[i]<Close[i] || Open[i+1]<Open[i+1]) { 
         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 (Open[i]>Close[i] || Open[i+1]>Open[i+1]) { 
      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);
       }
}

Is the 1.1273 high in danger? Lots of news on Monday. In two steps it would be doable with a no-break extension.

Rob Roy is afraid of a Katie bar-the-door event. Play it safe, hedged until a turn becomes confirmed.

Vol Comp

This market has not failed the upside yet (Echo).

Them schmucks are still long.

Now, how would I go about compressing counter-directional volatility, if I had to write a routine for it?

I cannot see the order flow, but here’s what I think.

If they want the market to turn back up every time it has gone 10 pips away from the most recent 30-minute high, I would put out orders with some gap between and in increasing volume.

For instance, for 9 hours (18 candles) the program gets turned on, that says: buy X lots 6 pips out, buy 2x lots 8 pips out, buy 4x lots 10 pips out, and put out an 8x order 12 pips out.

Above the strongest 9-hour compression ever. 12.5 pips was the maximum counter-directional move.

Of course, you cannot do this indefinitely and you must dump your collection onto a larger order area. Say where someone got trapped and has their stop at break-even or where they have trailed their stop loss to.

Now, the flip side of volatility compression, is that when the market breaches, there will be no stopping in the other direction for some time. I.e. the correction went to an RSI2 below 5 reading.


Album #25 as promised.

deletetxt1("Citera");
if (Period()==30){
for (i=lookback; i>=0; i--){
       if (Open[i]<Close[i] || Open[i+1]<Open[i+1]) { 
       
         ObjectCreate("Citera"+IntegerToString(i), OBJ_TEXT, 0, Time[i], Low[i]-20*Point); 
         ObjectSetText("Citera"+IntegerToString(i), NormalizeDouble((iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,i+1))-Low[i])*10000,2), 11, "Impact", Navy);
       }
}
}

Big Bang Theory

When the matket has not failed the upside yet, buy the bang!

The bang is an unbroken hourly RSI2 move from overbought to oversold or the other way.
The high/low to sell/buy would be pointed out by the sharp end.
The bang would be confirmed by a fractal on the next candle (or second). The bang has to be of the directional color or a bodiless doji.

3 bang examples since the last Echo print on the downside.

RSI2 is placed over median. The draw downs would have been below 5 pips, and pyramiding would work too.

Remember where volatility compressors have been active. They are fading a Wave 3 20-pips out.

Go oversized in the current direction.

The difference between the last effort red and yellow highlight is that the red returns in 1 hour to the 8 EMO (not enough separation) whilst the yellow goes the optimal 2 route.

Gold…

We at?

Playing ping-pong between the two highest swing highs.

After the End Of Wave 5 (green double divergence), there was an impulse Wave 1 up (red double divergence).

I would prefer Wave 2 to reach beyond the Municipal trench (orange bands).

1.1050 (S.O.B.) should receive a back test.

How high? Ultimately 1.12889 should receive a beat.

The base case is 5 waves up.

The twist?

A push-down first. The only clue here is the Pro volume reversal print on Friday. I almost missed this.

The money flow was severely oversold at the close. The next professional stronghold is the 1.0945-1.0936 zone which could receive a backtest. For this path to play out, an Echo would need to be printed on the upside, which would mean a 2.5 to 3-hour rally. Motoring up (and making a higher high) would be a clue. Going down to the lower 30 sample hourly BB would mean a fresh wave (Wave 3) up.


Album #25 is shaping up to be something else.

The two tracks I made about Gold yesterday:

Achilles Dent: Guilded Illusion

Achilles Dent: I’m Sold Gold

Lyrics of Achilles Dent: Perpendicular Existence

[Verse 1]
Quarks, gluons and somersaults
Juggling with your twin
Coitus collaboritis
Spooky pension in the distance 

Double slit while the pants slit
Hard hat and potato nose
A picture of Neutrino 
When he was still tiny 

[Chorus]
There is no compensation
For some intermittent condensation
Life is  perpendicular I'm afraid
In a Bozo-Eintstein Condensate 

[Verse 2]
Winning the dancing
And the pissing competition
With entangled shoe laces
Tickle-tickle particle
Partake in the para-normal
ESP is taking charge 

[Chorus]
There is no compensation
For some intermittent condensation
Life is  perpendicular I'm afraid
In a Bozo-Eintstein Condensate 

[Verse 3]
Being poor comes standard
Being funny does not come easy 

The hardest life is the clown's
They have to give away with all values
Until they are left with nothing
They are right with nothing 

I you have a sixth sense for nonsense
Hand it: the small things
Have nought to do with the big picture 

[Chorus]
There is no compensation
For some intermittent condensation
Life is  perpendicular I'm afraid
In a Bozo-Eintstein Condensate