Figures

Things that I figured right.

The noodles that the market could make an acceleration/thrust from.

I’ve listed 3 check points that are statistically likely for a terminal move.

I should have considered having a full charge, in that case, the gray line (THRST/No Break Extension) is a slim chance.

The second down candle was a push against the weekly low. It was good enough for another pierce beyond the 1.0250 level.

Now comes knowledge. The third candle hit a traction surface (back and forth through the 30-BB).

Notice on the following examples how a bull flag cand disable this secondary entry.

Now? One lifeline has been used; the 8 EMO should be the next to have some grip – a 3-5 hours long sell. I could picture another low that is lower than 1.0226 but would fall shy of 1.0213.

1.0250

Pro volume print today. The last time they tolerated a 33-pip move against their holdings (5 days out).

The untested outside candle happens to be at 1.0250 also.

Weekly R1 is at 1.0473

This is a bow back, and should not reach the low.

The 18-buy would be a little lower tomorrow.

Step #2

The importance of the last full candle outside the BB.

You either get a pullback to the 16 EMA for a continuation (with a break out beyond at some point), or multiple closes start to print on the other side of the 16 EMA for a reversal.

What do the Brits always say? Simples.

if ((High[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Low[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i) || (High[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i) && Low[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i))) &&
   ((High[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1) && Low[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1))
|| (High[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+1) && Low[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+1)))
){

               ObjectCreate("KAROLYI"+DoubleToStr(i), OBJ_RECTANGLE, 0, Time[i+2], High[i+1] , Time[i+1], Low[i+1]);
              ObjectSetInteger(0,"KAROLYI"+DoubleToStr(i),OBJPROP_COLOR,clrLemonChiffon);
              j=i-1;
           if (High[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+1)){
              while (j>0){
               if (Close[j]<Low[i+1]) break;
               j--;
              }
              ObjectCreate("KAROLYII"+DoubleToStr(i), OBJ_RECTANGLE, 0, Time[i+1], Low[i+1]+50*Point , Time[j], Low[i+1]);
              ObjectSetInteger(0,"KAROLYII"+DoubleToStr(i),OBJPROP_COLOR,clrLemonChiffon);
           }
           else if (Low[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1)){
              while (j>0){
               if (Close[j]>High[i+1]) break;
               j--;
              }
              ObjectCreate("KAROLYII"+DoubleToStr(i), OBJ_RECTANGLE, 0, Time[i+1], High[i+1]-50*Point , Time[j], High[i+1]);
              ObjectSetInteger(0,"KAROLYII"+DoubleToStr(i),OBJPROP_COLOR,clrLemonChiffon);
           }
}

CF 52 Pimp

First, the having gone too far function gets a new filter.

Like so.

The x + numbers print is 10 pips back from that candle’s high/low to make sure to get a fill

#property copyright "Copyright © 2022, Macdulio" 
#property link      "https://forexfore.blog" 
#property description "V1.0"
#property description "Counter Force 52 pimps"
#property description "18-sample move maximum."
#property strict

//--- indicator settings
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1  clrPink
#property indicator_color2  clrPowderBlue
#property indicator_color3  clrPurple
#property indicator_color4  clrBlue
#property indicator_color5  clrRed
#property indicator_color6  clrDarkKhaki
#property indicator_color7  clrWhite
#property indicator_level1 0
#property indicator_level2 52
#property indicator_level3 -52
#property indicator_levelcolor clrBlue
#property indicator_levelstyle STYLE_DOT

extern double valuetomonitor = 5.5;
extern int lookback = 100;
extern int indicator_window = 3;
extern int sample = 18;
extern double FSize=32;
double upper[], middle[], lower[];
double avg;
double FMax = FSize*6/5;
double iHi4[];
double iLo4[];    
  string symbol = Symbol();  
double ExtATRBuffer[],ExtATRBuffer2[],ExtATRBuffer3[],ExtATRBuffer4[],ExtATRBuffer5[],stoch60[];
double corr[],corr2[], RSI2[], squeeze[];
bool red[], orange[], blue[];

int init(){
  
   SetIndexBuffer(0,ExtATRBuffer);   
   SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,4,indicator_color1);
   SetIndexBuffer(1,ExtATRBuffer2);   
   SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,4,indicator_color2);
     SetIndexBuffer(2,ExtATRBuffer3);   
   SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID,4,indicator_color3); 
        SetIndexBuffer(3,ExtATRBuffer4);   
   SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID,4,indicator_color4); 
   SetIndexBuffer(4,ExtATRBuffer5);   
   SetIndexStyle(4,DRAW_HISTOGRAM,STYLE_SOLID,4,indicator_color5);
   
   return(INIT_SUCCEEDED);
   //return(0);
}

