Turning In Slow Motion

Feel free to skip this intro-rant, I have a lecture of substance right after. Look for the separator line.

Fragile, like a mental in your state.

This is England, we don’t go anywhere without slogans

So let’s put up

Feel good, but trade better

– next to –

Share and Enjoy

Have your say and eat it too

Like a kiss from the Waitrose

And let’s go all out on what (Tricia) McMillan did when they spent their cancer support money on covering up red buses in green saying
“A life with cancer is still life”

This is wrong on so many levels.

1. For starters, spend that advertising money on cancer research instead.

2. A bus with stupid slogans is still a bus.

3. Life, don’t talk to me about life.

For an Eastern European, anecdotes, like these ring home:
– What is the matter with you, you look like the life!

In fact, in Hungary the average male life expectation was 56 years not long ago. My father lived to be just that. Maybe that’s the final solution to pension funds, Ripley.
I knew there 3 people who committed suicide during my 27 years of stay, and knew 2 in the US in 12 years. I worked for one, of them the other was a neighbor – tenant, not 3 but 1 door down. I must be a bad influence.

The point here is that it is best not to be reminded of life.

I had the perfect hand going into April: 3.6 lots long, no shorts. I ended up dumping out the longs prematurely, at a loss, and went extra long 4.4 lots 600 yards from the goal post. If only I was paying any attention to what I’m about to teach you.

I should had taken my 1000% gains for 8 moths, close out everything and tell the broker to put me in a Pro account. I can’t seem to think straight when they are constantly ripping you off with swap. Now I’m being penalized with time. The take away here is to have short term goals made clear.


There are some old cliches such as that an uptrend is made of higher highs and higher lows, and that topping is a process while bottoming is an event.

Now, in the foot-light of the channeling research we are trying to determine where a channeling move ends.

Thanks to the previous blog entries you have gained practice in spotting the start of a channeling move.

What you are looking for afterwards (in our first example – the uptrend) is a Lower Low, which is going to be followed by a Higher High or multiple higher highs without price making any significant progress. An additional 16 or so pips is not progress, that is merely half of a normal fluctuation size.

Highest High was higher by 19.3 pips.

Nobody taught me about what a fluctuation size is and what half of that was good for. These things are my own findings, and there is no literature elsewhere on the subject. I do realize how strange it may sound to hear from someone frequently taking 2.5 pip gains that 16 pips equals no progress – that’s how life is: a mix of a bunch of things that seem to contradict each other on face value.

Lower Low was lower by 7.2 pips

Fractals can help to spot the change in the sequence, but 1H may be to insensitive to do this – unless you are using my Modified Fractals routine – the source was posted among the blog entries. I only changed the rhombus (boy’s best friend) size and the color for the current image.

You are not going to be gaining anything extra from going below 30 mins, only lose orientation.


//+------------------------------------------------------------------+
//|                                   Modified Modified Fractals.mq4 |
//|           Original:  Copyright © 2005, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2021, Edit by Macdulio"
#property link      "https://forexfore.blog/"
#property description "This plot started out as a fractal modification"
#property description "See blog entry - Turning in Slow Motion"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 OrangeRed
extern int lookback = 600;
extern int    K_Period  = 25;
extern int    K_Period2  = 60;
extern int    K_Period3  = 100;
extern int    D_Period  = 3;
extern int    Slowing  = 3;
extern int    TopBorder=90;
extern int    BotBorder=10;
extern int    BotBorder2=5;
extern int    BotBorder3=3;
extern string TypeMA    = "SMA=0, EMA=1, SMMA=2, LWMA=3";
extern int    MAType    =  0;
//extern int    MAShift   =  0;
extern string TypePrice = "0 - Low/High, 1 - Close/Close";
extern int    PriceType =  0;
//---- input parameters

//---- buffers
string symbol = Symbol();
double E16[];
double EU[];
double ED[];
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicator buffers mapping  
    SetIndexBuffer(0,EU);
    SetIndexBuffer(1,ED);  
//---- drawing settings
    SetIndexStyle(0,DRAW_ARROW,EMPTY,7);
    SetIndexArrow(0,119);
    SetIndexStyle(1,DRAW_ARROW,EMPTY,7);
    SetIndexArrow(1,119);
//----
    SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
//---- name for DataWindow
    SetIndexLabel(0,"Fractal Up");
    SetIndexLabel(1,"Fractal Down");
