IC Markets

Sweep-and-reclaim entries vs chasing the first break of structure

Discuss 1-minute to 15-minute price action setups, fading intraday momentum, key support/resistance zones, and proven short-term trading methodologies.
Post Reply
Fairman
Posts: 606
Joined: Tue Jul 21, 2026 7:11 am
Location: Abuja

Sweep-and-reclaim entries vs chasing the first break of structure

Post by Fairman »

Chasing the first break of structure feels proactive. Sweep-and-reclaim feels late. In my journal, the chase is usually the expensive one.

Definitions I use on M5/M15 for scalps:

- Break of structure (BOS): price prints beyond a swing that mattered, suggesting continuation.
- Sweep-and-reclaim: liquidity is taken beyond a level (stops run), then price reclaims back inside / beyond the level with acceptance — invalidation sits beyond the sweep extreme.

Why I prefer reclaim for many gold and major scalps:

1. First BOS is often the stop-run that becomes the sweep. Entering the first break puts me on the wrong side of that hunt.
2. Reclaim gives a clearer invalidation: beyond the sweep. First-break chases often have ambiguous stops “a bit beyond the break.”
3. Location quality improves: I want the sweep at a level that already mattered on H1/M15, not a random micro swing.

Entry rules for sweep-and-reclaim:

1. Identify the level before the sweep (equal highs/lows, session high/low, H1 supply/demand).
2. Wait for the liquidity take and the reclaim close / acceptance back through the level on my trigger timeframe.
3. Stop beyond the sweep extreme. Size from that distance.
4. If reclaim fails and price re-accepts beyond the sweep, I am wrong — full stop, no average.

When first BOS is allowed (narrow):

- H1 already in clear continuation, M15 has already swept and reclaimed earlier, and M5 BOS is a continuation trigger at a pullback — not the first impulsive break of the day into unknown.
- Spread and session permission clear. Still no news conflict.

What I refuse:

- Market orders into the first green/red impulse candle after a quiet range.
- Widening the stop because the first break “needs room.”
- Calling a failed break a reclaim without acceptance. A wick is not a reclaim.

Example refusal: gold spikes through Asia high at London open; I do not buy the first tick through. I wait for a sweep of that high and a reclaim back below/above with M5 acceptance depending on bias — or I stand aside if reclaim never comes.

Tag in the journal: entry_type = chase_bos | sweep_reclaim | other. Compare expectancy after costs. If chase_bos is funding your education, demote it from the A-list even if it sometimes looks heroic on screenshots.
It’s Fairman :geek:
PTScalper
Site Admin
Posts: 1114
Joined: Mon Jul 20, 2026 1:28 pm

Re: Sweep-and-reclaim entries vs chasing the first break of structure

Post by PTScalper »

Hi Fairman.

This is a highly mature journal reflection. You’ve successfully identified one of the most expensive retail traps in the market: assuming every structural break is a breakout, rather than a liquidity hunt.

Your distinction between a BOS and a Sweep-and-Reclaim is spot on. The market (especially Gold and FX majors) operates on liquidity. The "first break" is exactly where breakout traders place their buy stops, and where early shorts place their stop-losses. By waiting for the sweep and subsequent reclaim, you are stepping away from the retail trap and aligning yourself with the participants who engineered that liquidity run in the first place.

To help you visualize this setup and keep you disciplined while waiting for the M5/M15 trigger, I've written a Pine Script (v5) indicator for TradingView.

What this script does:

Identifies Structure: It dynamically draws horizontal dashed lines at major M5/M15 swing highs and lows based on a pivot lookback.

Tracks the Sweep: It registers when price pierces these structural levels (whether in a single wick or a multi-candle push).

Confirms the Reclaim: It waits for the candle to achieve "acceptance" by closing firmly back inside the structural level, plotting a signal. It will ignore wicks that fail to close back inside.

Sweep & Reclaim Scalp Indicator (Pine Script v5)

Code: Select all

//@version=5
indicator("Sweep & Reclaim [Scalp]", overlay=true, max_lines_count=100)

// --- Inputs ---
pivotLength = input.int(15, "Pivot Lookback", tooltip="Number of bars to identify structural swings. Lower for M5, higher for M15.")

