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.

The 3 of the same Color has two different variations.

Var A: The Taper

Var B: The Divergence

Practice questions:

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);
}

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.

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.

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?!

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.

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.

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.

So price made it to 260.

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.

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);

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%).

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.

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

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

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.).

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?

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