Skip to content
MT5MT4soonTradingViewsooncTradersoonNinjaTradersoonPythonsoon
IndicatorPrice action & SMCMT5No repaint

Engulfing Pattern Finder

Free Engulfing Pattern Finder indicator MT5: marks bullish and bearish engulfing candles with arrows and zones. Lab: 0 of 1,071 signals repainted.

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

Overview

The Engulfing Pattern Finder indicator MT5 marks every bullish and bearish engulfing candle on your main price chart. Each one gets an arrow, an optional box over the two candle bodies and a signal panel. In the Lab's EURUSD M15 test, 0 of 1,071 signals changed after they appeared. 46.3% of them reached 1 ATR in the signal's direction before 1 ATR against it.

It helps price-action traders who use engulfing candles as a trigger at levels they have already picked. It finds, size-filters and alerts each pattern on closed bars, so you don't have to scan charts by eye.

What the indicator puts on your chart

An engulfing pattern is a two-candle pattern: the second candle's body fully covers the opposite-coloured body before it. The tool measures candle size with ATR (average true range), so it ignores tiny engulfings in a quiet market.

  • Bullish Engulfing arrow (buffer 0): drawn below a bullish candle that engulfs the bearish candle before it.
  • Bearish Engulfing arrow (buffer 1): drawn above a bearish candle that engulfs the bullish candle before it.
  • Engulf Zone: a rectangle over the two bodies. When the chart holds too many boxes, the oldest one is deleted.
  • Signal panel: the last engulfing direction and how many bars ago it fired, a strength score, a higher-timeframe badge, and today's bull/bear count and ATR.

Everything draws on the price chart. Nothing opens in a separate subwindow.

How the Lab tested it, and what the numbers mean for you

The Lab tested version 1.00 (92.3 KB) on MT5 build 6230 on 2026-10-04. The test ran on EURUSD M15 from 2026-07-06 to 2026-10-02 with real ticks from Raw Trading Ltd. The Lab logged each arrow when it appeared and checked whether it later moved or disappeared. The maximum arrow delay was 0 bars: each arrow appears on the engulfing candle itself as soon as that candle closes, not one bar later.

The chart below splits the 1 ATR result by direction.

Signals that reached 1 ATR in their direction before 1 ATR against (EURUSD M15, 2026-07-06 to 2026-10-02)Illustration
Bullish Engulfing (522 signals)
45.3%
Bearish Engulfing (549 signals)
47.3%

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

What this means for you:

  • Less than a coin flip. On its own, an arrow gave no edge in the direction it points. Treat it as a trigger to use inside your own plan, not as a trade by itself. The 2-point gap between bearish and bullish signals is small on roughly 500 signals each, so don't read it as a rule.
  • You find out fast. The median signal hit one of the two 1 ATR marks within 2 bars, about 30 minutes on M15. Only 2% (1.5% bullish, 2.4% bearish) touched neither mark within 20 bars.
  • It fires a lot. It averaged 84.3 signals per week (41.1 bullish, 43.2 bearish), about 17 per trading day on a five-day week. Trading every arrow is not a plan, which is why the filter inputs matter.

The test measures price movement only. It is not a backtest of trades with stops, targets or costs.

Who it is for

It is built for traders who already mark their levels and want a closed-bar trigger with alerts when a strong engulfing prints there. It also suits traders learning to spot the pattern: the box and the strength score show why each candle qualified.

How it works

  1. 1
    On each closed candle, the tool reads the average true range (ATR) as a yardstick for candle size.ATR = average true range over the chosen periodInputs: InpATRPeriod
  2. 2
    A candle engulfs when its body covers the previous opposite body and is big enough versus ATR and that body.Body = |Close - Open|, need Body at least r1 x ATR and at least r2 x PriorBodyInputs: InpMinBodyATRRatio, InpMinEngulfRatio
  3. 3
    Optionally, the previous candle must be the lowest low (bullish) or highest high (bearish) of the recent bars.Inputs: InpRequireSwingContext, InpSwingLookback
  4. 4
    Each signal gets a strength score from 0 to 100, blending body size against the prior body and ATR.Score = 100 x (0.6 x Body/PriorBody + 0.4 x Body/ATR) / 3, limited to 0-100
  5. 5
    An arrow is placed beyond the signal candle's low or high, with an optional box over both bodies.Arrow = Low - k x ATR (bullish) or High + k x ATR (bearish)Inputs: InpArrowOffsetATR, InpShowZoneBox, InpMaxZones

Specifications

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

Repaint test

Signals logged live
1,071
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), 1,071 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 first46.3%
Price moved 1×ATR against it first51.7%
Neither within 20 bars2%

Over 6 Jul 2026 – 2 Oct 2026 on EURUSD M15, the indicator printed 1,071 arrows. After 46.3% of them, price moved 1×ATR(14) in the arrow's direction before moving 1×ATR against it (median 2 bars). 2% 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 Engulfing) from buffer 0, drawn on the closed bar.
  • Arrows (Bearish Engulfing) from buffer 1, drawn on the closed bar.
  • Rectangles (Engulf Zone) 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
