Fibonacci Pullback Recovery: Trend Permission, the 38.2% Trigger, and Frozen Anchors

Video: How I Finally Made Fibonacci Retracements Work
Creator: TradeGenius
Original Video: Watch the original video
Difficulty: Intermediate

The Big Idea

This setup measures the recovery of a pullback, rather than buying every Fibonacci level. The source combines a directional band, a pullback through a moving-average area, and a later break of a measured recovery threshold. The key is to freeze the measurement before evaluating the trigger.

What Each Tool Contributes

Source componentSetting describedJob
Chart SMA30 periods, close, visual offset of one barHelp identify the pullback area
Swing Arm / Black Flag FTSHourly reference, modified trail, ATR period 5 and factor 5Permission to search in one direction
Fib measurementZero, 38.2%, and 161.8%Define recovery trigger and reference boundaries

The band chooses direction before the Fibonacci measurement is drawn. In the bullish example, price pushes higher, pulls back below the SMA area, and then attempts recovery. A bearish example mirrors the sequence.

The one-bar SMA offset is a display convention, not permission to use tomorrow’s value. The included proxy plots the previous chart bar’s completed SMA at the current bar, making the delay explicit.

Define the Numbers Instead of Relying on Click Order

Let H be the push high and L the later pullback low. Set D = H − L. In the bullish measurement described, zero is at L, the recovery threshold is L + 0.382D, and the projection is L + 1.618D.

This measures the pullback’s high-to-low span. It is different from a conventional bullish retracement drawn on an original low-to-high impulse, where a 38.2% pullback level is measured downward from the impulse high. Confusing the two changes both trigger and target.

The transcript’s references to the first click and first marked circle are not fully consistent. Use the displayed numerical relationships to check the drawing: in the bullish setup zero must be the pullback low, and the recovery threshold must lie above it.

Worked Example: The Ratio Changes With the Entry

Fictional pullback measurement

Assume a push high of 110.00 and a later pullback low of 100.00. These figures illustrate the formula, not a source trade.

StepCalculation or observationMeaning
Span110.00 − 100.00 = 10.00The distance being measured is the pullback.
Recovery threshold100.00 + 0.382 × 10.00 = 103.82A reference to cross, not a guaranteed fill.
Projection100.00 + 1.618 × 10.00 = 116.18A hypothetical objective, not promised future movement.
At the exact thresholdRisk 3.82; reward 12.36; ratio ≈ 3.24RAssumes a 100.00 protective reference and no costs.
At a later fill of 104.40Risk 4.40; reward 11.78; ratio ≈ 2.68RThe same anchors produce different economics at a different entry.

The source reports example ratios such as 2.67 and 2.49. Those can differ from the ideal threshold ratio because the entry is not necessarily at the exact measured line. The transcript does not provide enough execution detail to independently verify the examples.

The Low Cannot Be Known Before It Forms

Drawing a perfect pullback low after the move is easy. Knowing that the low has completed in real time is the harder problem. Specify the confirmation rule before using it in code or replay.

The proxy uses confirmed pivots with subsequent bars on the right. Its anchors become available only after that delay. A recovery that already began before confirmation cannot be assigned a historical entry at the earlier line crossing.

If the first available confirmation close is already above the recovery line, the proxy marks that close. It does not pretend the line was available at the earlier intrabar crossing. By then, the remaining reward may be unattractive; measuring that timing cost is part of the exercise.

Trend Permission Is a Filter, Not a Promise

The named modified Swing Arm tool is not fully specified by its parameter list. A built-in Supertrend using the same 5/5 numbers is not necessarily its equivalent. The independent indicator below explicitly uses Supertrend as a proxy rather than claiming to reproduce the published tool.

The hourly proxy uses the previous completed hourly state. That avoids importing the current hour’s final value before it exists, but it also delays reaction to a developing trend change. More honest timing can look less impressive than a hindsight chart.

Keep the Failure Point Stable

