Skip to content
MT5MT4soonTradingViewsooncTradersoonNinjaTradersoonPythonsoon
IndicatorPrice action & SMCMT5No repaint

Imbalance Zones

Free MT5 indicator that draws bullish and bearish imbalance zones from ATR-sized candles. Lab: 0 of 687 signals changed in the repaint test.

Add to a kit
CompareRequest a variant
Embed
Imbalance Zones on XAUUSD M15, MT5 chart with default settings: bullish imbalance, bearish imbalance, bullish/bearish imbalance
Screenshots from a real MT5 chart · 9 · scroll sideways
Imbalance Zones inputs window in MetaTrader 5 with the default settings
Imbalance Zones inputs window in MetaTrader 5 with the default settings
Imbalance Zones Bearish Imbalance arrow on XAUUSD M15, 28 Oct 2026 03:15
Imbalance Zones Bearish Imbalance arrow on XAUUSD M15, 28 Oct 2026 03:15
Imbalance Zones Bullish Imbalance arrow on XAUUSD M15, 27 Oct 2026 15:15
Imbalance Zones Bullish Imbalance arrow on XAUUSD M15, 27 Oct 2026 15:15
Imbalance Zones Bearish Imbalance arrow on XAUUSD M15, 27 Oct 2026 03:45
Imbalance Zones Bearish Imbalance arrow on XAUUSD M15, 27 Oct 2026 03:45
Imbalance Zones on XAUUSD H4 (another timeframe)
Imbalance Zones on XAUUSD H4 (another timeframe)
Imbalance Zones on XAUUSD M5 (another timeframe)
Imbalance Zones on XAUUSD M5 (another timeframe)
Imbalance Zones on-chart panel: last signal and status
Imbalance Zones on-chart panel: last signal and status
Imbalance Zones on EURUSD M15
Imbalance Zones on EURUSD M15
Imbalance Zones zoomed out on XAUUSD M15: several weeks of history
Imbalance Zones zoomed out on XAUUSD M15: several weeks of history
Test verdictPassed
Repainted
0 / 687
Signals / week
≈ 54
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 · 105.6 KB · .ex5
Lab pick — built by the lab, not from a member request. Want something like it? Request a tool

Overview

For traders who wait for price to come back into an imbalance, Imbalance Zones for MT5 marks each closed candle whose range is at least 1.2 × ATR and draws that candle's body as a zone on the main chart. In the Lab's repaint test, 0 of 687 signals changed. It suits traders on intraday charts who want return areas drawn by a fixed rule instead of by eye.

What it draws on your chart

An imbalance is a stretch of price that one side pushed through so fast that the other side barely traded there. Many traders expect price to come back and fill it. The idea is close to the fair value gap, but this tool doesn't look for the classic three-candle gap. It flags one strong candle, called the displacement candle, and boxes its body.

On the chart you get:

  • Bullish and Bearish Imbalance zones: rectangles in green or red that start at the displacement candle's body and run right until price fills them.
  • Arrows under or over each imbalance candle. These are hidden by default (ShowArrows = false).
  • MTF Imbalance: dotted lines that show zones from a higher timeframe. They are off by default.
  • Imbalance Stats panel: the last imbalance and its strength, how many bullish and bearish zones are active with their average fill, the distance to the nearest zone in pips, and the number of bullish and bearish MTF zones.

How the Lab tested it

The Lab ran version 1.00 (105.6 KB) on MT5 build 6230 on 2026-10-04. The data was EURUSD M15 from 2026-07-06 to 2026-10-02 on real ticks from Raw Trading Ltd. The test logged both arrow buffers (bullish and bearish) on every tick and then checked whether any past arrow moved or disappeared.

Repaint result: 0 of 687 signals changed, and the maximum arrow delay was 0 bars. Each arrow printed on the closed candle that triggered it, and later ticks never moved or removed it. The test logged the arrow buffers only. Zones and alerts use the same closed-candle condition, but the Lab did not log them separately.

What the follow-through numbers tell you

The Lab also checked what price did after each signal. It recorded whether price moved 1 ATR in the signal's direction before it moved 1 ATR against it.

Signals that reached +1 ATR before -1 ATR (EURUSD M15, Lab test)Illustration
Bullish (346 signals)
48.8%
Bearish (341 signals)
45.5%
All (687 signals)
47.2%

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

