XMas Special (not trading related)

Mind over mattress

Last Christmas I gave you my frizbees…

It was the best of times, it was the worst of times. General Butt Naked proceeded with eating out the heart alive of his latest adversary at the Emerald mine. P. Berlaz mobile currency exchanger was found dead in his own trunk while Gino got shot in the back during negotiating the price of some professional escorts in Germany, but on the flip side it started snowing a bit.

I was driving my fresly released ’78 Mustang after the re-possession due to having been sold stolen a year and a half ago from me. My friend on the back bench was crawling onto the floor and wedging himself behind the seat out of fear that I won’t be able to make the turn with this speed on the slippery road with this rear wheel driven ancient piece of metal cannon. It was probably due to hearing the inconfident “o-ooh” that I let off briefly that put him on the alert. We just passed by the Torpe Auto Trading Lot where if we got the timing and the amount of light right we could had witnessed Zs. Nagyagi lifting up his arm and having four of his fingers chopped off whilst trying to fend off the sword blow from his own wife, but the bullet that followed ultimately did him in. He probably won’t be needing my help again for bringing cars back from Winterthur.

I put my girlfriend on the train earlier to the capital and was headed to meet my other girlfriend to hang out with playing pools and perhaps eat something before she would start her shift at the Caligula brothel. I might be stopping by there tonight, although Attila the bouncer may not let me in if he’s not in the right mood. He would be going to prison soon for beating up someone badly… well, who is the trouble maker now?!

Being a fugitive of the army for a no show and being constantly sought by police for various white collar crimes, I used to not give 2Fs about anything.

The one thing that seems to be slipping is the chronology.

This Christmas, to set me from tears, I just remember the good old care-free days of living on Bourbon, Fontex and pain killers and try to keep out of this Pan-Demonic existence.

I suggest you do the same. Peace out & sauerkraut.

An ex policeman ex coworker told me this once:

“There’s more to life than painting floors” – this should be my Epitaph really, given that unlike him, I have not been in a coma and they did not transplant a nerve from next to the heart to the shoulder to be able to operate again, so obviously, I wouldn’t know.

The Scorching System

If you like simple things, this is for you. (1h Chart)

+ – points can be given for

  • Qualified zero print (RSI2< 2.5 or RSI2>97.5 25+ pips away from E44)
  • Momentum divergence (14, 67 sample sizes) or RSI2 divegence
  • Price beyond the safety lines (+ – 28 pips from E32)
  • 26-sample new high / low
  • + – 2 points for qualified wicks

So that’s an absolute 6 on the temperatลฑr scale. A 4 is rather persuasive in most cases to take a position. A 6 needs no arguing whatsoever.

A 3 is a rotation: good enough for a continuation entry and the raining direction has to be covered.

1-sample delay for better visuals of candles crossing over the previous level.
The Wicks.
The croppers always understood the Safety & the Shadow lines as revolving exit doors.

I would give a squeeze low/high 5 points.

It’s all about the Pendulum, baby!

Understanding a Wave 2

What size is precise?

Let’s gather around the fire & gather all we know about Wave 2s.

Wave 1 kind of declared itself to be just that – see the last Blog entry about Waterfalls.

  • A Wave 2 would come back through the closer end of the E-67 Band
  • A Wave 2 would likely fake out the second Doji made on the way here by 4-9 pips
  • A Wave 2 correction may take the 9-sample Hourly Slow Stochastic Oversold / Overbought twice before it ends

When price was up here, could you have made an educated guess as to where Wave 2 was likely headed?

Doji #2 faked out means going 4-9 pips further. So you can already say that the support zone is 1.1268-1.1263. All you need to do is let go of complicated feelings, know that there’s a price to pay, then reach out & touch faith for your own personal Wave 2.

So what is exactly happening with these dojis?

During those hours there was an even exchange. Someone was picking up all orders at market with enough care for not moving price too much. Perhaps they already unloaded some / half of their holdings on the last rally, perhaps not. When price returns to their entry, they step up again to round up the holdings / improve a little bit on the entry price with cost averaging. Or they are already out completely, but would be interested in going in again at the same level. Either way, that’s the typical offset.

How can you say Depeche Mode with 3 videos without saying Depeche Mode anywhere?

Apparently there was Kenny Josh version as well.

Don’t be so devotional emotional.

The original Macdulio said about me once that I say 3 words with 2. That sure seems to be my M.O. (He died st 47. I’m 48 now.)

I may not have figured out how to make money in this life, but I certainly had some relevant ideas about large percentages.

15 days, 400% gains

The Momentum divergence by now goes without saying.

Ripping Out The Wings of a Waterfall

Like I said, the waterfall selling once initiated by a tremor (wing flap of the butterfly) below the reversal confirmation line, nothing can stop it from becoming a cunami (c=ts). Nothing, but a 67-sample momentum divergence (green).

Once the flies are buttered up in the right place, every new swing high would be a lower one.

Whilst Wilbur wants to kill himself,

Walter is unstoppable

Walter can’t stop falling (measuring leg kick-back Tremor below the reversal confirmation level)

Walter becomes Mr. Glass for a few days. He is breaking things left & right, and he can’t seem to get up in a sustainable manner.

The tremors are the white flag poles. The head pointing down says lower highs from here on.
Relapse from erection to Waterfalling down again.

Walter is erected (67-sample momentum reversal divergence)

The last time Walter had an erection, he could only be stopped by two qualified Zero-Mastodons and between these he managed to regain his stamina by popping a blue triple M pill. The amount of desire could almost satisfy 2 full grown wooly Mastodons!

There has not been a qualified zero (+mastodon) yet, the M+S wasn’t a correction (so this is still the same wave), just ask Pirelli.

A correction requires the first, measuring leg arrive with 2/3 of fluctuation-size volatility (a tremor).

By the way, this is how you can use the 15-MIN ATR projections of mine:

