Get Some Sleep

If your approach is not that of Moving Averages, displacements, Bollinger Bands you will never get the right idea of what the market is up to.


2nd week in a row closin at Max Pain.

Does this mean that price is going to stay here for years to come? I doubt it.

Let’s first distinguish between Bulk market territory and Bulk market.

Bulk Market territory is 3 weekly closes above the 59 HL2 EMA. That has happened.

Now, for context, usually the first market border violation is not the end.

If you look at the end of the last Bulk market, price violated the maket limit a bit before going back for the back test of the overbought level. This would be my Base Case scenario. Returning to the E-21 (white) only would be Base Case B.

The bear market prior saw 2 different breaches.

After the first touch there was a lower low made, then there was a 2-week episode which took price 320 pips into the Bulk market terriory & without closing outside 3 times, it went on to make a new lower low. That was a 860 pips move down in 2 weeks.

The point is, that volatility plays a role in the distance attained and 3 closes outside – well, it can still be negated with the next 3 closes back below for instance, and in a flat market, the whole Bulk-Bare Market concept can be thrown out the window.

The image above shows the “suataining” the other side of the line possibility (was the first approach too).

Overall, I would put the odds the lowest to the last example of no no volatility at all.

Water Corpse – Aerobics section

They call me the white horse

Tony Curtis changed his name from Kertész Tamás (father of Jamie)- the meaning would had been Gardener, but the phonetics mattered more. In Sweden to change your name you have to keep the first 3 letters of your original name i.e. Domján -> Domgren (also have to get approval from the “new family” for the use). See, you’re learning something new every day.

Ty Fighter Under Development

If you look at the ATR entry, you may start to understand why most of the time your swing aim for a consolidating EUR/USD should be 64 pips. It is 80% of 80 pips that is 80% of the time the expected daily move. A fluctuation size thus is 32 pips.

It does not hurt to have some statistical knowledge of a given instrument.

Not highlighted, but as you would imagine, the swings up from below the Stratosphere line (white) or the BB (teal) during consolidation (red in the green) are 64 pips long (this isn’t the only reason why I would never consider trading a JPY, interventionist pair).

That is until the market starts making new 200-sample higher highs (plain green) when the limitation is waived.

One thing to point out when measuring distance between long term moving averages is that you cannot have gaps in the data. On my other computer some 30-min block is missing, and the numbers are not the same.

I am going with 26 pips difference for now as a solidifier / antidote measurement. This is my answer for the bias in an out-of-oversold bear.

   ObjectCreate("Querty"+4,OBJ_LABEL,indicator_window, 0,0);
   ObjectSetText("Querty"+4, "TY FIGHTER 640 ("+DoubleToStr(NormalizeDouble(MathAbs(iMA(NULL,0,414,0,MODE_EMA, PRICE_LOW,0)-iMA(NULL,0,712,0,MODE_EMA, PRICE_MEDIAN,0))*10000,4),1)+")", 21, "Arial Black", DarkGreen);  
  if (MathAbs(iMA(NULL,0,414,0,MODE_EMA, PRICE_LOW,0)-iMA(NULL,0,712,0,MODE_EMA, PRICE_MEDIAN,0))<260*Point)  ObjectSetText("Querty"+4, "TY FIGHTER 640 ("+DoubleToStr(NormalizeDouble(MathAbs(iMA(NULL,0,414,0,MODE_EMA, PRICE_LOW,0)-iMA(NULL,0,712,0,MODE_EMA, PRICE_MEDIAN,0))*10000,4),1)+")", 21, "Arial Black", Yellow);  
   if (MathAbs(iMA(NULL,0,414,0,MODE_EMA, PRICE_LOW,0)-iMA(NULL,0,712,0,MODE_EMA, PRICE_MEDIAN,0))<230*Point)  ObjectSetText("Querty"+4, "TY FIGHTER 640 ("+DoubleToStr(NormalizeDouble(MathAbs(iMA(NULL,0,414,0,MODE_EMA, PRICE_LOW,0)-iMA(NULL,0,712,0,MODE_EMA, PRICE_MEDIAN,0))*10000,4),1)+")", 21, "Arial Black", Crimson);  

   ObjectCreate("Querty"+4,OBJ_LABEL,indicator_window, 0,0);
   ObjectSetText("Querty"+4, "TY FIGHTER 640 ("+DoubleToStr(NormalizeDouble(MathAbs(iMA(NULL,0,414,0,MODE_EMA, PRICE_HIGH,0)-iMA(NULL,0,712,0,MODE_EMA, PRICE_MEDIAN,0))*10000,4),1)+")", 21, "Arial Black", Crimson);  
   if (MathAbs(iMA(NULL,0,414,0,MODE_EMA, PRICE_HIGH,0)-iMA(NULL,0,712,0,MODE_EMA, PRICE_MEDIAN,0))<260*Point)  ObjectSetText("Querty"+4, "TY FIGHTER 640 ("+DoubleToStr(NormalizeDouble(MathAbs(iMA(NULL,0,414,0,MODE_EMA, PRICE_HIGH,0)-iMA(NULL,0,712,0,MODE_EMA, PRICE_MEDIAN,0))*10000,4),1)+")", 21, "Arial Black", Yellow);  
   if (MathAbs(iMA(NULL,0,414,0,MODE_EMA, PRICE_HIGH,0)-iMA(NULL,0,712,0,MODE_EMA, PRICE_MEDIAN,0))<230*Point)  ObjectSetText("Querty"+4, "TY FIGHTER 640 ("+DoubleToStr(NormalizeDouble(MathAbs(iMA(NULL,0,414,0,MODE_EMA, PRICE_HIGH,0)-iMA(NULL,0,712,0,MODE_EMA, PRICE_MEDIAN,0))*10000,4),1)+")", 21, "Arial Black", DarkGreen);  