//+------------------------------------------------------------------+
//| Average True Range                                               |
//+------------------------------------------------------------------+
int start(){
  
  ArrayResize(ExtATRBuffer, Bars); 
  ArrayInitialize(ExtATRBuffer, EMPTY_VALUE);   
    ArrayResize(ExtATRBuffer2, Bars); 
  ArrayInitialize(ExtATRBuffer2, EMPTY_VALUE);   
      ArrayResize(ExtATRBuffer3, Bars); 
  ArrayInitialize(ExtATRBuffer3, EMPTY_VALUE);  
      ArrayResize(ExtATRBuffer4, Bars); 
  ArrayInitialize(ExtATRBuffer4, EMPTY_VALUE);  
     ArrayResize(ExtATRBuffer5, Bars); 
  ArrayInitialize(ExtATRBuffer5, EMPTY_VALUE);   
  ArrayResize(iHi4, Bars); 
  ArrayInitialize(iHi4, EMPTY_VALUE);   
  ArrayResize(iLo4, Bars); 
  ArrayInitialize(iLo4, EMPTY_VALUE);   
     ArrayResize(stoch60, Bars);   
 ArrayInitialize(stoch60,  EMPTY_VALUE);
  ArrayResize(RSI2, Bars);   
 ArrayInitialize(RSI2,  EMPTY_VALUE);
   ArrayResize(corr, Bars);   
 ArrayInitialize(corr,  EMPTY_VALUE);  
    ArrayResize(corr2, Bars);   
 ArrayInitialize(corr2,  EMPTY_VALUE);  
    ArrayResize(middle, Bars);   
 ArrayInitialize(middle,  EMPTY_VALUE);  
   ArrayResize(squeeze, Bars);   
 ArrayInitialize(squeeze,  0); 
  ArrayResize(upper, Bars);   
 ArrayInitialize(upper,  EMPTY_VALUE);  
 ArrayResize(lower, Bars);   
 ArrayInitialize(lower,  EMPTY_VALUE);  
  ArrayResize(red, Bars);   
 ArrayInitialize(red, false); 
 ArrayResize(orange, Bars);   
 ArrayInitialize(orange, false); 
 ArrayResize(blue, Bars);   
 ArrayInitialize(blue, false); 
    
   int i,j,k;

  for(i=Bars-100; i>=0; i--){ 
   
     if (Period()==240)   iHi4[i]=iMA(NULL,0,52,0,MODE_EMA, PRICE_HIGH,i);
     else if (Period()==30) iHi4[i]=iMA(NULL,0,414,0,MODE_EMA, PRICE_HIGH,i);
     else if (Period()==60) iHi4[i]=iMA(NULL,0,207,0,MODE_EMA, PRICE_HIGH,i);
     if (Period()==240)  iLo4[i]=iMA(NULL,0,52,0,MODE_EMA, PRICE_LOW,i);
     else if (Period()==30) iLo4[i]=iMA(NULL,0,414,0,MODE_EMA, PRICE_LOW,i);
     else if (Period()==60) iLo4[i]=iMA(NULL,0,207,0,MODE_EMA, PRICE_LOW,i);
      stoch60[i]=iStochastic(symbol,60,60,3,3,MODE_SMA,0,MODE_SIGNAL,i);
      RSI2[i]=iRSI(symbol,0,2,PRICE_MEDIAN,i);
}

deletetxt1("Pepper");
deletetxt1("Panace");
deletetxt1("PLOT");
deletetxt1("Titus");
deletetxt1("Scalein");
deletetxt1("Bod");

for(i=lookback; i>=0; i--){ 
      middle[i] = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_TYPICAL, i);
      avg  = findAvg(20, i);
      upper[i] = middle[i] + avg;
      lower[i] = middle[i] - avg;
      
  if (iBands(symbol,0,18,1,0,PRICE_CLOSE,MODE_UPPER,i)<upper[i] && iBands(symbol,0,18,1,0,PRICE_CLOSE,MODE_LOWER,i)>lower[i]) 
      { ObjectCreate("PLOT"+i,OBJ_TEXT, indicator_window, Time[i], 8.5);
        ObjectSetText("PLOT"+i, CharToStr(108), 16, "WingDings", clrDarkBlue);
        blue[i]=true;
      }
     
      
      if (iBands(symbol,0,18,1.4,0,PRICE_CLOSE,MODE_UPPER,i)<upper[i] && iBands(symbol,0,18,1.4,0,PRICE_CLOSE,MODE_LOWER,i)>lower[i]) 
      { ObjectCreate("PLOT"+i,OBJ_TEXT, indicator_window, Time[i], 8.5);
        ObjectSetText("PLOT"+i, CharToStr(108), 16, "WingDings", clrRed);
        red[i]=true;
      }
      
       if (iBands(symbol,0,18,1.8,0,PRICE_CLOSE,MODE_UPPER,i)<upper[i] && iBands(symbol,0,18,1.8,0,PRICE_CLOSE,MODE_LOWER,i)>lower[i]) 
      { ObjectCreate("PLOT"+i,OBJ_TEXT, indicator_window, Time[i], 8.5);
        ObjectSetText("PLOT"+i, CharToStr(108), 16, "WingDings", clrOrange);
        orange[i]=true;
      }
 
 ExtATRBuffer[i]= -1*(iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,sample-1,i+1))-Low[i])*10000;
 if (ExtATRBuffer[i]<-93) ExtATRBuffer[i]=-93;
 ExtATRBuffer2[i]=(High[i]-iLow(symbol,0,iLowest(symbol,0,MODE_LOW,sample-1,i+1)))*10000;
 if (ExtATRBuffer2[i]>93) ExtATRBuffer2[i]=93;
ExtATRBuffer4[i]=ExtATRBuffer2[i]; 
 if (ExtATRBuffer[i]<-91 && Low[i]<iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,10,i))-820*Point) ExtATRBuffer3[i]=ExtATRBuffer[i];
 else if (ExtATRBuffer2[i]>91 && High[i]>iLow(symbol,0,iLowest(symbol,0,MODE_LOW,10,i))+820*Point) ExtATRBuffer3[i]=ExtATRBuffer2[i]; 
 
 
 ///NDF SCALE INS
 
 ///NDF SELL
 if (i>0 && ExtATRBuffer3[i+4]==EMPTY_VALUE && ExtATRBuffer3[i+2]==EMPTY_VALUE && ExtATRBuffer3[i+3]==EMPTY_VALUE && 
 ExtATRBuffer3[i+1]>0 && ExtATRBuffer3[i+1]<200 && Close[i+2]>iMA(symbol,0,17,0,MODE_SMA,PRICE_MEDIAN,i+2)){ 
                     ObjectCreate("Scalein"+IntegerToString(i), OBJ_RECTANGLE, 0,  Time[i+7], High[i+1], Time[i+3], High[i]+200*Point);
                     ObjectSetInteger(0,"Scalein"+IntegerToString(i),OBJPROP_COLOR,clrRed);
                     ObjectSet("Scalein"+IntegerToString(i),OBJPROP_BACK,0);
                      ObjectSet("Scalein"+IntegerToString(i),OBJPROP_WIDTH,5); 
                      
                           ObjectCreate("Scaleind"+IntegerToString(i), OBJ_TEXT, 0, Time[i+5], High[i+1]-30*Point); 
          ObjectSetText("Scaleind"+IntegerToString(i), "x "+DoubleToStr(NormalizeDouble(High[i+1]-100*Point,4),4), 19, "Impact",  DarkBlue); 
                      }
 
 
 
