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.

Sell Me

Ira Epstein used to say that the market is always trying to sell you information.

What did I purchase this week?

Something about the importance of the squeeze.

As you remember, I have a plot for a “quick dip” outside the BB120.

This volatility halt signal can flip the directional logic in two different directions based on if the short-term BB30 was violated at once or not.

Given the above, I would call the blue arrow the Volatility Bird that can flip based on short-term volatility-availability (mental images are important to get imprinted deeply).

///prelim blue arrow down
if (i>0 && Open[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i) && 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) && High[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i) && High[i-1]<High[i] && Low[i+3]<(iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_MAIN,i+3)+10*Point) ) {mode[i]=-1;
    ObjectCreate("Cigar"+IntegerToString(i), OBJ_TEXT, 0, Time[i], High[i]+120*Point); 
          if (High[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)) ObjectSetText("Cigar"+IntegerToString(i), CharToStr(233), 56, "Wingdings", RoyalBlue); 
          else ObjectSetText("Cigar"+IntegerToString(i), CharToStr(234), 56, "Wingdings", RoyalBlue); 
          royal[i]=-1;
}

if (i>0 && mode[i]<0 && Open[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Close[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i) && High[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i) && High[i-1]>High[i] && Low[i+1]<(iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_MAIN,i+1))) mode[i]=1;
if (i>0 && mode[i]<0 && mode[i+8]<0 && Open[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Close[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i) && High[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Low[i+1]<(iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_MAIN,i+1))) mode[i]=1;

///prelim blue arrow up

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]) {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)) ObjectSetText("Cigar"+IntegerToString(i), CharToStr(234), 56, "Wingdings", RoyalBlue); 
          else ObjectSetText("Cigar"+IntegerToString(i), CharToStr(233), 56, "Wingdings", RoyalBlue); 
          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;

I have also received a confirmation for my “double white” signal that manages to catch a top with awesome accuracy.

The importance is that the two independent filters coincide on the same 30-minute candle. The double white on the upside is basically the equivalent of the double gray divergence on the hourly plotted by the Vax.

Now, onto your lesson.

Let me know when the lightbulb comes on.

The crossed-out box is a “false print”; the daily Forex broker close with the expanded spread should be ignored.

If you have concluded that every second soap box, when large (the candle went outside the 30BB), was a buy for a run to the upper 30BB (plus 5 pips normally), you found what was tradeable (while above the 9-day EMA).

Every instrument must be traded based on its own merits. I started with Natural Gas. There were no tradeable fundamentals or technicals; the only thing that truly made the market move was a storage report from the East Coast every Thursday morning. Just because you see candles in front of you that seem familiar, as that is how you plot the data, you do not necessarily know anything about the nature of an instrument until you pick up on its routine motions. I feel sorry for people like him thinking that they can come up with a single method that allows them to trade any given instrument. He falls further into his own trap when he starts laying down restrictive rules. Put a dislike on it!


I would encourage you to listen to Spot Gamma podcasts to gain a better understanding of market mechanics, such as volume is not the only thing that can stop the price in its tracks, so can volatility.

Small Changes

Not much new, I doubled the size of the soap boxes (RSI2 in the last 6%) if the price also managed to hit outside the BB30, for accented importance.

/////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);
     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)) ObjectSetInteger(0,"KAROLYII"+IntegerToString(i),OBJPROP_BACK,0);
  }

/////RSI2 box up 
 if (RSI2[i+1]>94 && RSI2[i]<94){ 
     if (High[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1)) ObjectCreate("KAROLYII"+IntegerToString(i), OBJ_RECTANGLE, 1, Time[i+2], 88, Time[i], 100);
     else ObjectCreate("KAROLYII"+IntegerToString(i), OBJ_RECTANGLE, 1, Time[i+2], 94, Time[i], 100);
     ObjectSetInteger(0,"KAROLYII"+IntegerToString(i),OBJPROP_COLOR,clrRed);
     ObjectSetInteger(0,"KAROLYII"+IntegerToString(i),OBJPROP_WIDTH,3);      
     if (Close[i+1]>iMA(symbol,0,414,0,MODE_EMA,PRICE_MEDIAN,i+1)) ObjectSetInteger(0,"KAROLYII"+IntegerToString(i),OBJPROP_BACK,0);
  }

As you can see, the yellow does not typically mean a change of direction. Also, the expanding wedge can be broken on the unexpected side at times.