The source retains the pullback low as the bullish protective reference while price fluctuates. A dip into the drawn risk area is not automatically a failure unless the chosen stop condition is met. Conversely, a genuine breach should not be excused by redrawing the low after entry.

Whether protection triggers on a traded price, a bid/ask quote, or a completed close must be specified in an actual trading plan. The indicator uses chart observations only and does not model an order. Gaps and costs can change the loss beyond the displayed distance.

Before Calling a Candidate Tradable

  1. Direction: confirm the permitted side using a defined, timely trend reference.
  2. Pullback: identify the push extreme and later reversal extreme.
  3. Availability: record when both anchors became known.
  4. Trigger: evaluate the recovery only after that availability point.
  5. Economics: calculate room and risk from the proposed or actual fill.
  6. Invalidation: state the breach and expiry rules before entering.

Pine Script Indicator

View Pine Script Indicator Code
//@version=6
// Guide: https://candlechasers.com/fibonacci-pullback-recovery-trigger/
// Independent educational approximation. Confirmed observations, no simulated orders.
indicator("CC Pullback Fib Confirmation", overlay=true)
pivotBars = input.int(3, "Confirmed pivot bars each side", minval=1)
htf = input.timeframe("60", "Confirmed trend timeframe")
life = input.int(40, "Setup lifetime after confirmation", minval=1)
if timeframe.in_seconds(htf) <= timeframe.in_seconds()
    runtime.error("Use a chart below the trend timeframe, e.g. 15m chart / 60m trend.")
trendConfirmed() =>
    [st, d] = ta.supertrend(5.0, 5)
    [st[1], d[1]]
[trendLine, trendDir] = request.security(syminfo.tickerid, htf, trendConfirmed(), lookahead=barmerge.lookahead_on)
ma = ta.sma(close, 30)[1]
ph = ta.pivothigh(high, pivotBars, pivotBars)
pl = ta.pivotlow(low, pivotBars, pivotBars)
var float pushHigh = na
var float pushLow = na
var int highBar = na
var int lowBar = na
var float zero = na
var float span = na
var int side = 0
var int armed = na
var bool consumed = false
bool buy = false
bool sell = false
if barstate.isconfirmed
    if not na(ph)
        pushHigh := ph
        highBar := bar_index - pivotBars
    if not na(pl)
        pushLow := pl
        lowBar := bar_index - pivotBars
    bool newLong = not na(pl) and not na(highBar) and highBar < lowBar and pushHigh > pl and pl < ma[pivotBars] and trendDir < 0
    bool newShort = not na(ph) and not na(lowBar) and lowBar < highBar and ph > pushLow and ph > ma[pivotBars] and trendDir > 0
    if newLong or newShort
        side := newLong ? 1 : -1
        zero := newLong ? pl : ph
        span := pushHigh - pushLow
        armed := bar_index
        consumed := false
    if side != 0
        bool invalid = bar_index - armed > life or (side == 1 ? low < zero or trendDir > 0 : high > zero or trendDir < 0)
        if invalid
            side := 0
    if side != 0 and not consumed
        float trigger = zero + side * span * 0.382
        buy := side == 1 and close > trigger
        sell := side == -1 and close < trigger
        if buy or sell
            consumed := true
triggerLevel = side != 0 ? zero + side * span * 0.382 : na
targetLevel = side != 0 ? zero + side * span * 1.618 : na
plot(ma, "30 SMA delayed one chart bar", color=color.yellow)
plot(trendLine, "Confirmed HTF Supertrend PROXY", color=trendDir < 0 ? color.green : color.red)
plot(side != 0 ? zero : na, "Frozen zero reference", color=color.red, style=plot.style_linebr)
plot(triggerLevel, "38.2% recovery reference", color=color.lime, style=plot.style_linebr)
plot(targetLevel, "161.8% pullback projection", color=color.gray, style=plot.style_linebr)
plotshape(buy, title="Confirmed recovery above trigger", style=shape.triangleup, location=location.belowbar, color=color.lime)
plotshape(sell, title="Confirmed recovery below trigger", style=shape.triangledown, location=location.abovebar, color=color.red)
alertcondition(buy, "Bullish recovery", "CC: confirmed pullback recovery on {{ticker}} {{interval}}.")
alertcondition(sell, "Bearish recovery", "CC: confirmed pullback recovery on {{ticker}} {{interval}}.")
var table status = table.new(position.top_right, 1, 2, bgcolor=color.new(color.black, 15))
if barstate.islast
    table.cell(status, 0, 0, side == 0 ? "Waiting for confirmed pullback anchors" : consumed ? "Recovery observed; references frozen" : "Waiting for recovery close", text_color=color.white)
    table.cell(status, 0, 1, "Pivot confirmation delay: " + str.tostring(pivotBars) + " bars", text_color=color.white)

