This script is a phase-of-pullback model inside a trend.
So when you say “phase cycling” here, what I really mean is it is where price is in the pullback - recovery - extension sequence relative to prior highs.
Now let’s read this TSLA chart strictly from the Off-High engine/script.
1. What we are looking at in the Lower pane/plot:
That is coming from the 52-week high anchor.
2. Where it is right now (phase)- Current phase = deep pullback / late discount zone
By your zones:
3. Why it is there?
Look at the price structure above:
✔ price failed continuation near highs
✔ supply entered above ~460–480
✔ market is digesting that move
Your Off-High model simply reflects price is still far from the last dominant acceptance area near highs.
This is exactly what it should show.
4. The important nuance on your chart, let's look closely: The cyan (52-week) line is still sloping down
But…The magenta (50-day high) line already turned up earlier and then rolled
That tells you something very useful, Shorter-term structure tried to repair before long-term structure did.
This is classic counter-trend repair then failure then deeper discount, which matches the actual candles.
5. Where we are in the “phase cycle”?
Using only this model:
Phase map for this tool:
So right now TSLA is in late red zone, that is repair phase, not momentum phase.
6. The key observation on this chart is the most important thing in the lower pane:
Your Off52 (cyan) has:
This is an early condition only.
Not a trigger!!!
7. When is a potential move to be expected (with this model)?
This model does not forecast by time. It forecasts by location repair.
The next tradable phase for continuation-style trades comes when: Off52 reclaims the −15 line
In your script:
plot Z2 = -15
plot Z2 = -15
So the first structural improvement signal from this model is the Cyan line moves back up into the yellow zone (above -15)
That is the “repair completed” phase. Right now:
8. The clean rule for your stack
For your system, the best way to use this is:
9. Tying it back to the chart shows it already has:
10. Short, direct answer to the question, What Where Why When?
Where is it? Deep pullback phase (red zone), about −16% off the 52-week high.
Why is it there?
Because TSLA failed continuation near the highs and is still structurally far from the last accepted value near the top of the range.
When would a potential move be expected using this model?
Not by date. By phase. And the phase is when the cyan line (Off52) re-enters the yellow zone (above −15) and you simultaneously see:
So when you say “phase cycling” here, what I really mean is it is where price is in the pullback - recovery - extension sequence relative to prior highs.
Now let’s read this TSLA chart strictly from the Off-High engine/script.
1. What we are looking at in the Lower pane/plot:
- Cyan represents Off 52-week high (Off52)
- Magenta represents Off 50-day high (Off50)
- Zones: (%)
- Green: 0 to −8
- Yellow: −8 to −15
- Red: −15 to −25
That is coming from the 52-week high anchor.
2. Where it is right now (phase)- Current phase = deep pullback / late discount zone
By your zones:
- It is below −15
- Inside the red zone
3. Why it is there?
Look at the price structure above:
- Strong multi-month trend
- Blow-off / final push near the top
- Then:
- rejection from the upper structure
- loss of the steep trendline
- compression under the broken range
- options walls above (you have call walls marked)
✔ price failed continuation near highs
✔ supply entered above ~460–480
✔ market is digesting that move
Your Off-High model simply reflects price is still far from the last dominant acceptance area near highs.
This is exactly what it should show.
4. The important nuance on your chart, let's look closely: The cyan (52-week) line is still sloping down
But…The magenta (50-day high) line already turned up earlier and then rolled
That tells you something very useful, Shorter-term structure tried to repair before long-term structure did.
This is classic counter-trend repair then failure then deeper discount, which matches the actual candles.
5. Where we are in the “phase cycle”?
Using only this model:
Phase map for this tool:
| Zone | Meaning |
|---|---|
| Green | extension / near highs |
| Yellow | normal pullback |
| Red | deep pullback / repair phase |
6. The key observation on this chart is the most important thing in the lower pane:
Your Off52 (cyan) has:
- made a lower low
- and is now starting to flatten
This is an early condition only.
Not a trigger!!!
7. When is a potential move to be expected (with this model)?
This model does not forecast by time. It forecasts by location repair.
The next tradable phase for continuation-style trades comes when: Off52 reclaims the −15 line
In your script:
plot Z2 = -15
plot Z2 = -15
So the first structural improvement signal from this model is the Cyan line moves back up into the yellow zone (above -15)
That is the “repair completed” phase. Right now:
- you are still below it
8. The clean rule for your stack
For your system, the best way to use this is:
Phase gating:
- Red zone:
- only structure-based reversals
- no continuation bias
- Yellow zone:
- structure reclaim + WA + trigger allowed
- Green zone:
- continuation and trend entries
9. Tying it back to the chart shows it already has:
- broken trendline
- supply zone above
- options resistance above
- compression under 450
10. Short, direct answer to the question, What Where Why When?
Where is it? Deep pullback phase (red zone), about −16% off the 52-week high.
Why is it there?
Because TSLA failed continuation near the highs and is still structurally far from the last accepted value near the top of the range.
When would a potential move be expected using this model?
Not by date. By phase. And the phase is when the cyan line (Off52) re-enters the yellow zone (above −15) and you simultaneously see:
- structure reclaim on price
- your WA / bias stack flip back to tradable
Code:
# -------------------------------------------
# Off-High Distance (Percent / ATR)
# antwerks – clean structural distance model
# -------------------------------------------
declare lower;
input mode = { default Percent, ATR };
input atrLength = 21;
input src = close;
# Lookbacks
input lookback52w = 251;
input lookback50d = 49;
input lookback18m = 375;
input cutoffEnabled = yes;
# Cutoffs (to keep scaling clean)
input pctCutoff = 25; # %
input atrCutoff = 10; # ATRs
# -------------------------------------------------
# High anchors
# -------------------------------------------------
def high52 = Highest(high, lookback52w);
def high50 = Highest(high, lookback50d);
def high18m = Highest(high, lookback18m);
def atr = Average(TrueRange(high, close, low), atrLength);
# -------------------------------------------------
# Percent distances
# -------------------------------------------------
def pct52 = if high52 != 0 then (src - high52 ) / high52 * 100 else 0;
def pct50 = if high50 != 0 then (src - high50 ) / high50 * 100 else 0;
def pct18m = if high18m != 0 then (src - high18m) / high18m * 100 else 0;
# -------------------------------------------------
# ATR distances
# -------------------------------------------------
def atr52 = if atr != 0 then (src - high52 ) / atr else 0;
def atr50 = if atr != 0 then (src - high50 ) / atr else 0;
def atr18m = if atr != 0 then (src - high18m) / atr else 0;
# -------------------------------------------------
# Cutoff logic (same idea as the TV script)
# -------------------------------------------------
def pct52_c =
if !cutoffEnabled then pct52
else if pct52 < -pctCutoff then -pctCutoff
else if pct52 > 0 then 0
else pct52;
def pct50_c =
if !cutoffEnabled then pct50
else if pct50 < -pctCutoff then -pctCutoff
else if pct50 > 0 then 0
else pct50;
def pct18m_c =
if !cutoffEnabled then pct18m
else if pct18m < -pctCutoff then -pctCutoff
else if pct18m > 0 then 0
else pct18m;
def atr52_c =
if !cutoffEnabled then atr52
else if atr52 < -atrCutoff then -atrCutoff
else if atr52 > 0 then 0
else atr52;
def atr50_c =
if !cutoffEnabled then atr50
else if atr50 < -atrCutoff then -atrCutoff
else if atr50 > 0 then 0
else atr50;
def atr18m_c =
if !cutoffEnabled then atr18m
else if atr18m < -atrCutoff then -atrCutoff
else if atr18m > 0 then 0
else atr18m;
# -------------------------------------------------
# Plots
# -------------------------------------------------
plot Off52 =
if mode == mode.Percent then pct52_c else atr52_c;
plot Off50 =
if mode == mode.Percent then pct50_c else atr50_c;
plot Off18M =
if mode == mode.Percent then pct18m_c else atr18m_c;
Off52.SetDefaultColor(Color.CYAN);
Off50.SetDefaultColor(Color.MAGENTA);
Off18M.SetDefaultColor(Color.DARK_GRAY);
Off52.SetLineWeight(2);
Off50.SetLineWeight(1);
Off18M.SetLineWeight(1);
# -------------------------------------------------
# Zone references (same structure as the Pine script)
# -------------------------------------------------
plot Z0 = 0;
plot Z1 =
if mode == mode.Percent then -8 else -4;
plot Z2 =
if mode == mode.Percent then -15 else -8;
plot Z3 =
if mode == mode.Percent then -25 else -10;
Z0.SetDefaultColor(Color.GRAY);
Z1.SetDefaultColor(Color.LIGHT_GRAY);
Z2.SetDefaultColor(Color.LIGHT_GRAY);
Z3.SetDefaultColor(Color.LIGHT_GRAY);
Z0.SetStyle(Curve.SHORT_DASH);
Z1.SetStyle(Curve.SHORT_DASH);
Z2.SetStyle(Curve.SHORT_DASH);
Z3.SetStyle(Curve.SHORT_DASH);
Z0.HideBubble(); Z1.HideBubble(); Z2.HideBubble(); Z3.HideBubble();
Z0.HideTitle(); Z1.HideTitle(); Z2.HideTitle(); Z3.HideTitle();
# -------------------------------------------------
# Light background zones
# -------------------------------------------------
AddCloud(Z0, Z1, Color.DARK_GREEN, Color.DARK_GREEN);
AddCloud(Z1, Z2, Color.YELLOW, Color.YELLOW);
AddCloud(Z2, Z3, Color.RED, Color.RED);