What Are Liquidity Sweeps and Why They Matter

Liquidity sweep on a NinjaTrader chart where price wicks above a swing high and closes back inside

You put the stop two ticks above the swing high. Price traded three ticks through it, filled you out, and reversed inside the next two bars. Without you.

Every trader has that screenshot. Most people draw one of two conclusions from it.

Camp one: smart money hunted your stop. Somebody with size saw where you were and went to get you. Camp two: coincidence and confirmation bias. You remember the times it happened and forget the times it did not.

Both camps are wrong, and the reason is more useful than either explanation. Nobody has to hunt your stop, because you told everyone where it was the moment you placed it by the same rule everyone else uses. Stop orders cluster. That clustering is measurable, it has been documented in central bank research, and it explains the price behaviour without requiring anyone to target you personally.

This article covers what a liquidity sweep is, what the research actually shows about stop clustering, how to separate a sweep from a real breakout, and the five settings that decide whether your chart calls something a sweep at all.

What a liquidity sweep is

A liquidity sweep is price moving beyond a clearly defined swing high or swing low, triggering the resting orders sitting there, and then failing to hold above or below that level.

The definitional split in Smart Money Concepts terminology, per CrossTrade’s price action guide: buy-side liquidity is “stops above swing highs (would trigger as buy orders if hit)”, and sell-side liquidity is “stops below swing lows (sell orders if hit)”.

The naming trips people up. Buy-side liquidity sits above the highs because the orders resting there are buy orders. They are stops on short positions and breakout entries. When price reaches them, they execute as market buys. That is the liquidity a seller needs.

Buy-side liquidity above swing highs and sell-side liquidity below swing lows

The same guide describes the mechanical shape: a sweep shows “a long wick in the swept direction and a small body” that “closes back below (above) the swept level” within roughly one to three bars, while a genuine breakout continues through the level instead of reversing.

That is the pattern. The interesting part is why the orders are there in the first place.

What the research shows about where stops sit

This is where the topic stops being folklore.

Carol Osler’s work for the Federal Reserve Bank of New York examined a large sample of real currency orders, and the clustering is not subtle.

From New York Fed Staff Report No. 125, on where stop-loss buy orders are placed relative to round numbers: “a total of 7.4 percent of all stop-loss buy orders are placed at rates ending between 90 and 99, inclusive; in contrast, almost twice as many stop-loss buy orders, 14.4 percent, are placed at rates ending between 01 and 10, inclusive.”

Stop-loss buy orders cluster just above round numbers, 14.4 percent versus 7.4 percent

Almost twice as many, just past the round number instead of just short of it. The same report notes the asymmetry runs the other way for stop-loss sells, and that take-profit orders behave differently: “9.3 percent of take-profit orders are executed exactly at 00, while the corresponding percent for stop-loss orders is only 4.4.”

Take-profits sit on the level. Stops sit just past it. That single asymmetry is the whole architecture of a sweep.

The follow-up work, New York Fed Staff Report No. 150, measured what happens when price reaches those clusters. The summary of the clustering: “executed stop-loss sell orders cluster just below round numbers; stop-loss buy orders cluster just above round numbers.”

And the price effect: “dollar-mark moves an average 0.061 percent during the 15 minutes after crossing a round number, but only 0.054 percent after crossing an arbitrary number.”

That gap is small in absolute terms and statistically solid. The same report finds the effect persists: “the average exchange-rate movement upon crossing a round number remains statistically significant for at least two hours.”

Market participants told the researchers that “large, noticeable cascades happen at most once per week, on average.” Not four times per session. Hold on to that.

The futures caveat, stated plainly

Osler’s data is interbank currency orders. Our indicator runs on NinjaTrader 8, where most users trade futures. Different market, different participants, different order handling. Do not port the percentages across.

What exists on the futures side is a CFTC study of stop orders in select futures markets, published in 2017. Two findings are relevant. On timing: “stop orders tend to cluster at the beginning and end of the day.” On the relationship with volatility: “trades involving stop orders are found to be highly correlated with intraday price volatility”, and “as daily price volatility increases, so does the percentage of trades executed by stop order.”

That is a weaker claim than the FX research supports, and it is the honest one. Stops cluster in futures too, and their execution concentrates in exactly the conditions where sweeps are alleged to happen. The rest is inference.

One more thing about liquidity that breaks most sweep analysis

Traders look at the depth of market ladder, see thin size, and conclude there is no liquidity at a level.

CME Group’s own analysis argues against reading it that way. Their 2025 piece on liquidity measurement states that “a decrease in this metric is an expected response to increased risk during volatile episodes, relying solely on it can lead to an incomplete assessment.”

Their example: during early April 2025, order book depth in E-mini S&P 500 futures fell 68 percent while trading volume ran more than 99 percent above average. Thin book, enormous volume, at the same time.

The conclusion CME draws is the one that matters here: “the fundamental definition of a liquid market is one where a large volume of transactions can be executed without substantial impact on the price.”