Overall, 47.2% of the 687 signals hit +1 ATR first. That is a little worse than a coin flip. The median time to hit either level was 2 bars, and only 0.9% of signals touched neither level within 20 bars.

In practice, price moves fast right after an imbalance candle, but the direction of that move is close to random. The candle on its own is not an entry. The zone it leaves behind is the part you work with.

How it works

  1. 1
    Calculates ATR and steps through closed bars with an engine that finds a strong displacement candle leaving a gap.Inputs: DisplacementATRPeriod
  2. 2
    The displacement candle must be large versus ATR and have a body that fills enough of its range.Range >= DisplacementMultiplier x ATR and body ratio >= MinBodyRatioInputs: DisplacementMultiplier, MinBodyRatio
  3. 3
    Session-open gaps can be skipped. Zones are stored per direction up to a cap and dropped when too old.Inputs: ExcludeSessionOpenGap, MaxZonesPerDirection, MaxZoneAgeBars
  4. 4
    Strength starts at 2, plus one each at size ratio 1.5 and 2.0 times the multiplier, and body ratio 0.85.Strength = 2 + [ratio >= 1.5 x mult] + [ratio >= 2.0 x mult] + [body >= 0.85], max 5
  5. 5
    Zones are marked mitigated by the chosen rule and optionally kept for some bars. Optionally repeats on a higher timeframe.Inputs: MitigationMode, ShowMitigatedZones, MitigatedZoneKeepBars, EnableMTF, MTFTimeframe

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 687 signals changed)
Inputs
26
Tested on
MT5 build 6230 · 2026-10-04

Repaint test

Signals logged live
687
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), 687 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 first47.2%
Price moved 1×ATR against it first51.9%
Neither within 20 bars0.9%

Over 6 Jul 2026 – 2 Oct 2026 on EURUSD M15, the indicator printed 687 arrows. After 47.2% of them, price moved 1×ATR(14) in the arrow's direction before moving 1×ATR against it (median 2 bars). 0.9% 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 Imbalance) from buffer 0, drawn on the closed bar.
  • Arrows (Bearish Imbalance) from buffer 1, drawn on the closed bar.
  • Rectangles (Bullish/Bearish Imbalance) drawn as chart objects, not buffers — they are not readable by iCustom() in an EA.
  • Rectangles (MTF Imbalance) drawn as chart objects, not buffers — they are not readable by iCustom() in an EA.
  • An on-chart panel (Imbalance Stats); values shown in the panel are not exposed as buffers.

Inputs

InputDefaultWhat it does
DisplacementATRPeriod14ATR period used as the volatility reference (5-50)
DisplacementMultiplier1.2Candle range must be at least this multiple of ATR (0.5-3.0)
MinBodyRatio0.65Minimum body / range ratio, higher = smaller wicks (0.30-0.95)
ExcludeSessionOpenGaptrueSkip the candle right after a data gap longer than 3 bars (weekend/holiday)
MitigationModeFullTouch (wick reaches the far edge)How a zone is confirmed as filled
ShowMitigatedZonesfalseKeep mitigated zones in gray instead of deleting them at once
MitigatedZoneKeepBars50Bars a gray mitigated zone stays before it is deleted (0-2000)
MaxZonesPerDirection20Max active zones per direction; the oldest is removed first (5-100)
MaxZoneAgeBars500Active zones older than this many bars are removed, 0 = no limit (0-5000)
EnableMTFfalseProject imbalance zones of a higher timeframe as dotted lines
MTFTimeframeH1Higher timeframe (used only when higher than the chart timeframe)
AlertOnNewZonetrueAlert when a new imbalance zone is confirmed on a closed candle
AlertOnMitigationfalseAlert when a zone is mitigated
UsePopupAlerttruePopup alert window
UsePushAlertfalsePush notification to the MT5 mobile app
UseSoundAlerttruePlay a sound
SoundFilealert.wavSound file in the terminal Sounds folder
BullishColorC'18,183,106'Bullish zone and arrow color
BearishColorC'229,72,77'Bearish zone and arrow color
ZoneFillAlpha40Zone fill strength in % (blended with the chart background, 0 = no fill)
ShowZoneBordertrueDraw a dashed border around active zones
ShowArrowsfalseShow a small arrow under/over each imbalance candle
ThemeDarkChart color theme
RestoreThemetrueRestore the original chart colors when the indicator is removed
PanelThemeAuto (follow chart background)Panel colors: auto from chart background, dark or light
PanelScale1Panel size factor (0.6-2.0), DPI is applied automatically