if (i>0 && ExtATRBuffer3[i+4]==EMPTY_VALUE && ExtATRBuffer3[i+3]==EMPTY_VALUE && ExtATRBuffer3[i+2]==EMPTY_VALUE && 
 ExtATRBuffer3[i+1]>0 && ExtATRBuffer3[i+1]<200 && Close[i+2]>iMA(symbol,0,17,0,MODE_SMA,PRICE_MEDIAN,i+2) && High[i+1]-Low[i+1]<1100*Point ){ 
                        ObjectCreate("Bod"+IntegerToString(i), OBJ_TEXT, 2, Time[i+4], 80); 
          ObjectSetText("Bod"+IntegerToString(i), "NDS1:"+DoubleToStr(NormalizeDouble(High[i+1]+80*Point,4),4), 14, "Impact",  DarkBlue); 
          ObjectCreate("Bodo"+IntegerToString(i), OBJ_TEXT, 2, Time[i+4], 40); 
          ObjectSetText("Bodo"+IntegerToString(i), "NDS2:"+DoubleToStr(NormalizeDouble(High[i+1]+160*Point,4),4), 14, "Impact",  DarkBlue); 
          ObjectCreate("Boda"+IntegerToString(i), OBJ_TEXT, 2, Time[i+4], 20); 
          ObjectSetText("Boda"+IntegerToString(i), "NDS3:"+DoubleToStr(NormalizeDouble(High[i+1]+240*Point,4),4), 14, "Impact",  DarkBlue);   }
                       
 
 
 
 ///NDF Buy
                     
 if (i>0 && ExtATRBuffer3[i+4]==EMPTY_VALUE && ExtATRBuffer3[i+3]==EMPTY_VALUE && ExtATRBuffer3[i+2]==EMPTY_VALUE && 
 ExtATRBuffer3[i+1]<0 && ExtATRBuffer3[i+1]>-200 && High[i+2]-Low[i+2]<1100*Point && High[i+1]<iMA(symbol,0,17,0,MODE_SMA,PRICE_MEDIAN,i+1) && High[i+1]-Low[i+1]<1100*Point){ 
          ObjectCreate("Bod"+IntegerToString(i), OBJ_TEXT, 2, Time[i+4], 80); 
          ObjectSetText("Bod"+IntegerToString(i), "NDB1:"+DoubleToStr(NormalizeDouble(Low[i+1]-40*Point,4),4), 14, "Impact",  DarkBlue); 
          ObjectCreate("Bodo"+IntegerToString(i), OBJ_TEXT, 2, Time[i+4], 40); 
          ObjectSetText("Bodo"+IntegerToString(i), "NDB2:"+DoubleToStr(NormalizeDouble(Low[i+1]-80*Point,4),4), 14, "Impact",  DarkBlue); 
          ObjectCreate("Boda"+IntegerToString(i), OBJ_TEXT, 2, Time[i+4], 20); 
          ObjectSetText("Boda"+IntegerToString(i), "NDB3:"+DoubleToStr(NormalizeDouble(Low[i+1]-120*Point,4),4), 14, "Impact",  DarkBlue);   

 }
                                         
                     
 if (i>0 && ExtATRBuffer3[i+4]==EMPTY_VALUE && ExtATRBuffer3[i+3]==EMPTY_VALUE && 
 ExtATRBuffer3[i+1]<0 && ExtATRBuffer3[i+1]>-200 && High[i+2]-Low[i+2]<1100*Point && High[i+1]<iMA(symbol,0,17,0,MODE_SMA,PRICE_MEDIAN,i+1) ){ 
                     if (High[i+1]-Low[i+1]>1100*Point) ObjectCreate("Scalein"+IntegerToString(i), OBJ_RECTANGLE, 0,  Time[i+7], Close[i+1], Time[i+3], Close[i+1]-150*Point);  
                     else ObjectCreate("Scalein"+IntegerToString(i), OBJ_RECTANGLE, 0,  Time[i+7], Low[i+1], Time[i+3], Low[i+1]-150*Point);
                     ObjectSetInteger(0,"Scalein"+IntegerToString(i),OBJPROP_COLOR,clrGreen);
                     ObjectSet("Scalein"+IntegerToString(i),OBJPROP_BACK,0);
                     ObjectSet("Scalein"+IntegerToString(i),OBJPROP_WIDTH,5); 
                     
                     ObjectCreate("Scaleind"+IntegerToString(i), OBJ_TEXT, 0, Time[i+5], Low[i+1]+90*Point); 
          ObjectSetText("Scaleind"+IntegerToString(i), "x "+DoubleToStr(NormalizeDouble(Low[i+1]+100*Point,4),4), 19, "Impact",  DarkBlue); 
                     
                     }
                     


if (Period()==60){ 
   
  corr[i]=corr[i+1];
   corr2[i]=corr2[i+1];
   if (ExtATRBuffer4[i+6]!=EMPTY_VALUE) {corr[i]=iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,60,i))-1360*Point; corr2[i]=iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,60,i))-2100*Point;} 
   if (ExtATRBuffer5[i+6]!=EMPTY_VALUE) {corr[i]=iLow(symbol,0,iLowest(symbol,0,MODE_LOW,60,i))+1360*Point; corr2[i]=iLow(symbol,0,iLowest(symbol,0,MODE_LOW,60,i))+2100*Point;}
 }




}

deletetxt1("AverD");