So yeah, the yellow is crossable distance.

 if (iMA(NULL,0,414,0,MODE_EMA, PRICE_LOW,i)>iMA(NULL,0,712,0,MODE_EMA, PRICE_MEDIAN,i) && MathAbs(iMA(NULL,0,414,0,MODE_EMA, PRICE_LOW,i)-iMA(NULL,0,712,0,MODE_EMA, PRICE_MEDIAN,i))>260*Point){
         ObjectCreate("Fal"+IntegerToString(i), OBJ_RECTANGLE, 0,  Time[i+1], iMA(NULL,0,414,0,MODE_EMA, PRICE_LOW,i), Time[i], iMA(NULL,0,712,0,MODE_EMA, PRICE_MEDIAN,i));
          if (iMA(NULL,0,414,0,MODE_EMA, PRICE_LOW,i)<iMA(NULL,0,712,0,MODE_EMA, PRICE_MEDIAN,i) && MathAbs(iMA(NULL,0,414,0,MODE_EMA, PRICE_HIGH,i)-iMA(NULL,0,712,0,MODE_EMA, PRICE_MEDIAN,i))>260*Point){
         ObjectCreate("Fal"+IntegerToString(i), OBJ_RECTANGLE, 0,  Time[i+1], iMA(NULL,0,414,0,MODE_EMA, PRICE_HIGH,i), Time[i], iMA(NULL,0,712,0,MODE_EMA, PRICE_MEDIAN,i));

Current Wave Structure

This one was full of riddles.

No volume, BB squeeze and new habits made it even more difficult to figure.

First, the BB was too wide, so the Wave 1’s ending point became debatable.

One guiding principle for the Wave 2 is that the RSI2 would connect the red with the blue.

Then the Wave 2’s ending had to be adjusted a number of times.The first red line represents an RSI2 peak that was exceeded by the end of Wave 4. That full lambda move in between was an anomaly. It went into the dirt box of the Wave 2 by 0.8 pips.

This has not been the market’s habit while there was volume. Only after a Wave 4 printed would it go back for this liquidity box for a run that would take price to an Utmost condition (i.e. RSI14>72, RSI14>2 std div).

This Wave 2 dirt box got raided early with the 5-wave structure to the upside as well.

Since Wave 4 has to make a higher high and a higher low or a lower high and a lower low and the RSI2 readings would have to come with a beat, the conclusion here is that both of these Wave 2s ended way off their high / low.

That liquidity-anomaly after the Wave 2 is a new feature.

The last Wave 5 down did not even reach the band, and then there was the innocent looking gap up that kicked off a new 5-wave count to the upside.

A small handicap that my Auto Thrust finder picks up that Anomaly peak as a B since it is outside the BB and and is within the sample size, but this is wrong, it was made by the down structure, so that first T was in fact a B, and now you have 3 Ts. The RSI would coast higher on the open too, 71.x is close enough to 72. I would not be looking for any upside here.

Button Abbey

Button #1

The Switch -> 144 pips higher -> 1St Wall Encounter -30 pips

Going over the top hits a conveyor belt button.

if (High[i]<stratou3[i] && High[i+1]>stratou3[i+1]+50*Point){
ObjectCreate(“Talmi”+DoubleToStr(i), OBJ_TEXT, 0, Time[i+2], iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,i))+290*Point);
ObjectSetText(“Talmi”+DoubleToStr(i), “Switch->”+DoubleToStr(NormalizeDouble(iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,2,i))+1440*Point,4),4)+”-> 1st Wall-30 pips”, 12, “Impact”, DarkGreen);

Button #2

Commuter Market Reset => 2nd Wall => E32

Let’s first acknowledge the genius, low calorie move of an exhaustion gap up. Price was put on a train track & they gained time & distance by Price avoiding the wall encounter from below postponing the count.