What This Indicator Shows

The original proxy pairs confirmed chart pivots with a delayed 30 SMA and a previous completed hourly Supertrend. A bullish pullback low must occur after a known push high and below the delayed SMA; a bearish setup mirrors it. The grid freezes zero, 38.2%, and 161.8% from that span. The first qualifying close after anchor availability is marked once.

A newer qualifying pullback replaces the waiting grid. A breach of zero, opposite confirmed trend, or forty-bar expiry clears it. The pivot delay defaults to three bars on each side. These timing and state rules are ours; there is no backdated entry marker.

What This Indicator Does Not Show

It does not reproduce modified Black Flag FTS, discretionary push selection, intrabar entries, or the exact source screenshots. The grid is not an order bracket and the 161.8% line is not a performance result. Use a chart below the selected trend timeframe; the illustrated pairing is fifteen minutes and one hour.

Setup, Alerts, and Validation

  1. Add: paste the complete script into Pine Editor, save, and add it to a standard-candlestick chart.
  2. Configure: follow this guide’s timeframe, direction, and session requirements. Load enough history for the longest lookback and pivot delay.
  3. Inspect: check the reference plots and status table. A strict rule can correctly produce no signals; a visible line or status helps distinguish that from missing data.
  4. Alert: select the relevant named condition and Once Per Bar Close. Recreate alerts after changing inputs.

Validation status: formulas, historical references, state rules, and HTML/code preservation were reviewed statically. The indicator has not been compiled or chart-tested in TradingView here. Live alerts, browser copying, and responsive rendering have not been tested. No simulated orders, fills, or measured performance results are claimed.

Practice and Research

  1. Anchor audit: mark when the push and pullback become known, then compare the available recovery price with the ideal earlier line crossing.
  2. Timing sensitivity: compare pivot confirmation of two, three, and five bars without backdating signals. Record missed opportunities and changed reward/risk.
  3. Permission check: compare the same candidate set under the source’s original tool and this labeled proxy, without treating matching parameter numbers as matching algorithms.

Check Your Understanding

Is the 38.2% line a conventional 38.2% pullback from an original impulse high? Not here; it is a recovery level measured upward from the completed pullback low.

Does an earlier line touch guarantee an entry? No. The anchors may not yet have been available.

What if the line never breaks? Keep it as a candidate without a trade.

Final Takeaway

Make the measured span, anchor availability, and entry price explicit. Fibonacci supplies coordinates; the trend, trigger, and execution plan determine whether those coordinates describe a usable opportunity.

Risk Disclosure

This guide is for education and research, not personalized financial advice or a recommendation to trade any security or contract. Trading can cause substantial losses, and leveraged products may produce losses beyond the amount initially committed. Short selling can involve unlimited loss. Stops and displayed prices do not guarantee execution; gaps, spread, slippage, fees, liquidity, halts, and platform interruptions can materially affect outcomes. Historical charts, indicators, hypothetical calculations, and creator-reported results do not establish future performance. Understand the instrument, execution assumptions, and total exposure, practice before risking capital, and use only risk capital you can afford to lose.

CandleChasers provides independent educational analysis and is not affiliated with, endorsed by, or sponsored by the source creator or any platform mentioned.

As an Amazon Associate I earn from qualifying purchases.