The visible book is not the liquidity. Resting stop orders are not visible in the book at all, because they are not orders until they trigger. That is precisely why they are useful to someone who needs size filled. And it is why staring at the ladder will not tell you where a sweep is likely to form.

How to read a liquidity sweep, in order

Step 1. Define the swing before you look for the sweep

A sweep is defined relative to a swing high or low. Change how many bars confirm a swing, and you change every sweep on the chart.

Our NinjaTrader Liquidity Sweeps Indicator exposes this as Swing Strength, which controls how many bars on each side must confirm a swing high or low. Low strength gives you dozens of swings and dozens of meaningless penetrations. High strength gives you three swings on the session and misses most of what happened. This is the first setting, and it is the one traders skip.

Step 2. Measure the penetration, do not eyeball it

Price ticking one tick past a swing high is not a sweep. It is the spread.

The threshold has to be explicit. In our tool this is the Minimum Sweep Distance parameter, configurable in ticks or percentages, which defines the minimum distance price must move beyond a swing high or swing low for a sweep to be considered valid, and removes minor spikes and noise. Set it once. Write it down.

Step 3. Test for acceptance, and pick which failure you mean

Two different behaviours both get called a sweep, and they need different logic.

Wick-based: price briefly trades beyond the swing level, triggers the resting orders, and returns into the prior range inside the same bar or the next one. Sharp rejection, failed breakout.

Break-and-retest: price moves beyond the level and holds there for a while, then fails to sustain acceptance and comes back through the level within a defined number of bars. Slower. Uglier on the chart. Easy to miss if you only look for long wicks.

Wick-based liquidity sweep compared with a break-and-retest sweep

Combined logic detects both. The parameter that governs the second type is Retest Max Bars, which sets how long the tool waits for the return before it stops calling it a sweep. Without that bar limit, everything eventually becomes a sweep. Price returns to every level given enough time.

Step 4. Define what mitigation means

A sweep leaves a zone behind. The next question is what counts as price interacting with it.

There is no universal answer, so the definition has to be a setting. Our indicator offers four: Touch (first entry into the zone using high or low), Full Fill (price fully passes through using high and low), Body Close Inside (the candle close occurs within the zone), and % Fill (a specified portion of the zone is filled).

Body Close Inside is the strictest. Touch is the loosest. Traders who run Touch and then complain the zones are unreliable have chosen the loosest definition available and are surprised it triggers often.

There is also a Skip Immediate Mitigation (Bars) parameter, which ignores zone interactions in the first N bars after the sweep. That one exists because the bar right after a sweep frequently pokes back into its own zone, and counting that as mitigation destroys the whole read.

NinjaTrader Liquidity Sweeps Indicator settings with mitigation mode and minimum sweep distance

Step 5. Read the sweep in context, never alone

A sweep on its own is a detected event. It says liquidity above or below a level was taken and not held. It does not say direction.

The context that gives it meaning comes from two places. Market structure: a sweep followed by a break of structure in the opposite direction is a different situation from a sweep followed by continuation. The NinjaTrader Market Structure (BOS & CHOCH) Indicator marks the structural side of that.

Order flow at the level: whether the aggression into the swept level was absorbed or simply exhausted itself is a question about volume at price, not about the wick. The NinjaTrader FootPrint OrderFlow Indicator is where that gets checked.

Liquidity sweep followed by a break of structure marked on the same NinjaTrader chart

Also relevant: the indicator applies Swing Expiration, which limits how many bars can pass between a swing forming and the sweep event. A swing high from 400 bars ago being taken today is not the same event as one from 20 bars ago, and treating them identically is a common source of bad zones.

Sweep, breakout, or noise: the matrix

What you observeLikely readingWhat it does not meanWhat invalidates it
Long wick past the swing, small body, close back inside within 1-3 barsWick-based sweepThe move reverses from hereNext bars accept above the level
Break past the level, several bars of acceptance, then return through itBreak-and-retest sweepThe breakout was fake from the startReturn happens outside the retest bar limit
Penetration smaller than your distance filterNoise or spreadA sweep with a small reactionNothing; it was never a sweep
Price closes and holds beyond the level with rising volumeGenuine breakoutLiquidity was not takenRapid return through the level
Sweep, then break of structure the other waySweep followed by structural shiftA directional condition on its ownStructure break fails and prior structure resumes
Sweep zone touched one bar after the sweepPremature interactionThe zone is mitigatedNothing; this is what Skip Immediate Mitigation exists for
Four sweeps marked in one sessionYour settings are too looseFour institutional eventsCompare against the research: the dramatic version is rare

The part nobody says out loud

Here is the uncomfortable synthesis of everything above. Nobody needs to hunt you. The clustering does the work.

Stops end up just past obvious levels because traders place them by a shared rule. Put it past the high. Give it a little room. That rule is not secret, and it does not need to be, because the aggregate result is what matters. A trader who needs to fill significant size has to find a counterparty. The only reliable place a counterparty exists in size is where the resting orders are. That is not a conspiracy. It is the only way the order gets filled at all.