In a commuter up market price getting below the Lower Band of the Green River (E-207 on the hourly approx 9D EMA) whils staying above the 4-hour E-89, a hard reset is made opening up the possibility of a new wave up structure starting.

  if (iClose(symbol,240,0)>iMA(NULL,240,89,0,MODE_EMA, PRICE_MEDIAN,0) && iClose(symbol,240,1)>iMA(NULL,240,89,0,MODE_EMA, PRICE_MEDIAN,1) && iClose(symbol,240,2)>iMA(NULL,240,89,0,MODE_EMA, PRICE_MEDIAN,2) && iClose(symbol,240,3)>iMA(NULL,240,89,0,MODE_EMA, PRICE_MEDIAN,3)
&& iClose(symbol,240,4)>iMA(NULL,240,89,0,MODE_EMA, PRICE_MEDIAN,4)  && iClose(symbol,240,5)>iMA(NULL,240,89,0,MODE_EMA, PRICE_MEDIAN,5) && iClose(symbol,240,6)>iMA(NULL,240,89,0,MODE_EMA, PRICE_MEDIAN,6) && iClose(symbol,240,7)>iMA(NULL,240,89,0,MODE_EMA, PRICE_MEDIAN,7)  && iClose(symbol,240,8)>iMA(NULL,240,89,0,MODE_EMA, PRICE_MEDIAN,8) && iClose(symbol,240,9)>iMA(NULL,240,89,0,MODE_EMA, PRICE_MEDIAN,9)
   && High[i]>iMA(NULL,30,414,0,MODE_EMA, PRICE_MEDIAN,i) && High[i+1]<iMA(NULL,30,414,0,MODE_EMA, PRICE_MEDIAN,i+1) && High[i+2]<iMA(NULL,30,414,0,MODE_EMA, PRICE_MEDIAN,i+2) && iLow(symbol,0,iLowest(symbol,0,MODE_LOW,8,i))<iMA(NULL,30,414,0,MODE_EMA, PRICE_LOW,i+3)-180*Point ){
               ObjectCreate("Talmi"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+2],  iLow(symbol,0,iLowest(symbol,0,MODE_LOW,2,i))+90*Point); 
            ObjectSetText("Talmi"+DoubleToStr(i), "Comm Reset->2nd Wall (Show opt. strength)->E32", 12, "Impact", DarkGreen);

A close call does not equal a cross over.

Siphoning liquidity from the Dirt Box

Calling A Market

On the surface you can determine the market type by finding 3 closes above the Weekly Closes above / below the E-59.

This may just work well for a Hedge Fund, but as you can see it is far from the bulk of the move when you connect the 3rd Weekly Close below with the 3rd Weekly Close above.

You can improve on the numbers by scaling in on the 4th week back towards the E-59, but the money taken would be 1/3 to 1/4 of the in the money peak. Of course a good window envelope stretch – like the 3.5x interrupted line would make for a great exit & that would come close to a clean up, the only “1 better” (eleven-a-reef – just learnt this) is making the span from the upper interrupted to the lower one in less than 2 weeks.

What I want you to realize here is that a market gets lost in stages.

Officially, this Bear Phase started on the 15th of August, 2021. That’s about the vertical line.

Before that, there was a move out of the long term overbought – close to the 60% line, than a move back up to the overbought (beyond the blue) and there was a failure of staying up there setting up ever lower highs. This was Stage 1 of losing the bull market.

Now tell me please, what is missing here for losing the bear market for goood? You know, a stage 1 step 2 kind of a thing.

#property copyright "Copyright © 2020, Macdulio"
#property link      "" 
#property description "Comfort Levels Lucid"
#property description "1590 sample range"
#property description "broken down to 10% lines "
#property description "and two gray zones in addition"
#property description "the upper and lower reversalones"
#property description "grasp the concept of embedding"
#property description "and know the power of the oversold/"
#property description "overbought necklines"


#property indicator_chart_window
#property indicator_buffers 19
#property indicator_color1  DarkGray
#property indicator_color2  DarkGray
#property indicator_color3  DarkGray
#property indicator_color4  DarkGray
#property indicator_color5  LightCoral
#property indicator_color6  SteelBlue
#property indicator_color7  DarkSlateGray
#property indicator_color8  DarkSlateGray
#property indicator_color9  OrangeRed
#property indicator_color10  DarkSlateGray
#property indicator_color11  DarkSlateGray
#property indicator_color12  SteelBlue
#property indicator_color13  LightCoral
#property indicator_color14  Gray
#property indicator_color15  Gray
#property indicator_color16  Gray
#property indicator_color17  Gray
#property indicator_color18  Pink
#property indicator_color19  Pink

double weight;
double ATRAVG;  
double ExtMapBuffer[]; 
extern bool put_label_on = true;
extern bool plot_reversal_zones = false;
extern int plotlength = 70;
  string symbol = Symbol();  
  double highs4[], lows4[];
int N;
int i;

double Line1[];
double Line2[];
double Line3[];
double Line4[];
double Line5[];
double Line6[];
double Line7[];
double Line8[];
double Line9[];

double Line05[];
double Line15[];

double Line85[];
double Line95[];

double Line0[];
double Line100[];

double stoch[];
double HighBuffer[];
double LowBuffer[];
double HighBuffer2[];
double LowBuffer2[],LowBuffer3[],LowBuffer4[];
double HighBuffer3[];
double HighBuffer4[];