//---- initialization done  

   ArrayResize(E16, Bars);
  ArrayInitialize(E16,0);  

    ArrayResize(ExtMapBuffer1, Bars);   
 ArrayInitialize(ExtMapBuffer1, EMPTY_VALUE);
     ArrayResize(ExtMapBuffer2, Bars);   
 ArrayInitialize(ExtMapBuffer2, EMPTY_VALUE);
     ArrayResize(ExtMapBuffer3, Bars);   
 ArrayInitialize(ExtMapBuffer3, EMPTY_VALUE);
    
 
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- TODO: add your code here
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    i,j,nCountedBars;
   bool   bFound;
   double dCurrent;


    for(i = lookback; i >= 0; i--)
   {  
      double St=iStochastic(NULL,0,K_Period,D_Period,Slowing,MAType,PriceType,MODE_MAIN,i);
      double St2=iStochastic(NULL,0,K_Period2,D_Period,Slowing,MAType,PriceType,MODE_MAIN,i);
      double St3=iStochastic(NULL,0,K_Period3,D_Period,Slowing,MAType,PriceType,MODE_MAIN,i);
      ExtMapBuffer1[i] = EMPTY_VALUE;
      ExtMapBuffer2[i] = EMPTY_VALUE;
      ExtMapBuffer3[i] = EMPTY_VALUE;
        // if (St>BotBorder && St<TopBorder) ExtMapBuffer1[i] = 1;
         if (St2<BotBorder2 && (St<BotBorder || St3<BotBorder3)) ExtMapBuffer2[i] = 1;
         if (St>TopBorder) ExtMapBuffer3[i] = 1;
   }

    
    i=lookback-1; 
//----Up and Down Fractals
ED[i]=EMPTY_VALUE;
   while(i>=2)
     {
      //----Fractals up
      bFound=false;
      dCurrent=High[i];
      if(dCurrent>High[i+1]  && dCurrent>High[i-1] && dCurrent>High[i-2]
       && dCurrent>High[i+2])
        {
         bFound=true;
         EU[i]=dCurrent;
        }
      //----6 bars Fractal
      if(!bFound && (Bars-i-1)>=3)
        {
         if(dCurrent==High[i+1] && dCurrent>High[i+2]  
         && dCurrent>High[i+3]
            && dCurrent>High[i-1]
            && dCurrent>High[i-2] )
           {
            bFound=true;
            EU[i]=dCurrent;
           }
        }        
      //----7 bars Fractal
      if(!bFound && (Bars-i-1)>=4)
        {  
         if(dCurrent>=High[i+1]  && dCurrent>High[i+3] && dCurrent>High[i+4] &&  dCurrent==High[i+2]
            && dCurrent>High[i-1] 
            && dCurrent>High[i-2])
           {
            bFound=true;
            EU[i]=dCurrent;
           }
        }  
      //----8 bars Fractal                          
      if(!bFound && (Bars-i-1)>=5)
        {  
         if(dCurrent>=High[i+1] && dCurrent==High[i+2] && dCurrent==High[i+3] && dCurrent>High[i+4]  &&
    dCurrent>High[i+5]
            && dCurrent>High[i-1] 
            && dCurrent>High[i-2])
           {
            bFound=true;
            EU[i]=dCurrent;
           }
        }
      //----9 bars Fractal                                        
      if(!bFound && (Bars-i-1)>=6)
        {  
         if(dCurrent>=High[i+1] && dCurrent==High[i+2] && dCurrent>=High[i+3] && dCurrent==High[i+4] && dCurrent>High[i+5]  && dCurrent>High[i-1] 
         && dCurrent>High[i-2]
          &&             dCurrent>High[i+6])
           {
            bFound=true;
            EU[i]=dCurrent;
           }
        }                                    
      //----Fractals down
      bFound=false;
      dCurrent=Low[i];
      if(dCurrent<Low[i+1]  && dCurrent<Low[i-1] )
      //&& dCurrent<Low[i-2]
        //&& dCurrent<Low[i+2]
        {
         bFound=true;
         ED[i]=dCurrent;
        }
      //----6 bars Fractal
      if(!bFound && (Bars-i-1)>=3)
        {
         if(dCurrent==Low[i+1] && dCurrent<Low[i+2]  &&
            dCurrent<Low[i-1] )
            //&& dCurrent<Low[i-2]
           //&& dCurrent<Low[i+3]
           {
            bFound=true;
            ED[i]=dCurrent;
           }                      
        }        
      //----7 bars Fractal
      if(!bFound && (Bars-i-1)>=4)
        {  
         if(dCurrent<=Low[i+1] && dCurrent==Low[i+2] && dCurrent<Low[i+3]  &&
            dCurrent<Low[i-1] )
            //&& dCurrent<Low[i-2]
          //&& dCurrent<Low[i+4]  
           {
            bFound=true;
            ED[i]=dCurrent;
           }                      
        }  
      //----8 bars Fractal                          
      if(!bFound && (Bars-i-1)>=5)
        {  
         if(dCurrent<=Low[i+1] && dCurrent==Low[i+2] && dCurrent==Low[i+3] && dCurrent<Low[i+4]  &&
            dCurrent<Low[i-1] )
            //&& dCurrent<Low[i-2]
           //&& dCurrent<Low[i+5] 
           {
            bFound=true;
            ED[i]=dCurrent;
           }                      
        }
      //----9 bars Fractal                                        
      if(!bFound && (Bars-i-1)>=6)
        {  
         if(dCurrent<=Low[i+1] && dCurrent==Low[i+2] && dCurrent<=Low[i+3] && dCurrent==Low[i+4] && dCurrent<Low[i+5]  && dCurrent<Low[i-1] )
         //&& dCurrent<Low[i-2]
           //&&             dCurrent<Low[i+6]
           {
            bFound=true;
            ED[i]=dCurrent;
           }                      
        }                                    
      i--;
     }
