Market Rhymes

This one is gonna be a rant on waves and the behavior of the funny guys.

Calling things symmetrical would be a little bit harsh, but the rhythm of the market more or less remains the same.

Take a look at the following two 5-wave structures.

Although they are certainly not identical, they have commonalities. Three attempts to take the price as high as possible is one of these. In both cases, 2 out of the 3 peaks managed to achieve overdrive prints on the stochastic bars. Both wave structures had #4 undercutting #2 which speaks of a corrective wave structure (by this I mean you should start fading heavily by the time wave 5 is up). In both cases, wave 5 fell short of the overall peak, and they were less than 5 hours long.

Now, let’s discuss for a moment the deep break and why none of that move is connected or marked as part of a structure. They aren’t.

The volatility whip was utilized by some institution smelling funny guys to take over as many longs as were possible and make a killing on the 10% move that transpired in about 6 hours – about one session’s length.

The volatility whip is a thrown up ball, there are no rules other than the idea of making a measurement on what the downside volatility versus the upside volatility relates to each other on a current full throttle.

This institution spotted the short term opportunity: wave structure over with, 10% score on short notice pending, all they needed to do was serving as an amplifier, plus putting a lot of orders out at & below the 30% line.

My assumption for generating a very efficient “trending” move is having a program run that gives every fill at market in one direction. It takes a lot of capital to do this, no doubt. There are about 10 banks in the world that have the funds.

This overwhelming move knocks out everyone on the way down from their longs -> they become taken over by the bank, showing an ever increasing draw down, then they hit their target area that should be strategically placed beyond a lump of orders (stops) that were left out for good measure.

This is by when the auto fill program (in this case auto buy) gets turned off. Appreciate that they cannot exceed the demand on the way down, only match it, so the down move in this case was an “aid” to escort price into their own net. They will have a bottom heavy averaged down entry price and a ghost print on the chart that others would start drawing trend lines onto.

The overwhelming buy is a notch more aggressive, it has to also front run the orders, getting other routines excited and wanting to interact.

It does help the cause that the liquidity is relatively light in the cluelessness of what is happening. A big news event can help their cause, no doubt.

The major puzzle is now, that the 5-wave structure is over with, would they bother to mirror their own cash cow Vol Whip event this time?

Oh, the arrow for hedging? I lifted it from my TOS era. Don’t quite remember how I came up with the expression, but it works.

diff[i] = 100 - (75 - (stoch9[i] - (88 - ChoppinessIndex(14,i)))) * .8;

if (diff[i]<63 && diff[i+1]>63 && ChoppinessIndex(14,i)>34 && Period()==30 && iStochastic(symbol,0,9,3,3,MODE_SMA,0,MODE_SIGNAL,i+1)<80) {downcross[i]=High[i]+40*Point; downcross2[i]=High[i]+40*Point;}

4H Doji Lines (any time frame) for you, for you’ve been a good sport

//+------------------------------------------------------------------+
//|                                                4H DOJI Lines.mq4 |
//|                                         Copyright 2019, Macdulio |
//+------------------------------------------------------------------+
#property copyright   "2019, Macdulio"
#property link        "https://forexfore.blog"
#property description "4H DOJI Lines"

#include <stdlib.mqh>
extern double Leverage = 1.5;
#property indicator_chart_window
#property indicator_buffers 30
#property indicator_color1 Black
#property indicator_color2 Yellow
extern double AF=1.3;
extern double LT=60;
extern int maxlines = 10; 
extern int displaylength = 36;     
extern int       MinLengthOfUpTail=1; //candle with upper tail equal or more than this will show up
extern int       MinLengthOfLoTail=1; //candle with lower tail equal or more than this will show up
extern double    MaxLengthOfBody=30; //candle with body less or equal with this will show up
     
//---- input parameters for dragonfly doji
extern int       MaxLengthOfUpTail1=160; //candle with upper tail equal or more than this will show up
extern int       MinLengthOfLoTail1=160; //candle with lower tail equal or more than this will show up
extern double    MaxLengthOfBody1=30; //candle with body less or equal with this will show up

//---- input parameters for gravestone doji
extern int       MinLengthOfUpTail2=160; //candle with upper tail equal or more than this will show up
extern int       MaxLengthOfLoTail2=160; //candle with lower tail equal or more than this will show up
extern double    MaxLengthOfBody2=30; //candle with body less or equal with this will show up
double pt=0.00001;
double lines[];
double mid[];

double line1[];
double line2[];
double line3[];
double line4[];
double line5[];
double line6[];
double line7[];
double line8[];
double line9[];
double line10[];
double line11[];
double line12[];
double line13[];
double line14[];
double line15[];

