EA LAB • TRADING STRATEGY #012 • BOLLINGER + MA
Bollinger MA Reversal Strategy
A band touch is the beginning of a question: does price reject the outer envelope, or continue away from its average? EA012 turns that question into three closed-candle entry models with a configurable moving-average filter.
Explore EA012 for MT5Read the manual
The idea: rejection with a defined risk
Bollinger Bands create a volatility-dependent envelope around a moving average of closing prices. A lower-band interaction can become a BUY candidate when price closes back above the lower boundary. An upper-band interaction can become a SELL candidate after a close below the upper boundary. Neither condition proves that price must reverse. Strong trends can keep pressing along a band, and a brief rejection can fail.
The separate MA filter can restrict BUYs to closes above the MA and SELLs to closes below it, or require a favorable MA slope. That creates a configurable combination of local band rejection and broader directional permission. Turning the filter off creates a different tested system; drawing an MA does not mean it is filtering trades.
This is a time-based candle strategy, not Renko. The supplied example uses GBPUSD.pro M30, Bollinger 20/2 and EMA 50. Those settings describe one configuration, not a universal recipe for other brokers or instruments.
BUY candidate
Price interacts with the lower band and a completed signal candle closes above that lower band. The chosen confirmation and MA rule must also pass.
SELL candidate
Price interacts with the upper band and a completed signal candle closes below that upper band. The logic mirrors BUY; entry is a market order after confirmation.
Three entry models, three different timings
| Entry mode | BUY logic | SELL logic |
|---|---|---|
| Next-candle confirmation | Previous candle touches the lower band; the next closed candle closes above its lower band. | Previous candle touches the upper band; the next closed candle closes below its upper band. |
| Single-candle rejection | The same closed candle touches the lower band and finishes above it. | The same closed candle touches the upper band and finishes below it. |
| Close re-entry | A close below the lower band is followed immediately by a close above the next candle’s lower band. | A close above the upper band is followed immediately by a close below the next candle’s upper band. |
Confirmation can require the correct candle color, a stronger close beyond the previous close, or no candle-color restriction. With a color filter, BUY must close above open and SELL below open. A strong close adds progress beyond the previous closing price. The supplied preset uses single-candle rejection with no color restriction.
Touch tolerance is an ATR fraction: it permits a near-touch in the first two modes. The close re-entry mode still requires strict outside/inside closes. The implemented close rule is one-sided: BUY must close above the lower band, but is not additionally required to close below the upper band; SELL is mirrored. If both directions qualify before the MA filter, the ambiguous signal is skipped.
From a setup to an actual order
- Wait for a complete candle on the selected signal timeframe.
- Calculate the chosen band setup, candle confirmation and MA permission.
- Check license, trading permission, allowed direction, server-time session, spread, symbol occupancy and cooldown.
- Build a physical initial stop and the selected target; validate broker price distances.
- Size the order, check volume and margin, then submit BUY at Ask or SELL at Bid.
The signal candle close and the executed price are different observations. Orders are evaluated on the first tick of the next signal candle, so gaps and slippage can affect entry. A blocked signal is not retried on every subsequent tick in that same bar. Attaching the EA does not place a retroactive order from the already closed candle.
Stops: structure, ATR or the outer envelope
There are three initial SL choices. Signal-swing SL uses the minimum low of the latest two completed candles for BUY, or their maximum high for SELL, plus an ATR buffer. ATR SL uses a multiplier of the latest closed ATR measured from entry. Outer-band SL places the stop beyond the relevant outer band with an ATR buffer. The signal-swing choice is a two-candle extreme, not a higher-timeframe swing detector.
The preset uses ATR 14 and a 4.0 ATR initial stop. Risk-percent sizing calculates nominal loss to that physical stop from current balance. Fixed Lot is an alternative. Broker volume steps, minimum size and maximum lot caps apply. A volume below the broker minimum is skipped rather than rounded upward.
Four targets, plus optional trailing
Fixed opposite-band and BB-middle targets use the completed signal candle’s band value and place a physical broker TP. Fixed RR places a physical TP at a chosen multiple of the initial entry-to-stop distance. These targets do not move with later bands. Their planned reward must be positive and meet the configured minimum RR.
Dynamic opposite-band mode places no broker TP. At the next bar, a BUY closes if the previous candle’s high touched that candle’s upper band; a SELL closes after a lower-band touch. The close is a market order after that touch candle has finished, not a fill at the band itself. Price can reverse before execution.
ATR trailing uses the previous close minus/plus a selected ATR distance. Basis trailing uses the previous BB middle line. Updates occur on new signal bars, only tighten the stop, and obey broker stop/freeze constraints. Optional opposite-signal exit is checked before dynamic exit and trailing. Hours restrict entries; there is no automatic end-of-day liquidation.
Real SELL examples: the completed path matters

