Stretch 8

A lot has gone down this week.

The Forex market, over time, used to lose volatility. There were 6-months longs stetches when the market would not be able to get away from the 9-day EMA band (high to low) by more than 4 fluctuation maximums (38.4 pips for per flucutation maximum).

It was more common a decade ago to see 9, 10, 11x stretches. Now things seem to be trending up again.

This was your 8x stretch from the mean.

The market wants to mean-revert, particularly after a 2.5x stretch, but short-term, emotional buying can prevent it from doing so.

The second pump came from below the hourly 32 EMA as usual.

60 hours of celibacy

if (Low[i]<iMA(symbol,0,64,0,MODE_EMA,PRICE_MEDIAN,i)) P2[i]=1;
if (i>0 && (P2[i]==1) && P2[ArrayMaximum(P2,60,i+1)]==0)

Those wanting to fade the 1.20 break got systematically run over, and their holdings got taken over at a higher level (a new Scrape Level was made – and the mean reversion had started.

Now, pay attention to the Firebrick line.

ExtUpperBuffer_d[i]=iLow(symbol,0,iLowest(symbol,0,MODE_LOW,10,i+6))+820*Point;
ExtLowerBuffer_d[i]=iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,10,i+6))-820*Point;

Once you see a candle beyond this Firebrick line, add 14 pips to the previous candle, and then the next 2 candles would be falling shy of this new extreme by 34 pips, you have yourself a “sold into / bought into.” There is an escalated version of achieving 27 more pips beyond the Firebrick to receive a volatility boost (Luke, I’m your father). This would make the directional logic paint the opposite color instantly, versus neutral.

Now, momentum entries inside the wave structure.

