Into The Unknown

I have identified 3 kind of turns.

All 3 require price having moved outside the range.

The V-bottom at 0.995 belongs to the first group.

Second Color usually means price printing a high/low outside the range but closer than 25 pips, then a high/low in the 25/50 band and never going beyond this zone.

This left shoulder turn gets confirmed by price going back to the overbought level, then printing a Head at the zero level.
This is another Second Color example. More than 1/2 of the turns belong here.

The 3 of the same Color has two different variations.

Var A: The Taper

The taper reaches a signal depth, but fails to carry on with the trend: i.e. no more lower lows / higher highs. This example belongs here and not with the 2nd color ones due to price having a hard time coming back into the range at first. This is not a common one at all.

Var B: The Divergence

The last down move ended this way. It went green 3 times and after finishing with the measuring leg, printed a divergent leg that got really close to the oversold end of the range.
Another example. Price went magenta 3x. Copy and paste from above. After 3 colors of the same, this has the higher likelihood.

Practice questions:

Which category does this example fall under? Second Colour/Taper/Divergence?
3 examples at once. Which one was the Taper? What were the other two?
Have you seen a 2-color top? Could this be turned to 3 of the same taper / divergence? Why not?

Color understanding

The gray means close proximity to the E121 hourly. I don’t usually count it as a color, but it does play as a color change as a second color.

The magenta is 64-100 pips away outside the range.

   if (High[i]>NBEU[i]) {ObjectCreate("Zingende"+DoubleToStr(i), OBJ_TEXT, 1, Time[i], 58); ObjectSetText("Zingende"+DoubleToStr(i), CharToStr(110), 18, "Wingdings", clrTeal);
         if (High[i]>NBEU[i]+250*Point && High[i]<NBEU[i]+500*Point) ObjectSetText("Zingende"+DoubleToStr(i), CharToStr(110), 18, "Wingdings", clrRed);
         if (iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,25,i))>iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,60,i+26)) && High[i]-iMA(symbol,0,484,0,MODE_EMA,PRICE_MEDIAN,i)<640*Point) ObjectSetText("Zingende"+DoubleToStr(i), CharToStr(110), 18, "Wingdings", clrGray);
         if (High[i]>NBEU[i]+640*Point && High[i]<NBEU[i]+1000*Point) ObjectSetText("Zingende"+DoubleToStr(i), CharToStr(110), 18, "Wingdings", clrMagenta);
      }
   else if (Low[i]<NBED[i]) {ObjectCreate("Zingende"+DoubleToStr(i), OBJ_TEXT, 1, Time[i], 34); ObjectSetText("Zingende"+DoubleToStr(i), CharToStr(110), 18, "Wingdings", clrSalmon);
         if (Low[i]<NBED[i]-250*Point && Low[i]>NBED[i]-500*Point) ObjectSetText("Zingende"+DoubleToStr(i), CharToStr(110), 18, "Wingdings", clrGreen);
         if (Low[i]>iMA(symbol,0,484,0,MODE_EMA,PRICE_MEDIAN,i)) ObjectSetText("Zingende"+DoubleToStr(i), CharToStr(110), 18, "Wingdings", clrGray);
         if (Low[i]<NBED[i]-640*Point && Low[i]>NBED[i]-1000*Point ) ObjectSetText("Zingende"+DoubleToStr(i), CharToStr(110), 18, "Wingdings", clrMagenta);
        }

Zingende means singing

Draad means drĂ³t.

The first nuclear reaction is the deepest.

Just don’t forget the shape.

Into the well known

From oversold to the force field of the Lema

LS: 140, H: 100, LH: 80

Dangerous

That is the break of this imaginary channel.

To take the 1st blood concept a little bit further, here is some of my recent radio-activity.

The first blood is the first red print. The confirmation lines arrive a whole lot later, but the level is essentially the same.
  if (i<300 && iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,100,i+5))-Low[i]>480*Point){
       ObjectCreate("Rickytx"+IntegerToString(i), OBJ_TEXT, 1, Time[i], 50); 
       ObjectSetText("Rickytx"+IntegerToString(i), CharToStr(62), 38, "Wingdings", clrRed);
         ObjectSet("Rickytx"+IntegerToString(i),OBJPROP_BACK,1);
   }
   
      if (i<300 && High[i]-iLow(symbol,0,iLowest(symbol,0,MODE_LOW,100,i+5))>480*Point){
       ObjectCreate("Rickytx"+IntegerToString(i), OBJ_TEXT, 1, Time[i], 50); 
       ObjectSetText("Rickytx"+IntegerToString(i), CharToStr(62), 38, "Wingdings", clrGreen);
         ObjectSet("Rickytx"+IntegerToString(i),OBJPROP_BACK,1);
   }