The left SELL captures a larger favorable price distance than the right SELL. A continued decline after an exit does not add to the realized result. The screenshot establishes the displayed direction and RR; exact execution reason and net P/L require the MT5 deal record.
Real losing example: read the negative RR

This is an unfavorable exit of about 0.54 times the original stop distance. In version 1.08 every historical exit is captioned “TP”, including losses. TP on this chart is generic exit text, not evidence of a take-profit fill. The negative sign and the terminal’s Deals history determine how to read it.
Real BUY examples: two different R multiples

The adaptive exit configuration produces different outcomes. A later fall on the chart is not a loss on either already closed BUY. Keep the story tied to the actual timestamps and the dashed entry-to-exit connectors.
Realized RR is signed favorable price distance divided by original entry-to-SL distance. It uses actual deal entry and exit prices; commission and swap are excluded. It is not the percentage return on the account or a calculation against the tightened trailing stop.
What changes the behavior most?
| Layer | Variables | Practical effect |
|---|---|---|
| Signal | Timeframe, entry model, confirmation, band period/deviation | Changes which closed candles qualify and when a reversal is confirmed. |
| Direction | MA mode, period, method and slope lookback | Changes directional permission; side and slope are separate choices. |
| Risk and exits | SL mode, ATR multiplier/buffer, target and trailing modes | Changes initial stop distance, exit timing and attainable R multiples. |
| Execution | Spread/ATR ceiling, cooldown and hours | Can block a valid graphical setup from becoming an order. |
Research the configuration in stages
First compare entry and filter rules with exposure held fixed. Then test stop and target models. Finally add trailing, spread and session restrictions as separate layers. Optimize only active parameters. Timeframe enums are non-contiguous in MT5: test M5, M15, M30, H1 and H4 as discrete choices.
EA012 supports Custom max Smooth Equity ranking: return, equity linearity and positive balance weeks are combined with stagnation, underwater-volatility and drawdown penalties. The supplied ranking gates are at least 40 closed trades and no more than 35% relative equity drawdown. These are optimizer gates, not live safeguards. Choose Custom max in MT5 to use this score.
Screening on OHLC can be faster, but validate shortlisted configurations on real ticks because spread and intrabar SL/TP execution matter. Reserve an untouched chronological period, check neighboring parameters and run a demo forward test. No aggregate performance metric is inferred here from screenshots.
Limits that remain
Persistent trends can defeat band reversals. A permissive confirmation may admit noisy signals; tighter filters can reduce the sample. Any existing position on the symbol blocks a new entry, including a manual trade or another EA. There is no pyramiding, recovery ladder or martingale sizing. Terminal-managed exits and trailing require MT5 to remain connected; the broker-side stop can still trigger between evaluations.
The supplied 3% balance-risk setting is a comparison convention, not general live-account guidance. Gaps, costs and fills can make actual losses exceed nominal stop-risk estimates. Other broker symbols require their own contract, spread and tick-data checks.
Video inspiration
The starting inspiration for this strategy and EA012 was this original YouTube video. EA LAB developed an independent, configurable MT5 implementation. The video creator is not affiliated with EA LAB, and results shown in the video are not results of EA012.
Frequently asked questions
Does every band touch trigger an order?
No. The selected close confirmation, MA rule and execution gates must pass. A historical SETUP label is not an order record.
Does a visible MA mean the filter is on?
No. Display and filter settings are independent.
Does the preset use a fixed 2.25R TP?
No. The dynamic target mode makes FixedRR inactive.
Is this the exact original video strategy?
It is an independent rules-based reconstruction. Undisclosed execution/filter details are configurable choices; original-video results are not EA012 results.
Educational explanation of supplied software. Historical examples do not guarantee future performance.