///RSI2 FireBrick momentum sells
if (RSI2[i]<RSI2[i+1] && RSI2[i+1]>RSI2[i+2] && RSI2[i+1]>95.5 && High[i+1]>iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,4,i+4))
&& MFI[i+1]<71 && High[i+1]-Low[i+1]>130*Point){

The pink “bought into” was lacking one thing. The extra 27 pips. The trade to the upside was good for 2 slim bricks and a get-out after the highest close.

So, momentum-sell, #2

Missing? Bought into. No undecut happening below the Firebrick by 14 pips just yet.

A buy into is likely not very far now that the price is back inside the Moat.

Whenever the moat is 27+ pips wide (42+ currently), it is highly likely to turn the price back around, as it won’t be able to cross with a single try. The moat is the shaded area between the 9-day EMA band and the 712 SMA (30 min).

Uno Momento

Can’t think of anything more reassuring than when someone with a net worth of 712 billion USD tells you: money would be irrelevant.

China: Build Your Dreams. Musk: I’ll sell you your dreams.

Now, some elusive subjects, such as momentum and holdings in real time.

It is tempting to think in symmetries. In the world of filters, this goal is a vanity project.

My proxy for measuring strong momentum is the Stochastic Bars Hybrid. On the upside, I use a 25-sample stochastic with the last 10%, on the downside, I use a 60 and a 100-sample stochastic with the last 5 and 3 percent. The logic is what works best.

With the invention of Vax, that is measuring directional volatility from the 200-hour high and 200-hour low, you now have a tool that can give an instant read of holdings as well as plotting short-term changes. i.e., the shorts have the upper hand. What are they doing lately? Covering.

When the two distances converge, is there an instant reinforcement (rejection)? When they start to diverge again, has the leadership been switched over? Being outside the S4 / R4, of course, means stronger domination.

Now, there’s a buy momentum entry filter. I can now say that momentum buying happens inside the BB30.

The two gigantic arrows below: both happened with a flat brick, the first one was right after a triple False Break sequence.

///RSI2 momentum buys
if (RSI2[i]>RSI2[i+1] && RSI2[i+1]<RSI2[i+2] && RSI2[i+1]<7.4
&& Low[i+1]<iLow(symbol,0,iLowest(symbol,0,MODE_LOW,4,i+4))
){
if (MFI[i+1]>29 && Low[i+1]<Low[i+2]&& MFI[ArrayMinimum(MFI,7,i)]<15 && RSI2[ArrayMaximum(RSI2,5,i+2)]>50){
ObjectCreate("Citeral"+IntegerToString(i), OBJ_TEXT, 2, Time[i+1], 115);
ObjectSetText("Citeral"+IntegerToString(i), CharToStr(233), 144, "Wingdings", Purple);
}
}

The last add-on entry was an RSI2 taper (late in the game).

Small brick – big brick combo.

This is looking like a 5-wave structure.

Admittedly, the close was on the high, so another higher high should not be a surprise.

The last volume block was violated; there is no clear/visible target currently.

Sure, there was a high made at 1.1918 earlier, but I don’t think it could be made without a 45-pip pullback first.

In the image below, the green horizontal arrows are break-outs with their associated statistically achievable displacement. These arrows are a really good buy when they print near the red line (9 EMA), but would be a fake out near the two bands.

We just tapped into the supply box of the last breakout cover leg (1.1737 to 1.1802), but admittedly showed no reaction by the close. The 1.1779 arrow was violated, and it has a cover associated with it, starting from 1.1844.

The summary, a higher high cannot be ruled out, a move to 1.1844 is possible around the open, but to tackle the 1.1918 high, the new leg would have to come from below the daily 16 EMA.

If the high stays intact, and the fractal settles, you would be in a sell that is indefinite.

(I had to rush the plot by calling this location a full fractal)

(Close[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1) && Close[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)+20*Point
&& MFI14[i]>80)
instead of
iFractals(symbol,0,MODE_UPPER,i)

Smart & Funny Concepts

Another volume block was hit. It is a wide one this time.

Currently, there’s no momentum to the downside, but there is a downtrend in place.

The red volatility line is nearing the house.

The RSI2 low was hit 3 times. The stochastic is embedded. The finish wasn’t particularly bearish.

There’s a sell Goldilocks (1.1642) 4 LL guidance.

Now, the lesson. 2 plus 2 equals all seems to be the theme for what to sell. (Two fractals above the 30 BB plus 2 pips.)

There was a Double Dutch that didn’t work, but this overall gave away the key to buying.

The five and the halfth hour is where the low may see an override. After 6 hours, the low is safe; it is time to buy.

Examples.

Above: the close of the 6th hour was exceeded by about 4 pips.

Below: the close of the 6th hour was exceeded by about 1 pip.

The close was 6 hours (12 candles), holding above the low.

Without gapping down, this looks like another buy that would float back up for another continuation sell @ 2+2.

Buyable?

Is this a buyable low?

Just tapped into some daily professional volume (cyan box).

Nick Rhodes says the daily RSI2 is in the sensitive, turning zone. You could see a bounce back up to E-44.

The double gray divergence (from the volatility compression anchor on the Vax) says, buyable.

The short volatility is facing resistance at the 166 level. The bottom indicator is a stochastic bars hybrid, agreeing on a momentum divergence.

A new scrape level was made, and it is holding. This is the first RoyalBlue arrow that did not get violated within 4 hours (8 candles).

For now, a run for 1.1664 is likely, but the open would have to be flat to higher.

Wait for 2 up fractals to print and take a short 3 pips beyond the second up fractal (30-minute).


Double Dutch (my most quant filter in recent times).

It uses an RSI2 array.

/////RSI2 box dn  
if (RSI2[i+1]<6 && RSI2[i]>6){ 
     if (Low[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+1))  {ObjectCreate("KAROLYII"+IntegerToString(i), OBJ_RECTANGLE, 1, Time[i+2], 12, Time[i], 0);
      if (i>0 && RSI2[ArrayMinimum(RSI2,10,i+3)]<6 && RSI2[ArrayMaximum(RSI2,33,i+3)]<94  
      && RSI2[ArrayMaximum(RSI2,44,i+3)]>94 && stoch[i+1]<20 && Low[i-1]>Low[i]){
///Double Dutch is either basing, gets an undercut (Royal Blue poke below BB120), making a first leg up 30+ pips,
//                                                then from the dip starting an air guitar double pump run
//                                                making a new scrape level
///or mean reverting with 2 fractals up plus 3 pips
         ObjectCreate("Creepy"+IntegerToString(i),OBJ_VLINE,1, Time[i], 0);
           ObjectSet("Creepy"+IntegerToString(i),OBJPROP_COLOR,clrBlue );
           ObjectSet("Creepy"+IntegerToString(i),OBJPROP_WIDTH,8);
           ObjectSet("Creepy"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);
           ObjectSet("Creepy"+IntegerToString(i),OBJPROP_BACK,1); 
            ObjectCreate("Creepyy"+DoubleToStr(i), OBJ_TEXT, indicator_window, Time[i+1], 30); 
           ObjectSetText("Creepyy"+DoubleToStr(i), "   Doube Dutch", 18, "Impact", Blue); }
     }
     
     else ObjectCreate("KAROLYII"+IntegerToString(i), OBJ_RECTANGLE, 1, Time[i+2], 6, Time[i], 0);
     ObjectSetInteger(0,"KAROLYII"+IntegerToString(i),OBJPROP_COLOR,clrGreen);
     ObjectSetInteger(0,"KAROLYII"+IntegerToString(i),OBJPROP_WIDTH,3);      
     if (Close[i+1]<iMA(symbol,0,414,0,MODE_EMA,PRICE_MEDIAN,i+1)-450*Point) ObjectSetInteger(0,"KAROLYII"+IntegerToString(i),OBJPROP_BACK,0);
  }

What can I say, I love these RSI2-sequence filters.

RSI2[i]=iRSI(symbol,0,2,PRICE_MEDIAN,i);

Tough Call

The Euro has been hurdling inside the Valley…

…only managing to get below the 9-day EMA in the last few days. It may be ready to break, but the progress is not very convincing.

On the Vax you can see that the short lead has been on for 2 days after 5 failed attempts. At the same time, this is all happening within the context of a squeeze: the red Volatility Compression is also in the Doghouse still, inside S3. (S3=R3, depending on which one is on the bottom, you get the prints.)

Not certain of the Blue Arrow plot, to make it stay on, I had to change the filter (it did not affect all the previous plots). That small box – big box – green arrow sequence is a strong taper.

if (i>0  && Open[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i) 
         && Close[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i) 
         && Close[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i) 
         && Low[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i)-10*Point 
         && Low[i-1]>Low[i] 
       //  && Low[i-1]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i-1)
 && (iLow(symbol,30,i)<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i)+60*Point || iHigh(symbol,30,i+1)-iLow(symbol,30,i+1)>60*Point)
)

