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.

- Repainted
- 0 / 422
- Signals / week
- ≈ 33.2
- Tested on
- EURUSD M15
- Tested
- 2026-10-04
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:
Scale zoomed in to show the difference (bars do not start at zero).
How it works
- 1Finds 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 - 2A 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 - 3A swept high gives a bearish signal, a swept low a bullish one. Depth is the poke divided by ATR.
Depth = (High - Level) / ATR - 4Optionally waits one bar and requires the next close to continue in the signal direction before confirming.Inputs: ConfirmFollowThrough
- 5Grades 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
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
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
| Input | Default | What it does |
|---|---|---|
| SwingStrength | 3 | Bars on each side (N) that must not exceed a swing high / undercut a swing low (1-10), also the confirmation lag |
| MergeToleranceATR | 0.15 | A new swing within this distance (x ATR14) of an unswept same-side level merges into it and adds a touch (0-1) |
| MaxLevelsPerSide | 6 | Unswept levels kept per side; the oldest is removed when exceeded (2-20) |
| MinPenetrationATR | 0.03 | Minimum distance (x ATR14) the wick must pass the level; the bar must also close back across it (0-0.5) |
| ConfirmFollowThrough | false | Print the sweep only after the next bar closes further in the reversal direction (one bar extra delay) |
| UseHigherTF | true | Tag sweeps that happen near a same-side swing level of a higher timeframe |
| HigherTFMode | Auto | Auto picks the higher timeframe from the chart timeframe; Manual uses HigherTFManual |
| HigherTFManual | H4 | Higher timeframe used in Manual mode (must be above the chart timeframe) |
| HTFConfluenceATR | 0.5 | A swept level within this distance (x ATR14) of a same-side higher timeframe level counts as confluence (0.1-2) |
| HTFConfluenceLookbackBars | 20 | Higher timeframe levels swept within this many higher timeframe bars still count (5-100) |
| MaxSweepsShown | 80 | Sweep labels and grey swept / broken level lines kept on the chart; the oldest are removed (10-300) |
| AlertPopup | true | Popup alert when a new sweep is printed |
| AlertPush | false | Push notification when a new sweep is printed |
| AlertSound | false | Play a sound when a new sweep is printed |
| ShowDashboard | true | Show the status panel (press P on the chart to bring it back after hiding) |
| PanelScale | 1 | Panel size multiplier (DPI is applied automatically) |
| Theme | Dark | Chart color theme |
| RestoreTheme | true | Restore 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.
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.
The inputs that change the signals
| Input | Default | Range | What changing it does |
|---|---|---|---|
| MinPenetrationATR | 0.03 | 0–0.5 | Higher means shallow pokes no longer count, so you get fewer arrows |
| SwingStrength | 3 | 1–10 | Higher means fewer, more important levels, but each level appears later, because this is also the confirmation lag in bars |
| ConfirmFollowThrough | false | on / off | On means the arrow waits for the next bar to close further in the reversal direction: one bar later and fewer arrows |
| MergeToleranceATR | 0.15 | 0–1 | Higher merges nearby swings into one level with more touches |
| MaxLevelsPerSide | 6 | 2–20 | How many unswept levels stay on each side before the oldest is removed |
| HTFConfluenceATR | 0.5 | 0.1–2 | How 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:
- The panel shows the HTF tag on the sweep.
- The nearest BSL is at least 1 ATR above. That gives room for the 1 ATR move the Lab measured.
- 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
- 1Download LiquiditySweepReversal.ex5 from the button above (Google Drive).
- 2In MetaTrader 5: File → Open Data Folder → MQL5 → Indicators. Copy LiquiditySweepReversal.ex5 there.
- 3Restart MT5 or right-click Indicators in Navigator → Refresh.
- 4Drag Liquidity Sweep onto a chart. For push alerts, enable "Allow push notifications" under Tools → Options → Notifications.
- 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.
- Guide: What Is a Fair Value Gap in Forex? How to Spot and Trade One
- Guide: How to Read Candlestick Charts: Bodies, Wicks and Shapes Explained
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.
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.




