void init()



   SetIndexStyle(4, DRAW_LINE, STYLE_DOT, 12);

   SetIndexStyle(5, DRAW_LINE, STYLE_DOT, 12);

   SetIndexStyle(6, DRAW_LINE, STYLE_DOT, 12);

   SetIndexStyle(7, DRAW_LINE, STYLE_DOT, 12);

   SetIndexStyle(8, DRAW_LINE, STYLE_DOT, 12);
   SetIndexStyle(9, DRAW_LINE, STYLE_DOT, 12);
   SetIndexStyle(10, DRAW_LINE, STYLE_DOT, 12); 
   SetIndexStyle(11, DRAW_LINE, STYLE_DOT, 12);

   SetIndexStyle(12, DRAW_LINE, STYLE_DOT, 12);
    SetIndexStyle(13, DRAW_LINE, STYLE_DOT, 12); 
     SetIndexStyle(14, DRAW_LINE, STYLE_DOT, 12);
    SetIndexStyle(15, DRAW_LINE, STYLE_DOT, 12); 
     SetIndexStyle(16, DRAW_LINE, STYLE_DOT, 12);
    SetIndexStyle(17, DRAW_LINE, STYLE_DOT, 12); 
        SetIndexStyle(18, DRAW_LINE, STYLE_DOT, 12); 

   SetIndexDrawBegin(4, N);

   SetIndexDrawBegin(5, N);

   SetIndexDrawBegin(6, N);

   SetIndexDrawBegin(7, N);

   SetIndexDrawBegin(8, N);
   SetIndexDrawBegin(9, N);
   SetIndexDrawBegin(10, N);

   SetIndexDrawBegin(11, N);
   SetIndexDrawBegin(12, N);

   SetIndexDrawBegin(13, N);
      SetIndexDrawBegin(14, N);

   SetIndexDrawBegin(15, N);
      SetIndexDrawBegin(16, N);

   SetIndexDrawBegin(17, N);

   SetIndexBuffer(4, Line1);

   SetIndexBuffer(5, Line2);

   SetIndexBuffer(6, Line3);

   SetIndexBuffer(7, Line4);

   SetIndexBuffer(8, Line5);
   SetIndexBuffer(9, Line6);
   SetIndexBuffer(10, Line7);
   SetIndexBuffer(11, Line8);
   SetIndexBuffer(12, Line9);
      SetIndexBuffer(13, Line05);
   SetIndexBuffer(14, Line15);
         SetIndexBuffer(15, Line85);
   SetIndexBuffer(16, Line95);
         SetIndexBuffer(17, Line0);
   SetIndexBuffer(18, Line100);
      ArrayResize(HighBuffer3, Bars);   
 ArrayInitialize(HighBuffer3, EMPTY_VALUE);  
ArrayResize(HighBuffer4, Bars);   
 ArrayInitialize(HighBuffer4, EMPTY_VALUE);  
       ArrayResize(LowBuffer3, Bars);   
 ArrayInitialize(LowBuffer3, EMPTY_VALUE);  
ArrayResize(LowBuffer4, Bars);   
 ArrayInitialize(LowBuffer4, EMPTY_VALUE);  
       ArrayResize(highs4, Bars);
   ArrayInitialize(highs4, EMPTY_VALUE);      
    ArrayResize(lows4, Bars);
   ArrayInitialize(lows4, EMPTY_VALUE);       
    ArrayResize(stoch, 1100);
ArrayInitialize(stoch, 0);


int start()
int i,j,k,l;
   double dt14;
   double db14;
   double pacing;
   N = 1590;
   if (Period()==1440) N=1100;
   dt14 = iHigh(NULL,240,iHighest(NULL, 240, MODE_HIGH, N));
   db14 = iLow(NULL,240,iLowest(NULL, 240, MODE_LOW, N));
   pacing = (dt14-db14)*.1;      
   for(i = 335; i >=0 ; i--)stoch[i]=iStochastic(NULL,0,10,3,3,MODE_SMA,1 ,MODE_SIGNAL,i);        
  if (plot_reversal_zones){
   for(i = 35; i >=15 ; i--){
      LowBuffer[i]= dt14-(dt14-db14)*.15;
        LowBuffer2[i]= db14+(dt14-db14)*.05;
            HighBuffer2[i]= db14+(dt14-db14)*.15;  
       }     }
   for(i = plotlength; i >=0 ; i--)
         Line0[i]=iLow(NULL,0,iLowest(NULL, 0, MODE_LOW, N,i));
         Line100[i]=iHigh(NULL,0,iHighest(NULL, 0, MODE_HIGH, N,i));
         Line05[i] = Line0[i]+(Line100[i]-Line0[i])*.05;
         Line1[i] = Line0[i]+(Line100[i]-Line0[i])*.1;
         Line15[i] = Line0[i]+(Line100[i]-Line0[i])*.15;
         Line2[i] = Line0[i]+(Line100[i]-Line0[i])*.2;
         Line3[i] = Line0[i]+(Line100[i]-Line0[i])*.3;
         Line4[i] = Line0[i]+(Line100[i]-Line0[i])*.4;
         Line5[i] = Line0[i]+(Line100[i]-Line0[i])*.5;
         Line6[i] = Line0[i]+(Line100[i]-Line0[i])*.6;
         Line7[i] = Line0[i]+(Line100[i]-Line0[i])*.7;
         Line8[i] = Line0[i]+(Line100[i]-Line0[i])*.8;   
         Line85[i] = Line0[i]+(Line100[i]-Line0[i])*.85;   
         Line9[i] = Line0[i]+(Line100[i]-Line0[i])*.9;   
         Line95[i] = Line0[i]+(Line100[i]-Line0[i])*.95;