Earlier, I had this idea that the scrape low (1.1703) was gonna get run and we’d see a 30-pip undercut. Still could happen, but the level of confidence went way down. More volatility compression here (black arrow prints, fractals falling short of the 120BB) would mean a bottom.

Royally Blue

Happy New Year!

The first thing to mention is that the two yellow boxes look virtually identical to me.

#1: Royal Blue arrow up, #2: target (just outside BB30), #3: RSI2 large box (deeply, but not severely oversold), #4: severely overbought (lower high)

That is to say, I don’t think that a low was made.

This led me to explore the RBlue arrows a bit better, and so I associated exits. An awesome trade that guarantees 20-40 pips depending on BB Width. Participating in this one can already make up for all other losses (with the right, large size).

///prelim blue arrow up
///always a buy to BB30U+, color arrow or towards last LG box guidance, double white cap
///current BB30U+5 or if more than 40 pips, BB30U-
if (i>0  && Open[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i) && Close[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i) && Close[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i) && Low[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i)-10*Point && Low[i-1]>Low[i] && Low[i-1]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i-1)) {mode[i]=1;
   ObjectCreate("Cigar"+IntegerToString(i), OBJ_TEXT, 0, Time[i], Low[i]-30*Point); 
          if (Low[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i)-40*Point) {ObjectSetText("Cigar"+IntegerToString(i), CharToStr(234), 56, "Wingdings", RoyalBlue); 
          }
          else {ObjectSetText("Cigar"+IntegerToString(i), CharToStr(233), 56, "Wingdings", RoyalBlue); 
            ObjectCreate("DOGR"+IntegerToString(i),OBJ_TEXT, 0, Time[i],iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)+30*Point);
                      ObjectSetText("DOGR"+IntegerToString(i),"T: "+DoubleToStr(NormalizeDouble(iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)-10*Point,4),4), 26, "Impact", clrRoyalBlue); 
                      if (iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)-High[i]<300*Point && High[i]<iMA(symbol,0,414,0,MODE_EMA,PRICE_MEDIAN,i)) ObjectSetText("DOGR"+IntegerToString(i),"T: "+DoubleToStr(NormalizeDouble(iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)+50*Point,4),4), 26, "Impact", clrRoyalBlue); 
          
           }
           royal[i]=1;

}
if (i>0 && mode[i]>0 && Open[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i) && Close[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i) && Low[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i)-10*Point && Low[i-1]<Low[i]) mode[i]=-1;