Yes, I do understand the bias in the above code coming from the linear execution and the same plot of the the two halves. If the distance from the last 105-sample high to the current low is greater than 48 pips and the distance from the last 105-sample low to the current high is also greater than 48 pips, the print would be green, but I like it that way. Bias of the last word.

These two numbers in pips from now on have a real time plot.

 ObjectCreate("FUNNATURE"+8,OBJ_LABEL,1, 2,0);
      ObjectSetText("FUNNATURE"+8,DoubleToStr(NormalizeDouble((High[0]-iLow(symbol,0,iLowest(symbol,0,MODE_LOW,100,5)))*10000,1),1),11,"Arial Black");
  ObjectSet("FUNNATURE"+8,OBJPROP_CORNER,1);
    ObjectSet("FUNNATURE"+8,OBJPROP_XDISTANCE,35);
  ObjectSet("FUNNATURE"+8,OBJPROP_YDISTANCE,17);
  ObjectSet("FUNNATURE"+8,OBJPROP_COLOR,clrDarkGray);
 if (High[0]-iLow(symbol,0,iLowest(symbol,0,MODE_LOW,100,5))>480*Point) ObjectSet("FUNNATURE"+8,OBJPROP_COLOR,clrGreen);
 
 
  ObjectCreate("FUNNATURE"+9,OBJ_LABEL,1, 2,0);
      ObjectSetText("FUNNATURE"+9,DoubleToStr(NormalizeDouble((iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,100,5))-Low[0])*10000,1),1),11,"Arial Black");
  ObjectSet("FUNNATURE"+9,OBJPROP_CORNER,3);
    ObjectSet("FUNNATURE"+9,OBJPROP_XDISTANCE,35);
  ObjectSet("FUNNATURE"+9,OBJPROP_YDISTANCE,17);
 ObjectSet("FUNNATURE"+9,OBJPROP_COLOR,clrDarkGray);
 if (iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,100,5))-Low[0]>480*Point) ObjectSet("FUNNATURE"+9,OBJPROP_COLOR,clrRed);

Thirst Time

Catching a peak may not always be that easy. I for instance would question peaks that are too close to the 121-E hourly.

Let’s talk about shedding the first blood.

This new, vertical lines plot is a “confirmation” of a move being in place: must get in on the new direction now, and the sophistication is the scaling in size part. Say the 15-minute candle’s low was X when the red line printed. Now we should see very limited counter-directional volatility. Place a sell 10-pips above the low and add more at 15, 20 pips. Keep in mind, there may not be much beyond 10-pips, so the initial size should already be a full hedge if you have holdings.

     ///first cut down

   if (NBEU[i]!=EMPTY_VALUE && NBED[i]!=EMPTY_VALUE)
   if (iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,100,i))>NBEU[iHighest(symbol,0,MODE_HIGH,100,i)] && Low[i]<iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,100,i))-480*Point && High[i]>iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,100,i))-480*Point
      && Low[i]>taxi[i] && Low[i]<taxi[i]+200*Point
 && High[i]<iMA(symbol,0,32,0,MODE_EMA,PRICE_OPEN,i)+50*Point
      && iLow(symbol,0,iLowest(symbol,0,MODE_LOW,100,i))>iLow(symbol,0,iLowest(symbol,0,MODE_LOW,100,i+100))
   ){
            ObjectCreate("Rickyt"+IntegerToString(i),OBJ_VLINE,1, Time[i], 0);
         ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_COLOR,clrRed );
            ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_WIDTH,1);
            ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);
          ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_BACK,1);   
   }
   
   
      ///first cut up

   if (NBEU[i]!=EMPTY_VALUE && NBED[i]!=EMPTY_VALUE)
   if (iLow(symbol,0,iLowest(symbol,0,MODE_LOW,100,i))<NBED[iLowest(symbol,0,MODE_LOW,100,i)] && High[i]>iLow(symbol,0,iLowest(symbol,0,MODE_LOW,100,i))+480*Point && Low[i]<iLow(symbol,0,iLowest(symbol,0,MODE_LOW,100,i))+480*Point
      && High[i]<taxi[i] && High[i]>taxi[i]-500*Point
   ){
            ObjectCreate("Rickyt"+IntegerToString(i),OBJ_VLINE,1, Time[i], 0);
         ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_COLOR,clrGreen );
            ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_WIDTH,1);
            ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);
          ObjectSet("Rickyt"+IntegerToString(i),OBJPROP_BACK,1);   
   }