How to read it

Install: copy the .ex5 file into your terminal's MQL5/Indicators folder, refresh the Navigator, and drag Imbalance Zones onto a chart.

How one zone forms and ends

Life of one Imbalance Zone
  1. 1Candle closesRange is at least DisplacementMultiplier x ATR(DisplacementATRPeriod)
  2. 2Body checkBody / range is at least MinBodyRatio; when ExcludeSessionOpenGap is on, the candle after a data gap is skipped
  3. 3Zone drawnRectangle from the candle body, green for bullish, red for bearish; new-zone alert fires
  4. 4Zone endsMitigated per MitigationMode, older than MaxZoneAgeBars, or the oldest one past MaxZonesPerDirection

The chart below shows a typical bullish zone from start to finish. In the default FullTouch mode, a bullish zone counts as filled only when a wick reaches its far edge, which is the bottom of the box. Dipping into the box is not enough.

Illustration of a typical signal: bullish imbalance zone and FullTouch mitigationIllustration
Bullish Imbalancezone (candle bDisplacement candleReturn into zoneWick hits far edge: mitigate

How to read each element

  • A colored zone is an active return area. Green zones sit below the move that created them, and red zones sit above it.
  • A zone that vanishes was removed by design: it was mitigated, it got older than MaxZoneAgeBars, or it was the oldest one when MaxZonesPerDirection was exceeded. That is not repainting. A common misread is to treat a missing zone as a moved signal. Check whether price touched the far edge or the box simply aged out.
  • A gray zone shows up only when ShowMitigatedZones is on. It is already filled and stays visible for MitigatedZoneKeepBars bars as history. Don't trade it.
  • Dotted MTF lines mark zones from MTFTimeframe. They are filled on closed candles of that timeframe and age in that timeframe's bars. They appear only when MTFTimeframe is higher than your chart. On an H1 chart with the default H1 setting, they never show.
  • Panel: the most useful field is the nearest-zone distance in pips. The Lab facts do not define how "strength" and "average fill" are calculated, so read them as background information. Don't base a rule on them.

Inputs to change first

  • DisplacementMultiplier (default 1.2, range 0.5–3.0) is the main filter. Raise it for fewer, larger zones. Lower it for more, smaller ones.
  • MinBodyRatio (default 0.65, range 0.30–0.95). Raise it to keep only candles with small wicks.
  • MaxZonesPerDirection (default 20, range 5–100). At default settings the Lab logged 54 signals per week on EURUSD M15, so expect a busy chart. Lowering this cap is the quickest way to declutter, because the oldest zone is removed first.
  • MaxZoneAgeBars (default 500, 0 = no limit) clears zones price has ignored for a long time.
  • MitigationMode decides when a zone counts as filled. The default FullTouch needs a wick to reach the far edge.
  • ExcludeSessionOpenGap (default on) skips the candle right after a data gap longer than 3 bars, such as the weekend open. Leave it on, because a gap candle is big for reasons that have nothing to do with order flow.
  • Theme recolors your chart (default Dark). RestoreTheme puts your original colors back when you remove the indicator.

Untested starting point for M5 charts: try DisplacementMultiplier 1.5 and MaxZonesPerDirection 10. The Lab has not tested this, so compare it with the default on your own symbol first.

Alerts and where they appear

AlertOnNewZone (on by default) fires when a new zone is confirmed on a closed candle. AlertOnMitigation (off by default) fires when a zone is filled. You can choose how alerts reach you:

  • UsePopupAlert (on by default): an alert window in the terminal.
  • UseSoundAlert (on by default): plays SoundFile from the terminal's Sounds folder.
  • UsePushAlert (off by default): sends a notification to the MT5 mobile app.

Decision rule

  1. Don't trade the displacement candle itself. Wait for price to come back into the zone.
  2. For a bullish zone: consider a long only while price trades inside the box and no wick has reached the bottom edge. Once the bottom is touched, the zone is gone and so is the idea. Bearish zones work the same way in reverse.
  3. When the nearest zone is far: if the panel's nearest-zone distance is larger than what your symbol usually covers in a few bars, there is nothing to act on yet.

Installation

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

Key terms and guides

Volatility expansion
Volatility expansion is when a market moves from small, quiet candles to clearly larger ones, so the average distance price travels per candle rises. Traders usually measure it with the Average True Range (ATR).
ATR multiplier
An ATR multiplier is the number you multiply the Average True Range (ATR) by to set a distance on the chart. It is used most often for a stop loss: 1.5 × an ATR of 10 pips gives a 15-pip stop.
Spike
A spike is a sudden price move, usually within one or a few candles, that is several times larger than the market's normal range just before it. The normal range is often measured with the Average True Range (ATR).
Fresh zone
A fresh zone is a supply or demand zone that price has not come back to since the strong move that created it. Traders expect unfilled orders to still sit there, so they treat the first return as the best entry.
Order Fill
An order fill is the moment your buy or sell order is actually executed: it is matched at a real price and opens (or closes) a position, for the full size or only part of it.
Displacement
Displacement is a sudden, one-sided price move. It is made of one to three large-bodied candles that close beyond a recent swing level and often leave a fair value gap behind, which shows that large orders pushed the market.

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

Imbalance Zones 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 PulseAdds the trend side: which way the market leans before you act on Imbalance Zones.
  • Entry signalEngulfing Pattern FinderAdds the entry signal: the moment to act once Imbalance Zones 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 Imbalance Zones repaint?

No repaint detected. In a 6 Jul 2026 – 2 Oct 2026 test on EURUSD M15 (Raw Trading Ltd real ticks), 687 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 Imbalance Zones in an EA?

Yes. Read buffer 0 (Bullish Imbalance) 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.

Can I test Imbalance Zones on past data before trading with it?

Yes. Run it in visual mode in the MT5 Strategy Tester on your own symbol and timeframe, and watch how zones form and get filled. The Lab's numbers come only from EURUSD M15, so your own check matters.

Why don't I see the MTF lines after turning on EnableMTF?

`MTFTimeframe` is used only when it is higher than your chart's timeframe. With the default H1, the lines appear on M30 and lower charts but not on H1 or higher. Pick a higher `MTFTimeframe` for those charts.

Why are there no arrows on my chart?

`ShowArrows` is off by default, so the indicator shows only zones. Turn it on if you want a small arrow under or over each imbalance candle.

Does it work on gold, indices or crypto?

The detection uses ATR, so the threshold adjusts to each symbol's volatility. The Lab tested only EURUSD M15, though, and has no results for other markets.

Is it really free, and does it need DLL imports?

It is free to download, like every tool on IndicatorFree. The Lab facts do not list any DLL requirement. Install it as a normal .ex5 indicator.

Changelog

  • 1.00Initial release: single-candle Imbalance (Improper Price Action) detection using ATR-normalized displacement plus a minimum body/range ratio, drawn as a rectangle zone from the candle's body. · 2026-10-04

Final verdict

Where it earns its place

The Lab's repaint test is the strongest point: arrows printed on the closed candle and never moved. Every zone comes from a fixed rule (ATR-sized range plus a minimum body ratio), so two traders who use the same inputs see the same boxes. The gap filter, the age limit and the per-direction cap keep the chart under control without manual cleanup.

Where it falls short

The displacement candle gives no directional edge. Its follow-through was close to a coin flip in the Lab test, so the tool marks where to look, not which way to trade. It finds single-candle imbalances, not the three-candle fair value gap that many traders expect. The Lab measured only EURUSD M15, so results on other symbols and timeframes are unknown. Zones and alerts were not logged separately in the repaint test. The tool also recolors your chart unless you change Theme.

Who should skip it

Skip it if you want a buy or sell arrow to follow on its own. Skip it if you trade three-candle FVGs strictly by the book, or if you can't stand a busy chart and don't want to adjust filters.

Settings to start with

Start with the defaults and turn on ShowMitigatedZones for a week. Watching zones go gray teaches you how price fills them on your symbol. Then raise DisplacementMultiplier one step at a time until each zone stands for a candle you would have noticed anyway. That approach is not tested by the Lab, so judge it against the default.

You could also add the Order Block Locator: it marks the order block where a move started, and Imbalance Zones marks the gap the move left behind. Together they show two places price might come back to. Treat this as an idea to try, because the Lab has not tested the pair.

More price action & smc tools