int twodigits = NormalizeDouble(ExtATRBuffer2[0],0);

if (MathAbs(ExtATRBuffer[0])>ExtATRBuffer2[0]) twodigits = NormalizeDouble(MathAbs(ExtATRBuffer[0]),0);

//string tds = IntegerToString(twodigits);

int tens = round(twodigits/10);

int ones = twodigits-tens*10; 

string stens, sones;


switch(tens)
{
case  1:   stens=CharToStr(140);
        break;
case  2:   stens=CharToStr(141);
        break;
case  3:   stens=CharToStr(142);
        break;        
case  4:   stens=CharToStr(143);
        break;
case  5:   stens=CharToStr(144);
        break;
case  6:   stens=CharToStr(145);
        break;        
case  7:   stens=CharToStr(146);
        break;                
case  8:   stens=CharToStr(147);
        break;                        
case  9:   stens=CharToStr(148);
        break;                      
  default: stens=CharToStr(139);
      break;
  }
  
//deletetxt1("AverD");

switch(ones)
{
case  1:   sones=CharToStr(140);
        break;
case  2:   sones=CharToStr(141);
        break;
case  3:   sones=CharToStr(142);
        break;        
case  4:   sones=CharToStr(143);
        break;
case  5:   sones=CharToStr(144);
        break;
case  6:   sones=CharToStr(145);
        break;        
case  7:   sones=CharToStr(146);
        break;                
case  8:   sones=CharToStr(147);
        break;                        
case  9:   sones=CharToStr(148);
        break;                      
  default: sones=CharToStr(139);
      break;
  }

 
string jointstring=stens+sones;
ObjectCreate("AverD",OBJ_LABEL,indicator_window, 0,0);

ObjectSet("AverD",OBJPROP_CORNER,3);
    ObjectSet("AverD",OBJPROP_XDISTANCE,20);
  ObjectSet("AverD",OBJPROP_YDISTANCE,27);
  
ObjectSetText("AverD",jointstring,40,"Wingdings",DimGray);
if (twodigits>80)  ObjectSetText("AverD",jointstring,40,"Wingdings",Gold);  
if (twodigits>93)  ObjectSetText("AverD",jointstring,40,"Wingdings",DeepPink);  

    

deletetxt1("Crush");  
deletetxt1("Leap");  
deletetxt1("Grog"); 
deletetxt1("Countess");
deletetxt1("Missing");
deletetxt1("KAROLY");
  
int counter = 9;  
  
for(i=lookback; i>=0; i--){   

if (red[i+2]==true && red[i+1]==true && red[i]==false && Close[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)  ){
        if (iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)-iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+3)>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i)-iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+3)
         && Close[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+1)
         && Open[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1)
         && Close[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1)
        )
            {ObjectCreate(0,"TitusX"+IntegerToString(i),OBJ_TREND, 0, Time[i], High[i], Time[i], High[i]+370*Point);
            ObjectSet("TitusX"+IntegerToString(i), OBJPROP_COLOR, clrRed );
            }
         else if(Close[i]<iMA(symbol,0,30,0,MODE_SMA,PRICE_MEDIAN,i)
            && Close[i+2]>iMA(symbol,0,30,0,MODE_SMA,PRICE_MEDIAN,i+2)
         ) {ObjectCreate(0,"TitusX"+IntegerToString(i),OBJ_TREND, 0, Time[i], High[i], Time[i], High[i]+370*Point);
          ObjectSet("TitusX"+IntegerToString(i), OBJPROP_COLOR, clrRed );
         }
          else if (Close[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i) 
           && i>0 && RSI2[i-1]>80
          ) {ObjectCreate(0,"TitusX"+IntegerToString(i),OBJ_TREND, 0, Time[i], Low[i], Time[i], Low[i]-370*Point);
         ObjectSet("TitusX"+IntegerToString(i), OBJPROP_COLOR, clrGreen );
      }
      ObjectSet("TitusX"+IntegerToString(i), OBJPROP_WIDTH, 6 );
      ObjectSet("TitusX"+IntegerToString(i), OBJPROP_STYLE, 1 );
      ObjectSetInteger(0,"TitusX"+IntegerToString(i), OBJPROP_RAY_RIGHT, false );
}


