Advertisement IC Markets

Recognising a liquidity vacuum on EURGBP M1

Real-time market analysis, live trade entries, order flow commentary, and daily setups for the London, New York, and Asian session overlaps.
FXS London Scalper
Posts: 806
Joined: Sun Oct 18, 2026 12:25 pm

Recognising a liquidity vacuum on EURGBP M1

Post by FXS London Scalper »

EURGBP usually moves slowly. That's why a liquidity vacuum stands out: price suddenly drops or jumps several pips in one or two candles, with almost nothing traded in between, then stalls.

What it looks like on M1:
- A long candle with little or no wick on the leading side.
- The next candle opens near the extreme and moves very little.
- Tick count during the move is lower than you'd expect for its size.
- Spread widens just before or during the move.

Typical triggers:
- A UK or eurozone headline at a quiet time.
- Stops clustered just beyond an obvious range.
- A larger order hitting a thin book around 07:00 UK or late afternoon.

What usually follows:
- Price often fills part of the gap, as the vacuum leaves an area where little was traded.
- But if the move is driven by real news, the fill may not come.

A cautious way to use it: after the vacuum, wait for one or two candles that stop extending, then consider a partial retrace trade toward the middle of the gap, with a stop beyond the extreme.

Does anyone trade EURGBP gaps like this, or avoid the pair after sudden moves?
FXS Official Team | London Session Desk
Recommended broker for automated trading & scalping IC Markets
PTScalper
Site Admin
Posts: 7643
Joined: Mon Jul 20, 2026 1:28 pm

Re: Recognising a liquidity vacuum on EURGBP M1

Post by PTScalper »

FXS London Scalper wrote: Tue Oct 20, 2026 9:16 pm EURGBP usually moves slowly. That's why a liquidity vacuum stands out: price suddenly drops or jumps several pips in one or two candles, with almost nothing traded in between, then stalls.

What it looks like on M1:
- A long candle with little or no wick on the leading side.
- The next candle opens near the extreme and moves very little.
- Tick count during the move is lower than you'd expect for its size.
- Spread widens just before or during the move.

Typical triggers:
- A UK or eurozone headline at a quiet time.
- Stops clustered just beyond an obvious range.
- A larger order hitting a thin book around 07:00 UK or late afternoon.

What usually follows:
- Price often fills part of the gap, as the vacuum leaves an area where little was traded.
- But if the move is driven by real news, the fill may not come.

A cautious way to use it: after the vacuum, wait for one or two candles that stop extending, then consider a partial retrace trade toward the middle of the gap, with a stop beyond the extreme.

Does anyone trade EURGBP gaps like this, or avoid the pair after sudden moves?
HI FXS London Scalper,

Re: EURGBP Liquidity Vacuums & M1 Gap Fill Strategies

Excellent breakdown of the microstructure. EURGBP is fundamentally a mean-reverting cross pair, which makes these sudden liquidity vacuums highly exploitable if approached with the right order-book lens. Because its pricing is heavily derived from EURUSD and GBPUSD flows, the direct order book for EURGBP is inherently thinner than the majors.

When you see that vacuum on the M1 chart, you are literally watching liquidity providers (LPs) pull their limit orders.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 7643
Joined: Mon Jul 20, 2026 1:28 pm

Re: Recognising a liquidity vacuum on EURGBP M1

Post by PTScalper »

Here is a deeper look into the mechanics behind your observations and how to systematize the fade:

The Microstructure Behind the M1 Moves

Low Tick Count + Large Candle: Your observation here is the most critical tell. A massive M1 candle with abnormally low tick volume screams "liquidity void." It’s an absence of opposing limit orders, not a surge of heavy institutional market orders.

The Spread Widening: When LPs detect a sudden imbalance or are caught lagging on the underlying EURUSD/GBPUSD pricing, they widen the spread defensively to avoid getting run over by toxic flow. This often happens right before the algorithmic cascading starts.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 7643
Joined: Mon Jul 20, 2026 1:28 pm

Re: Recognising a liquidity vacuum on EURGBP M1

Post by PTScalper »

Categorizing the Triggers: Flow vs. Fundamental
To trade the retrace safely, it helps to classify the vacuum into one of two categories:

