Skip to content
MT5MT4soonTradingViewsooncTradersoonNinjaTradersoonPythonsoon
IndicatorPrice action & SMCMT5No repaint

Liquidity Sweep

Free MT5 indicator that marks BSL/SSL swing levels and arrows each liquidity sweep. Lab test: 0 of 422 signals repainted on EURUSD M15.

Add to a kit
CompareRequest a variant
Embed
Liquidity Sweep on XAUUSD M15, MT5 chart with default settings: bullish sweep, bearish sweep, bsl / ssl levels
Screenshots from a real MT5 chart · 9 · scroll sideways
Liquidity Sweep inputs window in MetaTrader 5 with the default settings
Liquidity Sweep inputs window in MetaTrader 5 with the default settings
Liquidity Sweep signal on XAUUSD M15, 28 Oct 2026 04:30
Liquidity Sweep signal on XAUUSD M15, 28 Oct 2026 04:30
Liquidity Sweep Bearish Sweep arrow on XAUUSD M15, 27 Oct 2026 17:30
Liquidity Sweep Bearish Sweep arrow on XAUUSD M15, 27 Oct 2026 17:30
Liquidity Sweep signal on XAUUSD M15, 27 Oct 2026 06:30
Liquidity Sweep signal on XAUUSD M15, 27 Oct 2026 06:30
Liquidity Sweep on XAUUSD H4 (another timeframe)
Liquidity Sweep on XAUUSD H4 (another timeframe)
Liquidity Sweep on XAUUSD M5 (another timeframe)
Liquidity Sweep on XAUUSD M5 (another timeframe)
Liquidity Sweep on-chart panel: last signal and status
Liquidity Sweep on-chart panel: last signal and status
Liquidity Sweep on EURUSD M15
Liquidity Sweep on EURUSD M15
Liquidity Sweep zoomed out on XAUUSD M15: several weeks of history
Liquidity Sweep zoomed out on XAUUSD M15: several weeks of history
Test verdictPassed
Repainted
0 / 422
Signals / week
≈ 33.2
Tested on
EURUSD M15
Tested
2026-10-04
Download free · Google DriveFree account needed · sign in with Google in one clickFree — share it freely. Just don’t sell, crack or modify it. Licencev1.00 · 123.3 KB · .ex5
Lab pick — built by the lab, not from a member request. Want something like it? Request a tool

Overview

Liquidity Sweep is a free MT5 indicator that draws buy-side and sell-side liquidity levels (BSL / SSL) at confirmed swing highs and lows on your price chart. It prints an arrow when a closed bar pushes through one of those levels and closes back across it. In the Lab's repaint test on EURUSD M15, 0 of 422 signals changed after they appeared.

It can help you if you trade reversals at obvious highs and lows. It marks those stop-run moments and alerts you to them, so you do not have to find them by eye.

What a liquidity sweep is

A liquidity sweep is a move that runs just past a prior swing high or low, where stop orders tend to sit, and then snaps back. The indicator treats each unswept swing high as buy-side liquidity (BSL) and each unswept swing low as sell-side liquidity (SSL).

What it puts on your chart

  • BSL / SSL lines: one line at each unswept swing high and low. A new swing within MergeToleranceATR x ATR14 of an existing same-side level merges into it and adds a touch, so you see one level instead of a cluster of lines.
  • Bullish Sweep arrow (buffer 0) under a bar that swept an SSL. Bearish Sweep arrow (buffer 1) over a bar that swept a BSL.
  • Sweep labels and grey swept level lines, so you can see past sweeps on history.
  • Signal panel: a status box for the last sweep and the nearest levels. How it works explains how to use it.

How the Lab tested it

The Lab tested version 1.00 on MT5 build 6230 on 2026-10-04. The test used EURUSD M15 from 2026-07-06 to 2026-10-02 with real ticks from Raw Trading Ltd. It logged every arrow as it printed and then checked whether any arrow later moved or vanished.

Result: 0 of 422 signals changed, and the maximum arrow delay was 0 bars. Any arrow you see on history would have shown at that bar's close in live trading. That means you can study past sweeps by eye without being fooled by arrows that were added later.

What the signal numbers mean for you

The Lab also tracked what price did after each arrow:

  • 53.1% of 422 signals reached 1 ATR in the arrow's direction before 1 ATR against it. That is slightly better than a coin flip. Use the arrow with a filter, not on its own.
  • The median time to the 1 ATR mark was 2 bars, which is about 30 minutes on M15. The trade is usually decided quickly, so where you put your stop and how you handle the first bars matter most.
  • 1.4% reached neither mark within 20 bars (2.3% of bullish arrows, 0.5% of bearish ones). A sweep that just stalls is rare.
  • 33.2 signals a week on one pair: 17.5 bullish and 15.7 bearish. That is too many to take all of them.