if (orange[i+2]==true && orange[i+1]==true && orange[i]==false && orange[i+5]==false && Close[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1) ){
        if (iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)-iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+3)>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i)-iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+3))
            {ObjectCreate(0,"TitusX"+IntegerToString(i),OBJ_TREND, 0, Time[i], High[i], Time[i], High[i]+370*Point);
            ObjectSet("TitusX"+IntegerToString(i), OBJPROP_COLOR, clrRed );
            }
         else if(Close[i]<iMA(symbol,0,30,0,MODE_SMA,PRICE_MEDIAN,i)
         && Close[i+2]>iMA(symbol,0,30,0,MODE_SMA,PRICE_MEDIAN,i+2)
         ) {ObjectCreate(0,"TitusX"+IntegerToString(i),OBJ_TREND, 0, Time[i], High[i], Time[i], High[i]+370*Point);
            ObjectSet("TitusX"+IntegerToString(i), OBJPROP_COLOR, clrRed );
          }
          else {ObjectCreate(0,"TitusX"+IntegerToString(i),OBJ_TREND, 0, Time[i], Low[i], Time[i], Low[i]-370*Point);
         ObjectSet("TitusX"+IntegerToString(i), OBJPROP_COLOR, clrGreen );
      }
      ObjectSet("TitusX"+IntegerToString(i), OBJPROP_WIDTH, 6 );
      ObjectSet("TitusX"+IntegerToString(i), OBJPROP_STYLE, 1 );
      ObjectSetInteger(0,"TitusX"+IntegerToString(i), OBJPROP_RAY_RIGHT, false );
}





  if (counter>-1) counter++;
      if (( (ExtATRBuffer[i+7]<1.8 && ExtATRBuffer[i+6]<1.8  && ExtATRBuffer[i+5]<1.8 && ExtATRBuffer[i+4]<1.8 && ExtATRBuffer[i+3]<1.8 && ExtATRBuffer[i+2]<1.8 && ExtATRBuffer[i+1]>1.8 && ExtATRBuffer[i]<1.8) ||    
      (ExtATRBuffer[i+9]>1.1 && ExtATRBuffer[i+8]>1.1 && ExtATRBuffer[i+7]>1.1 && ExtATRBuffer[i+6]>1.1 && ExtATRBuffer[i+5]>1.1 && ExtATRBuffer[i+9]<2.1 && ExtATRBuffer[i+8]<2.1 && ExtATRBuffer[i+7]<2.1 && ExtATRBuffer[i+6]<2.1 && ExtATRBuffer[i+5]<2.1 && ExtATRBuffer[i+4]<2.1 && ExtATRBuffer[i+3]<2.1 && ExtATRBuffer[i+1]>2.1 && ExtATRBuffer[i]<2.1) ||
      (ExtATRBuffer[i+9]>1.1 && ExtATRBuffer[i+8]>1.1 && ExtATRBuffer[i+7]>1.1 && ExtATRBuffer[i+6]>1.1 && ExtATRBuffer[i+5]>1.1 && ExtATRBuffer[i+7]<2.4 && ExtATRBuffer[i+5]<2.4 && ExtATRBuffer[i+3]<2.4 && ExtATRBuffer[i+1]>2.4 && ExtATRBuffer[i]<2.4) ||  
       (ExtATRBuffer[i+5]<3 && ExtATRBuffer[i+3]<3 && ExtATRBuffer[i+1]>3 && ExtATRBuffer[i]<3) ||  (ExtATRBuffer[i+5]<3.6 && ExtATRBuffer[i+3]<3.6 && ExtATRBuffer[i+1]>3.6 && ExtATRBuffer[i]<3.6) ||  
       (ExtATRBuffer[i+5]<3.9 && ExtATRBuffer[i+3]<3.9 && ExtATRBuffer[i+1]>3.9 && ExtATRBuffer[i]<3.9) ||  
       (ExtATRBuffer[i+9]>1.1 && ExtATRBuffer[i+8]>1.1 && ExtATRBuffer[i+7]>1.1 && ExtATRBuffer[i+6]>1.1 && ExtATRBuffer[i+5]>1.1 && ExtATRBuffer[i+7]<valuetomonitor && ExtATRBuffer[i+5]<valuetomonitor && ExtATRBuffer[i+3]<valuetomonitor && ExtATRBuffer[i+1]>valuetomonitor && ExtATRBuffer[i]<valuetomonitor) ||  
       (ExtATRBuffer[i+3]<4.5 && ExtATRBuffer[i+1]>4.5 && ExtATRBuffer[i]<4.5) ||  (ExtATRBuffer[i+3]<5 && ExtATRBuffer[i+1]>5 && ExtATRBuffer[i]<5)) && ExtATRBuffer[i]>1.7 ) {
           
           
           if ((i<80 && Period()==240) || (Period()<240)){
             ObjectCreate("Crushi"+i,OBJ_TEXT, indicator_window, Time[i+2], ExtATRBuffer[i]);
            ObjectCreate("Crush"+i,OBJ_TEXT, indicator_window, Time[i+2], ExtATRBuffer[i]);
           ObjectCreate("Crushy"+i,OBJ_TEXT, indicator_window, Time[i+2], ExtATRBuffer[i]-1);
             ObjectCreate("Crushd"+i,OBJ_TEXT, indicator_window, Time[i+2], ExtATRBuffer[i]-1);
              
       
       if (Close[i]<iLo4[i] )  {ObjectSetText("Crushi"+i, "Vol Crush > ", 21, "Impact", clrWhite); ObjectSetText("Crush"+i, "Vol Crush -> ", 19, "Impact", clrNavy); ObjectSetText("Crushy"+i,DoubleToStr(NormalizeDouble(iHi4[i],4),4), 21, "Impact", clrWhite); ObjectSetText("Crushd"+i, DoubleToStr(NormalizeDouble(iHi4[i],4),4), 19, "Impact", clrNavy);   }
       
       else if (Close[i]>iHi4[i] ) { ObjectSetText("Crushi"+i, "Vol Crush > ", 21, "Impact", clrWhite); ObjectSetText("Crush"+i, "Vol Crush -> ", 19, "Impact", clrNavy);  ObjectSetText("Crushy"+i, DoubleToStr(NormalizeDouble(iLo4[i],4),4), 21, "Impact", clrWhite); ObjectSetText("Crushd"+i, DoubleToStr(NormalizeDouble(iLo4[i],4),4), 19, "Impact", clrNavy);  }
         
      }}      

      
      
           if (counter>0 && counter<4){
            if (ExtATRBuffer[i]<=2.5 || ExtATRBuffer[i]==EMPTY_VALUE) ObjectCreate("Countess"+i,OBJ_TEXT, indicator_window, Time[i], ExtATRBuffer[i+3]+.25);
            else ObjectCreate("Countess"+i,OBJ_TEXT, indicator_window, Time[i], 3.2);
               if (counter==3) ObjectSetText("Countess"+i, IntegerToString(counter,1,0), 19, "Arial Black", clrMagenta);
                 else ObjectSetText("Countess"+i, IntegerToString(counter,1,0), 19, "Arial Black", clrBlack);
               }
      
      
      if (counter==3 && Low[i+3]<iMA(NULL,240,52,0,MODE_EMA, PRICE_MEDIAN,i+3) && ((Low[i]>Low[i+3] && Low[i+1]>Low[i+3] && Low[i+2]>Low[i+3]) || (Low[i]>Low[i+4] && Low[i+1]>Low[i+4] && Low[i+2]>Low[i+4]))  ){
      //
     
        
        if (i>1) {
        
        j=i-1;
        
        while (j>0){
         if (Low[j]<iLow(symbol,240,iLowest(symbol,240,MODE_LOW,6,i+3))) break;
         j--;}
        
         if (j==0) {
               ObjectCreate("KAROLY"+DoubleToStr(i), OBJ_RECTANGLE, 0, Time[i+2], iLow(symbol,240,iLowest(symbol,240,MODE_LOW,6,i+3)) , Time[i], iLow(symbol,240,iLowest(symbol,240,MODE_LOW,6,i+3))-FSize/2*10*Point);
              ObjectSetInteger(0,"KAROLY"+DoubleToStr(i),OBJPROP_COLOR,indicator_color6);
        
        
         k=i+3;
         while (k<i+40){
            if (iFractals(symbol,240,MODE_LOWER,k) && Low[k]<iLow(symbol,240,iLowest(symbol,240,MODE_LOW,3,i))) break; 
            k++;
         }   
            
        
        if (k<i+40){
            ObjectCreate("Missingg"+i,OBJ_TEXT, indicator_window, Time[i+3], ExtATRBuffer[i+2]+.5);
        ObjectSetText("Missingg"+i, " Missing B: "+DoubleToStr(NormalizeDouble(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,7,i+1)),4),4), 16, "Arial Black", clrWhite);
        ObjectCreate("Missing"+i,OBJ_TEXT, indicator_window, Time[i+3], ExtATRBuffer[i+2]+.5);
        ObjectSetText("Missing"+i, "Missing B: "+DoubleToStr(NormalizeDouble(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,7,i+1)),4),4), 16, "Arial Black", clrBlack);
        
             ObjectDelete(0,"Trendex3_1"+DoubleToStr(k));
             ObjectCreate(0,"Trendex3_1"+DoubleToStr(k),OBJ_TREND,0,Time[k],Low[k],Time[iLowest(symbol,240,MODE_LOW,3,i)],iLow(symbol,240,iLowest(symbol,240,MODE_LOW,3,i)));
             ObjectSetInteger(0,"Trendex3_1"+DoubleToStr(k),OBJPROP_RAY_RIGHT,true);
             ObjectSet("Trendex3_1"+DoubleToStr(k),OBJPROP_COLOR,indicator_color1);
             ObjectSet("Trendex3_1"+DoubleToStr(k),OBJPROP_BACK,1);
             ObjectSet("Trendex3_1"+DoubleToStr(k),OBJPROP_WIDTH,6); 
             ObjectDelete(0,"Trendex3_2"+DoubleToStr(k));
             ObjectCreate(0,"Trendex3_2"+DoubleToStr(k),OBJ_TREND,0,Time[k],Low[k],Time[iLowest(symbol,240,MODE_LOW,3,i)],iLow(symbol,240,iLowest(symbol,240,MODE_LOW,3,i)));
             ObjectSetInteger(0,"Trendex3_2"+DoubleToStr(k),OBJPROP_RAY_RIGHT,true);
             ObjectSet("Trendex3_2"+DoubleToStr(k),OBJPROP_COLOR,indicator_color7);
             ObjectSet("Trendex3_2"+DoubleToStr(k),OBJPROP_BACK,1);
             ObjectSet("Trendex3_2"+DoubleToStr(k),OBJPROP_WIDTH,3); 
       
        }
        
        }
        }
      }
      
          if (counter==3 && High[i+3]>iMA(NULL,240,52,0,MODE_EMA, PRICE_MEDIAN,i+3) && (( High[i]<High[i+3] && High[i+1]<High[i+3] && High[i+2]<High[i+3]) || (High[i]<High[i+4] && High[i+1]<High[i+4] && High[i+2]<High[i+4]))  ){
      //
         
        
        
         if (i>1) {
        
        j=i-1;
        
        while (j>0){
         if (High[j]>iHigh(symbol,240,iHighest(symbol,240,MODE_HIGH,6,i+3))) break;
         j--;}
        
         if (j==0) {
        
        
        ObjectCreate("KAROLY"+DoubleToStr(i), OBJ_RECTANGLE, 0, Time[i+2], iHigh(symbol,240,iHighest(symbol,240,MODE_HIGH,6,i+3)) , Time[i], iHigh(symbol,240,iHighest(symbol,240,MODE_HIGH,6,i+3))+FSize/2*10*Point);
         ObjectSetInteger(0,"KAROLY"+DoubleToStr(i),OBJPROP_COLOR,indicator_color6);
         
         
         k=i+3;
         while (k<i+40){
            if (iFractals(symbol,240,MODE_UPPER,k) && High[k]>iHigh(symbol,240,iHighest(symbol,240,MODE_HIGH,6,i+3))) break; 
            k++;
         }   
            
        
        if (k<i+40){
         ObjectCreate("Missingg"+i,OBJ_TEXT, indicator_window, Time[i+3], ExtATRBuffer[i+2]+.5);
        ObjectSetText("Missingg"+i, " Missing B: "+DoubleToStr(NormalizeDouble(iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,7,i+1)),4),4), 16, "Arial Black", clrWhite);
        ObjectCreate("Missing"+i,OBJ_TEXT, indicator_window, Time[i+3], ExtATRBuffer[i+2]+.5);
        ObjectSetText("Missing"+i, "Missing B: "+DoubleToStr(NormalizeDouble(iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,7,i+1)),4),4), 16, "Arial Black", clrBlack);
        
             ObjectDelete(0,"Trendex3_1"+DoubleToStr(k));
             ObjectCreate(0,"Trendex3_1"+DoubleToStr(k),OBJ_TREND,0,Time[k],Low[k],Time[iHighest(symbol,240,MODE_HIGH,3,i)],iHigh(symbol,240,iHighest(symbol,240,MODE_HIGH,3,i)));
             ObjectSetInteger(0,"Trendex3_1"+DoubleToStr(k),OBJPROP_RAY_RIGHT,true);
             ObjectSet("Trendex3_1"+DoubleToStr(k),OBJPROP_COLOR,indicator_color5);
             ObjectSet("Trendex3_1"+DoubleToStr(k),OBJPROP_BACK,1);
             ObjectSet("Trendex3_1"+DoubleToStr(k),OBJPROP_WIDTH,6); 
             ObjectDelete(0,"Trendex3_2"+DoubleToStr(k));
             ObjectCreate(0,"Trendex3_2"+DoubleToStr(k),OBJ_TREND,0,Time[k],Low[k],Time[iHighest(symbol,240,MODE_HIGH,3,i)],iHigh(symbol,240,iHighest(symbol,240,MODE_HIGH,3,i)));
             ObjectSetInteger(0,"Trendex3_2"+DoubleToStr(k),OBJPROP_RAY_RIGHT,true);
             ObjectSet("Trendex3_2"+DoubleToStr(k),OBJPROP_COLOR,indicator_color7);
             ObjectSet("Trendex3_2"+DoubleToStr(k),OBJPROP_BACK,1);
             ObjectSet("Trendex3_2"+DoubleToStr(k),OBJPROP_WIDTH,3); 
       
        } 
         
      } 
      
      }
     } 
    
      
}