This did not finish on a bearish note, but there was no progress on the upside at all. It would be easy to turn this down, but a failed move to the upside cannot be excluded while the direction remains up.

I also added more arrows (natural progression) in the 6-8% zone, call them earlybirdspecial. They too have a say now in the directional logic.

 ///RSI arrow up
if (RSI2[i+1]>6 && RSI2[i+1]<8 && RSI2[i]>RSI2[i+1] && RSI2[i+2]>RSI2[i+1]){
     ObjectCreate("Cigar"+IntegerToString(i), OBJ_TEXT, 1, Time[i+1], 21); 
          ObjectSetText("Cigar"+IntegerToString(i), CharToStr(233), 26, "Wingdings", Green); 
          if (mode[i+1]<0 || Low[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_MAIN,i+1)) ObjectSetInteger(0,"Cigar"+IntegerToString(i),OBJPROP_COLOR,clrGray);
          else {ObjectCreate("DOG"+IntegerToString(i),OBJ_TEXT, 1, Time[i+1],75);
                ObjectSetText("DOG"+IntegerToString(i),"S30->T1,T2: "+DoubleToStr(NormalizeDouble(BighBuffer+50*Point,4),4), 26, "Impact", clrBlue); 
                  mode[i]=1;
              //  ObjectCreate("DOGS"+IntegerToString(i),OBJ_TEXT, 1, Time[i+1],35);
              //  ObjectSetText("DOGS"+IntegerToString(i),"T2: W3M@ "+DoubleToStr(NormalizeDouble(BighBuffer,4),4), 26, "Impact", clrBlue);
                }
}

  ///RSI arrow dn
if (RSI2[i+1]<94 && RSI2[i+1]>92 && RSI2[i]<RSI2[i+1] && RSI2[i+2]<RSI2[i+1]){
     ObjectCreate("Cigar"+IntegerToString(i), OBJ_TEXT, 1, Time[i+1], 96); 
          ObjectSetText("Cigar"+IntegerToString(i), CharToStr(234), 26, "Wingdings", Crimson); 
          if (mode[i+1]>0 || High[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_MAIN,i+1)) ObjectSetInteger(0,"Cigar"+IntegerToString(i),OBJPROP_COLOR,clrGray);
          else {ObjectCreate("DOG"+IntegerToString(i),OBJ_TEXT, 1, Time[i+1],35);
                ObjectSetText("DOG"+IntegerToString(i),"TGT: "+DoubleToStr(NormalizeDouble(BowBuffer-50*Point,4),4), 26, "Impact", clrBlue); 
                mode[i]=-1;
                }
}

Just finished Album #100, but still unable to download, thanks to the Udio transition.

For some curiosity, here’s a track off of album #101 – see if you can recognize the voice.

Achilles Dent – Easy & Peasy

Quick Schuh

“Another shoe to drop”.

One of the main reasons why the 30-minute chart is supreme: the craftsmanship of the RSI2.

Soap Box Opera

Shoes come in pairs. They belong. To be long, you can go in when the second shoe has fallen. Particularly above the 9-day EMA (solid soap box).

Examples for One Pair of Shoes, you’re good to run.

The exit is 8+ pips beyond the 30BB.

The hollowed-out box is a dip below the 9-day EMA (E-414 on 30-minute). An out-of-sequence misstep.

As a second shoe, it can cater for up to 2 legs up (2 or 3 hollow red boxes), but it should only be taken seriously after some quick thinking at the 120BB.

Now we have a move back up to a previous POC 11 hours before the Rate Cut.

The one example I found where the blue & black combo appeared (without a color arrow prior) was a reflex move back to S120. This one just tagged the S240. My bet here is a move back down to the BB120, then S120 again.

Admittedly, I have no proof of the direction turning back down again; it’s just the analog. Buying seems to be embedded still at the moment.

if (RSI2[i+1]<6 && RSI2[i]>6){ 
     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)) ObjectSetInteger(0,"KAROLYII"+IntegerToString(i),OBJPROP_BACK,0);
  }
 
 if (RSI2[i+1]>94 && RSI2[i]<94){ 
     ObjectCreate("KAROLYII"+IntegerToString(i), OBJ_RECTANGLE, 1, Time[i+2], 94, Time[i], 100);
     ObjectSetInteger(0,"KAROLYII"+IntegerToString(i),OBJPROP_COLOR,clrRed);
     ObjectSetInteger(0,"KAROLYII"+IntegerToString(i),OBJPROP_WIDTH,3);      
     if (Close[i+1]>iMA(symbol,0,414,0,MODE_EMA,PRICE_MEDIAN,i+1)) ObjectSetInteger(0,"KAROLYII"+IntegerToString(i),OBJPROP_BACK,0);
  }