The first red example shows a kick back of 46 pips. Just shy of the 48 mentioned on the last line.

The filters may not be final, but this is a start. Filters don’t have to symmetrical, and may change with the season / market type. Of course, after a head / cap / hat the logical move is back to the overbought for a Lower High.
These lines are great for confidence if you can’t make up your mind.

I used to know a girl, who had like 2 favorite jokes, and she kept on telling them to everyone and kept on cracking herself up.

One was: Doctor, I am so uncertain. Or maybe I am not?!

The other was:

– Doctor, I have a problem with my spiral!

– Sit down!

(showing heavy bouncing moves up and down)

I named my daughter after her.

You can also use Andreas Steno Larsen for when not to do something. He went long the Euro last week.

Dabadee Dabadaa

So there you have it. The most objective indicator in the world was born.

There is no left or right. There is inside of the range or outside.

There is 25+ and 50+ pips outside the range for a color change.

Let’s face it, you are looking for a color change for the most part.

Only a range bound market would turn between range sync ups or on an end of sequence prints (tip toe into the unknown and being scared off by no volume coming in).

These ideas have come a long way. The 15-min ATR Targets Continuous indicator has reached maturity.

There are no direct correlations between the colors and the actions they should trigger, but a change of color should make you want to change your stance / make an action.

The quality went from this…

To this.

if (NBEU[i]!=EMPTY_VALUE && NBED[i]!=EMPTY_VALUE && (High[i]>NBEU[i] || Low[i]<NBED[i]) ){
    
   if (High[i]>NBEU[i]) {ObjectCreate("Zingende"+DoubleToStr(i), OBJ_TEXT, 1, Time[i], 58); ObjectSetText("Zingende"+DoubleToStr(i), CharToStr(110), 18, "Wingdings", clrTeal);
         if (High[i]>NBEU[i]+250*Point && High[i]<NBEU[i]+500*Point) ObjectSetText("Zingende"+DoubleToStr(i), CharToStr(110), 18, "Wingdings", clrRed);
      }
   else if (Low[i]<NBED[i]) {ObjectCreate("Zingende"+DoubleToStr(i), OBJ_TEXT, 1, Time[i], 34); ObjectSetText("Zingende"+DoubleToStr(i), CharToStr(110), 18, "Wingdings", clrSalmon);
         if (Low[i]<NBED[i]-250*Point && Low[i]>NBED[i]-500*Point) ObjectSetText("Zingende"+DoubleToStr(i), CharToStr(110), 18, "Wingdings", clrGreen);
        }
        ObjectSet("Zingende"+DoubleToStr(i), OBJPROP_BACK, 1 );
   
}

Inside Outside Evaluation

Let’s add to the difficulty level here.

We do not have the luxury of a market printing a Left Shoulder or even a Head to signal a pending turn.

For instance the recent run up is already 7 days old, and without knowing the Range well enough it’s been hard to say what is happening exactly.

Yes, the broken head was a signal, but who would have guessed that this run could be a long one?

This is why we need to start paying attention to the difference of being inside the range vs being outside.

The first orange circle was the outside. Potential terminal, potential left shoulder.

The green boxes show how far the market dipped below the 50% line when inside the range. Clearly this market had a bid under it all along the way. The larger orange circle I had discussed in the previous article, it too only returned to just about the 40% mark only to be bought again. If you tried to buy a head after the LS suspect NIL++ well, that didn’t happen.

I added a red and a green rectangle around the consolidation weight 9-pips out and they get either filled or left empty showing if price has managed to get away from the recent range by 12 pips or more in either direction.

Would you be surprised to see a buying attempt in the green box below? From now on I wouldn’t be.