double rou=0;
double rod=0;

if (Period()==30){
deletetxt1("Libec");

i=0;
while(i<10){
   if (High[i]-iMA(NULL,0,17,0,MODE_EMA, PRICE_MEDIAN,i)>rou) rou=High[i]-iMA(NULL,0,17,0,MODE_EMA, PRICE_MEDIAN,i);
   if (iMA(NULL,0,17,0,MODE_EMA, PRICE_MEDIAN,i)-Low[i]>rod) rod=iMA(NULL,0,17,0,MODE_EMA, PRICE_MEDIAN,i)-Low[i];
i++;
}

  ObjectCreate("Libec"+4,OBJ_LABEL,indicator_window, 0,0);
   ObjectSetText("Libec"+4, DoubleToStr(rou*10000,2)+" ("+DoubleToStr(iMA(NULL,0,17,0,MODE_EMA, PRICE_MEDIAN,0)+rou,4)+")", 11, "Arial Black", DarkViolet);  
  ObjectSet("Libec"+4,OBJPROP_CORNER,2);
    ObjectSet("Libec"+4,OBJPROP_XDISTANCE,20);
  ObjectSet("Libec"+4,OBJPROP_YDISTANCE,67);
  if (rou>rod) ObjectSet("Libec"+4,OBJPROP_COLOR,clrDarkGreen);
  else if (rou<.0010) ObjectSet("Libec"+4,OBJPROP_COLOR,clrGray);
   else ObjectSet("Libec"+4,OBJPROP_COLOR,clrBlack);
  


  ObjectCreate("Libec"+5,OBJ_LABEL,indicator_window, 0,0);
   ObjectSetText("Libec"+5,DoubleToStr(rod*10000,2)+" ("+DoubleToStr(iMA(NULL,0,17,0,MODE_EMA, PRICE_MEDIAN,0)-rod,4)+")", 11, "Arial Black", DarkViolet);  
  ObjectSet("Libec"+5,OBJPROP_CORNER,2);
    ObjectSet("Libec"+5,OBJPROP_XDISTANCE,20);
  ObjectSet("Libec"+5,OBJPROP_YDISTANCE,47);
  if (rod>rou) ObjectSet("Libec"+5,OBJPROP_COLOR,clrCrimson); 
  else if (rod<.0010) ObjectSet("Libec"+5,OBJPROP_COLOR,clrGray);
   else ObjectSet("Libec"+5,OBJPROP_COLOR,clrBlack);

}


 ObjectCreate("Libec"+6,OBJ_LABEL,indicator_window, 2,0);
      ObjectSetText("Libec"+6,"Deployment on muted, capped side (30-x)",12,"Impact");
  ObjectSet("Libec"+6,OBJPROP_CORNER,1);
    ObjectSet("Libec"+6,OBJPROP_XDISTANCE,35);
  ObjectSet("Libec"+6,OBJPROP_YDISTANCE,87);
 ObjectSet("Libec"+6,OBJPROP_COLOR,clrTeal);