double line16[];
double line17[];
double line18[];
double line19[];
double line20[];
double line21[];
double line22[];
double line23[];
double line24[];
double line25[];
double line26[];
double line27[];
double line28[];
double line29[];
double line30[];

double vbru[];

string TimeFrame;
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexBuffer(0,line1);
   SetIndexBuffer(1,line2);
   SetIndexBuffer(2,line3);
   SetIndexBuffer(3,line4);
   SetIndexBuffer(4,line5);  
   SetIndexBuffer(5,line6);
   SetIndexBuffer(6,line7);
   SetIndexBuffer(7,line8);
   SetIndexBuffer(8,line9);
   SetIndexBuffer(9,line10);
   SetIndexBuffer(10,line11);  
   SetIndexBuffer(11,line12);   
   SetIndexBuffer(12,line13);
   SetIndexBuffer(13,line14);
   SetIndexBuffer(14,line15);  
   
   SetIndexBuffer(15,line16);
   SetIndexBuffer(16,line17);
   SetIndexBuffer(17,line18);
   SetIndexBuffer(18,line19);
   SetIndexBuffer(19,line20);  
   SetIndexBuffer(20,line21);
   SetIndexBuffer(21,line22);
   SetIndexBuffer(22,line23);
   SetIndexBuffer(23,line24);
   SetIndexBuffer(24,line25);
   SetIndexBuffer(25,line26);  
   SetIndexBuffer(26,line27);   
   SetIndexBuffer(27,line28);
   SetIndexBuffer(28,line29);
   SetIndexBuffer(29,line30);  
   
                
   SetIndexStyle(0,DRAW_LINE,EMPTY,9,indicator_color1);
   SetIndexStyle(1,DRAW_LINE,EMPTY,9,indicator_color1);
   SetIndexStyle(2,DRAW_LINE,EMPTY,9,indicator_color1);     
   SetIndexStyle(3,DRAW_LINE,EMPTY,9,indicator_color1);
   SetIndexStyle(4,DRAW_LINE,EMPTY,9,indicator_color1);
   SetIndexStyle(5,DRAW_LINE,EMPTY,9,indicator_color1);  
   SetIndexStyle(6,DRAW_LINE,EMPTY,9,indicator_color1);
   SetIndexStyle(7,DRAW_LINE,EMPTY,9,indicator_color1);
   SetIndexStyle(8,DRAW_LINE,EMPTY,9,indicator_color1);     
   SetIndexStyle(9,DRAW_LINE,EMPTY,9,indicator_color1);
   SetIndexStyle(10,DRAW_LINE,EMPTY,9,indicator_color1);
   SetIndexStyle(11,DRAW_LINE,EMPTY,9,indicator_color1);
   SetIndexStyle(12,DRAW_LINE,EMPTY,9,indicator_color1);     
   SetIndexStyle(13,DRAW_LINE,EMPTY,9,indicator_color1);
   SetIndexStyle(14,DRAW_LINE,EMPTY,9,indicator_color1);
   
   SetIndexStyle(15,DRAW_LINE,EMPTY,5,indicator_color2);
   SetIndexStyle(16,DRAW_LINE,EMPTY,5,indicator_color2);
   SetIndexStyle(17,DRAW_LINE,EMPTY,5,indicator_color2);     
   SetIndexStyle(18,DRAW_LINE,EMPTY,5,indicator_color2);
   SetIndexStyle(19,DRAW_LINE,EMPTY,5,indicator_color2);
   SetIndexStyle(20,DRAW_LINE,EMPTY,5,indicator_color2);  
   SetIndexStyle(21,DRAW_LINE,EMPTY,5,indicator_color2);
   SetIndexStyle(22,DRAW_LINE,EMPTY,5,indicator_color2);
   SetIndexStyle(23,DRAW_LINE,EMPTY,5,indicator_color2);     
   SetIndexStyle(24,DRAW_LINE,EMPTY,5,indicator_color2);
   SetIndexStyle(25,DRAW_LINE,EMPTY,5,indicator_color2);
   SetIndexStyle(26,DRAW_LINE,EMPTY,5,indicator_color2);
   SetIndexStyle(27,DRAW_LINE,EMPTY,5,indicator_color2);     
   SetIndexStyle(28,DRAW_LINE,EMPTY,5,indicator_color2);
   SetIndexStyle(29,DRAW_LINE,EMPTY,5,indicator_color2);
   

   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   string symbol = Symbol();
   int      i,pos,c_b=IndicatorCounted();;
  ArrayResize(lines, maxlines);
 
  ArrayInitialize(lines, 0);

  ArrayResize(line1, 100);
  ArrayInitialize(line1, EMPTY_VALUE);  
  ArrayResize(line2, 100);
  ArrayInitialize(line2, EMPTY_VALUE);  
  ArrayResize(line3, 100);
  ArrayInitialize(line3, EMPTY_VALUE);    
  ArrayResize(line4, 100);
  ArrayInitialize(line4, EMPTY_VALUE);  
  ArrayResize(line5, 100);
  ArrayInitialize(line5, EMPTY_VALUE);  
  ArrayResize(line6, 100);
  ArrayInitialize(line6, EMPTY_VALUE);  
  ArrayResize(line7, 100);
  ArrayInitialize(line7, EMPTY_VALUE);    
  ArrayResize(line8, 100);
  ArrayInitialize(line8, EMPTY_VALUE);    
  ArrayResize(line9, 100);
  ArrayInitialize(line9, EMPTY_VALUE);    
  ArrayResize(line10, 100);
  ArrayInitialize(line10, EMPTY_VALUE);  
  ArrayResize(line11, 100);
  ArrayInitialize(line11, EMPTY_VALUE);    
  ArrayResize(line12, 100);
  ArrayInitialize(line12, EMPTY_VALUE);    
  ArrayResize(line13, 100);
  ArrayInitialize(line13, EMPTY_VALUE);      
  ArrayResize(line14, 100);
  ArrayInitialize(line14, EMPTY_VALUE);  
  ArrayResize(line15, 100);
  ArrayInitialize(line15, EMPTY_VALUE);  
  
  ArrayResize(line16, 100);
  ArrayInitialize(line16, EMPTY_VALUE);  
  ArrayResize(line17, 100);
  ArrayInitialize(line17, EMPTY_VALUE);  
  ArrayResize(line18, 100);
  ArrayInitialize(line18, EMPTY_VALUE);    
  ArrayResize(line19, 100);
  ArrayInitialize(line19, EMPTY_VALUE);  
  ArrayResize(line20, 100);
  ArrayInitialize(line20, EMPTY_VALUE);  
  ArrayResize(line21, 100);
  ArrayInitialize(line21, EMPTY_VALUE);  
  ArrayResize(line22, 100);
  ArrayInitialize(line22, EMPTY_VALUE);    
  ArrayResize(line23, 100);
  ArrayInitialize(line23, EMPTY_VALUE);    
  ArrayResize(line24, 100);
  ArrayInitialize(line24, EMPTY_VALUE);    
  ArrayResize(line25, 100);
  ArrayInitialize(line25, EMPTY_VALUE);  
  ArrayResize(line26, 100);
  ArrayInitialize(line26, EMPTY_VALUE);    
  ArrayResize(line27, 100);
  ArrayInitialize(line27, EMPTY_VALUE);    
  ArrayResize(line28, 100);
  ArrayInitialize(line28, EMPTY_VALUE);      
  ArrayResize(line29, 100);
  ArrayInitialize(line29, EMPTY_VALUE);  
  ArrayResize(line30, 100);
  ArrayInitialize(line30, EMPTY_VALUE);  
  
    ArrayResize(vbru, Bars);
   ArrayInitialize(vbru, 0); 
 
    ArrayResize(mid, Bars);
   ArrayInitialize(mid, 0);     
 


   pos=0;
  
 for (i=500; i>=0; i--) 
    {
    
     
       if(iHigh(NULL,240,i)-iClose(NULL,240,i)>=MinLengthOfUpTail*pt && iClose(NULL,240,i)-iLow(NULL,240,i)>=MinLengthOfLoTail*pt  && MathAbs(iClose(NULL,240,i)-iOpen(NULL,240,i))<=MaxLengthOfBody*pt && vbru[i+1]==0) vbru[i]=(iOpen(NULL,240,i)+iClose(NULL,240,i))/2+.000042;
       if(iHigh(NULL,240,i)-iClose(NULL,240,i)<=MaxLengthOfUpTail1*pt && iClose(NULL,240,i)-iLow(NULL,240,i)>=MinLengthOfLoTail1*pt  && MathAbs(iClose(NULL,240,i)-iOpen(NULL,240,i))<=MaxLengthOfBody1*pt && vbru[i+1]==0) vbru[i]=(iOpen(NULL,240,i)+iClose(NULL,240,i))/2+.000042;
       if(iHigh(NULL,240,i)-iClose(NULL,240,i)>=MinLengthOfUpTail2*pt && iClose(NULL,240,i)-iLow(NULL,240,i)<=MaxLengthOfLoTail2*pt  && MathAbs(iClose(NULL,240,i)-iOpen(NULL,240,i))<=MaxLengthOfBody2*pt && vbru[i+1]==0) vbru[i]=(iOpen(NULL,240,i)+iClose(NULL,240,i))/2+.000042;
    
   
     }
         


  for (i=1; i<=250; i++)
   {
        if (vbru[i]>0){  mid[pos]= vbru[i]; pos=pos+1;}
   }
    
 