Which reframes the whole topic. A liquidity sweep is not evidence that someone came for you. It is evidence that a level held enough resting orders to be worth reaching, and that the move did not survive past them.

And then there is the frequency problem. The research quoted above puts the dramatic cascades at roughly once a week. Most charts running default sweep detection will mark several per session. Both cannot be right.

The difference is definitional, not observational. What one trader calls a sweep, another calls a spread. What one platform marks as mitigated, another calls a premature touch. Change swing strength, change minimum distance, change the retest window, change the mitigation rule, and the same chart produces a completely different set of events.

So the real problem is not identifying liquidity sweeps. It is fixing a definition and holding it constant long enough that what you observed last month is comparable to what you observe today. That is a tooling problem, and it is what the indicator was built around.

How we approached it in NinjaTrader 8

The NinjaTrader Liquidity Sweeps Indicator detects confirmed liquidity sweeps around swing highs and lows, where price moves beyond key levels and fails to gain acceptance. It marks sweep events and zones on the chart, and supports three detection modes with configurable mitigation rules.

Every judgement call described in Steps 1 through 5 is exposed as a parameter rather than hidden in the logic:

Three detection modes Wick-Based, Break-and-Retest, or Combined.
Swing Strength How many bars on each side confirm a swing point.
Minimum Sweep Distance In ticks or percentages, to filter spikes and noise.
Retest Max Bars The window for a return in Break-and-Retest and Combined modes.
Swing & zone expiration Caps how long a swing or an unmitigated sweep zone stays relevant on the chart.
Four mitigation modes Touch, Full Fill, Body Close Inside, or % Fill — plus Skip Immediate Mitigation.
Configurable alerts For confirmed sweep events and for the first valid zone interaction, managed individually.
Exposed analytical plots Sweep highs/lows, first-touch levels, mitigated and expired states, and swing classifications — for strategy builders such as BloodHound and BlackBird (SharkIndicators).
Sweep zone tracked to first touch mitigation next to an expired sweep zone

Per the product documentation, those plot output names “are technical identifiers intended solely for software integration purposes and do not constitute trading advice, signals, or recommendations.”

Two walkthroughs before you decide: the NinjaTrader Liquidity Sweeps Indicator overview and a short breakdown of the sweep-versus-breakout distinction.

Trading MT5 instead? There is an MT5 Liquidity Sweeps Indicator built on the same concept; check its product page for the parameter set on that platform.

Who this is for, and who should close the tab

Not for you if:

You trade swing positions on daily and weekly bars — sweep mechanics live inside the session. You want the marker to tell you which way price goes next — it does not; a sweep is a detected event about liquidity, not a directional forecast. You trade thin instruments where every swing high is three contracts and a wide spread — the distance filter cannot rescue a level that never held meaningful resting size. You are not willing to fix your settings and leave them fixed — retuning swing strength after every losing session produces a chart that agrees with you and teaches you nothing.

This article was interesting. Close the tab, do not spend €25 with us.

For you if:

You trade futures or index instruments intraday and already work with market structure, and you want failed-breakout events marked mechanically rather than in hindsight. You want the sweep-versus-breakout distinction handled by an explicit rule instead of by memory. You need sweep zones tracked with a defined mitigation rule and an expiry, so old zones stop accumulating on the chart. You are building structured automation and need sweep and mitigation states exposed as plots.

The NinjaTrader Liquidity Sweeps Indicator is available on the all-products subscription at €25/month with a 5-day free trial, or as a lifetime licence at €175 one-time for this indicator on one PC.

Start Your 5-Day Free Trial →

Need something custom built? We develop automation to order → NinjaTrader Developers

Sources referenced in this article:

  1. Federal Reserve Bank of New York, Staff Report No. 125 — Currency Orders and Exchange-Rate Dynamics (C. L. Osler): newyorkfed.org
  2. Federal Reserve Bank of New York, Staff Report No. 150 — Stop-Loss Orders and Price Cascades in Currency Markets (C. L. Osler): newyorkfed.org
  3. CFTC — Stop Orders in Select Futures Markets (2017): cftc.gov
  4. CME Group — Reassessing Liquidity: Beyond Order Book Depth (2025): cmegroup.com
  5. CrossTrade — Liquidity Sweeps and Stop Hunts: crosstrade.io

Nordman Algorithms provides software infrastructure for trade automation and does not offer financial advice, trading signals, or managed trading services. Visual markers are produced when predefined mathematical conditions are met and do not constitute a recommendation to buy, sell, or hold any instrument. This article is for informational and educational purposes only. Trading leveraged instruments such as Forex and CFDs carries a high level of risk and may not be suitable for all investors — only risk capital should be used. Full Risk Disclosure: https://www.nordman-algorithms.com/risk-disclosure/