You see the price struggling at 1.13, you look at the indicator that shows a 1.1344-1.1364 for a Wave 1 as prospect and so you don’t start shorting immediately.

Let’s face the music: do bitter flies dream of electronic horses? – this remains a mistery.

The Control Functions

There are 3 hard exits on a hourly chart.

  1. Qualified Zero displacement

A qualified zero is a >97.5 or <2.5 RSI2 print with its outside fractal 26+ pips away from the E44. I plot the qualified zeros in colors and the non-qualified ones in gray.

if (Low[i+1]+260*Point<iMA(symbol,0,44,0,MODE_EMA,PRICE_MEDIAN,i+1)) 
 ObjectSetText("Panaceadc"+DoubleToStr(i), "0", 42, "Arial Black", clrRed);
 else ObjectSetText("Panaceadc"+DoubleToStr(i), "0", 42, "Arial Black", clrDimGray);

Example of non-qualified zero followed by a qualified one.

A qualified zero print is going to be likely followed by a divergent M print, which as part of the combo I call the Mastodon and has the green / red extraction icon. The Mastodon is the second point of the M axis projected from the last Qualified Zero print. The usual displacement suspects are 7, 12.5 and 20 pips, but if none of these get a fill, take your ride from the opposite end of the Mastodon candle not to miss out.

if (zerodn[i+1] && Low[i+1]<iMA(symbol,0,44,0,MODE_EMA,PRICE_MEDIAN,i+1)-250*Point){
          ObjectCreate("ObjecSZ"+DoubleToStr(i), OBJ_TEXT, 1, Time[i+3], 49); 
          ObjectSetText("ObjecSZ"+DoubleToStr(i), "ยผ: "+DoubleToStr(NormalizeDouble(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,6,i+1))-70*Point,4),4) , 11, "Impact",  Navy); 
          ObjectCreate("ObjecSS"+DoubleToStr(i), OBJ_TEXT, 1, Time[i+3], 39); 
          ObjectSetText("ObjecSS"+DoubleToStr(i), "ยฝ: "+DoubleToStr(NormalizeDouble(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,6,i+1))-125*Point,4),4) , 11, "Impact",  Navy); 
          ObjectCreate("ObjecSX"+DoubleToStr(i), OBJ_TEXT, 1, Time[i+3], 29); 
          ObjectSetText("ObjecSX"+DoubleToStr(i), "ยผ: "+DoubleToStr(NormalizeDouble(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,6,i+1))-200*Point,4),4) , 11, "Impact",  Navy); }

It is important to know that a quick return to the E44 after a qualified print can disable it, make it void during a run with good momentum, so the 3 displacements listed should be ignored as a new Zero is going to override these.

A non qualified zero can still yield a tremor print, so it can reverse price – see the second entry on this.

2. Tremor of volatility

A volatility tremor is a preliminary signal of a bigger earthquake that would arrive with a larger landslide.

A tremor is a counter directional swing with enough volatility to make price travel 70%+ of the instrument’s fluctuation size. If this swing crosses below the E44 you get a waterfall, meaning no higher high / lower low print would happen before the landslide. The ultimate distance in this case is TBD and you should go in in the direction of the tremor at market and round to full size upon breaching the swing terminal and / or add to your position at better price levels.