i=1;
while (i<lookback){
   if (taxi[i]!=taxi[0]) break;
   i++;
}

      ObjectDelete("Buick");               
      ObjectCreate("Buick", OBJ_RECTANGLE, 0, Time[i], taxi[0], Time[0],  taxi[0]-90*Point);
                      ObjectSetInteger(0,"Buick",OBJPROP_COLOR,clrLimeGreen);
                      if (iLow(symbol,0,iLowest(symbol,0,MODE_LOW,i,0))>taxi[0]-120*Point) ObjectSet("Buick",OBJPROP_BACK,1);
                      else ObjectSet("Buick",OBJPROP_BACK,0);
                      ObjectSet("Buick",OBJPROP_WIDTH,1);  
      
           ObjectDelete("Quick");               
      ObjectCreate("Quick", OBJ_RECTANGLE, 0, Time[i], taxi[0], Time[0],  taxi[0]+90*Point);
                      ObjectSetInteger(0,"Quick",OBJPROP_COLOR,clrCrimson);
                      if (iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,i,0))<taxi[0]+120*Point) ObjectSet("Quick",OBJPROP_BACK,1);
                      else ObjectSet("Quick",OBJPROP_BACK,0);
                      ObjectSet("Quick",OBJPROP_WIDTH,1);  

Since the first peak was a blood diamond, I personally would pass on this buying opportunity.

Neutralizacija

Mistakes have been made.

This reading suffered some curve fitting. I reached into the code to give further discount on the stochastic from 82 to 80, which was a mistake. Reverted it.

Some additional curve fitting was done by implementing the 9-count green with candle clearing the BB by 20 pips and closing back below it. I have to always go back in history to see if this change would throw something else off. I’m glad to say the gray/white block are performing very well for calling the important levels. Volume still shows amateur levels (yellow shading) with the exception of yesterday. It is good to see that the RSI2 is printing in the reversal zone today.


///fizzle out after 9 days in green closing below the BB by 20 pips
 if (cap[i+8]>0 && cap[i+7]>0 && cap[i+6]>0 && cap[i+5]>0 && cap[i+4]>0 && cap[i+3]>0 && cap[i+2]>0 && cap[i+1]>0 && cap[i+9]>0  && High[i]>iBands(symbol,0,20,2,0,PRICE_CLOSE,MODE_UPPER,i)+200*Point && Close[i]<iBands(symbol,0,20,2,0,PRICE_CLOSE,MODE_UPPER,i)) cap[i]=-1;  
 

The 20-pips becomes key again when we need to figure where the just printed head would get voided.

Price was supposed to stop at 80 – about matching the magenta line of the head, but there was a break out instead.

So price made it to 260.

Was 300 the aim? There are a lot of lines there, it does not seem very easy.

After the Head print there was the move to neutralization, back to the 50-line.

If you think back to the wheel, the neutral level is 50, to the left is the negative field, to the right is the positive. Now, if you put 260 to the current NIL++ mark on the right, then 150 would be neutral, and coming back below it would be neutralization. Price came back to 40 (140) approximately and we are in a swing back up to 100 (200). Rather appealing sequence for a left shoulder and a head.

TOS – Buy To Sell To

What would I say about this ThinkOrSwim Routine of mine?

It was made for trading Eur/Usd.

It displays a channel around the 36EMA (1H) based on zigzag crossbacks inside the channel and displays a projection at the other end that was made by a zigzag crossback at the other end with some additional displacement (slack) and projects this level out into the future (white dash). Invocation -> Channel Target.

The routine plots some fractal energy future exhaustion levels (thin lines) based on statistical, instrument dependant data.

It has some crossback arrows as well in red, green and white colors. The idea is the current & the next candle. If they show a follow-through combination, initiate in that direction on a pullback.

The Lema clouds and the comfort levels shaded blocks are not part of the routine.

I am very generous with this one, as on MT4 (implemented in the routine called CloseLines 60-60) I have not been able to replicate the accuracy of the zigzag routine nor the aim.

# Buy To Sell To by Achilles Dent ~ 2013-2014 

input length = 36;
input price = close;
input reversalAmount = 0.6;
input showonlytoday = yes;
input displace = 1.13;

def ZZG =  reference ZigZagHighLow(price, price, reversalAmount, 0, 1, 0);

def SLK = reference StochasticSlow(80,  20,  60,  1,  high,  low,  close,  1).SlowK;


