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 component | Setting described | Job |
|---|---|---|
| Chart SMA | 30 periods, close, visual offset of one bar | Help identify the pullback area |
| Swing Arm / Black Flag FTS | Hourly reference, modified trail, ATR period 5 and factor 5 | Permission to search in one direction |
| Fib measurement | Zero, 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.
| Step | Calculation or observation | Meaning |
|---|---|---|
| Span | 110.00 − 100.00 = 10.00 | The distance being measured is the pullback. |
| Recovery threshold | 100.00 + 0.382 × 10.00 = 103.82 | A reference to cross, not a guaranteed fill. |
| Projection | 100.00 + 1.618 × 10.00 = 116.18 | A hypothetical objective, not promised future movement. |
| At the exact threshold | Risk 3.82; reward 12.36; ratio ≈ 3.24R | Assumes a 100.00 protective reference and no costs. |
| At a later fill of 104.40 | Risk 4.40; reward 11.78; ratio ≈ 2.68R | The 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
- Direction: confirm the permitted side using a defined, timely trend reference.
- Pullback: identify the push extreme and later reversal extreme.
- Availability: record when both anchors became known.
- Trigger: evaluate the recovery only after that availability point.
- Economics: calculate room and risk from the proposed or actual fill.
- 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
- Add: paste the complete script into Pine Editor, save, and add it to a standard-candlestick chart.
- Configure: follow this guide’s timeframe, direction, and session requirements. Load enough history for the longest lookback and pivot delay.
- 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.
- 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
- Anchor audit: mark when the push and pullback become known, then compare the available recovery price with the ideal earlier line crossing.
- Timing sensitivity: compare pivot confirmation of two, three, and five bars without backdating signals. Record missed opportunities and changed reward/risk.
- 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.