Certainly, an RBlue sequence may be a start of a bottom forming, but you would need to see a Green Arrow for confirmation.

False Start

Another plot from the Tie Machine.

A False Start is a fresh, deeply overbought/oversold condition, with the money flow heavily lagging the stochastic reading.

Interpretation: the 120-sample stochastic has no room to give on the downside without the price compensating first (diving reference, yes).

The usual thing that tends to happen to momentum: the first deeply oversold/overbought (after an embedding at the other end) is toxic and sees a rejection.

 //sudden oversold Stoch w/o MFI = False Start
    if (iFractals(symbol,0,MODE_LOWER,i) && MFI14[i]>38 && stoch[ArrayMinimum(stoch,3,i)]<10 && Low[i]>iMA(symbol,0,712,0,MODE_SMA,PRICE_MEDIAN,i) )
    {
       ObjectCreate("Creepy"+IntegerToString(i),OBJ_VLINE,1, Time[i], 0);
           ObjectSet("Creepy"+IntegerToString(i),OBJPROP_COLOR,clrPurple );
           ObjectSet("Creepy"+IntegerToString(i),OBJPROP_WIDTH,8);
           ObjectSet("Creepy"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);
           ObjectSet("Creepy"+IntegerToString(i),OBJPROP_BACK,1); 
            ObjectCreate("Creepyy"+DoubleToStr(i), OBJ_TEXT, indicator_window, Time[i+1], 30); 
           ObjectSetText("Creepyy"+DoubleToStr(i), "   False  Start", 18, "Impact", DarkGreen);  
    }
    
    
            //sudden overbought Stoch w/o MFI = False Start
    if (iFractals(symbol,0,MODE_UPPER,i) && MFI14[i]<62 && stoch[ArrayMaximum(stoch,3,i)]>90 && High[i]<iMA(symbol,0,712,0,MODE_SMA,PRICE_MEDIAN,i) )
    {
       ObjectCreate("Creepy"+IntegerToString(i),OBJ_VLINE,1, Time[i], 0);
           ObjectSet("Creepy"+IntegerToString(i),OBJPROP_COLOR,clrPurple );
           ObjectSet("Creepy"+IntegerToString(i),OBJPROP_WIDTH,8);
           ObjectSet("Creepy"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);
           ObjectSet("Creepy"+IntegerToString(i),OBJPROP_BACK,1); 
            ObjectCreate("Creepyy"+DoubleToStr(i), OBJ_TEXT, indicator_window, Time[i+1], 30); 
           ObjectSetText("Creepyy"+DoubleToStr(i), "   False   Start", 18, "Impact", DeepPink);  
    }