def ZZG2 =  if showonlytoday and !IsNaN(close(period = "DAY")[-12]) then Double.NaN else reference ZigZagHighLow(price, price, reversalAmount, 0, 1, 0);

def zzSave = if !IsNaN(ZZG) then price else GetValue(zzSave, 1);
def chg = (price / GetValue(zzSave, 1) - 1) * 100;
def isUp = chg >= 0;

def flipu = if isUp == yes and isUp[1] == no then 1 else 0;
def flipd = if isUp == no and isUp[1] == yes then 1 else 0;

def EMA = ExpAverage(price, length);

def upval = if flipd then high[1] - EMA[1] else if flipu[22] != 1 and Sum(flipu, 22) < 2 then upval[1] else upval[1] * .9;

def upval2 = if flipd then high[1] - EMA[1] else upval2[1];

def dval = if flipu then EMA[1] - low[1] else  if flipd[22] != 1 and Sum(flipd, 22) < 2 then dval[1] else dval[1] * .9;
def dval2 = if flipu then EMA[1] - low[1] else dval2[1];

def EMAP = if upval > 0 then EMA + upval * displace  else EMAP[1] ;
def EMAP2 = if upval2 > 0 then EMA + upval2 * displace  else EMAP2[1] ;
def EMAD = if dval > 0 then EMA - dval * displace  else EMAD[1];
def EMAD2 = if dval2 > 0 then EMA - dval2 * displace else EMAD2[1];

def ema2 = if EMAP > .02 then EMAP else Double.NaN;

def ema3 = if EMAD > .02 then EMAD else Double.NaN;

plot ema44 = if EMAP2 > .02 then EMAP2 else Double.NaN;
ema44.SetLineWeight(4);
ema44.SetDefaultColor(Color.RED);

plot ema4 = if EMAP2 > .02 then EMAP2 else Double.NaN;
ema4.SetLineWeight(2);
ema4.SetPaintingStrategy(PaintingStrategy.DASHES);
ema4.SetDefaultColor(Color.YELLOW);

plot ema55 = if EMAD2 > .02 then EMAD2 else Double.NaN;
ema55.SetLineWeight(4);
ema55.SetDefaultColor(Color.BLUE);

plot ema5 = if EMAD2 > .02 then EMAD2 else Double.NaN;
ema5.SetLineWeight(2);
ema5.SetPaintingStrategy(PaintingStrategy.DASHES);
ema5.SetDefaultColor(Color.YELLOW);

input TF = {default "1 HOUR",  "78 MIN",  "4 HOURS", "DAY", "WEEK", "MONTH"};
def CI = ( ( Log(Sum(TrueRange(high(period = TF), close(period = TF), low(period = TF)), 14) / (Highest(if high(period = TF) >= close(period = TF)[1] then high(period = TF) else close(period = TF)[1], 14) - Lowest( if low(period = TF) <= close(period = TF)[1] then low(period = TF) else close(period = TF)[1], 14))) / Log(10)) / (Log(14) / Log(10))) * 100;
input TFS = {default "DAY", "WEEK", "MONTH"};

def  slkf =  reference StochasticFull(77, 22, 9, 0, high, low, close, 1, "SMA").FullK;
def diff = 100 - (75 - (slkf - (88 - CI))) * .8;

def dhi14 = Highest(high(period = "DAY"), 14);

def dlo14 = Lowest(low(period = "DAY"), 14);

def dei80 =  dhi14 - ((dhi14 - dlo14) / 100 * 19);

def dos20 = dhi14 - ((dhi14 - dlo14) / 100 * 79);

def top = (dei80[2] - dos20[1]) * .7 + dos20;

def bot =  (dei80[2] - dos20[1]) * .3 + dos20;

def ave = (top + bot) / 2;

plot dcr = if Crosses(if showonlytoday and !IsNaN(close(period = "DAY")[-12]) then Double.NaN else diff, 62, CrossingDirection.BELOW) and CI > 34 and high < ema4 then high else Double.NaN;
dcr.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
dcr.SetLineWeight(4);
dcr.AssignValueColor(if close > ave then Color.RED else Color.WHITE);

plot ucr = if Crosses(if showonlytoday and !IsNaN(close(period = "DAY")[-12]) then Double.NaN else diff, 34, CrossingDirection.ABOVE) and low > ema5 then low else Double.NaN;
ucr.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
ucr.SetLineWeight(4);
ucr.AssignValueColor(if close < ave then Color.WHITE else Color.GREEN);