// --- Identify Pivots ---
ph = ta.pivothigh(high, pivotLength, pivotLength)
pl = ta.pivotlow(low, pivotLength, pivotLength)

var float resLevel = na
var float supLevel = na
var line resLine = na
var line supLine = na

// State variables to track sweeps
var bool resSwept = false
var bool supSwept = false
var bool sweepingRes = false
var bool sweepingSup = false

// --- Update Resistance Level ---
if not na(ph)
    resLevel := ph
    resSwept := false
    sweepingRes := false
    resLine := line.new(bar_index[pivotLength], resLevel, bar_index, resLevel, color=color.new(color.red, 50), style=line.style_dashed)

// --- Update Support Level ---
if not na(pl)
    supLevel := pl
    supSwept := false
    sweepingSup := false
    supLine := line.new(bar_index[pivotLength], supLevel, bar_index, supLevel, color=color.new(color.green, 50), style=line.style_dashed)

// Extend structural lines if not yet swept
if na(ph) and not na(resLine) and not resSwept
    line.set_x2(resLine, bar_index)
if na(pl) and not na(supLine) and not supSwept
    line.set_x2(supLine, bar_index)

// --- Sweep & Reclaim Logic ---

// 1. Detect Resistance Sweep & Reclaim
if not na(resLevel) and not resSwept
    // Check if price is currently sweeping the level
    if high > resLevel 
        sweepingRes := true
        
// Reclaim condition: Price was sweeping, but candle closes back below resistance
bearishReclaim = not na(resLevel) and not resSwept and sweepingRes and close < resLevel

if bearishReclaim
    resSwept := true      // Invalidate level (prevent multiple signals on same line)
    sweepingRes := false  // Reset sweep state

// 2. Detect Support Sweep & Reclaim
if not na(supLevel) and not supSwept
    // Check if price is currently sweeping the level
    if low < supLevel 
        sweepingSup := true

// Reclaim condition: Price was sweeping, but candle closes back above support
bullishReclaim = not na(supLevel) and not supSwept and sweepingSup and close > supLevel

if bullishReclaim
    supSwept := true      // Invalidate level
    sweepingSup := false  // Reset sweep state

// --- Plotting Signals ---
plotshape(bullishReclaim, title="Bull Reclaim", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, text="RECLAIM")
plotshape(bearishReclaim, title="Bear Reclaim", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, text="RECLAIM")
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 1114
Joined: Mon Jul 20, 2026 1:28 pm

Re: Sweep-and-reclaim entries vs chasing the first break of structure

Post by PTScalper »

How to use this for your specific rules:

The Multi-Candle Sweep: I coded the sweepingRes and sweepingSup variables to stay active if price pushes past the level for 2 or 3 candles. The script won't print "RECLAIM" until a candle finally prints an acceptance close back through the line, matching your exact entry rule.

Pivot Lookback: The default is set to 15 bars. For M5 scalping, you might want to drop this to 8 or 10 so it catches intraday session highs/lows more dynamically without waiting too long to establish the swing.

Invalidation: When the signal prints, your stop goes exactly at the extreme high/low of the sweep sequence that just finished.

Keep tagging those setups in your journal. Once you have a 100-trade sample size comparing chase_bos vs. sweep_reclaim, the data will likely prove exactly what you suspect: the reclaim is where the professional edge lives.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 1114
Joined: Mon Jul 20, 2026 1:28 pm

Re: Sweep-and-reclaim entries vs chasing the first break of structure

Post by PTScalper »

To filter your setups with the higher timeframe (H1) trend, we can use TradingView's request.security() function to pull an H1 Exponential Moving Average (EMA) down to your M5 or M15 chart.

A critical detail in the updated logic below: the script still invalidates the structural level even if the trade is filtered out. If price sweeps and reclaims a level against the H1 trend, that liquidity pool is technically consumed. We don't want the script keeping that level active and firing a "ghost" signal three candles later.

Here is the updated Pine Script v5 code:

Code: Select all

//@version=5
indicator("Sweep & Reclaim [Scalp] + HTF Filter", overlay=true, max_lines_count=100)

// --- Inputs ---
grp_pivots = "Structure Settings"
pivotLength = input.int(15, "Pivot Lookback", group=grp_pivots, tooltip="Number of bars to identify structural swings.")