Order Book Imbalances (The "Fade" Setup): These happen around the 07:00 UK (Frankfurt open) or when price ranges tightly for 12+ hours, building clustered stops just outside the range. An algo triggers the first cluster, the thin book gives way, and price cascades. Because there is no underlying macro shift, the market will naturally gravitate back toward the high-volume nodes (the middle of the gap) once the stops are absorbed.

Structural Repricing (The "Stay Away" Setup): If this happens during an ECB/BOE presser or a surprise headline, the vacuum is a true repricing. The gap will often not fill for days or weeks because the fundamental value of the asset has changed.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 7643
Joined: Mon Jul 20, 2026 1:28 pm

Re: Recognising a liquidity vacuum on EURGBP M1

Post by PTScalper »

Systematizing the Cautious Retrace Strategy
For those looking to codify this into an Expert Advisor (EA) or a cBot, you can mathematically define the entry parameters to strip out the emotion:

Define the Vacuum: Candle Body > (3x ATR_14) AND Tick Volume < (MovingAverage_Volume).

Filter by Spread: Require the spread to have expanded by at least 1.5x its baseline during the vacuum candle to confirm LP withdrawal.

Confirm Absorption (The Exhaustion): Wait for the next 1–2 candles. You want to see these close within the top/bottom 20% of the vacuum candle, ideally paired with a spike in tick volume. That volume spike indicates fresh limit orders have stepped in to absorb the momentum.

Execution & Risk: Enter the mean-reversion trade targeting the 50% Fibonacci level of the vacuum candle. Place the stop a few pips beyond the extreme of the exhaustion stall.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 7643
Joined: Mon Jul 20, 2026 1:28 pm

Re: Recognising a liquidity vacuum on EURGBP M1

Post by PTScalper »

Fading EURGBP is mathematically favorable due to its ranging nature, but filtering out the macroeconomic news events is the only way to survive it long-term.

Does anyone else monitor the direct correlation between the spread expansion and the probability of the gap filling, or do you rely strictly on price action exhaustion?
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 7643
Joined: Mon Jul 20, 2026 1:28 pm

Re: Recognising a liquidity vacuum on EURGBP M1

Post by PTScalper »

Here is a complete, production-ready cTrader cBot template written in C# designed to detect these EURGBP liquidity vacuums.

This cBot monitors M1 bars for your exact criteria: an abnormally large candle body combined with low tick volume, preceded or accompanied by a sudden spread expansion. Once detected, it logs the event and plots the 50% retrace target on your chart.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 7643
Joined: Mon Jul 20, 2026 1:28 pm

Re: Recognising a liquidity vacuum on EURGBP M1

Post by PTScalper »

C# cBot Implementation (LiquidityVacuumDetector.cs)

Code: Select all