if (iFractals(symbol,0,MODE_UPPER,i)){
      j=i-2;
      while (j>1 && j>i-5){
         if (Low[j-1]>Low[j] && Low[j]<Low[j+1] && High[i]-Low[j]<340*Point && High[i]-Low[j]>250*Point) break;
         j--;
      }

An example of not expecting a higher high after the tremor:

Note that the head part is pointing down.

Examples of the head expected to be a higher high & the typical travel lengths in white below.

Examples of tremors away from the E44 with 75+ pips of corrections (149 on the 2nd).

The Keltinger Chaos plots thicker flag poles for these.

3. Triple M (Image above)

A triple M is when price isn’t able to reach a Zero oversold/overbought condition, but it ends up with 3 attempt falling shy from a Zero.


The Zero plus momentum (67) continuation divergence was a soft exit and so was the back test of last week’s pivot – a different lesson.

The current, qualified zero displacement is menu item #1, the real McCoy – although it is the inside version for it did not print a new 26-sample lower low I stand corrected, this is an outside head, went 1 pip lower than the previous one.


Quick Lesson

How would you know that price is going to be going higher from this consolidation?

  1. Price found buyers in the green box (twice)
  2. Price is above last week’s pivot (magenta)
  3. The last outside M was on the down side (butterfly)
  4. Price is above the upside reversal confirmation line (yellow)
  5. The triple M attempt on the upside was not an outside triplet (no 26-sample new high was printed)
  6. The 67-sample momentum is above 100 = bull pullback
  7. People that went short in the orange wick are under water – the 14-sample momentum is turned positive by breaking above that very candle
  8. Think of all the people trapped with their shorts below 1.13 with the 1-hour quick trip down to 1.1235

2 steps forward, 1 step back image


These people calling for 1.09 remind me of the email I got here in Slovakian from someone telling me that Eur would go to 1.25 and 1.32 in a rather hectic fashion last June.Momentum just reached neutral (100), price is sitting on the 9-day EMA after a slow motion bull pullback, the hourly just printed a Zero-Mastodon and you want to short, because everyone is always trading the last trade. The inside head would be broken on the way up.



Bear Market Rally 2

Changes.

The Mean, E207 on the hourly translates vaguely to a 9EMA HL2 on the daily.

Since the mean was crossed over, closed over, so the odds favor a move back to the lower Keltinger Band, and I would no longer deem this rally a bear market rally. What is likely to happen here is a 20-50 pips pullback, so I would try to dump my shorts. If the next daily closes below the 9 EMA, a downside continuation would become more probable.


I put back the directional filter for the fizzle condition. I thought the red block was a mistake, but in fact it was right for postponing the climax. I don’t even remember what condition I had to flip it back to green up here, but it was certainly right. Wait, it had to be clearing the mean. One of these four…

//E207 leave down
 if (High[i]-Low[i]>280*Point && High[i]>iMA(NULL,0,207,0,MODE_EMA, PRICE_LOW,i) && Low[i]<iMA(NULL,0,207,0,MODE_EMA, PRICE_LOW,i) && Close[i]<Open[i] && iMA(NULL,0,207,0,MODE_EMA, PRICE_MEDIAN,i)-iMA(NULL,0,67,0,MODE_EMA, PRICE_MEDIAN,i)<160*Point) dir[i]=-1;

//E207 leave down reprise
 else if (High[i]>iMA(NULL,0,207,0,MODE_EMA, PRICE_LOW,i) && Low[i]<iMA(NULL,0,207,0,MODE_EMA, PRICE_LOW,i) && Close[i]<Open[i] && iMA(NULL,0,207,0,MODE_EMA, PRICE_MEDIAN,i)-iMA(NULL,0,67,0,MODE_EMA, PRICE_MEDIAN,i)<160*Point && dir[i]==-1) dir[i]=1;
//High[i]-Low[i]>280*Point && 

//E207 leave up
 if (High[i]-Low[i]>280*Point && High[i]>iMA(NULL,0,207,0,MODE_EMA, PRICE_HIGH,i) && Low[i]<iMA(NULL,0,207,0,MODE_EMA, PRICE_HIGH,i) && Close[i]>Open[i]) dir[i]=1;

//E207 leave up reprise
 else if ( High[i]-Low[i]>280*Point && High[i]>iMA(NULL,0,207,0,MODE_EMA, PRICE_HIGH,i) && Low[i]<iMA(NULL,0,207,0,MODE_EMA, PRICE_HIGH,i) && Close[i]>Open[i] && dir[i]==1) dir[i]=-1;

The Forest’s call was always tuned to the overdrive line.
The LEMA 30N quoted last mean reversion to 1.1335.
There is your selling wick, the 31 projection and test, and price was now rejected from the Upper Guard Rail. Beetwen the 2 Guard Rails the rubber band isn’t stretched, rather free motion is possible.

The head is a tricky one. Since I believe that the head should be worth buying, I had to eliminate some weaker prints.

It is not as easy as looking at a lower low with an RSI2 print that does not touch the zero line.

     if (Close[0]<iBands(symbol,1440,44,0.8,0,PRICE_MEDIAN,MODE_LOW,0) &&  iFractals(symbol,0,MODE_LOWER,i) 
       && ExtMapBuffer2[i]==EMPTY_VALUE && RSI2[i]>4
       && RSI2[ArrayMaximum(RSI2,26,i)]>88
       && RSI2[ArrayMinimum(RSI2,2,i+1)]>1
       && Low[i]<iLow(symbol,0,iLowest(symbol,0,MODE_LOW,24,i+1))
       ){

Where ExtMapuffer2 is the array for the Hybrid Stochastic Overdrives Down.


A small modification was done to the 15-Min ATR routine by adding a 3rd 20-pip box and a “C”.

Price never actually went outside the upper box, it just looks like it due to the broker pushing the spread up beyond 12 pips.

I can no longer attach Zip files on this blog (attaching an ex4 was never a possibility), so my options are either my Google One Drive or including a source code.

//15 MIN ATR TARGET PRO
#property copyright "Copyright ยฉ 2018, Macdulio"
#property link      "forexfore.blog" 
#property description "15-MIN ATR TARGETS PRO"
#property description "The arrow is the last 15-MIN consolidation weight"
#property description "The two aiming signals are the"
#property description "approximate area of a projected limit to a move on a normal day"
#property description "The projection lines are based om current 30-min MACD (24,52,5) bias"
#property description "and for better visuals plotted from the last high/low RSI print"
#property description "the program can plot a mesh with adjustable pip values"
#property description "plot qualifying moves, and has Fibonacci options"

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 DeepSkyBlue
#property indicator_color2 Pink
#property indicator_color3 DarkGreen
#property indicator_color4 Crimson
//--- buffers
double vbru[];
double ATRA;
double ATRAVG[];
double weight;
double fhigh;
double flow;
double w[];
double ut[];
double dt[];
double BighBuffer;
double BowBuffer;
double BighBuffer2;
double BowBuffer2;
datetime UpFractalTime_1,LowFractalTime_1,UpFractalTime_2,LowFractalTime_2;
double mid[];
   
double ExtMapBuffer[];

extern int RSILOW = 15;
extern int RSIHIGH = 85;
extern bool plot_numbers=true;
extern bool plot_grid_55=false;
extern bool plot_qualifying_moves=false;
extern bool plot_last_swing_fib=false;
extern bool plot_qualifying_move_fib=false;
extern double pacing=55;


extern int lookback = 24;
extern int lastbar = 0;
extern color FibColor= Navy;


//---- variables
string TimeFrame;
datetime LastAlert=0;  
  
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
  

//---- indicators
  SetIndexStyle(0,DRAW_ARROW,EMPTY,20,BlueViolet);
   SetIndexBuffer(0,w);
  SetIndexArrow(0,224);     
  SetIndexStyle(1,DRAW_ARROW,EMPTY,20,Red);
   SetIndexBuffer(1,ut);
  SetIndexArrow(1,177);  
  SetIndexStyle(2,DRAW_ARROW,EMPTY,20,Red);
   SetIndexBuffer(2,dt);
  SetIndexArrow(2,177);  
     
    string short_name="15 MIN ATR";
   IndicatorShortName(short_name);


//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//   ObjectsDeleteAll();
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    i,i2,j,j2,k;                      // Bar Index
   int lasti,lasti2,lastj,lastj2;
    ArrayResize(ExtMapBuffer, Bars);
  ArrayInitialize(ExtMapBuffer, 0);
  ArrayResize(w, 2);  
  ArrayInitialize(w, EMPTY_VALUE);  
  ArrayResize(ut, 2);  
  ArrayInitialize(ut, EMPTY_VALUE);
  ArrayResize(dt, 2);      
  ArrayInitialize(dt, EMPTY_VALUE);
   ArrayResize(mid, Bars);
   ArrayInitialize(mid, 0);     

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

  ArrayResize(ATRAVG, 353);
   ArrayInitialize(ATRAVG, 0); 
      int    counted_bars=IndicatorCounted();
    string obj_name="My_Target_Lines"+IntegerToString(i);
//--------------------------------------------------------------------
  
  ObjectDelete("Fibo");

if (plot_last_swing_fib) {

   double lowest=1000, highest=0;
   datetime T1,T2;
   for(i=lookback+lastbar;i>lastbar+1;i--)
   {  
      double curLow0=iLow(Symbol(),Period(),i-2);
      double curLow1=iLow(Symbol(),Period(),i+1);
      double curLow2=iLow(Symbol(),Period(),i);
      double curLow3=iLow(Symbol(),Period(),i-1);
      double curLow4=iLow(Symbol(),Period(),i-2);
      
       double curHigh0=iHigh(Symbol(),Period(),i+2);
       double curHigh1=iHigh(Symbol(),Period(),i+1);
        double curHigh2=iHigh(Symbol(),Period(),i);
         double curHigh3=iHigh(Symbol(),Period(),i-1);
         double curHigh4=iHigh(Symbol(),Period(),i-2);
         
      if(curLow2<=curLow1 && curLow2<=curLow1 && curLow2<=curLow0 )
      {
      if(lowest>curLow2){
         lowest=curLow2;
         T2=iTime(Symbol(),Period(),i);}
      }
      
      if(curHigh2>=curHigh1 && curHigh2>=curHigh3&& curHigh2>=curHigh4)
      {  
         if(highest<curHigh2){
         highest=curHigh2;
         T1=iTime(Symbol(),Period(),i);}
      }
   
   
   }   
   
 
   
   Comment(highest, lowest);
   if(T1<T2)
   {ObjectCreate("Fibo", OBJ_FIBO, 0, T1, highest,T2,lowest);}
   else{
    ObjectCreate("Fibo", OBJ_FIBO, 0, T2, lowest, T1,highest);
   }
//----
 
string fiboobjname = "Fibo";
ObjectSet(fiboobjname, OBJPROP_FIBOLEVELS, 11);
     ObjectSet(fiboobjname, OBJPROP_FIRSTLEVEL, 0.0);
   ObjectSetFiboDescription(fiboobjname,0,"0.0     %$");
   ObjectSet(fiboobjname, OBJPROP_FIRSTLEVEL+1, 0.236);
   ObjectSetFiboDescription(fiboobjname,1,"23.6     %$");
   ObjectSet(fiboobjname, OBJPROP_FIRSTLEVEL+2, 0.382);
   ObjectSetFiboDescription(fiboobjname,2,"38.2     %$");
   ObjectSet(fiboobjname, OBJPROP_FIRSTLEVEL+3, 0.50);
   ObjectSetFiboDescription(fiboobjname,3,"50.0     %$");
   ObjectSet(fiboobjname, OBJPROP_FIRSTLEVEL+4, 0.618);
   ObjectSetFiboDescription(fiboobjname,4,"61.8     %$");
   ObjectSet(fiboobjname, OBJPROP_FIRSTLEVEL+5, 0.786);
   ObjectSetFiboDescription(fiboobjname,5,"78.6     %$");
   ObjectSet(fiboobjname, OBJPROP_FIRSTLEVEL+6, 1.000);
   ObjectSetFiboDescription(fiboobjname,6,"100.0     %$");
   ObjectSet(fiboobjname, OBJPROP_FIRSTLEVEL+7, -0.272);
   ObjectSetFiboDescription(fiboobjname,7,"127.2     %$");
   ObjectSet(fiboobjname, OBJPROP_FIRSTLEVEL+8, -0.618);
   ObjectSetFiboDescription(fiboobjname,8,"161.8     %$");
   ObjectSet( "Fibo", OBJPROP_LEVELCOLOR, clrWhite) ;
   ObjectsRedraw();

    }
   
   
   ATRA = 0;
   for (i=1; i<=3; i++){ 
     ATRA = ATRA+iATR(NULL,1440,14,i);}
   
   for (i=0; i<=160; i++){ 
     ATRAVG[i] = ATRA/3; }
    
   i=0;
   while (!(ChoppinessIndex(12*4,i+1)<53 && ChoppinessIndex(12*4,i)>53))    
   i++;
   

   
   weight=(iHigh(NULL,15,i)+iLow(NULL,15,i))/2;



 w[1]=EMPTY_VALUE;
 w[0]=EMPTY_VALUE;
ut[1]=EMPTY_VALUE;
ut[0]=EMPTY_VALUE;
dt[1]=EMPTY_VALUE;
dt[0]=EMPTY_VALUE;
 
 w[0]=weight;
 ut[0]=w[0]+ATRAVG[0]*1.10;
 dt[0]=w[0]-ATRAVG[0]*1.10;            

   BowBuffer=(iClose(NULL,15,i))-ATRAVG[i]*1.30;
   BighBuffer=iClose(NULL,15,i)-ATRAVG[i]; 
   BowBuffer2=iClose(NULL,15,i)+ATRAVG[i];
   BighBuffer2=iClose(NULL,15,i)+ATRAVG[i]*1.30; 


deletetxt1("ATR");

if (Close[0]<iMA(Symbol(),30,32,0,MODE_EMA,PRICE_CLOSE,0)){
ObjectCreate("ATR1", OBJ_RECTANGLE, 0,  Time[10], BowBuffer, Time[0], BighBuffer);
  ObjectSetInteger(0,"ATR1",OBJPROP_COLOR,clrOrange);
  ObjectSet("ATR1",OBJPROP_BACK,1);
  ObjectSet("ATR1",OBJPROP_WIDTH,5);
  
  ObjectCreate("ATR11", OBJ_RECTANGLE, 0,  Time[10], BighBuffer, Time[0], BighBuffer+200*Point);
  ObjectSetInteger(0,"ATR11",OBJPROP_COLOR,clrGray);
  ObjectSet("ATR11",OBJPROP_BACK,0);
  ObjectSet("ATR11",OBJPROP_WIDTH,3);
  
  
    ObjectCreate("ATR111", OBJ_RECTANGLE, 0,  Time[10], BowBuffer, Time[0], BowBuffer-200*Point);
  ObjectSetInteger(0,"ATR111",OBJPROP_COLOR,clrGray);
  ObjectSet("ATR111",OBJPROP_BACK,0);
  ObjectSet("ATR111",OBJPROP_WIDTH,3);
  }

if (Close[0]>iMA(Symbol(),30,32,0,MODE_EMA,PRICE_CLOSE,0)){
ObjectCreate("ATR2", OBJ_RECTANGLE, 0,  Time[10], BowBuffer2, Time[0], BighBuffer2);
  ObjectSetInteger(0,"ATR2",OBJPROP_COLOR,clrOrange);
  ObjectSet("ATR2",OBJPROP_BACK,1);
  ObjectSet("ATR2",OBJPROP_WIDTH,5);

ObjectCreate("ATR22", OBJ_RECTANGLE, 0,  Time[10], BowBuffer2-200*Point, Time[0], BowBuffer2);
  ObjectSetInteger(0,"ATR22",OBJPROP_COLOR,clrGray);
  ObjectSet("ATR22",OBJPROP_BACK,0);
  ObjectSet("ATR22",OBJPROP_WIDTH,3);
  
  ObjectCreate("ATR222", OBJ_RECTANGLE, 0,  Time[10], BighBuffer2+200*Point, Time[0], BighBuffer2);
  ObjectSetInteger(0,"ATR222",OBJPROP_COLOR,clrGray);
  ObjectSet("ATR222",OBJPROP_BACK,0);
  ObjectSet("ATR222",OBJPROP_WIDTH,3);
  

  
  }
  


deletetxt1("Line9_");

   j2=0;
   while (j2<=300){
          if (iRSI(NULL,0,2,PRICE_MEDIAN,j2+1)<RSILOW && iRSI(NULL,0,2,PRICE_MEDIAN,j2)>RSILOW ) break;
         j2++;}  

LowFractalTime_2=iTime(NULL, 0,j2);    LowFractalTime_1=iTime(NULL, 0,0);    
 
  ObjectDelete(0,"Line9_2");
      if (j2<300 && (iMACD(NULL,30,24,52,5,PRICE_MEDIAN,0,1)>iMACD(NULL,30,24,52,5,PRICE_MEDIAN,1,1) || iMACD(NULL,30,24,52,5,PRICE_MEDIAN,0,0)>iMACD(NULL,30,24,52,5,PRICE_MEDIAN,1,0) ))  { 
     ObjectCreate(0,"Line9_2",OBJ_TREND,0,LowFractalTime_1,NormalizeDouble(w[0]+ATRAVG[0]*1.10,4),LowFractalTime_2,Low[j2]);
    ObjectSetInteger(0,"Line9_2",OBJPROP_RAY_RIGHT,false);
     ObjectSetInteger(0,"Line9_2",OBJPROP_BACK, true);
         ObjectSet("Line9_2",OBJPROP_COLOR,indicator_color1);
         ObjectSet("Line9_2",OBJPROP_WIDTH,18); }
         
 
   i2=0;
   while (i2<=300){
          if (iRSI(NULL,0,2,PRICE_MEDIAN,i2+1)>RSIHIGH && iRSI(NULL,0,2,PRICE_MEDIAN,i2)<RSIHIGH ) break;
         i2++;}  

UpFractalTime_2=iTime(NULL, 0,i2);    UpFractalTime_1=iTime(NULL, 0,0);    
 
  ObjectDelete(0,"Line9_1");
      if (i2<300 && (iMACD(NULL,30,24,52,5,PRICE_MEDIAN,0,1)<iMACD(NULL,30,24,52,5,PRICE_MEDIAN,1,1)  ||  iMACD(NULL,30,24,52,5,PRICE_MEDIAN,0,0)<iMACD(NULL,30,24,52,5,PRICE_MEDIAN,1,0)) )  { 
     ObjectCreate(0,"Line9_1",OBJ_TREND,0,UpFractalTime_1,NormalizeDouble(w[0]-ATRAVG[0]*1.10,4),UpFractalTime_2,High[i2]);
    ObjectSetInteger(0,"Line9_1",OBJPROP_RAY_RIGHT,false);
    ObjectSetInteger(0,"Line9_1",OBJPROP_BACK, true);
         ObjectSet("Line9_1",OBJPROP_COLOR,indicator_color2);
         ObjectSet("Line9_1",OBJPROP_WIDTH,18); }
         
 deletetxt1("txt 7");
 if (plot_numbers){deletetxt1("txt 7");
                      
               ObjectCreate("txt 7"+BighBuffer, OBJ_TEXT, 0, Time[4], BighBuffer+.0005); 
               ObjectSetText("txt 7"+BighBuffer, NormalizeDouble(BighBuffer,4), 22, "Arial Black", Blue);
            
                      
               ObjectCreate("txt 7"+BowBuffer, OBJ_TEXT, 0, Time[4], BowBuffer+.0005); 
               ObjectSetText("txt 7"+BowBuffer, NormalizeDouble(BowBuffer,4), 22, "Arial Black", Black);
            
            
            
              ObjectCreate("txt 7"+BighBuffer2, OBJ_TEXT, 0, Time[4], BighBuffer2+.0005); 
               ObjectSetText("txt 7"+BighBuffer2, NormalizeDouble(BighBuffer2,4), 22, "Arial Black", Black);
            
                      
               ObjectCreate("txt 7"+BowBuffer2, OBJ_TEXT, 0, Time[4], BowBuffer2+.0005); 
               ObjectSetText("txt 7"+BowBuffer2, NormalizeDouble(BowBuffer2,4), 22, "Arial Black", Blue);
               
               
             if (Close[0]<w[0]){ 
             ObjectCreate("txt 7"+BighBuffer*BowBuffer, OBJ_TEXT, 0, Time[8], (BighBuffer+BowBuffer)/2-.0015); 
               ObjectSetText("txt 7"+BighBuffer*BowBuffer, "C", 22, "Impact", White);
             
              ObjectCreate("txt 7"+BighBuffer+BowBuffer, OBJ_TEXT, 0, Time[8], (BighBuffer+BowBuffer)/2+.0005); 
               ObjectSetText("txt 7"+BighBuffer+BowBuffer, "W3", 22, "Impact", Crimson);
               
                ObjectCreate("txt 7"+(BighBuffer-BowBuffer), OBJ_TEXT, 0, Time[8], BighBuffer+.0015); 
               ObjectSetText("txt 7"+(BighBuffer-BowBuffer), "W1<="+ NormalizeDouble(BighBuffer+.0020,4), 22, "Impact", White);
               }
               else {  
               ObjectCreate("txt 7"+BighBuffer2*BowBuffer2, OBJ_TEXT, 0, Time[8], (BighBuffer2+BowBuffer2)/2+.0025); 
               ObjectSetText("txt 7"+BighBuffer2*BowBuffer2, "C", 22, "Impact", White);
               
               ObjectCreate("txt 7"+BighBuffer2+BowBuffer2, OBJ_TEXT, 0, Time[8], (BighBuffer2+BowBuffer2)/2+.0005); 
               ObjectSetText("txt 7"+BighBuffer2+BowBuffer2, "W3", 22, "Impact", Crimson);
               
               ObjectCreate("txt 7"+(BighBuffer2-BowBuffer2), OBJ_TEXT, 0, Time[8], BowBuffer2-.0015); 
               ObjectSetText("txt 7"+(BighBuffer2-BowBuffer2), "W1>="+ NormalizeDouble(BowBuffer2-.0020,4), 22, "Impact",  White);
               }
               
               }
 

deletetxt1("HLN");

            if (plot_grid_55)    {
               
               
               ObjectCreate( "HLN"+IntegerToString(0), OBJ_HLINE, 0, Time[0], w[0] );
               ObjectSet("HLN"+IntegerToString(0), OBJPROP_COLOR, clrBlack );
               ObjectSet("HLN"+IntegerToString(0), OBJPROP_STYLE, 2 );
               
               
               for (i=1; i<=3; i++) {
               
               ObjectCreate( "HLN"+IntegerToString(i), OBJ_HLINE, 0, Time[0], NormalizeDouble(w[0]+(pacing/10000)*i,5) );
               ObjectSet("HLN"+IntegerToString(i), OBJPROP_COLOR, clrBlack );
               ObjectSet("HLN"+IntegerToString(i), OBJPROP_STYLE, 2 );
               }
               
                 for (i=-1; i>=-3; i--) {
               
               ObjectCreate( "HLN"+IntegerToString(i), OBJ_HLINE, 0, Time[0], NormalizeDouble(w[0]+(pacing/10000)*i,5) );
               ObjectSet("HLN"+IntegerToString(i), OBJPROP_COLOR, clrBlack );
               ObjectSet("HLN"+IntegerToString(i), OBJPROP_STYLE, 2 );
               }
               
               }
            
  deletetxt1("Line8_");          
            
if (plot_qualifying_moves) {            
            
//deletetxt1("Line8_");


for (k=50; k>=0; k--){

   j=k;
   while (j<=300){
          if (iFractals(NULL,0,MODE_UPPER,j)) break;
         j++;}  


   j2=j+1;
   while (j2<=j+25){
          if (iFractals(NULL,0,MODE_LOWER,j2) && High[j]-Low[j2]>ATRAVG[0]*.85) break;
         j2++;}  

LowFractalTime_2=iTime(NULL, 0,j2);    LowFractalTime_1=iTime(NULL, 0,j);    
 
 
      if (j2<300 && High[j]-Low[j2]>.0055  )  { 
       ObjectDelete(0,"Line8_2"+j);
     ObjectCreate(0,"Line8_2"+j,OBJ_TREND,0,LowFractalTime_1,High[j],LowFractalTime_2,Low[j2]);
    ObjectSetInteger(0,"Line8_2"+j,OBJPROP_RAY_RIGHT,false);
     ObjectSetInteger(0,"Line8_2"+j,OBJPROP_BACK, true);
         ObjectSet("Line8_2"+j,OBJPROP_COLOR,indicator_color3);
         ObjectSet("Line8_2"+j,OBJPROP_WIDTH,18); 
         lastj=j;
         lastj2=j2;
         
         }
         
 
   i=k;
   while (i<=300){
          if (iFractals(NULL,0,MODE_LOWER,i)) break;
         i++;}  


   i2=i+1;
   while (i2<=i+25){
          if (iFractals(NULL,0,MODE_UPPER,i2) && High[i2]-Low[i]>ATRAVG[0]*.85) break;
         i2++;}  

UpFractalTime_2=iTime(NULL, 0,i2);    UpFractalTime_1=iTime(NULL, 0,i);    
 

      if (i2<300 && High[i2]-Low[i]>.0055)  { 
        ObjectDelete(0,"Line8_1"+i);
     ObjectCreate(0,"Line8_1"+i,OBJ_TREND,0,UpFractalTime_1,Low[i],UpFractalTime_2,High[i2]);
    ObjectSetInteger(0,"Line8_1"+i,OBJPROP_RAY_RIGHT,false);
    ObjectSetInteger(0,"Line8_1"+i,OBJPROP_BACK, true);
         ObjectSet("Line8_1"+i,OBJPROP_COLOR,indicator_color4);
         ObjectSet("Line8_1"+i,OBJPROP_WIDTH,18); 
         
         lasti=i;
         lasti2=i2;
         }
            
            }
          
          
          if (plot_qualifying_move_fib){
            
            
             ObjectDelete("Fibu");
            
  if(lasti<=lastj)
   {ObjectCreate("Fibu", OBJ_FIBO, 0, UpFractalTime_1, Low[lasti],UpFractalTime_2,High[lasti2]);}
   else{
    ObjectCreate("Fibu", OBJ_FIBO, 0, LowFractalTime_1, High[lastj], LowFractalTime_2,Low[lastj2]);}
            
string fiboobjname2 = "Fibu";
ObjectSet(fiboobjname2, OBJPROP_FIBOLEVELS, 11);
     ObjectSet(fiboobjname2, OBJPROP_FIRSTLEVEL, 0.0);
   ObjectSetFiboDescription(fiboobjname2,0,"0.0     %$");
   ObjectSet(fiboobjname2, OBJPROP_FIRSTLEVEL+1, 0.236);
   ObjectSetFiboDescription(fiboobjname2,1,"23.6     %$");
   ObjectSet(fiboobjname2, OBJPROP_FIRSTLEVEL+2, 0.382);
   ObjectSetFiboDescription(fiboobjname2,2,"38.2     %$");
   ObjectSet(fiboobjname2, OBJPROP_FIRSTLEVEL+3, 0.50);
   ObjectSetFiboDescription(fiboobjname2,3,"50.0     %$");
   ObjectSet(fiboobjname2, OBJPROP_FIRSTLEVEL+4, 0.618);
   ObjectSetFiboDescription(fiboobjname2,4,"61.8     %$");
   ObjectSet(fiboobjname2, OBJPROP_FIRSTLEVEL+5, 0.786);
   ObjectSetFiboDescription(fiboobjname2,5,"78.6     %$");
   ObjectSet(fiboobjname2, OBJPROP_FIRSTLEVEL+6, 1.000);
   ObjectSetFiboDescription(fiboobjname2,6,"100.0     %$");
   ObjectSet(fiboobjname2, OBJPROP_FIRSTLEVEL+7, -0.272);
   ObjectSetFiboDescription(fiboobjname2,7,"127.2     %$");
   ObjectSet(fiboobjname2, OBJPROP_FIRSTLEVEL+8, -0.618);
   ObjectSetFiboDescription(fiboobjname2,8,"161.8     %$");
   if(lasti<=lastj) ObjectSet( "Fibu", OBJPROP_LEVELCOLOR, Crimson) ;
   else ObjectSet( "Fibu", OBJPROP_LEVELCOLOR, DarkGreen) ;
   ObjectsRedraw();
            }
            
            }

   return(0);
  }
  
  
  
  
 
double ChoppinessIndex(int period, int bar)
  {
    double Low0 = 0, High0 = 0, Close1 = 0;
    double TrueRangeLow = 0, TrueRangeHigh = 0, TrueRangeSum = 0, Input = 0;
    double PeriodTrueRangeLow = 999999999, PeriodTrueRangeHigh = 0, PeriodTrueRange = 0;

    for(int k=bar; k<bar+period; k++)
    {
      Low0   = iLow(NULL,15,k);
      High0  = iHigh(NULL,15,k);
      Close1 = iClose(NULL,15,k+1);

      if (Low0<Close1)  TrueRangeLow  = Low0;  else TrueRangeLow  = Close1;
      if (High0>Close1) TrueRangeHigh = High0; else TrueRangeHigh = Close1;
      
      if (TrueRangeLow <PeriodTrueRangeLow)  PeriodTrueRangeLow  = TrueRangeLow;  // find true low of period
      if (TrueRangeHigh>PeriodTrueRangeHigh) PeriodTrueRangeHigh = TrueRangeHigh; // find true high of period

      TrueRangeSum += TrueRangeHigh;
      TrueRangeSum -= TrueRangeLow;
    }

    PeriodTrueRange = PeriodTrueRangeHigh - PeriodTrueRangeLow;
    if (PeriodTrueRange==0) PeriodTrueRange = MathPow(10, -12); // avoid possibility of division by zero
    Input = TrueRangeSum / PeriodTrueRange;
    return ((logN(Input, 10, MathPow(10, -12)) / logN(period, 10, MathPow(10, -12))) * 100);
  }
  

double logN(double x, double base, double epsilon)
  {
    double integer = 0.0;
    if ((x < 1) || (base < 1)) return(0);

    while (x < 1)
    {
      integer -= 1;
      x *= base;
    }
  
    while (x >= base)
    {
      integer += 1;
      x /= base;
    }
  
    double partial = 0.5;
    x *= x;
    double decimal = 0.0;

    while (partial > epsilon)
    {
      if (x >= base)
      {
        decimal += partial;
        x = x / base;
      }
      partial *= 0.5;
      x *= x;
    }
    
    return (integer + decimal);
  } 


double StdDev(int shift, int samples)
  {
  double x0=0, x1=0, x2=0;
  for (int m=0; m<samples; m++)
    {
    x0 = ExtMapBuffer[m+shift];
    x1 += x0;
    x2 += MathPow(x0,2);
    }
  return(MathSqrt((x2-(x1*x1/samples))/(samples-1))); // minimum samples is 2, enforced in the init section
}
//+------------------------------------------------------------------+

void deletetxt1(string what){
   for(int iObj=ObjectsTotal()-1; iObj >= 0; iObj--){
      string   on = ObjectName(iObj);
      if(StringFind(on, what) == 0)  ObjectDelete(on);
  
}  }

The Head Buy Boxes

Short & longer term momentum added (14 & 67 samples)


Bear Market Rally

In the negative Keltinger Chaos field there would be rallies coming off of Hourly Lower Low Head Prints that would take price to the Fizzle level (all of these were described in the previous blog entry).

What is important to note here is not to forget the protective stop loss placement when in the money, but if stopped out do not try to go back at the same level again.

The fizzle would score something beyond the confirmation level. The 15-min ATR routine can help you with its Wave3 box to show where price would be far enough from the last consolidation level.

Once again we can highlight the importance of 2 things in a bear market: heads and volatility.

The current move would qualify for a mean reversion by getting back to the E207.

A new idea of mine is to start splitting heads based on being a lower low (26 sample) or not into outside and inside heads.

Wait for the top of the hour to arrive when the market is cooking with gas.

4 cubes to end it all, just like the other day. If the stochastic overdrive gets taken back by the settlement, there may be additional upside left.

After the Zero point Zero stochastic reading earlier this week, there wasn’t much risk of a lot more downside to come near term.

1.1190 was the 100+50% support level and the 1.1995 projected level was also met by the low placed at 1.1986.

One final thought for trading in this market: let things play out, do not interfere much.

All green buying wicks

A Wave C can be more powerful than a Wave 3.

So, it isn’t the first full line up that matters after all, but the first hour when it subsides. Embedding is always looming about.

You can see how they bought again at the same height where domeone else sold.

Keltinger Confusion

So this is the world we live in & this is the routine we’re needin’. Hey Superman, where are you now?

When in the land of confusion, a Confirmed Reversal is hard to come by.

The Keltinger Chaos Field Game’s rules were unknown until today. Only distinct, but faint 80s disco music was making it through the chart,

For a reversal to take place beyond the Keltinger band would require 2 things: a head print and a counter directional swing in excess of 2x fluctuation size.

After these 2 conditions are met, any secondary buy signal would be a go.

So far there has been only 1 confirmed reversal up (shown by the Keltinger Chaos routine).

For the directional entries I have given the clues and the tool in the prior blog entry.

Finally let’s talk about the fizzle out condition.

Since you already have a Lema30N and a Hybrid Stochatic Bars, you are almost set.

A fizzle out would occur with the candles reaching beyond the shadow lines (10 more pips from the Safety lines as Lema30 does not plot these, only the Holy Graph) with red hot stochastic bar signals. Why red hot? Because this is a continuation entry, in this case THE Lower High.

This Red Hot made it to True Blau.

Image shows the alignment of all 4 stars squares.

The problem, once again was that you did not understand what the game was. And the game does not change until we catch up with the Borderline of the Keltinger Band (No Papi, I don’t preach, but you’re in trouble deep.)

Please start to appreciate that if I did not come along, you would never know of these game rules.

2 Steps Awkward

Here is how you may end up with a wrong bias unintentionally.

Google shuffled in a Bloomberg headline citing somebody having made 62 million on Euro short options.

Just by the environment you are surrounded with and your previously constructed logical circuits, you may end up translating this piece of information from the incredibly credible source as someone knew something and or made a lucky bet, but the trade is in past tense, you would end up with a short term bullish bias (I know I did).

As Matthew Broderick of Wall Street pointed it out due to the Hertz buying Teslas fake news, Bloomberg gets fined just as other news agencies, this however does not remedy any damages occurred.

Red Bull gives you wings, a dolphin could give you dorsal fins, but Google gives you bias and a red pitbull can take your balls.

Everything becomes part of your trading narrative.

Yesterday was shaping up to be a nothing burger with very light news.

It ended up being an Angus beef with some rib eye trimming for the brokers.

Yes, the confidence number was a big miss, but would you know if someone made the importance low by mistake or by will?

Are you preparing just as vehemently to protect yourself when there are now news scheduled?


I was born yesterday, on the steps, just like Attila was.

From the famous movie where Lisp Butler says his epic line: “I have no need of another woman speaking impairment.”

Are you done eating? Then start donating ๐Ÿ™‚

A similar caliber of a word play for my 2 Hungarian followers would be:

Ettek? Ittak? Attak!

The 2-steps forward 1-step back goes a little something like this:

3-sets of these 2-steps & the prevailing trend gets reinstated.

Where did the 9.6 pips displacement come from? From looking at what seems to be happening.

Let’s examine if during the negative tone two steps backwards was a good entry or not.

You had 1-hour and 2.5 hours to enter your short after the 2nd step up got printed. The large cover numbers started at below 73 and below 55.

Fractal / opposite side = counter reset. I grew up on the 30-minute time frame, I don’t see any reason to ever stop looking at it.

The expression for extracting the 3rd and 4th decimals from a price quote as per me:

Either in a Wave 3 up or perhaps a C has ended. Regardless, there were 2 sell in signals, I’m out of my longs.

So what is my suggestion here?

I think you should obtain a copy of these indicators from me in exchange for a donation. You could help me out with my blog related monthly expenses (cca $25).

The tone’s bias (mql called Past Regression) line is derived from RSI readings / the chart itself not from financial media.

Head & Shoulder. The auto Mastodon trend lines come equipped.

The entry/exit levels that come with my latest version of Lema30N are a tremendous help with searching for and highlighting wicks that exceed 1/3 of the candle’s length, have a minimum size and the plots and numbers for the displacements are a world of help.

These 2 routines contributed to me achieving 90%+ equity growth since yesterday along with my scale in/out technique and knowing what the expectation should be for a Wave 1 up and a Wave 2 down (you may have picked up these ideas from my blog by now) – with Lema30 filling in the missing number. One more routine to get the heads right would be my hybrid version of the stochastic bars. Unlike a scammer, I can prove my gains. Scammers charge $1500-$2500 for an indicator / course that they can make a living off of and get busy forging statements. I am not making 90% every day, but the point is that I can.

Equity at 22/11/21 close: $507.17 (net zero holdings, 0.5 lot long & 0.5 lot short)

Equity at 23/11/21 close: $970.61 (zero holdings)


Cover me, I’m gonna win the race!

My uncle, the Huszar with his golden haired horses.

Huszar attire.