ObjectCreate("Libec"+7,OBJ_LABEL,indicator_window, 2,0);
      ObjectSetText("Libec"+7,"Adding on ZERO after D|",12,"Impact");
  ObjectSet("Libec"+7,OBJPROP_CORNER,1);
    ObjectSet("Libec"+7,OBJPROP_XDISTANCE,35);
  ObjectSet("Libec"+7,OBJPROP_YDISTANCE,107);
 ObjectSet("Libec"+7,OBJPROP_COLOR,clrTeal);


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

   double findAvg(int period, int shift) {
      double sum=0;
      for (int x=shift;x<(shift+period);x++) {     
         sum += High[x]-Low[x];
      }
      sum = sum/period;
      return (sum);
   }

W2 Down

Getting ourselves a way overdue W2.

The MA ribbon (W2 buy) is at 1.0341, the No Break Extension of the consolidation (fluctuation maximum away) is 1.0337. Pretty much there now. Weekly pivot at 1.0341.

There’s gonna be a powerful move coming out of this falling wedge.


Me, I’m Scratchy – I wrote it yesterday about an ex-coworker. The style is halfway between UB 40 and Level 42. Currently, I hold this one in the best 5 ever, which is something out of the 800+ songs I have. Seriously, listen in.

Capitulation Program

As it turns out I had the wrong flowchart.

Here’s a complete re-haul.

The steepest trap is a capitulation thrust, as people’s short term memory/fears will be keep on fading the return trapping themselves more and more.

If the pendulum swings outside the playfield a calibration~mean reversion gets kicked off.

The pendulum swings between the absolute limits.

