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