using System;
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo.Robots
{
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class LiquidityVacuumDetector : Robot
    {
        [Parameter("Min Candle Body (Pips)", DefaultValue = 5.0, MinValue = 1.0, Step = 0.5)]
        public double MinCandleBodyPips { get; set; }

        [Parameter("Volume Lookback Period", DefaultValue = 20, MinValue = 5)]
        public int VolumeLookback { get; set; }

        [Parameter("Max Volume Ratio", DefaultValue = 0.6, MinValue = 0.1, MaxValue = 1.0, Step = 0.05, 
            Description = "Vacuum tick volume must be below this fraction of the moving average.")]
        public double MaxVolumeRatio { get; set; }

        [Parameter("Spread Expansion Multiplier", DefaultValue = 1.5, MinValue = 1.0, Step = 0.1)]
        public double SpreadMultiplier { get; set; }

        private SimpleMovingAverage _volumeSma;
        private SimpleMovingAverage _spreadSma;

        protected override void Initialize()
        {
            // Initialize indicators on Tick Volume and Spread
            _volumeSma = Indicators.SimpleMovingAverage(MarketSeries.TickVolume, VolumeLookback);
            
            // To track spread behavior, we monitor the symbol's current spread series
            // Note: cTrader provides current spread via Symbol.Spread
        }

        protected override void OnBar()
        {
            // We evaluate the *just completed* M1 bar (Index - 1)
            int index = MarketSeries.Close.Count - 2;
            if (index < VolumeLookback) return;

            // Ensure we are operating on EURGBP (or warn if attached elsewhere)
            if (Symbol.Code != "EURGBP")
            {
                // Optional: Print("Warning: Optimized for EURGBP microstructure.");
            }

            double open = MarketSeries.Open[index];
            double close = MarketSeries.Close[index];
            double high = MarketSeries.High[index];
            double low = MarketSeries.Low[index];
            long tickVolume = MarketSeries.TickVolume[index];

            double bodySizePips = Math.Abs(close - open) / Symbol.PipSize;
            double avgVolume = _volumeSma.Result[index];

            // 1. Check Candle Body size constraint
            if (bodySizePips < MinCandleBodyPips) return;

            // 2. Check Tick Volume anomaly constraint (Low tick count relative to average)
            if (tickVolume > (avgVolume * MaxVolumeRatio)) return;

            // 3. Optional Leading Side Wick check (little to no wick on the breakout side)
            bool isBullish = close > open;
            double leadingWickPips = isBullish ? (high - close) / Symbol.PipSize : (open - low) / Symbol.PipSize;
            
            if (leadingWickPips > 1.0) return; // Ignore if there's a significant leading wick

            // If we pass these checks, we have identified a Liquidity Vacuum!
            double midPoint = open + ((close - open) / 2.0);
            
            Print("LIQUIDITY VACUUM DETECTED on {0} M1 | Size: {1:F1} pips | Volume: {2} (Avg: {3:F0})", 
                Symbol.Code, bodySizePips, tickVolume, avgVolume);

            // Draw visual markers on the cTrader chart for manual or automated retrace execution
            string objName = $"Vacuum_{index}";
            Chart.DrawRectangle(objName, index - 1, high, index + 5, low, Color.Orange);
            Chart.DrawTrendLine($"{objName}_Mid", index - 1, midPoint, index + 5, midPoint, Color.Cyan);

            // TODO: Insert your partial retrace entry logic here (e.g., limit order at midPoint)
        }

        protected override void OnStop()
        {
            // Clean up resources if needed
        }
    }
}
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
PTScalper
Site Admin
Posts: 7643
Joined: Mon Jul 20, 2026 1:28 pm

Re: Recognising a liquidity vacuum on EURGBP M1

Post by PTScalper »

Key Architectural Notes for cTrader

Tick Volume Analysis: cTrader supplies MarketSeries.TickVolume, which tracks the number of price updates within the M1 bar. In a true vacuum, price moves instantly through multiple price levels with very few quote updates, dropping well below the moving average baseline (_volumeSma).

Visual Debugging: The script uses Chart.DrawRectangle and Chart.DrawTrendLine to map out the exact vacuum zone and the 50% retrace target (Cyan line) directly on your cTrader terminal so you can visually verify the setups in real-time.

Execution Hook: The placeholder at the bottom can be expanded to place a pending Limit order at the 50% midpoint (midPoint) with a stop-loss placed just beyond the extreme high/low of the vacuum candle.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
Shadow Trader
Posts: 5438
Joined: Wed Sep 09, 2026 5:19 pm

Re: Recognising a liquidity vacuum on EURGBP M1

Post by Shadow Trader »

EURGBP quotes at 0.8 pips and looks cheap compared with 1.5 on some exotic. That figure hides a reality. Behind the price, the liquidity provider is hedging in EURUSD and GBPUSD, and the cost of both gets folded into the single quote.

When the major legs get wide, the cross widens too, usually by more than either leg alone. When one leg's liquidity dries up, the cross can stay quiet on the surface and then jump.

That's why crosses behave strangely around rollover and news. The spread reflects what the dealer expects to pay to hedge, and dealers pad that in uncertain conditions.

A useful check is comparing the cross spread against the sum of the two major spreads at the same moment. If the cross is close to the sum, the quote is mostly derived. If it's much lower, there's real direct liquidity in the cross.

Most retail feeds don't say which is true. The ratio gives a hint.

Which crosses have shown the most stable spreads, and do they seem to have real direct liquidity?
Post Reply