AddChartBubble(if showonlytoday and !IsNaN(close(period = "DAY")[-8]) then Double.NaN else flipd, high, "CHANNEL RE-ENTRY / INVOCATION", if (SLK > 70) then CreateColor(0, 162, 232) else Color.DARK_GRAY, yes);
AddChartBubble(if showonlytoday and !IsNaN(close(period = "DAY")[-8]) then Double.NaN else flipd, ema5, Concat("CH TGT:", ema5), CreateColor(0, 162, 232), no);

AddCloud(if high[1] > ema44[1] and close < ema44 then ema44 else Double.NaN, ema5, Color.BLUE, Color.BLUE);


AddChartBubble(if showonlytoday and !IsNaN(close(period = "DAY")[-8]) then Double.NaN else flipu, low, "CHANNEL RE-ENTRY / INVOCATION", if (SLK < 30) then  Color.RED else Color.DARK_GRAY , no);
AddChartBubble(if showonlytoday and !IsNaN(close(period = "DAY")[-8]) then Double.NaN else flipu, ema4, Concat("CH TGT:", ema4), Color.RED, yes);

AddCloud(if low[1] < ema5[1] and close > ema5 then ema4 else Double.NaN, ema5, Color.BLUE, Color.BLUE);

def aim = if flipd then ema5 else if flipu then ema4 else aim[1];

def cmem = if flipu or flipd then 0 else if Crosses(aim, close, CrossingDirection.ANY) then 1 else Double.NaN;
def cmemh = if cmem != cmem[1] then cmem else cmemh[1];

plot chaim = if aim > .02 then aim else Double.NaN;
chaim.SetStyle(Curve.SHORT_DASH);
#chaim.AssignValueColor(if cmemh > 0 then Color.BLACK else Color.WHITE);
chaim.AssignValueColor(Color.WHITE);
chaim.SetLineWeight(4);

AddLabel(aim > .02, Concat("CURRENT CHANNEL TARGET TO AIM FOR: ", aim), if aim < close then Color.RED else Color.GREEN);

def distance = (ema2 + ema4) / 2 - (ema3 + ema5) / 2;

def dc = Crosses(high[1], ema2[1], CrossingDirection.BELOW) or Crosses(high[1], ema4[1], CrossingDirection.BELOW);
def uc = Crosses(low[1], ema3[1], CrossingDirection.ABOVE) or Crosses(low[1], ema5[1], CrossingDirection.ABOVE);

def stup = if dc then high[1] + distance / 2 else stup[1];

plot stupper = if showonlytoday and !IsNaN(close(period = "DAY")[-20]) then Double.NaN else if stup > .02 then stup else Double.NaN;
stupper.AssignValueColor(if close > EMA then Color.RED else Color.DARK_RED);

def LEMAU = ExpAverage(high, 36 * 23);
def LEMAL = ExpAverage(low, 36 * 23);

def prevdmove = (high(period = "Day")[1] - low(period = "Day")[1]) / ((high(period = "Day")[1] + low(period = "Day")[1] + close(period = "Day")[1]) / 3) * 100;

AddChartBubble(if showonlytoday and !IsNaN(close(period = "DAY")[-8]) then Double.NaN else stupper[1] != stupper[2] and stupper < LEMAU, stupper[1], Concat("SELL TO:", stupper), if prevdmove < 1 then Color.RED else Color.GRAY, yes);

def stdn = if uc then low[1] - distance / 2 else stdn[1];

plot stlower = if showonlytoday and !IsNaN(close(period = "DAY")[-20]) then Double.NaN else if stdn > .02 then stdn else Double.NaN;
stlower.AssignValueColor(if close < EMA then Color.MAGENTA else Color.PLUM);

AddChartBubble(if showonlytoday and !IsNaN(close(period = "DAY")[-8]) then Double.NaN else stlower[1] != stlower[2] and stlower > LEMAL, stlower[1], Concat("BUY TO:", stlower), if prevdmove < 1 then Color.MAGENTA else Color.GRAY, no);