deletetxt1("Happy");

i=0;
   while(i<maxlines && pos>0)        
            {
               if (i==pos) break;
               if (mid[i]!=EMPTY_VALUE) lines[i]=mid[i];
               i++;
            }

   for (i=0; i<=displaylength-1; i++) {
   

   
      if (lines[0]>0) {line1[i]=lines[0]; line16[i]=lines[0];}
      if (lines[1]>0) {line2[i]=lines[1]; line17[i]=lines[1];}
      if (lines[2]>0) {line3[i]=lines[2]; line18[i]=lines[2];}
      if (lines[3]>0) {line4[i]=lines[3]; line19[i]=lines[3];}
      if (lines[4]>0) {line5[i]=lines[4]; line20[i]=lines[4];}
      if (lines[5]>0) {line6[i]=lines[5]; line21[i]=lines[5];}
      if (lines[6]>0) {line7[i]=lines[6]; line22[i]=lines[6];}
      if (lines[7]>0) {line8[i]=lines[7]; line23[i]=lines[7];}                
      if (lines[8]>0) {line9[i]=lines[8]; line24[i]=lines[8];}
      if (lines[9]>0) {line10[i]=lines[9]; line25[i]=lines[9];}  
      if (lines[10]>0) {line11[i]=lines[10]; line26[i]=lines[10];}
      if (lines[11]>0) {line12[i]=lines[11]; line27[i]=lines[11];}
      if (lines[12]>0) {line13[i]=lines[12]; line28[i]=lines[12];}
      if (lines[13]>0) {line14[i]=lines[13]; line29[i]=lines[13];}
      if (lines[14]>0) {line15[i]=lines[14]; line30[i]=lines[14];}
      
      
      
     if (i==6) {ObjectCreate("Happygail"+i, OBJ_RECTANGLE, 0,  Time[6], line1[i]+160*Point, Time[2], line1[i]-160*Point);
  ObjectSetInteger(0,"Happygail"+i,OBJPROP_COLOR,clrBlue);
  ObjectSet("Happygail"+i,OBJPROP_BACK,0);
  ObjectSet("Happygail"+i,OBJPROP_WIDTH,5);
  
  ObjectCreate("Happybail"+i, OBJ_RECTANGLE, 0,  Time[5], line2[i]+160*Point, Time[1], line2[i]-160*Point);
  ObjectSetInteger(0,"Happybail"+i,OBJPROP_COLOR,clrRed);
  ObjectSet("Happybail"+i,OBJPROP_BACK,0);
  ObjectSet("Happybail"+i,OBJPROP_WIDTH,5);
  
   
  if (line2[i]>line1[i]){ 
         ObjectCreate("Happydays"+iHigh(symbol,240,i), OBJ_TEXT, 0, Time[0], line2[i]+99*Point); 
         ObjectSetText("Happydays"+iHigh(symbol,240,i), DoubleToStr(NormalizeDouble(line2[i]+80*Point,4),4), 16, "Impact", Black);
         
         ObjectCreate("Happydays"+iLow(symbol,240,i), OBJ_TEXT, 0, Time[0], line1[i]-78*Point); 
         ObjectSetText("Happydays"+iLow(symbol,240,i), DoubleToStr(NormalizeDouble(line1[i]-80*Point,4),4), 16, "Impact", Black);
         }
  else { 
         ObjectCreate("Happydays"+iHigh(symbol,240,i), OBJ_TEXT, 0, Time[0], line1[i]+99*Point); 
         ObjectSetText("Happydays"+iHigh(symbol,240,i), DoubleToStr(NormalizeDouble(line1[i]+80*Point,4),4), 16, "Impact", Black);
         
         ObjectCreate("Happydays"+iLow(symbol,240,i), OBJ_TEXT, 0, Time[0], line2[i]-78*Point); 
         ObjectSetText("Happydays"+iLow(symbol,240,i), DoubleToStr(NormalizeDouble(line2[i]-80*Point,4),4), 16, "Impact", Black);
         }       
         
  
  }
   
      
}

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