If you see more false prints, the market is accommodating and can see a push past where it initially found resistance.

I also added a plot I call “end of tract”, for when the market is stuck between the upper and the lower guard rails. This zone +-45 around the 9=day EMA is pretty much neutral. I sometimes refer to this zone as neutral.

On a first pass, the filter goes like this:

///spike down
if (iFractals(symbol,0,MODE_LOWER,i) && Low[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i) && Open[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i) && Close[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i)-10*Point
//&& (iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)-iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i))>250*Point
&& Close[i]>iMA(symbol,0,414,0,MODE_EMA,PRICE_MEDIAN,i)-450*Point
&& Low[i]>=iLow(symbol,0,iLowest(symbol,0,MODE_LOW,10,i+1))-20*Point
&& MFI[ArrayMinimum(MFI,5,i)]<24
)
{
             
             ObjectCreate("Valiants"+IntegerToString(i),OBJ_TREND,1, Time[i], 40,  Time[i], 0);
             ObjectSet("Valiants"+IntegerToString(i),OBJPROP_COLOR,clrLimeGreen);
               ObjectSet("Valiants"+IntegerToString(i),OBJPROP_WIDTH,8);
               ObjectSet("Valiants"+IntegerToString(i),OBJPROP_BACK,1);
               ObjectSet("Valiants"+IntegerToString(i),OBJPROP_RAY_RIGHT,0);
          
}

///spike down combo
if (i>0 && Low[i+1]<Low[i] && Low[i+2]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+2) && Low[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+1) && Low[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i) && Open[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+1) && Close[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i)+10*Point && Low[i-1]>Low[i]
//&& (iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)-iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i))>250*Point
&& Close[i]>iMA(symbol,0,414,0,MODE_EMA,PRICE_MEDIAN,i)-450*Point
&& Low[i]>=iLow(symbol,0,iLowest(symbol,0,MODE_LOW,10,i+1))-20*Point
)
{
             
             ObjectCreate("Valiants"+IntegerToString(i),OBJ_TREND,1, Time[i], 40,  Time[i], 0);
             ObjectSet("Valiants"+IntegerToString(i),OBJPROP_COLOR,clrLimeGreen);
               ObjectSet("Valiants"+IntegerToString(i),OBJPROP_WIDTH,8);
               ObjectSet("Valiants"+IntegerToString(i),OBJPROP_BACK,1);
               ObjectSet("Valiants"+IntegerToString(i),OBJPROP_RAY_RIGHT,0);
          
}