Any wick that is 16 pips or longer towards the extreme print is a clue of squaring (i.e. the market maker dumping out excess load in line with the unfolding mean reversion).

Fading efforts of the return move to the 120SMA and the 207EMA would get run over. If these two levels get taken without a correction in between below the S30, the market may be in a parabolic mode, receiving constant charge at the upper BB, it can get as far as the FF level.

Next? The short squeeze provided some bull advantage, there is a chance to consolidate above the 80 line. If that happens, the likelihood that we saw the low for the year on the first trading day goes from very high to certain.

Since numerous hourly candles were completely outside the 30-sample BB, if a new leg were to start (drive), I would expect the price to come back to the 30 SMA at a minimum or optionally to the lower 30-sample BB, which is currently in the 1.025x range thanks to the volatility increasing push.

3rd F

As we discussed. The first F proves the presence of counter-directional volatility by blasting through the 100-pip stop.

The second F prompts a move that violates the 100-pip stop by a little.

The third F puts the price over the 100-pip stop for good after going beyond 1 and 2.

However, an F needs the ink to dry. The next 3 days would all have to stay above the low made. 2 more days to go. The #3 on the upside received 2 scares, one fell shy by 10, the other by 4.5 pips (on day 2 and day 3 namely).


#47 kicks off the new year

Discovery Channel

So the thick lines are the absolute limits relative to the consolidation mean. 50 pips beyond the black numbers (FFF++).

It took 13 years to figure out what the configuration was. No, not the order of moving averages.

The configuration in case of the Euro is an 80-pip field from the 200-hour low or the 200-hour high, whichever is closer. It shows what the market is currently preoccupied with. So the brown line is the configuration limit. There is no literature for this anywhere.

The 64-pip distance I figured out a lot earlier, probably a decade ago when I started saying things like 80 percent of the time the market moves 80 percent of 80 pips (daily statistics).

For me trading is about building and utilizing a knowledge base. I try to imagine flow charts with black and white outcomes.

When we saw the last FFF++ capitulation, this is what happened (step one: the challenge of the configuration limit).

#2 back test of the S-30. #3 spike above the 30-sample upper BB. #4 touch down on the lower BB. #5 a spike above the upper BB for the second time, the first engagement of the 9-day EMA. #6 a 3/4 way retracement within the bands.

#3 may or may not be done. I’ll make sure to dump most of my shorts upon the touch of the lower BB.


Album #47 is in the works. The first single is The Final Countdown

[Verse]
Engines roar, it's all set to go
Refinement peaks, as we start the show
To depart, like leaving a part
Time's ticking, the end is the start
[Chorus]
If this is the final countdown, then what comes next?
Talk about going out with a bang, no regrets
You could always count on me, now here's the count back
The launchpad's gonna be destroyed, no turning back

In the velvet night, where shadows merge and flee
With elegance, the climax sets us free
Departing grace, leaving fragments behind
Each end, a circle, tied to a new bind

[Chorus]
If this is the final countdown, then what comes next?
A quick memento to remember the storm we left
Count down your blessings, where night meets dawn
We'll find rebirth, as the echoes linger on

A thorn is now getting torn out by the perforation.
Cut out my outline. Confused memories would fill in the blank. 
Find I'm gone. 
Find I'm no longer near. 
Find something to do for fun. 
Oh yeah, and find another someone.
[Chorus]
If this is the final countdown, then what comes next?
A quick memento to remember the storm we left
Count down your blessings, where night meets dawn
We'll find rebirth, as the echoes linger on

Same Trap, Different Outcome

I have walked into the same thing twice. One example should have been enough.

Do you remember this thing?

This capitulation was the same as today’s since it was an extra-large thrust preceded by multiple accelerations. Although the last swing’s length was 164 pips versus the current 151, there was one measurement that made them almost identical in length. The distance achieved from the consolidation mean was W3FFF++ in both cases.

The gray line at the bottom of the orange W3 is W3F, the next horizontal line is another F, the thus the last one is W3FFF the pluses stand for 5 more pips each.

What is different is the bounce, which was 100 pips in the first case with a rally that continued after a 50-pip retracement versus the current measly 40 pips then volatility crush.

I have a problem with calling a bottom with an MFI this oversold. The bottom isn’t safe in my opinion, as it is within a fluctuation maximum (45 pips).

As soon the 8 EMO catches up, I’ll take back the missing shorts for a bottom re-visit / beat.

The next thrust does not have to make a beat, although it would be likely. We need to see a 2-5 hour selling that prints a fractal and does not have an MFI reading below 24.

No Traction In Paraiso

Paraiso Aqui that is (Harry Harrison reference).

I have mentioned before the need to push against something.

Here’s something interesting that seems to happen outside the hourly 120 BB.

For sufficient traction for another leg the price has to push back inside the 120 BB by 3-24 pips.

With extra abundant volatility (Election night) there are two lifelines to be had. The 30-sample BB and the 8 EMO. Once these two were utilized, the reaction from the BB was a mere 43 pips, and the next entry was a bona fide rally.

Notice how the lifelines resulted in incremental beats, the total progress was 32 pips out of the two independent price reversals.

So my expectation here is a move back inside the BB by 3-24 pips.

Quasi having to balance out the hedge/overhedge. C/S stands for Continuation Sell. The 8 EMO plus 7 pips that is. A second highlight for the same area.

Yeah, this is a sell – you have a Red 9, but that does not mean at market.

I would try the red highlight instead.

There are two ways to finish this off.

The common way is a capitulation move, that is an LL fractal print about 16 pips lower, then a move back to/beyond the 8 EMO and a thrust that can be 70-90 pips lower than the swing high before the LL print.

The second way is a choke. After the LL print the price gets bent back down before the 8 EMO and makes a lower fractal 3 hours later another 8-16 pips lower.

I have scaled back in according to the plan. Missing only 0.5 lots.