AddChartBubble(if showonlytoday and !IsNaN(close(period = "DAY")[-8]) then Double.NaN else CI[2] < 34 and CI[3] > 34, close[2], "CI GUIDANCE", if prevdmove < 1 then Color.MAGENTA else Color.GRAY, no);

def stdn2 = if uc then stdn[1] else stdn2[1];

plot stlower2 = if showonlytoday and !IsNaN(close(period = "DAY")[-20]) then Double.NaN else if stdn2 > .02 then stdn2 else Double.NaN;
stlower2.SetDefaultColor(Color.BLUE);

AddCloud(if high > ema4 then high else Double.NaN, low, Color.GREEN, Color.BLACK);
AddCloud(if low < ema5 then high else Double.NaN, low, Color.RED, Color.BLACK);
AddCloud(if high > ema4 then high else Double.NaN, low, Color.GREEN, Color.BLACK);
AddCloud(if low < ema5 then high else Double.NaN, low, Color.RED, Color.BLACK);

AddLabel(high > ema4, "ABOVE CHANNEL BUYING!!!", Color.GREEN);
AddLabel(low < ema5, "BELOW CHANNEL SELLING!!!", Color.RED);

AddLabel(yes, Concat("DISTANT CHANNEL RISK: ", if AbsValue(close - ema4) > AbsValue(close - ema5) then AbsValue(close - ema4) else AbsValue(close - ema5)), Color.MAGENTA);

input TF2 = {default "4 HOURS", "DAY", "WEEK"};
def price2 = hl2(period = TF);
input length2 = 88;

def realPart = fold indexR = 0 to length2 with accuR = 0 do accuR + GetValue(price2, indexR, length2 - 1) * Cos(2 * Double.Pi * indexR / length2);
def imagPart = fold indexI = 0 to length2 with accuI = 0 do accuI + GetValue(price2, indexI, length2 - 1) * Sin(2 * Double.Pi * indexI / length2);
def phase1 = if AbsValue(realPart) > 0.001 then ATan(imagPart / realPart) else (Double.Pi / 2 * Sign(imagPart));
def phase2 = if realPart < 0 then phase1 + Double.Pi else phase1;
def phase = if phase2 < 0 then phase2 + 2 * Double.Pi else if phase2 > 2 * Double.Pi then phase2 - 2 * Double.Pi else phase2;

def "Sine Wave" = Cos(phase);
def "Lead Wave" = Cos(phase + Double.Pi / 4);
def ZeroLine = 0;


def support = if "Lead Wave" crosses above "Sine Wave" then low else support[1];
def resistance = if "Lead Wave" crosses below "Sine Wave" then high else resistance[1];
plot s = support;
plot r = resistance;

AddCloud(if low < r and close > r then stupper else Double.NaN, r, Color.CYAN, Color.CYAN);
AddCloud(if high > s and close < s then s else Double.NaN, stlower, Color.CYAN, Color.CYAN);

AddCloud(if low < s and close > s then stupper else Double.NaN, s, Color.CYAN, Color.CYAN);
AddCloud(if high > r and close < r then r else Double.NaN, stlower, Color.CYAN, Color.CYAN);
Understand that zigzags can be taken back (since fractals can be too) and use it responsibly. CI Guidance means energy exhaustion.

Yours, Sincerely

Follow the pendulum.

A NIL++ on the negative side is aiming for a 90 print on the positive side (thin red lines).

Similarly, a NIL++ on the positive side is aiming for a 10 print on the negative half.

A NIL+ is aiming for a NIL+ (purple lines) if nothing else manages to stop it.

A NIL+ to a PONR (point of no return) segment is where Left Shoulders come from if they get to swing back to the middle of the same core range (50%).

-100 is at 1.0073, lots of 200 lines in that area.

This NIL++ to 90% move I would consider finished, yet it fell short of the green 50% line of the same range, so it does not currently qualify for an LS.

I am of the opinion that although price seems to be stuck between the 9EMA and the 20SMA, the momentum is down and we’ll see the lower BB tagged first.

What could flip back the momentum up is if there was a daily close below the S20 followed by 2 daily closes back above. A 3-day procedure. Currently the day to day, constant closings above the S20 to me indicates a distribution. Yes, the BIAS is up – being above the 20SMA, which may end up making the kick start difficult.

People, I am looking for a new job, putting together a portfolio of web works in the coming weeks. Could you possibly help?

http://macdulio.42web.io/