Also, my thinking is that there should be a 3rd “3X OUT” print, which is the price going outside all 3 Bollinger Bands before bottoming.


I call my daughter “Sús” at times.

It was carried over from when she used to become overtly excited if we were to go somewhere, and we told her, “Shoes!”

“Sussh, sussh!” she said back with getting busy putting them on.


Dir/L

The directional logic is coming along nicely.

There is a chance to turn back up around the blue BB (120-sample), but it has not happened yet. There should be a touch-and-go at the BB and another try that falls short. Kind of the mirror image of this:

Otherwise, wait for a color arrow (Red / Green = color arrows, Blue=no color, BB marker, Black=no color, black is a Tone).

The black can be a higher low / lower high already, but the colorless combo has no real foundation for a complete reversal without a color arrow (typically at the opposite side).


///prelim blue arrow down
if (i>0 && Open[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i) && 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) && High[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i) && High[i-1]<High[i] && Low[i+3]<(iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_MAIN,i+3)+10*Point) ) {mode[i]=-1;
    ObjectCreate("Cigar"+IntegerToString(i), OBJ_TEXT, 0, Time[i], High[i]+120*Point); 
          ObjectSetText("Cigar"+IntegerToString(i), CharToStr(234), 56, "Wingdings", RoyalBlue); 
          royal[i]=-1;
}

if (i>0 && mode[i]<0 && Open[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Close[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i) && High[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i) && High[i-1]>High[i] && Low[i+1]<(iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_MAIN,i+1))) mode[i]=1;

///prelim blue arrow up

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]) {mode[i]=1;
   ObjectCreate("Cigar"+IntegerToString(i), OBJ_TEXT, 0, Time[i], Low[i]-30*Point); 
          ObjectSetText("Cigar"+IntegerToString(i), CharToStr(233), 56, "Wingdings", RoyalBlue); 
          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;



///black arrow down
if (royal[ArrayMinimum(royal,24,i)]<0 && royal[ArrayMinimum(royal,6,i)]>=0 && iFractals(symbol,0,MODE_UPPER,i) && High[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i)-80*Point && High[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i)){
    ObjectCreate("Cigar"+IntegerToString(i), OBJ_TEXT, 0, Time[i], High[i]+120*Point); 
          ObjectSetText("Cigar"+IntegerToString(i), CharToStr(234), 56, "Wingdings", Black); 
}
 
///black arrow up
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); 
}


///black arrow down
if (royal[ArrayMinimum(royal,24,i)]<0 && royal[ArrayMinimum(royal,6,i)]>=0 && iFractals(symbol,0,MODE_UPPER,i) && High[i]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i)-80*Point && High[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i)){
    ObjectCreate("Cigar"+IntegerToString(i), OBJ_TEXT, 0, Time[i], High[i]+120*Point); 
          ObjectSetText("Cigar"+IntegerToString(i), CharToStr(234), 56, "Wingdings", Black); 
}
 
///black arrow up
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); 
}



///red arrow down
if (mode[i]>0 && 
High[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)+80*Point && Close[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i) && Close[i+2]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+2)) {mode[i]=-1;
    ObjectCreate("Cigar"+IntegerToString(i), OBJ_TEXT, 0, Time[i], High[i]+120*Point); 
          ObjectSetText("Cigar"+IntegerToString(i), CharToStr(234), 56, "Wingdings", Crimson); 
}

///green arrow up
if (i>0 && mode[i]<0 && Low[i]<Low[i+1]+20*Point && Close[i-1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i-1)+10*Point &&
Low[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i)-80*Point && Close[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i)-20*Point && Close[i+2]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+2)) {mode[i]=1;
     ObjectCreate("Cigar"+IntegerToString(i), OBJ_TEXT, 0, Time[i], Low[i]-30*Point); 
          ObjectSetText("Cigar"+IntegerToString(i), CharToStr(233), 56, "Wingdings", DarkGreen); 
}