///spike up
if (iFractals(symbol,0,MODE_UPPER,i) && High[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Open[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Close[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)
   && Close[i]<iMA(symbol,0,414,0,MODE_EMA,PRICE_MEDIAN,i)+450*Point
//&& (iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)-iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i))>250*Point
//&& MFI[ArrayMaximum(MFI,5,i)]>76
)
{

             
               ObjectCreate("Valiants"+IntegerToString(i),OBJ_TREND,1, Time[i],100,  Time[i], 60);
             ObjectSet("Valiants"+IntegerToString(i),OBJPROP_COLOR,clrCrimson);
               ObjectSet("Valiants"+IntegerToString(i),OBJPROP_WIDTH,8);
               ObjectSet("Valiants"+IntegerToString(i),OBJPROP_BACK,1);
               ObjectSet("Valiants"+IntegerToString(i),OBJPROP_RAY_RIGHT,0);
}

///spike up combo
if (High[i+1]>High[i] && High[i+2]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+2) && High[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1) && High[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Open[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1) && Close[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)
   && Close[i]<iMA(symbol,0,414,0,MODE_EMA,PRICE_MEDIAN,i)+450*Point
//&& (iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)-iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i))>250*Point
)
{

             
               ObjectCreate("Valiants"+IntegerToString(i),OBJ_TREND,1, Time[i],100,  Time[i], 60);
             ObjectSet("Valiants"+IntegerToString(i),OBJPROP_COLOR,clrCrimson);
               ObjectSet("Valiants"+IntegerToString(i),OBJPROP_WIDTH,8);
               ObjectSet("Valiants"+IntegerToString(i),OBJPROP_BACK,1);
               ObjectSet("Valiants"+IntegerToString(i),OBJPROP_RAY_RIGHT,0);
}   

I am now backed up by 200 tracks, thanks to Udio having no download option for the last two months.

While Depeche Mode is making cheeseball stuff,

Forgettable for sure. I have to fill in with what they should have done instead.

There’s more, as there is a new 101 album, but to make my point:

Achilles Dent – At The Same Old Door – If I did not know I made this, you could easily sell it to me as a cameo for an upcoming DM album.

Achilles Dent – Run To The Sun (Lymon Version) – Just as Eric Lymon would remix an unknown Dave Ganhan and the Soulsavers track.

Achilles Dent – Waiting For a Sign

Achieving A Scrape Level

You hear people saying things like “if this high holds.”

Which high, what algorithm could find and highlight something rather important?

In my Tie Machine routine, I made a plot, a simple gray box (MF Box). It looks for a 2x 30-minute recess of a money flow run with a previous, even more extreme peak / low prior, while still in the overbought/oversold, then highlights the highest high / lowest low in that sample and makes a tolerance field of 4 pips.

The Euro finished with a first run of sustainable selling (the litmus strips are not black) and back below the trendline.

The important part here is the objective, a purely money flow-based filter. You can play away from this box with the knowledge that if it gets reversed, you would need to at least be hedged for another run. 5 pips out (1 pip past the box) sounds like a good place for that. The next run would be at a minimum of 30 pips from the scrape level based on current history.

On the downside, the low was made when the MF Box was tested, and the dip into it capped out at 1 pip.

Frankly, backtesting isn’t what one should be betting on, but you should yield to a color arrow (spike outside the 30BB, but remaining inside the 120BB.)

Below is the one with a 30-pip beat later on.

////The following won't run under "#property strict"
////MFI Box up
 if (
      MFI14[i+12]>=MFI14[i+13] 
      &&
       MFI14[i+12]>MFI14[i+11] 
      && MFI14[ArrayMaximum(MFI14,3,i+11)]>MFI14[ArrayMaximum(MFI14,8,i+14)] 
      && MFI14[i+12]>79 
      && iStochastic(symbol,0,120,3,3,MODE_SMA,PRICE_MEDIAN,MODE_MAIN,i)>28
      ){
        
          
         if (iStochastic(symbol,0,120,3,3,MODE_SMA,PRICE_MEDIAN,MODE_MAIN,i+12)<88 || iStochastic(symbol,0,120,3,3,MODE_SMA,PRICE_MEDIAN,MODE_MAIN,i+12)>96.8) {}
          else {
                ObjectCreate("RayRect"+IntegerToString(i),OBJ_RECTANGLE,0, Time[i], iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,16,i+1))+40*Point, Time[i+16], iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,16,i+1)));
                ObjectSet("RayRect"+IntegerToString(i),OBJPROP_COLOR,clrGray);
                ObjectSet("RayRect"+IntegerToString(i),OBJPROP_WIDTH,3);
                ObjectSet("RayRect"+IntegerToString(i),OBJPROP_BACK,0);
                      ObjectCreate("DOG"+IntegerToString(i),OBJ_TEXT, 0, Time[i],iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,16,i+1))+90*Point);
                      ObjectSetText("DOG"+IntegerToString(i),"Scrape Level ="+DoubleToStr(NormalizeDouble(iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,16,i+1)),4),4), 26, "Impact", clrCrimson); 
              }
         
      }