By direction, Bearish Sweeps did slightly better than Bullish Sweeps in this sample:

Lab: share of arrows that moved 1 ATR their way before 1 ATR against (EURUSD M15)Illustration
Bullish Sweep (222 signals)
51.8%
Bearish Sweep (200 signals)
54.5%

Scale zoomed in to show the difference (bars do not start at zero).

How it works

  1. 1
    Finds swing highs and lows by the set strength and stores them as levels, merging near ones by ATR tolerance.Merge if distance <= MergeToleranceATR x ATR(14)Inputs: SwingStrength, MergeToleranceATR, MaxLevelsPerSide
  2. 2
    A sweep is a bar poking past a level by a minimum depth but closing back on the original side.High > Level + MinPenetrationATR x ATR and Close <= LevelInputs: MinPenetrationATR
  3. 3
    A swept high gives a bearish signal, a swept low a bullish one. Depth is the poke divided by ATR.Depth = (High - Level) / ATR
  4. 4
    Optionally waits one bar and requires the next close to continue in the signal direction before confirming.Inputs: ConfirmFollowThrough
  5. 5
    Grades the sweep and checks confluence with levels from a higher timeframe within a lookback.Confluence if HTF level within HTFConfluenceATR x ATRInputs: UseHigherTF, HigherTFMode, HigherTFManual, HTFConfluenceATR, HTFConfluenceLookbackBars

Specifications

Platform
MetaTrader 5
Version
1.00
Type
Indicator
Window
Main chart
Draws
2 arrows, 2 zones, 1 panel
Alerts
popup, push, sound
Repaints
No (0 of 422 signals changed)
Inputs
18
Tested on
MT5 build 6230 · 2026-10-04

Repaint test

Signals logged live
422
Changed after close
0
Arrow delay
None

No repaint detected. In a 6 Jul 2026 – 2 Oct 2026 test on EURUSD M15 (Raw Trading Ltd real ticks), 422 signals were logged at bar close and re-read at the end of the test: 0 changed. Arrows print on the bar that closes the signal, with no delay.

IndicatorFree — tested 2026-10-04 · MT5 build 6230 · Raw Trading Ltd real ticks. Results come from historical data, not live trading, and do not guarantee future results.

Signal statistics

Price moved 1×ATR in the signal direction first53.1%
Price moved 1×ATR against it first45.5%
Neither within 20 bars1.4%

Over 6 Jul 2026 – 2 Oct 2026 on EURUSD M15, the indicator printed 422 arrows. After 53.1% of them, price moved 1×ATR(14) in the arrow's direction before moving 1×ATR against it (median 2 bars). 1.4% reached neither level within 20 bars.

This measures price movement after the arrow, not a trading result. It includes no spread, commission, stop loss or position sizing.

What it draws

  • Arrows (Bullish Sweep) from buffer 0, drawn on the closed bar.
  • Arrows (Bearish Sweep) from buffer 1, drawn on the closed bar.
  • Rectangles (BSL / SSL Levels) drawn as chart objects, not buffers — they are not readable by iCustom() in an EA.
  • Rectangles (Sweep Label) drawn as chart objects, not buffers — they are not readable by iCustom() in an EA.
  • An on-chart panel (Signal); values shown in the panel are not exposed as buffers.

Inputs

InputDefaultWhat it does
SwingStrength3Bars on each side (N) that must not exceed a swing high / undercut a swing low (1-10), also the confirmation lag
MergeToleranceATR0.15A new swing within this distance (x ATR14) of an unswept same-side level merges into it and adds a touch (0-1)
MaxLevelsPerSide6Unswept levels kept per side; the oldest is removed when exceeded (2-20)
MinPenetrationATR0.03Minimum distance (x ATR14) the wick must pass the level; the bar must also close back across it (0-0.5)
ConfirmFollowThroughfalsePrint the sweep only after the next bar closes further in the reversal direction (one bar extra delay)
UseHigherTFtrueTag sweeps that happen near a same-side swing level of a higher timeframe
HigherTFModeAutoAuto picks the higher timeframe from the chart timeframe; Manual uses HigherTFManual
HigherTFManualH4Higher timeframe used in Manual mode (must be above the chart timeframe)
HTFConfluenceATR0.5A swept level within this distance (x ATR14) of a same-side higher timeframe level counts as confluence (0.1-2)
HTFConfluenceLookbackBars20Higher timeframe levels swept within this many higher timeframe bars still count (5-100)
MaxSweepsShown80Sweep labels and grey swept / broken level lines kept on the chart; the oldest are removed (10-300)
AlertPopuptruePopup alert when a new sweep is printed
AlertPushfalsePush notification when a new sweep is printed
AlertSoundfalsePlay a sound when a new sweep is printed
ShowDashboardtrueShow the status panel (press P on the chart to bring it back after hiding)
PanelScale1Panel size multiplier (DPI is applied automatically)
ThemeDarkChart color theme
RestoreThemetrueRestore the original chart colors when the indicator is removed