Music? Of course. Sorry.

A NULL is a match of a previous Zero level & missing the cue. A Head is between a 0 and an outside 17 pips (between ZERO and the NBE (No Break Extension). A Hat can go a little further and fiddle around a bit, but would likely not reach into the area starting at NIL+ (40%).

Wheel Of Torture

Introducing the wheel of the Range for the first time.

Now, follow what is happening with the NIL+ (40% to 55% extra)

The pendulum has been swinging from NIL+ to NIL+ and no one is stepping up to make a head at a 0 or a 100.

Now you printed a NIL++ (60% beyond the range), bears could take a stand at 0 (Head) and a second stab at a 20% oversold level (Lower High) to get things moving down, they have the ball. By the way, the Lower High does not have to be lower than the Head i.e. if the range does not get a new consolidation axis in the meantime.

NiL+ = full swing
-> NiL+ – one step shy (white field)
or
-> failure at the overbought end
or
-> failure at the oversold end
Min. 50% for an LS to print

Fractals In The Know

Small earthquakes, major bankruptcies, let’s get back to what matters.

In continuation to the CI Moat & The Bear

An outside day takes out the low and the high of the previous day. Both upper and lower fractal.

The one exception to the 10+ pips beat necessary is when the last fractal was an outside day. In this case you may see even less of a beat.

The two daily closes above the S20 flipped the momentum back up temporarily.

The last 3 turns cost back to back / two CAPsize attempts. Shy of the BB so far.

The green NBE is meant to say that it’s ok to sell the No Break Extension level.

///2 closes above 20
   if (iMA(symbol,0,9,0,MODE_SMA, PRICE_CLOSE,i)<E44[i] && Close[i]>iMA(symbol,0,20,0,MODE_SMA, PRICE_CLOSE,i) && Close[i+1]>iMA(symbol,0,20,0,MODE_SMA, PRICE_CLOSE,i+1) && Close[i+2]<iMA(symbol,0,20,0,MODE_SMA, PRICE_CLOSE,i+2)) cap[i]=1;
   

Wherever I lay my fractals, that’s my home.

The idea behind shining dark like a black diamond, Jamie – if you need a friend- is that if a party is eager to make a move they would step in front of the line just at or a little beyond the zero line (a head/hat suspect). I use 17 pips extra as a filter (I promise you I will.).

///fractals in the know
if (iFractals(symbol,0,MODE_UPPER,i) && High[i]<NBEU[i]+170*Point && High[i]>NBEU[i] && NBEU[i]!=EMPTY_VALUE && High[i]>iMA(symbol,0,32,0,MODE_EMA, PRICE_OPEN,i)+50*Point
   && iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,6,i))==iHigh(symbol,0,i) && !(High[i]>iMA(symbol,0,366,0,MODE_EMA, PRICE_MEDIAN,i) && High[i]<iMA(symbol,0,484,0,MODE_EMA, PRICE_MEDIAN,i))
){
   EU[i]=High[i]+60*Point;
}

if (iFractals(symbol,0,MODE_LOWER,i) && Low[i]>NBED[i]-170*Point && Low[i]<NBED[i] && NBED[i]!=EMPTY_VALUE && Low[i]<iMA(symbol,0,32,0,MODE_EMA, PRICE_OPEN,i)-50*Point 
&& iLow(symbol,0,iLowest(symbol,0,MODE_LOW,6,i))==iLow(symbol,0,i)
){
   ED[i]=Low[i]-60*Point;
}

The black diamond has a first target at the middle of the range (green grin) and a second target at the oversold level. Why?

The stage 2 aggression is stepping in at the overbought level of the current range and stage 3 is attacking it at the oversold.

Based on the above, a left shoulder is not a step up, it is a dropped ball, a double start. Penalty for not getting over the point of no return. 40-70% extra beyond the range. The point I’m making here is that I no longer think that an LS is a requirement for a tutn. Often present, but not always.

Home, Rome – what’s the difference?

Wherever I roam, my head gets stepped on.
I’m fine, but I’m just thinking of the blockwurst.

In the know, in the snow – what’s the diffrtence? It will all blow over.

Lovers in the blow. I know, I did not even have to say it. You figured out this one by yourself.

xtension fills

Headed for the next continuation divergence up?
13 pips

Psar-Scared

All those trendlines drawn with high hopes for naught.