////MFI Box dn
if (MFI14[i+12]<MFI14[i+13] && MFI14[i+12]<MFI14[i+11] && MFI14[ArrayMinimum(MFI14,3,i+11)]<MFI14[ArrayMinimum(MFI14,8,i+14)] && MFI14[i+12]<21 
   && iStochastic(symbol,0,120,3,3,MODE_SMA,1,MODE_MAIN,i)<72){
            
        if (iStochastic(symbol,0,120,3,3,MODE_SMA,PRICE_MEDIAN,MODE_MAIN,i+12)<10){     
                ObjectCreate("RayRect"+IntegerToString(i),OBJ_RECTANGLE,0, Time[i], iLow(symbol,0,iLowest(symbol,0,MODE_LOW,16,i+1))-40*Point, Time[i+16], iLow(symbol,0,iLowest(symbol,0,MODE_LOW,16,i+1)));
                ObjectSet("RayRect"+IntegerToString(i),OBJPROP_COLOR,clrGray);
                ObjectSet("RayRect"+IntegerToString(i),OBJPROP_WIDTH,3);
                ObjectSet("RayRect"+IntegerToString(i),OBJPROP_BACK,0);
                  ObjectCreate("DOG"+IntegerToString(i),OBJ_TEXT, 0, Time[i],iLow(symbol,0,iLowest(symbol,0,MODE_LOW,16,i+1))-60*Point);
                      ObjectSetText("DOG"+IntegerToString(i),"Scrape Level ="+DoubleToStr(NormalizeDouble(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,16,i+1)),4),4), 26, "Impact", clrDarkGreen); 
                
             
         }
   }

Double Pump

The psychology of the Double Pump. Keep in mind, work in progress – I don’t always get things right the first time around.

Let’s start with the mutipliers.

Let’s call a close beyond the 30, 120, and 240 Bollingers a “3X”.

And a close beyond the 30, 60, 120, and 240 Bollingers a “4X”.

I care about the new prints only.