How to read it

Install it in one line

Copy the .ex5 file (123.3 KB) into MQL5/Indicators (File > Open Data Folder), refresh the Navigator and drag Liquidity Sweep onto a chart. It draws on the price chart, not in a separate window.

How a Bullish Sweep forms

A swing low becomes an SSL line once SwingStrength bars on each side have stayed above it. Later, a bar's wick drops below that line by more than MinPenetrationATR x ATR14, and the bar closes at or above the line. When that bar closes, the Bullish Sweep arrow prints under it. A Bearish Sweep is the mirror image at a BSL line: the wick goes above, and the bar closes at or below the line.

Illustration of a typical signal: a Bullish Sweep of an SSL levelIllustration
BSL (swing high)1.17150SSL (swing low)1.16900Bullish Sweep

Sweep or break: the most common misread

A common mistake is to treat any poke through a level as a sweep. The arrow needs the close back across the level. If the bar closes beyond the level, price has accepted the break, so there is no arrow, and fading that move is a different trade.

While a bar is still forming, its wick can look like a sweep and then close beyond the level. That is why the arrow only prints on a closed bar.

Sweep versus break at the same SSL level
Illustration: only the close back across the level turns a poke into a sweep.

The inputs that change the signals

InputDefaultRangeWhat changing it does
MinPenetrationATR0.030–0.5Higher means shallow pokes no longer count, so you get fewer arrows
SwingStrength31–10Higher means fewer, more important levels, but each level appears later, because this is also the confirmation lag in bars
ConfirmFollowThroughfalseon / offOn means the arrow waits for the next bar to close further in the reversal direction: one bar later and fewer arrows
MergeToleranceATR0.150–1Higher merges nearby swings into one level with more touches
MaxLevelsPerSide62–20How many unswept levels stay on each side before the oldest is removed
HTFConfluenceATR0.50.1–2How close a swept level must be to a same-side higher-timeframe level to get the HTF tag

The higher timeframe is picked automatically from your chart timeframe (HigherTFMode Auto). Switch to Manual to use HigherTFManual (default H4), which must be above your chart timeframe. A higher-timeframe level that was swept within the last HTFConfluenceLookbackBars (default 20, range 5–100) higher-timeframe bars still counts.

Reading the Signal panel

The panel shows:

  • the last sweep: its direction, the level it swept, its grade, its HTF tag and how many bars ago it happened
  • how many BSL and SSL levels are active
  • the nearest BSL and SSL, with their distance in ATR
  • HTF confluence
  • the follow-through rate of recent sweeps
  • how many sweeps it has found

Two lines matter most. The nearest-level distance tells you how much room the trade has. The follow-through rate tells you whether sweeps on this chart have been working lately.

Alerts

An alert fires when a new sweep prints, which is at the bar's close, or one bar later with ConfirmFollowThrough on. Popup alerts (AlertPopup) are on by default. Push notifications (AlertPush) and sound (AlertSound) are off until you turn them on.

A decision rule for each arrow

Take a Bullish Sweep only if all of these are true:

  1. The panel shows the HTF tag on the sweep.
  2. The nearest BSL is at least 1 ATR above. That gives room for the 1 ATR move the Lab measured.
  3. You can place your stop beyond the sweep bar's wick.

Skip the trade if the next bar closes back below the swept level. For a Bearish Sweep, flip each step: HTF tag, nearest SSL at least 1 ATR below, stop above the wick.

This rule is a starting idea. The Lab has not tested it.

Installation

  1. 1Download LiquiditySweepReversal.ex5 from the button above (Google Drive).
  2. 2In MetaTrader 5: File → Open Data Folder → MQL5 → Indicators. Copy LiquiditySweepReversal.ex5 there.
  3. 3Restart MT5 or right-click Indicators in Navigator → Refresh.
  4. 4Drag Liquidity Sweep onto a chart. For push alerts, enable "Allow push notifications" under Tools → Options → Notifications.
  5. Tested on MT5 build 6230.

Key terms and guides

Smart money concepts
Smart money concepts (SMC) is a price action method that tries to follow large players by reading liquidity, breaks of market structure and order blocks. You trade from the zones where those players are thought to have placed orders.
Liquidity
Liquidity is how easily you can buy or sell without moving the price. On a chart, traders also use the word for the clusters of stop-loss and pending orders that sit above swing highs and below swing lows.
Swing high
A swing high is a candle whose high is above the highs of the candles on both sides of it. It marks a peak where buyers stopped pushing and price turned lower, at least for a while.
Indicator buffer
An indicator buffer is the list of numbers an indicator stores, one value per candle, for each line, histogram or arrow it draws. Expert Advisors and alerts read these buffers to get the indicator's values.
Swing low
A swing low is a candle whose low sits below the lows of the candles on both sides of it. It marks a turning point where selling stopped and price bounced, and traders use it as a floor for reading trend and placing stops.
Price Swing
A price swing is one move in a single direction, from a turning low to a turning high or the reverse. You measure it in pips from one swing point to the next.

