The Pendulum Market Model

The Pendulum is the basis of the Holy Graph.

To reposition the hanging point of swinging axis (~E32) the Sultans of Swing occasionally must reach in with an Invisible Hand with a Visible Touch to apply pull and hold technique.

Those red & green arrows are the E-32 arrows – breaking suddenly 14+ pips away from the E-32 in the new direction. E-32 is the Divider line & E-16 is the Suppressor (SP).
///E32 down arrow
  
  if (Close[i+7]>E32[i+7]-70*Point && Close[i+6]>E32[i+6]-70*Point && Close[i+5]>E32[i+5]-70*Point && Close[i+4]>E32[i+4]-70*Point && Close[i+3]>E32[i+3]-70*Point && Close[i]<E32[i]-70*Point  && Close[i]>E32[i]-140*Point
         ){
         ObjectCreate("OverDriveObot"+DoubleToStr(i), OBJ_TEXT, 0, Time[i], iLow(symbol,0,iLowest(symbol,0,MODE_LOW,2,i))+40*Point); 
        ObjectSetText("OverDriveObot"+DoubleToStr(i), CharToString(234), 24, "Wingdings",  Crimson);
   }

///E32 up arrow

    if (Close[i+7]<E32[i+7]+70*Point && Close[i+6]<E32[i+6]+70*Point && Close[i+5]<E32[i+5]+70*Point && Close[i+4]<E32[i+4]+70*Point && Close[i+3]<E32[i+3]+70*Point && Close[i+2]<E32[i+2]+70*Point && Close[i]>E32[i]+70*Point  && Close[i]<E32[i]+140*Point){
         ObjectCreate("OverDriveObot"+DoubleToStr(i), OBJ_TEXT, 0, Time[i], iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,i))+30*Point); 
        ObjectSetText("OverDriveObot"+DoubleToStr(i), CharToString(233), 24, "Wingdings",  Green);
   } 

To pull again on the pendulum, the most convenient MA is the E16. A late action would be grabbing a hold at the E44 and little Bruford effort can be applied at E8 or even the E4 to keep up the swinging motion a bit longer.

Every consolidation that takes place away from the axis is a repositioning win for the side with additional length on the price scale becoming possible.

As you can see, it is rather rare to see the price exceeding the overdrive levels – hence my grand exit & 2Far plots.


///Lower Grand Exit
    
    if (i>0 && Low[i-1]>Low[i] && Low[i]<(E32[i]-(ODU[i]+50*Point-ODD[i])/100*42) ){
         if (ExtMapBuffer2[i-1]==EMPTY_VALUE) 
       //  dir[i]=1;
    // Low[i]<ODU[i]+50*Point-(ODU[i]+50*Point-ODD[i])/100*95      
          ObjectCreate("OverDrive2Far"+DoubleToStr(i), OBJ_TEXT, 0, Time[iLowest(symbol,0,MODE_LOW,4,i)], iLow(symbol,0,iLowest(symbol,0,MODE_LOW,4,i))-70*Point); 
          ObjectSetText("OverDrive2Far"+DoubleToStr(i), "Grand Exit: "+DoubleToString(NormalizeDouble(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,4,i)),4),4)+"    ", 14, "Impact",  DarkGreen);
    }


///Upper Grand Exit

    
    if (High[i]>(E32[i]+(ODU[i]+50*Point-ODD[i])/100*42) && i>0 && High[i-1]<High[i]  && High[i]>High[i+1]){
    //&& Close[i]<ODU[i]+50*Point-(ODU[i]+50*Point-ODD[i])/100*8 
          ObjectCreate("OverDrive2FarZ"+DoubleToStr(i), OBJ_TEXT, 0, Time[iHighest(symbol,0,MODE_HIGH,4,i)], iHigh(symbol,0,iHighest(symbol,0,MODE_LOW,4,i))+70*Point); 
          ObjectSetText("OverDrive2FarZ"+DoubleToStr(i), "Grand Exit: "+DoubleToString(NormalizeDouble(iHigh(symbol,0,iHighest(symbol,0,MODE_LOW,4,i)),4),4)+"                         ", 14, "Impact",  Maroon);
    }
    

In the light of the above things you could define a trending/repositioning market as the kind where they are buying the E16-E32 field in the direction of the last move and idling market when they are letting price cross.

The manner of approaching this zone could be taken as a clue: you want the Kennedy Approach to be quick, reach space harbor from a preferably new outer space limit relative to the previous fractal within 3 hours to get excited about future prospects, optimally 2.5 hours & 1 hour would be too quick.

If the manner of approach isn’t satisfactory, then E44 is Obi Wan Kenobi.

I had a blog entry about Axel S and the download link can be found in the ForexFacory EurUsd only forum. Axel S was my attempt to provide Pendulum elevator music for the masses.

Now you have an idea of how I came up the effect-counter effect projection of 1.1354 (zero likes, yes): that was the location of the overdrive line at the swing low. Bats and crabs my ass. Laws of physics.

I have given you the values a number of times. 28 pips, 38 & 2.2x Fluctuation Maximum (7/5 fluctuation size) or a slightly less complicated 83.6 pips for the overdrive.

How do you say Africa with one image without having anything from Africa on it?

This is how!
Steve Lukather, yes. Desert Inn, Las Vegas. Training for the Paris Daiquiri-Cointreau rally with Vodka neat in a water glass.

E-16 in blue, E44 in dodger blue

The Stochastic reading is the price’s location relative to the current Overdrive lines.

As you can see, the Holy Graph is a really well thought out tool.
int twodigits = NormalizeDouble(100-((ODU[0]-Close[0])/(ODU[0]-ODD[0])*100),0);

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.