deletetxt1("txt 1");
                   if (Period()>15){
                   ObjectCreate("txt 1"+Line1[1]+1, OBJ_TEXT, 0, Time[6], Line1[1]-pacing/2+.0005); 
               ObjectSetText("txt 1"+Line1[1]+1, "5%            ", 18, "Arial Black", White); 
               ObjectCreate("txt 1"+Line1[1], OBJ_TEXT, 0, Time[6], Line1[1]+.0005); 
               ObjectSetText("txt 1"+Line1[1], "10%            ", 18, "Arial Black", Crimson); 
               ObjectCreate("txt 1"+Line2[1]+1, OBJ_TEXT, 0, Time[6], Line2[1]-pacing/2+.0005); 
               ObjectSetText("txt 1"+Line2[1]+1, "15%            ", 18, "Arial Black", White); 
                  ObjectCreate("txt 1"+Line2[1], OBJ_TEXT, 0, Time[6], Line2[1]+.0005); 
               ObjectSetText("txt 1"+Line2[1], "20%            ", 18, "Arial Black", Brown); 
                  ObjectCreate("txt 1"+Line3[1], OBJ_TEXT, 0, Time[6], Line3[1]+.0005); 
               ObjectSetText("txt 1"+Line3[1], "30%            ", 18, "Arial Black", Gray); 
                  ObjectCreate("txt 1"+Line4[1], OBJ_TEXT, 0, Time[6], Line4[1]+.0005); 
               ObjectSetText("txt 1"+Line4[1], "40%            ", 18, "Arial Black", Gray); 
                   ObjectCreate("txt 1"+Line5[1], OBJ_TEXT, 0, Time[6], Line5[1]+.0005); 
               ObjectSetText("txt 1"+Line5[1], "50%            ", 18, "Arial Black", Orange);
                      ObjectCreate("txt 1"+Line6[1], OBJ_TEXT, 0, Time[6], Line6[1]+.0005); 
               ObjectSetText("txt 1"+Line6[1], "60%            ", 18, "Arial Black", Gray); 
                    ObjectCreate("txt 1"+Line7[1], OBJ_TEXT, 0, Time[6], Line7[1]+.0005); 
               ObjectSetText("txt 1"+Line7[1], "70%            ", 18, "Arial Black", Gray);  
                  ObjectCreate("txt 1"+Line8[1], OBJ_TEXT, 0, Time[6], Line8[1]+.0005); 
               ObjectSetText("txt 1"+Line8[1], "80%            ", 18, "Arial Black", Brown); 
                ObjectCreate("txt 1"+Line8[1]+1, OBJ_TEXT, 0, Time[6], Line8[1]+pacing/2+.0005); 
               ObjectSetText("txt 1"+Line8[1]+1, "85%            ", 18, "Arial Black", White); 
               ObjectCreate("txt 1"+Line9[1], OBJ_TEXT, 0, Time[6], Line9[1]+.0005); 
               ObjectSetText("txt 1"+Line9[1], "90%            ", 18, "Arial Black", Crimson); 
               ObjectCreate("txt 1"+Line9[1]+1, OBJ_TEXT, 0, Time[6], Line9[1]+pacing/2+.0005); 
               ObjectSetText("txt 1"+Line9[1]+1, "95%            ", 18, "Arial Black", White); 
   while (!(ChoppinessIndex(12*4,i+1)<53 && ChoppinessIndex(12*4,i)>53))    
 string text;   
 deletetxt1("xxt 5");
   if (Close[0]>weight) text=" R1:"+NormalizeDouble(iLow(NULL,1440,0)+ATRAVG,4)+" RSI8:"+DoubleToString(NormalizeDouble(iRSI(Symbol(),30,8,PRICE_MEDIAN,0),5),3); 
   else text=" S1:"+NormalizeDouble(iHigh(NULL,1440,0)-ATRAVG,4)+" RSI8:"+DoubleToString(NormalizeDouble(iRSI(Symbol(),30,8,PRICE_MEDIAN,0),5),3);
    ObjectCreate("xxt 5"+"GREATERX", OBJ_TEXT, 0, Time[10], NormalizeDouble(iLow(NULL,1440,0)+ATRAVG,4)+.0005); 
               ObjectSetText("xxt 5"+"GREATERX", " R1="+NormalizeDouble(iLow(NULL,1440,0)+ATRAVG,4), 24, "Arial Black", White); 
    ObjectCreate("xxt 5"+"GREATER", OBJ_TEXT, 0, Time[10], NormalizeDouble(iLow(NULL,1440,0)+ATRAVG,4)+.0005); 
               ObjectSetText("xxt 5"+"GREATER", "  R1="+NormalizeDouble(iLow(NULL,1440,0)+ATRAVG,4), 24, "Arial Black", Black); 
    ObjectCreate("xxt 5"+"SMALLERX", OBJ_TEXT, 0, Time[10], NormalizeDouble(iHigh(NULL,1440,0)-ATRAVG,4)+.0005); 
               ObjectSetText("xxt 5"+"SMALLERX", " S1="+NormalizeDouble(iHigh(NULL,1440,0)-ATRAVG,4), 24, "Arial Black", White);            
     ObjectCreate("xxt 5"+"SMALLER", OBJ_TEXT, 0, Time[10], NormalizeDouble(iHigh(NULL,1440,0)-ATRAVG,4)+.0005); 
               ObjectSetText("xxt 5"+"SMALLER", "  S1="+NormalizeDouble(iHigh(NULL,1440,0)-ATRAVG,4), 24, "Arial Black", Black);   


  for( i=80; i>=0; i--) {  
             if ((iHigh(NULL,60,i+3)-iLow(NULL,60,i))>ATRAVG/3 ||  (iHigh(NULL,60,i)-iLow(NULL,60,i+3))>ATRAVG/3 ) {
                  if (iHigh(NULL,60,i)>iHigh(NULL,60,i+3)) {LowBuffer3[i]=iHigh(NULL,60,i);
                                           HighBuffer3[i]=iHigh(NULL,60,i)+(iHigh(NULL,60,i)-iLow(NULL,60,i+3))*.55;  }
                  else if (iHigh(NULL,60,i)<iHigh(NULL,60,i+3)) {HighBuffer4[i]=iLow(NULL,60,i);
                        LowBuffer4[i]=iLow(NULL,60,i)-(iHigh(NULL,60,i+3)-iLow(NULL,60,i))*.55;  }

     while (!(stoch[k]>stoch[k+1] && stoch[k+2]>stoch[k+1]) && k<150)
     while (!(stoch[l]<stoch[l+1] && stoch[l+2]<stoch[l+1]) && l<100)


if (put_label_on){  
ObjectCreate(0,"L888"+0, OBJ_RECTANGLE_LABEL, 0, 0,0);

 ObjectCreate("L81"+0,OBJ_LABEL,0, 0,0);
if (Close[0]>dt14-pacing/2) ObjectSetText("L81"+0,"95% at "+(DoubleToString(dt14-pacing/2,4)),16,"Arial Black",Red);
else if (Close[0]>dt14-pacing) ObjectSetText("L81"+0,"Deeply O.B. at "+(DoubleToString(dt14-pacing,4)),16,"Arial Black",Purple);
else if (Close[0]>dt14-pacing*1.5) ObjectSetText("L81"+0,"Upper Reversal "+(DoubleToString(dt14-pacing*1.5,4)),16,"Arial Black",Indigo);
else if (Close[0]>dt14-pacing*2) ObjectSetText("L81"+0,"Overbought at "+(DoubleToString(dt14-pacing*2,4)),16,"Arial Black",Black);
else if (Close[0]>dt14-pacing*2.5) ObjectSetText("L81"+0,"75% at "+(DoubleToString(dt14-pacing*2.5,4)),16,"Arial Black",Gray);
else if (Close[0]>dt14-pacing*3) ObjectSetText("L81"+0,"70% at "+(DoubleToString(dt14-pacing*3,4)),16,"Arial Black",Gray);
else if (Close[0]>dt14-pacing*3.5) ObjectSetText("L81"+0,"65% at "+(DoubleToString(dt14-pacing*3.5,4)),16,"Arial Black",Gray);
else if (Close[0]>dt14-pacing*4) ObjectSetText("L81"+0,"60% at "+(DoubleToString(dt14-pacing*4,4)),16,"Arial Black",Gray);
else if (Close[0]>dt14-pacing*4.5) ObjectSetText("L81"+0,"55% at "+(DoubleToString(dt14-pacing*4.5,4)),16,"Arial Black",Gray);
else if (Close[0]>dt14-pacing*5) ObjectSetText("L81"+0,"Median at "+(DoubleToString(dt14-pacing*5,4)),16,"Arial Black",OrangeRed);
else if (Close[0]>dt14-pacing*5.5) ObjectSetText("L81"+0,"45% at "+(DoubleToString(dt14-pacing*5.5,4)),16,"Arial Black",Gray);
else if (Close[0]>dt14-pacing*6) ObjectSetText("L81"+0,"40% at "+(DoubleToString(dt14-pacing*6,4)),16,"Arial Black",Gray);      
else if (Close[0]>dt14-pacing*6.5) ObjectSetText("L81"+0,"35% at "+(DoubleToString(dt14-pacing*6.5,4)),16,"Arial Black",Gray);
else if (Close[0]>dt14-pacing*7) ObjectSetText("L81"+0,"30% at "+(DoubleToString(dt14-pacing*7,4)),16,"Arial Black",Gray);     
else if (Close[0]>dt14-pacing*7.5) ObjectSetText("L81"+0,"25% at "+(DoubleToString(dt14-pacing*7.5,4)),16,"Arial Black",Gray);
else if (Close[0]>dt14-pacing*8) ObjectSetText("L81"+0,"Oversold at "+(DoubleToString(dt14-pacing*8,4)),16,"Arial Black",Black);    
else if (Close[0]>dt14-pacing*8.5) ObjectSetText("L81"+0,"Lower Reversal "+(DoubleToString(dt14-pacing*8.5,4)),16,"Arial Black",Indigo);
else if (Close[0]>dt14-pacing*9) ObjectSetText("L81"+0,"Deeply O.S. at "+(DoubleToString(dt14-pacing*9,4)),16,"Arial Black",Purple);
else if (Close[0]>dt14-pacing*9.5) ObjectSetText("L81"+0,"5% at "+(DoubleToString(dt14-pacing*9.5,4)),16,"Arial Black",Red);
else ObjectSetText("L81"+0,"",Red);
   ObjectCreate("L82"+0,OBJ_LABEL,0, 0,0);
if (Close[0]<db14+pacing/2) ObjectSetText("L82"+0,"5% at "+(DoubleToString(db14+pacing/2,4)),16,"Arial Black",Red);
else if (Close[0]<db14+pacing) ObjectSetText("L82"+0,"Deeply O.S. at "+(DoubleToString(db14+pacing,4)),16,"Arial Black",Purple);
else if (Close[0]<db14+pacing*1.5) ObjectSetText("L82"+0,"Lower Reversal "+(DoubleToString(db14+pacing*1.5,4)),16,"Arial Black",Indigo);
else if (Close[0]<db14+pacing*2) ObjectSetText("L82"+0,"Oversold at "+(DoubleToString(db14+pacing*2,4)),16,"Arial Black",Black);
else if (Close[0]<db14+pacing*2.5) ObjectSetText("L82"+0,"25% at "+(DoubleToString(db14+pacing*2.5,4)),16,"Arial Black",Gray);
else if (Close[0]<db14+pacing*3) ObjectSetText("L82"+0,"30% at "+(DoubleToString(db14+pacing*3,4)),16,"Arial Black",Gray);
else if (Close[0]<db14+pacing*3.5) ObjectSetText("L82"+0,"35% at "+(DoubleToString(db14+pacing*3.5,4)),16,"Arial Black",Gray);
else if (Close[0]<db14+pacing*4) ObjectSetText("L82"+0,"40% at "+(DoubleToString(db14+pacing*4,4)),16,"Arial Black",Gray);
else if (Close[0]<db14+pacing*4.5) ObjectSetText("L82"+0,"45% at "+(DoubleToString(db14+pacing*4.5,4)),16,"Arial Black",Gray);
else if (Close[0]<db14+pacing*5) ObjectSetText("L82"+0,"Median at "+(DoubleToString(db14+pacing*5,4)),16,"Arial Black",OrangeRed);
else if (Close[0]<db14+pacing*5.5) ObjectSetText("L82"+0,"55% at "+(DoubleToString(db14+pacing*5.5,4)),16,"Arial Black",Gray);
else if (Close[0]<db14+pacing*6) ObjectSetText("L82"+0,"60% at "+(DoubleToString(db14+pacing*6,4)),16,"Arial Black",Gray);      
else if (Close[0]<db14+pacing*6.5) ObjectSetText("L82"+0,"65% at "+(DoubleToString(db14+pacing*6.5,4)),16,"Arial Black",Gray);
else if (Close[0]<db14+pacing*7) ObjectSetText("L82"+0,"70% at "+(DoubleToString(db14+pacing*7,4)),16,"Arial Black",Gray);     
else if (Close[0]<db14+pacing*7.5) ObjectSetText("L82"+0,"75% at "+(DoubleToString(db14+pacing*7.5,4)),16,"Arial Black",Gray);
else if (Close[0]<db14+pacing*8) ObjectSetText("L82"+0,"Overbought at "+(DoubleToString(db14+pacing*8,4)),16,"Arial Black",Black);    
else if (Close[0]<db14+pacing*8.5) ObjectSetText("L82"+0,"Upper Reversal "+(DoubleToString(db14+pacing*8.5,4)),16,"Arial Black",Indigo);
else if (Close[0]<db14+pacing*9) ObjectSetText("L82"+0,"Deeply O.B. at "+(DoubleToString(db14+pacing*9,4)),16,"Arial Black",Purple);
else if (Close[0]<db14+pacing*9.5) ObjectSetText("L82"+0,"95% at "+(DoubleToString(db14+pacing*9.5,4)),16,"Arial Black",Red);
else ObjectSetText("L82"+0,"",16,"Arial Black",Red);

  ObjectCreate("L83"+0,OBJ_LABEL,0, 0,0);
  ObjectSetText("L83"+0," "+DoubleToString(Close[0],4)+", ATR:"+IntegerToString(ATRAVG*10000,1)+" TDY:"+IntegerToString(iATR(NULL,1440,1,0)*10000,1),16,"Arial Black",Blue);
    ObjectCreate("L84"+0,OBJ_LABEL,0, 0,0);
   ObjectSetText("L84"+0,text,16,"Arial Black",Blue);
      ObjectCreate("L85"+0,OBJ_LABEL,0, 0,0);
      if (Close[0]<weight) ObjectSetText("L85"+0,"Buy below: "+DoubleToString(weight-ATRAVG,4),16,"Arial Black",Black);
      else ObjectSetText("L85"+0,"Sell above: "+DoubleToString(weight+ATRAVG,4),16,"Arial Black",Black );
   while (HighBuffer3[i]==EMPTY_VALUE && i<Bars)    
   while (LowBuffer4[j]==EMPTY_VALUE && j<Bars)    
    ObjectCreate("L86"+0,OBJ_LABEL,0, 0,0);
    ObjectSetText("L86"+0,"Upr: "+DoubleToString(HighBuffer3[i],4)+" Dpr: "+DoubleToString(LowBuffer4[j],4),16,"Arial Black",Black); 



double ChoppinessIndex15(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 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,0,k);
      High0  = iHigh(NULL,0,k);
      Close1 = iClose(NULL,0,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);
}  }


Short for Morten Harket and the Commuter market.

First to show that the Maximum Pain concept is something to fall back on when nothing else is going on.

Now, an excess thrust is price going outside the Ionosphere for the second time within 48 hours.

This requires a reset at the Ionosphere line. E32+-87 pips.

The violation is important, a mere touch does not qualify. As an example this skidding & violation combo could be reset by the Green River, it did not have to make it to the Ionosphere:

The 2-Wall concept

So now that we are aware that we are in a counter downtrend in a Commuter Buy Market and we know that the resolution for the double violation must be a discharge on the Ionosphere, we need to understand that legs run into walls, and every second encounter would result in a setback that would mean a reload further back.

The red lines go from the sell level to the second Wall encounter. The orange arrows are the decisive closes back inside the 30-sample BB.

The latest development is that the market seems to have made a new sell level in the form of a new red line.

The next move would either be a 2x wall encounter (& going back for reload) or the discharge on the Ionosphere.

As far as Morten, he did not fool me for one second.

Neither could Chris Doughty for that matter.

As at the Le Bateau Ivre on the Telegraph Avenue I used to say, Happy Hollandaise!

It’s More Fun To Commute

A commuter market is a long term out of oversold and out of overbought market. 10 4-hour closes above the E-89(4H) is a Commuter Buy until a Coda print (excess Thrust).

A preview of what I am working on. The world’s first Commuter Market indicator.

My first step towards becoming a CTA.

Ja Voll, No Vol

A Douglas Lehrer compilation.

There was some wedding reception at the restaurant. The guy handed over his card in advance. His name read Justin Short.

After he walked off, Douglas showed the card and said: that’s what he sais on his wedding night. “I’ll be…”

One time he drew some praying hands on the blackboard, a head of lettuce and a hose sprinkling water over it. He wrote on top: “Lettuce spray”.

Some relative of his, around a 3 years old child asked about why dogs bark one time. He was told that this is how they were talking to one another.

Later the kid farted, and was questioned about it.

– Did you fart? – they asked.

– No – he responded. – It’s just my butt talking to other butts.

Another relative wanted to know what faggot meant. He memorized the answer well, and cursed at a driver that cut them off: You, bunch of sticks!

Today’s lesson is gonna be short & sweet as there is no turn out again.

Use your corrective tool.

During low vol / no vol volatility breaks can’t sustain, and they bring about a 3-point turn.

Yellow markers show where the 14-sample RSI HL2 has moved 2 standard deviations. The next leg would complete the reversal 10+ pips out. Outside the 30-sample hourly HL2 BB price is on borrowed time, lighten on holdings.

You had a question about quantitative pleasing.

The quantitative pleasing started when my supervisor at Bloomberg told me during my appraisal that my smile defrosts her heart.

Happy New York, everyone!

Blow Your Walls Down

Going naked?

Naked what? Naked lunch? Naked gun? Gunning down Peterr?

When you are not in Rome, do what not Romans do: punch above your hate.

This used to be my greyhound.

If it makes you feel crappy, it can’t be that good.

Oh yeah, you came here to learn something. Sorry about that.

Neverending Wave 2

Seen similar recently, but admittedly this does not happen too often. Most Wave 2s are over within 8-12 hours.

Blue diagonal up is the W2. The dirt box of course is just above.

These schmucks bought the top of the rising wedge, the bottom of the rising wedge and all other buy signals to the R1.

Once price finally drops below the wedge, all hell will break loose. I don’t think the Daily 20 sma would get to say “HI”. This squeeze would result in some serious business.

B 1.0576, B 1.0597

R1: 1.0655

Despite of the daily embedding being lost.

The previous example of a neverending Wave 2 was this:

It lasted 10×4 hours.

Transceptor Technology


if (Period()==240){
   for (i = lookback; i >=0; i--) {
      if (iFractals(symbol,0,MODE_UPPER,i) && High[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)-100*Point) {
         while (j<i+20){ 
            if (iFractals(symbol,0,MODE_UPPER,j) && High[j]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,j) && High[j]<High[i]) break;
      if (j<i+20 && j>i+1 && iFractals(symbol,0,MODE_UPPER,j) && iFractals(symbol,0,MODE_UPPER,i) && High[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)-100*Point){
         ObjectCreate("Telecom"+DoubleToStr(i), OBJ_TEXT, 0, Time[i], High[i]+80*Point); 
         ObjectSetText("Telecom"+DoubleToStr(i), "T", 34, "Impact",  Violet);
         int ucount = 1;
         while (k>=0){
             if (ucount<7){  
             if (ucount>2){
             ObjectCreate("Ucount"+DoubleToStr(k), OBJ_TEXT, 0, Time[k], High[k]+80*Point); 
             ObjectSetText("Ucount"+DoubleToStr(k), IntegerToString(ucount), 14, "Impact",  Gray);}
             if (Low[k]<iMA(symbol,0,8,0,MODE_EMA,PRICE_OPEN,k)-130*Point) ObjectSetText("Ucount"+DoubleToStr(k), IntegerToString(ucount), 14, "Impact",  Crimson);              
             if (k>5 && Low[k]>iMA(symbol,0,8,0,MODE_EMA,PRICE_OPEN,k) && Low[k+1]>iMA(symbol,0,8,0,MODE_EMA,PRICE_OPEN,k+1)  && Low[k+2]>iMA(symbol,0,8,0,MODE_EMA,PRICE_OPEN,k+2)) ObjectSetText("Ucount"+DoubleToStr(k), IntegerToString(ucount), 14, "Impact",  Green);