More on this subject: Price action & SMC guide, terms and tools

User reviews

No reviews yet. Members who download the tool can review it here.

Write a review

Sign in and download the tool to review it.

Build a checklist with it

Liquidity Sweep does one job on the chart: zone / level. Put it on the same chart as the tools below and the IndicatorFree panels merge into one checklist card, ordered trend, zone, signal, risk.

  • Trend / contextEMA Trend WallAdds the trend side: which way the market leans before you act on Liquidity Sweep.
  • Entry signalEngulfing Pattern FinderAdds the entry signal: the moment to act once Liquidity Sweep has set the scene.

The Lab has not tested these combinations. Each tool is tested on its own; the card only lines up what each one says. Free members get 2 new tools a day. If one has to wait until tomorrow, install BlackBox to raise the limit to 5 a day (20 on a live account).

FAQ

Does Liquidity Sweep repaint?

No repaint detected. In a 6 Jul 2026 – 2 Oct 2026 test on EURUSD M15 (Raw Trading Ltd real ticks), 422 signals were logged at bar close and re-read at the end of the test: 0 changed. Arrows print on the bar that closes the signal, with no delay.

Can I use Liquidity Sweep in an EA?

Yes. Read buffer 0 (Bullish Sweep) with iCustom() on bar 1 — the last closed bar.

Why can’t my EA read the zones?

Zones and the panel are chart objects, not indicator buffers, so iCustom() does not return them.

How do I get alerts on my phone?

Enter your MetaQuotes ID under Tools → Options → Notifications, tick "Enable push notifications", and keep the push alert input on.

Does it work on other pairs?

Tested on EURUSD only; other symbols not tested.

Which pairs and timeframes can I use Liquidity Sweep on?

It runs on any MT5 chart, and its distances are measured in ATR14, so they scale with each symbol's volatility. The Lab only measured EURUSD M15. Watch the panel's follow-through rate on your own chart before you rely on it elsewhere.

Why did an old level disappear from my chart?

Each side keeps only MaxLevelsPerSide unswept levels (default 6), and the oldest is removed first. Sweep labels and grey swept lines are capped by MaxSweepsShown (default 80).

My chart colors changed after I added it. How do I get them back?

The indicator applies its own Theme (default Dark). With RestoreTheme on (the default), your original chart colors come back when you remove the indicator.

I hid the panel. How do I bring it back?

Click the chart and press P. You can also set ShowDashboard to true, and resize the panel with PanelScale.

Can it send sweep alerts to my phone?

Yes. Set AlertPush to true, and each new sweep is sent as a push notification to the MT5 mobile app linked to your terminal.

Changelog

  • 1.00Initial release: liquidity levels (BSL/SSL) from confirmed N-bar fractal swing highs/lows, merged by an ATR tolerance into pools with a touch count. · 2026-10-05

Final verdict

Lab verdict: dependable sweep arrows with a thin edge

Liquidity Sweep does one job cleanly. It marks swing-based liquidity levels and flags the bar that sweeps one and closes back across it. Because the arrows did not repaint, you can trust what you see on history and judge the tool on your own charts.

The edge after the arrow is small, though. Treat it as an event marker that tells you where to look, not as an entry system.

What it cannot do

  • It does not see real stop orders or the order book. Its levels are estimates built from swing highs and lows.
  • It draws no entry, stop loss or take profit. You plan the trade yourself.
  • The Lab measured one pair on one timeframe over about three months. Other symbols and timeframes are untested.
  • Reaching 1 ATR first measures direction, not profit. It is not a strategy backtest.
  • In a strong one-way move, price can take out level after level. Repeated arrows against that move are the ones to doubt.

Skip it if

  • you want a complete system with targets drawn for you
  • you trade without a stop beyond the wick
  • you will not filter the signals: at the Lab's signal count on one pair, taking every arrow means overtrading

Settings to start with

Start with the defaults so you can compare against what the Lab saw. If you get too many arrows, the first two inputs to try are MinPenetrationATR 0.1 or ConfirmFollowThrough on. On M5, you could try SwingStrength 5 for fewer, more important levels.

The Lab has not tested any of these values. Compare each one with the default on your own chart history before you rely on it.

A pairing to try

A sweep tells you that liquidity was taken, but not where price may turn. Order Block Locator can show whether the sweep happened into an order block zone, which gives the arrow a reason to hold. This is an idea to try: the Lab has not tested the pair.

More price action & smc tools