InpATRPeriod14ATR period used by the minimum body filter
InpMinBodyATRRatio0.35Signal body must be at least this x ATR
InpMinEngulfRatio1Signal body must be at least this x prior body (1.0 = classic)
InpRequireSwingContextfalseOnly accept engulfing when the prior bar is the local low/high
InpSwingLookback5Bars checked for the local low/high when swing context is on
InpShowZoneBoxtrueDraw a box over the two engulfing bodies
InpMaxZones50Maximum zone boxes kept on chart (oldest removed first)
InpArrowOffsetATR0.3Arrow distance from High/Low as a fraction of ATR
InpShowMTFtrueShow the higher-timeframe engulfing badge on the panel
InpMTFTimeframeH1Timeframe checked for the MTF badge
InpEnableAlertPopuptruePopup alert on a new engulfing signal
InpEnableAlertPushfalsePush notification on a new engulfing signal
InpEnableAlertSoundfalsePlay a sound on a new engulfing signal
InpSoundFilealert.wavSound file played when sound alerts are on
PanelScale1Panel size multiplier (DPI is applied automatically)
ThemeDarkChart color theme
RestoreThemetrueRestore the original chart colors when removed

How to read it

Install: copy the file into your MQL5/Indicators folder (File > Open Data Folder), refresh the Navigator, then drag the indicator onto a chart.

How one engulfing signal forms

Every arrow passes the same checks, in this order, on a fully closed bar:

From closed candle to Engulfing arrow
  1. 1Candle closesOnly closed bars are checked; the forming bar never gets an arrow
  2. 2Read ATRAverage true range over InpATRPeriod bars, used as the size yardstick
  3. 3Body covers the prior opposite bodyBullish: open <= prior close and close >= prior open. Bearish: the mirror
  4. 4Size filtersBody >= InpMinBodyATRRatio x ATR and >= InpMinEngulfRatio x prior body
  5. 5Optional swing checkIf InpRequireSwingContext is on, the prior bar must be the lowest low / highest high of InpSwingLookback bars
  6. 6Draw and alertArrow, Engulf Zone box, strength score on the panel, alert

Reading the arrows, boxes and panel

The picture below is an illustration of typical signals, not a Lab result. A bullish arrow sits under the candle that engulfs a small bearish body at the bottom of a drop. A bearish arrow sits over the candle that engulfs a small bullish body at the top of a rally.

Illustration of a typical signal: bullish and bearish engulfing with their Engulf Zone boxesIllustration
Engulf ZoneEngulf ZoneBullish EngulfingBearish Engulfing
  • Arrow position: each arrow sits InpArrowOffsetATR x ATR below the candle's low (bullish) or above its high (bearish). That keeps it clear of the wick on any volatility.
  • Engulf Zone box: covers both bodies. It shows you the price area where the pattern formed.
  • Strength score (panel): Score = 100 x (0.6 x Body/PriorBody + 0.4 x Body/ATR) / 3, limited to 0-100. With the defaults, the weakest signal that can pass has a body equal to the prior body and 0.35 ATR: 100 x (0.6 x 1 + 0.4 x 0.35) / 3 = 24.7. A body 4 times the prior body and 1.5 ATR scores 100 x (2.4 + 0.6) / 3 = 100. The Lab has not measured whether high-score signals do better, so use the score to compare candles, not as a hit rate.

The inputs to change first

InputDefaultWhat changing it does
InpMinBodyATRRatio0.35Main filter. Raise it for fewer, larger signal candles; lower it to catch small ones
InpRequireSwingContextfalseWhen true, the prior bar must be the local low (bullish) or high (bearish). This removes mid-range engulfings
InpSwingLookback5How many bars count as "local" when swing context is on. More bars means stricter
InpMinEngulfRatio11.0 is the classic rule. Higher values demand a body larger than the prior body, not just equal
InpMTFTimeframeH1Timeframe the panel badge checks. Set it above your chart timeframe
InpATRPeriod14ATR length for the body filter, arrow offset and score
InpShowZoneBox / InpMaxZonestrue / 50Turn boxes off, or cap how many stay on the chart (oldest removed first)
InpArrowOffsetATR0.3Arrow distance from the candle, as a fraction of ATR

Display inputs: PanelScale (1) resizes the panel, and DPI is applied automatically. Theme (Dark) recolours the chart. RestoreTheme (true) puts your original colours back when you remove the indicator.

Alerts and where they appear

There are three alert channels, and each fires on a new engulfing signal:

  • InpEnableAlertPopup (on by default): the MT5 Alert window on your terminal.
  • InpEnableAlertPush (off): a push notification to the MetaTrader app on your phone, once push notifications are set up in your terminal.
  • InpEnableAlertSound (off): plays InpSoundFile (default alert.wav).