///3x up
if (Close[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Close[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Close[i]>iBands(symbol,0,240,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Close[i+2]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+2) && Close[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1)){
   ObjectCreate("Cigari"+IntegerToString(i), OBJ_TEXT, 0, Time[i], High[i]+70*Point); 
   ObjectSetText("Cigari"+IntegerToString(i), "3x", 26, "Impact", Black);  }

///4x up
if (Close[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Close[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Close[i]>iBands(symbol,0,240,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Close[i]>iBands(symbol,0,60,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Close[i+1]<iBands(symbol,0,60,2,0,PRICE_MEDIAN,MODE_UPPER,i+1)){
   ObjectCreate("Cigari"+IntegerToString(i), OBJ_TEXT, 0, Time[i], High[i]+70*Point); 
   ObjectSetText("Cigari"+IntegerToString(i), "4x", 26, "Impact", Black);  }

Now, let’s gather the overlaps based on the two examples we have. By the way, just knowing that the pump would have 2 different legs that would go to extremes is already helpful.

///pump 1: every RSI2 below 35 is a buy, later every second fractal below E16 is a buy
///exit 1: 4x one to three times or a double white
///pump 2: every move below BB30 is a buy, later every dip is a buy
///exit 2: double white (+volatility)

The double white condition

///double white
 if (RSI2[i]<RSI2[i+1] && RSI2[i+1]>RSI2[i+2]  && RSI2[i+1]>95.5
  && High[i+1]>iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,4,i+4))
  ){
     
                      
              if (MFI[i+1]>71){      
              if ((Close[i+1]>iBands(symbol,0,60,2,0,PRICE_MEDIAN,MODE_UPPER,i+1)
              || (High[i+1]>iBands(symbol,0,60,2,0,PRICE_MEDIAN,MODE_UPPER,i+1) && iRSI(symbol,1440,2,PRICE_MEDIAN,0)>93)) && Low[i+2]<iBands(symbol,0,60,2,0,PRICE_MEDIAN,MODE_UPPER,i+2)) 
               {ObjectSet("Valiant"+IntegerToString(i),OBJPROP_WIDTH,8);
               
               if (Close[i+1]-iMA(symbol,0,414,0,MODE_EMA,PRICE_MEDIAN,i+1)>510*Point) { ObjectCreate("Citeras"+IntegerToString(i), OBJ_TEXT, 0, Time[i+1], Close[i+1]+50*Point); ObjectSetText("Citeras"+IntegerToString(i), CharToStr(222), 44, "Wingdings", White); 
              }
            }
             if (MFI[i+1]>92 && MFI[i]<92) {ObjectSet("Valiant"+IntegerToString(i),OBJPROP_COLOR,clrGray);
            }
            if (MFI[i]>69 && MFI[i+2]>69 && MFI[i+3]>69 && MFI[i+4]>69 && MFI[i+5]>69) { ObjectCreate("Valiant"+IntegerToString(i),OBJ_VLINE,1, Time[i+1], 0); ObjectSet("Valiant"+IntegerToString(i),OBJPROP_COLOR,clrWhite); ObjectSet("Valiant"+IntegerToString(i),OBJPROP_WIDTH,4);
            }
            if (MFI[i+1]>99 && MFI[i+2]>99 && MFI[i+3]>99 && MFI[i+4]>99 && MFI[i+5]>99) {ObjectSet("Valiant"+IntegerToString(i),OBJPROP_COLOR,clrGray);
                }  
          }
          
  }

A quick display of how good the double white print is. The first image shows how the trend following system turns. You would miss out on at least 20 pips.

If price moves back higher, you could get into an unwanted drawdown with your shorts.

Now, look at a double white that gets a re-visit. If you are trying to get in on the high of that candle, or one pip out, you pretty much get the top tick, no drawdown (yellow rectangle).

In closing, the conclusion for the Air Guitar Sonata is that it is a Double Pump Sonata.

Air Guitar Sonata

Air Guitar = bottoming. Not just for an ABC correction up, but a new impulse structure.

The analog.

The present. If you look closely enough, there is a red line on both charts. That’s the 9-day EMA, the divider between bear and bull.

GLD+ (upper line of the box) is 5-pips shy of the 3-day ATR measured from the consolidation mean.

The plot.

///black arrow up @120
if (royal[ArrayMaximum(royal,24,i)]>0 && royal[ArrayMaximum(royal,6,i)]<=0 && iFractals(symbol,0,MODE_LOWER,i) && Low[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i)+80*Point && Low[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i)){
     ObjectCreate("Cigar"+IntegerToString(i), OBJ_TEXT, 0, Time[i], Low[i]-30*Point); 
          ObjectSetText("Cigar"+IntegerToString(i), CharToStr(233), 56, "Wingdings", Black); 
   ///Aero Brick
   j=i+2;
   while (j<i+6){
      if (iFractals(symbol,0,MODE_LOW,j) && Low[j]<(iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,j)+80*Point) && Low[j]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,j)) break;
      j++;
   }   
   if (j<i+6) {
     ObjectCreate("KAROLYI"+IntegerToString(i), OBJ_RECTANGLE, 1, Time[i+1], 22, Time[i], 0);
     ObjectSetInteger(0,"KAROLYI"+IntegerToString(i),OBJPROP_COLOR,clrPurple);
     ObjectSetInteger(0,"KAROLYI"+IntegerToString(i),OBJPROP_WIDTH,4); 
     ObjectSetInteger(0,"KAROLYI"+IntegerToString(i),OBJPROP_BACK,0);
     ObjectCreate("DOG"+IntegerToString(i),OBJ_TEXT, 1, Time[i+1],75);
                ObjectSetText("DOG"+IntegerToString(i),"POC+/GLD+ Test", 26, "Impact", clrPurple); 
                mode[i]=1;
     
   }   

Next, there would be several tests of the S-30 (30-min). (Make or break, and if no go there, look for the second brick soap box, which also prints below the 30-sample BB.)

Here, you can see how the bear compression remained deeper in the shed (dog house) than the bull compression, and the 3 arrows are where they converged, but the bears never came out on top.