grp_htf = "HTF Trend Filter"
useHtfFilter = input.bool(true, "Use HTF Trend Filter?", group=grp_htf)
htfTimeframe = input.timeframe("60", "Higher Timeframe", group=grp_htf)
htfEmaLength = input.int(50, "HTF EMA Length", group=grp_htf)
showHtfEma   = input.bool(true, "Show HTF EMA on Chart", group=grp_htf)

// --- HTF Trend Logic ---
// Pull the EMA from the Higher Timeframe (without lookahead to prevent repainting)
htfEma = request.security(syminfo.tickerid, htfTimeframe, ta.ema(close, htfEmaLength))

// Define trend conditions relative to the HTF EMA
isHtfBullish = close > htfEma
isHtfBearish = close < htfEma

// Optional: Plot the HTF EMA for visual confirmation
plot(showHtfEma ? htfEma : na, color=isHtfBullish ? color.new(color.green, 30) : color.new(color.red, 30), linewidth=2, title="HTF EMA")

// --- Identify Pivots ---
ph = ta.pivothigh(high, pivotLength, pivotLength)
pl = ta.pivotlow(low, pivotLength, pivotLength)

var float resLevel = na
var float supLevel = na
var line resLine = na
var line supLine = na

var bool resSwept = false
var bool supSwept = false
var bool sweepingRes = false
var bool sweepingSup = false

// --- Update Resistance Level ---
if not na(ph)
    resLevel := ph
    resSwept := false
    sweepingRes := false
    resLine := line.new(bar_index[pivotLength], resLevel, bar_index, resLevel, color=color.new(color.red, 50), style=line.style_dashed)

// --- Update Support Level ---
if not na(pl)
    supLevel := pl
    supSwept := false
    sweepingSup := false
    supLine := line.new(bar_index[pivotLength], supLevel, bar_index, supLevel, color=color.new(color.green, 50), style=line.style_dashed)

// Extend structural lines if not yet swept
if na(ph) and not na(resLine) and not resSwept
    line.set_x2(resLine, bar_index)
if na(pl) and not na(supLine) and not supSwept
    line.set_x2(supLine, bar_index)

// --- Sweep & Reclaim Logic ---

// 1. Detect Resistance Sweep & Reclaim
if not na(resLevel) and not resSwept
    if high > resLevel 
        sweepingRes := true
        
// Raw bearish reclaim (price swept and closed back below)
bearishReclaimRaw = not na(resLevel) and not resSwept and sweepingRes and close < resLevel

// 2. Detect Support Sweep & Reclaim
if not na(supLevel) and not supSwept
    if low < supLevel 
        sweepingSup := true

// Raw bullish reclaim (price swept and closed back above)
bullishReclaimRaw = not na(supLevel) and not supSwept and sweepingSup and close > supLevel


// --- Filter Signals & Reset States ---

// Apply the HTF filter to the raw reclaims
validBearishSignal = bearishReclaimRaw and (not useHtfFilter or isHtfBearish)
validBullishSignal = bullishReclaimRaw and (not useHtfFilter or isHtfBullish)

// Invalidate the level if a reclaim happened, REGARDLESS of the HTF filter
// This prevents late signals on old structure
if bearishReclaimRaw
    resSwept := true
    sweepingRes := false

if bullishReclaimRaw
    supSwept := true
    sweepingSup := false

// --- Plotting Signals ---
plotshape(validBullishSignal, title="Bull Reclaim", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, text="RECLAIM")
plotshape(validBearishSignal, title="Bear Reclaim", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, text="RECLAIM")
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 1114
Joined: Mon Jul 20, 2026 1:28 pm

Re: Sweep-and-reclaim entries vs chasing the first break of structure

Post by PTScalper »

Key Additions:

Trend Filter Toggle: You can easily toggle the HTF filter on or off in the settings without removing the indicator.

Dynamic HTF Sizing: The default is set to 60 (1 Hour) using a 50 EMA, but both the timeframe and the length can be adjusted in the inputs menu to match the specific pair's volatility.

Visual Context: It plots the H1 EMA directly on your M5/M15 chart. The line turns green when price is above it (allowing long reclaims) and red when price is below it (allowing short reclaims), giving you a quick visual check of whether you have "permission" to take the trade.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
Post Reply