Signals come only from closed bars, so an alert means the pattern is already final.

A decision rule for each arrow

Bullish Engulfing: take it only if all three hold:

  1. The prior bar is the local low (swing context on, or check it yourself).
  2. The Engulf Zone sits at a support level you had marked before the arrow appeared.
  3. The higher-timeframe badge does not show the opposite direction.

Skip it when it prints in the middle of a range, especially between recent bearish arrows.

Bearish Engulfing: the mirror rule. Require a local high, a resistance level you had already marked, and no opposite higher-timeframe badge.

Size your stop in ATR (the panel shows today's ATR). Then decide in advance what you will do if price has not moved your way within a few bars, because most signals in the Lab test were decided that fast.

The common misread: treating the arrow as an entry price

The arrow marks a candle that has already closed. By then the engulfing body has moved price a long way, at least 0.35 ATR with the defaults and often much more. The earliest realistic entry is the next bar's open. If the signal candle is very large (the strength score shows this), a stop beyond the pattern will be wide. Judge that before you act on the alert.

Installation

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

Key terms and guides

low volatility
Low volatility means price is moving in small steps: candles are short, the range is narrow, and readings such as the Average True Range sit below their usual level for that market. It describes how far price moves, not which direction it goes.
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.
Candlestick
A candlestick is one bar on a price chart that shows four prices for a set period: the open, high, low and close. A thick body spans the open and close, and thin wicks reach the high and low.
Engulfing pattern
An engulfing pattern is a two-candle reversal signal. The second candle's body is the opposite color and fully covers the body of the candle before it, which shows that the other side has taken control of price.

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

Engulfing Pattern Finder does one job on the chart: entry signal. 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 Lead GaugeEngulfing Pattern Finder tells you when; this tells you which way the market leans, so you can skip signals against it.
  • Zone / levelFixed Range ProfileShows the zones and levels, so you can see whether a signal from Engulfing Pattern Finder fires at a level worth trading.

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 Engulfing Pattern Finder repaint?

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

Yes. Read buffer 0 (Bullish Engulfing) 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 timeframes and symbols can I run it on?

It attaches to any chart, but the Lab only measured EURUSD M15. On other symbols or timeframes, watch the panel's daily bull/bear count for a few sessions. Then tune InpMinBodyATRRatio before you rely on the alerts.

Why did my chart colours change when I added it?

The Theme input (Dark by default) recolours the chart. With RestoreTheme left at true, your original colours come back when you remove the indicator.

Does it require a gap between the two candles, or count wicks?

No to both. A bullish signal needs open = prior open, so an open equal to the prior close counts. Only the bodies are compared; wicks are ignored.

Can an Expert Advisor read its signals?

Bullish Engulfing arrows are in buffer 0 and Bearish Engulfing arrows in buffer 1, so an EA can read them from those buffers. The Lab has not tested it inside an EA.

Changelog

  • 1.00Initial release: bullish/bearish engulfing detection on fully closed bars only (no repaint), ATR-based minimum body filter (InpMinBodyATRRatio), minimum engulf ratio vs. · 2026-10-05

Final verdict

A clean, non-repainting engulfing scanner, not a signal edge

The tool does its job reliably. It finds every engulfing that meets its rules, and in the Lab's real-tick run it never moved or removed an arrow after it appeared. The ATR body filter and the strength score let you tell a strong engulfing from a token one at a glance. With alerts, you don't have to watch the chart.

What it does not give you is direction. In the Lab's test, raw arrows reached 1 ATR in their own direction slightly less often than against it, and on M15 they fire many times a day. The value comes from what you add: the level, the swing context and the higher-timeframe view.

What it cannot do

  • It does not place trades or set stops and targets. It is an indicator, not an EA.
  • It does not judge location. A textbook engulfing in the middle of nowhere gets the same arrow as one at a key level.
  • Its numbers come from one symbol (EURUSD), one timeframe (M15) and one three-month window. Other pairs and timeframes are untested.

Who should skip it

  • You want a buy/sell system to follow without your own levels.
  • You trade M1 or M5 and don't want a steady stream of alerts. Test there first, because the Lab has not.
  • Your engulfing definition includes wicks or requires a gap between the candles. This tool tests bodies only.

Settings to start with

These are untested starting points, not Lab results. Compare each with the default on your own chart.

  • M15: InpRequireSwingContext true with InpSwingLookback 5, and InpMinBodyATRRatio 0.5. You should get fewer arrows, all at local turns.
  • H1: set InpMTFTimeframe to H4 so the badge checks a timeframe above your chart.
  • Away from the screen: turn on InpEnableAlertPush.

An idea to pair it with

The engulfing arrow tells you when buyers or sellers took over a candle, but not where that matters. Order Block Locator or Imbalance Zones can supply the zones, so you would act only on engulfings that form inside them. This is an idea to try: the Lab has not tested the pair.

More price action & smc tools