//----

for(i=Bars-60; i>=0; i--){
 E16[i]=iMA(symbol,60,32,0,MODE_EMA, PRICE_MEDIAN,i);
}

deletetxt1("Frac");
for(i=lookback; i>=0; i--){
     if (Low[i]<E16[i]+150*Point && ED[i]>0 ){
         j=i+3;
         while (j<lookback){
           if (ED[j]!=EMPTY_VALUE && ED[j]>0) break;
            j++;
         }
         if (j<lookback && ED[j]!=EMPTY_VALUE && Low[i]<Low[j] && ED[i]!=0 && ED[i]!=EMPTY_VALUE && ExtMapBuffer3[i]==EMPTY_VALUE && ExtMapBuffer3[i+1]!=EMPTY_VALUE){
                 ObjectCreate("Frac"+i, OBJ_TEXT, 0, Time[i], Low[i]-35*Point); 
    ObjectSetText("Frac"+i, "LL", 32, "Impact", OrangeRed);  
         }
      } 
 
     if (High[i]<=E16[i]+100*Point && High[i]<E16[i]-100*Point && EU[i]>0 ){
         j=i+3;
         while (j<lookback){
           if (iFractals(symbol,0,MODE_UPPER,j)) break;
            j++;
         }
         if (j<lookback && EU[j]!=EMPTY_VALUE && High[i]>High[j] && EU[i]!=0 && EU[i]!=EMPTY_VALUE  && ExtMapBuffer2[i]==EMPTY_VALUE  && ExtMapBuffer2[i+4]==EMPTY_VALUE  ){
                 ObjectCreate("Frac"+i, OBJ_TEXT, 0, Time[i], High[i]+95*Point); 
    ObjectSetText("Frac"+i, "HH", 32, "Impact", OrangeRed);  
         }
      }       
   
}

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

Remember the ripple circles?

This last channeling push could only facilitate the first set of 3 dips, thanks to that lousy LL mistake.

channeling is on when the 2nd outer fractal gets exceeded by more than 4 pips or if the 3rd spike beyond the E-89 recovers

active channeling has 6 or 12 pullback entries
first 3: beyond E-16
second 3: beyond E-32
third 3: beyond E-89
fourth 3 beyond E-16

active channeling ends with a new Tough Cookie print in its direction (now with golden tail highlight), LL / HH projection zones and stochastic bar sequences are there for confirmation


The Catcher In The Knife is made of the upper plots of the Soap Hodler and has a knife catcher high light and an added golden tail function to make the Tough Cookie levels easier to spot. Seen here with the Modified Modified Fractals, that draws rectangles for projected support / resistance areas and channeling epicentres along with the confirmation levels. The ROC, E16, TC, E207 box is a collection of color warnings and a poker equals a falling knife. That’s all you need to know.