Disclaimer: This article is for educational and informational purposes only. It does not constitute financial or investment advice. Trading forex and CFDs carries significant risk of loss. Past performance of any strategy — including backtests — does not guarantee future results. Never trade with money you cannot afford to lose.
What Is This Strategy?
The Normalized Displacement Pullback strategy is a trend-continuation system built around a single, volatility-normalized displacement oscillator — a construction closely related to the classic "Pretty Good Oscillator." At its core it measures how far the current price has stretched away from its own moving average, then divides that gap by the Average True Range (ATR), a common measure of recent volatility. The result is a clean, comparable reading of how many "average bars of travel" price sits away from fair value.
Rather than chasing a strong move as it happens, this strategy is designed for markets that have already shown a decisive one-sided impulse and are now taking a breather. When price stretches far from its mean, that stretch arms a direction. The strategy then waits patiently for the natural retrace back toward the mean and looks to enter as the oscillator turns and resumes in the direction of the original thrust. This is the well-known "reload" or pullback entry inside an established move.
As a learning tool, the Normalized Displacement Pullback is well suited to traders who want to understand volatility normalization, mean-reversion versus trend-continuation logic, and how a momentum filter (RSI) can be combined with a displacement reading to define higher-quality entries. It is presented here for study and analysis, not as a profit opportunity.
How It Works
The strategy computes one primary value on each newly-closed bar — the ATR-normalized displacement, or DISP:
`
DISP = ( Close − SMA(Close, MaPeriod) ) / ATR(AtrPeriod)
`
Because the raw gap between price and its average is divided by ATR, the reading becomes directly comparable across symbols, sessions, and volatility regimes. In practice, the absolute value of DISP rarely exceeds roughly 3, so a reading beyond the thrust threshold historically signals that price has genuinely displaced — a real impulse rather than random chop.
Long entry — the strategy signals a buy when all of the following align:
- Within the last
LookbackThrustbars, DISP reached at least+ThrustThreshold, confirming a bullish up-displacement (the direction is armed). - Price has since pulled back so that DISP now sits in the shallow band between
0and+PullbackLevel— retraced toward the mean but still above it, so the trend is considered intact. - DISP has just ticked back up (current DISP greater than the prior bar's DISP), suggesting the pullback is resolving in-trend.
- The Relative Strength Index (RSI), a momentum oscillator, is at or above 50, indicating momentum still favors the upside.
Short entry — the mirror image:
- DISP reached at least
−ThrustThresholdwithin the lookback window (a bearish down-displacement). - DISP has since retraced into the shallow band between
−PullbackLeveland0. - DISP has just ticked back down (current DISP below the prior bar's DISP).
- RSI is at or below 50.
Stop-loss logic: Risk is defined purely by volatility. The stop is placed AtrStopMult × ATR away from the entry price — wider when the market is volatile, tighter when it is calm.
Take-profit logic: The target is set as a multiple of the initial risk. With RewardRisk at its default of 2.0, the take-profit sits twice as far from entry as the stop, aiming for a 2:1 reward-to-risk structure on each bracket.
Protective flip-exit: If DISP violently crosses to the far side against the open position (beyond ±ExitFlipLevel), the strategy closes the trade early. The logic here is that the impulse which justified the entry has decisively reversed, so the original thesis no longer holds.
Additional controls: The strategy trades one position per magic number at a time, so the stop/target bracket manages every exit. A spread filter blocks new entries whenever the current spread exceeds MaxSpreadPoints, helping avoid unnecessarily costly fills.

Strategy Parameters
| Parameter | Default | Min | Max | Description | ||
|---|---|---|---|---|---|---|
| MaPeriod | 20 | 8 | 60 | Period of the simple moving average (SMA) the displacement is measured from. | ||
| AtrPeriod | 14 | 5 | 40 | ATR lookback used to normalize the displacement and to size the stop. | ||
| ThrustThreshold | 2.5 | 1.0 | 5.0 | How far \ | DISP\ | (in ATR units) must reach to count as a real directional thrust. |
| PullbackLevel | 1.0 | 0.1 | 2.5 | After a thrust, an entry arms only while DISP has retraced into the 0..±this band. | ||
| LookbackThrust | 6 | 2 | 20 | How many recent bars the thrust may have occurred within. | ||
| RsiPeriod | 14 | 5 | 40 | Period of the RSI momentum-confirmation filter. | ||
| AtrStopMult | 1.6 | 0.5 | 4.0 | Stop distance as a multiple of ATR. | ||
| RewardRisk | 2.0 | 0.5 | 5.0 | Take-profit expressed as a multiple of the stop risk. | ||
| ExitFlipLevel | 1.5 | 0.5 | 4.0 | Protective early-exit trigger: close if DISP flips beyond ±this against the trade. | ||
| MaxSpreadPoints | 80 | 5 | 300 | Skip new entries when the current spread (in points) is wider than this. | ||
| Lots | 0.10 | 0.01 | 1.0 | Fixed trade volume in lots. | ||
| Magic | 3719 | 0 | 9,999,999 | Magic number identifying the strategy's positions (one position per magic). |

Recommended Chart Settings
The Normalized Displacement Pullback is designed with liquid instruments in mind — FX majors or a major index such as EURUSD, GBPUSD, US500, or XAUUSD (gold). Because it normalizes everything by ATR, it adapts naturally to each symbol's own volatility.
The intended timeframes are M15 to H1, which tend to produce enough displacement events for the pullback logic to work with while filtering out much of the noise found on very short charts. That said, the strategy reads only the primary timeframe of the chart it is attached to and will run on whatever timeframe you select at backtest or run time. Remember that results will vary considerably across different symbols, sessions, and market conditions, and no single setting is optimal everywhere.
How to Install on MetaTrader 5
- Download the .ex5 file from the link below
- Copy it to your MT5
MQL5\Expertsfolder - Restart MetaTrader 5 or refresh the Navigator panel
- Drag the EA onto a chart matching the recommended symbol and timeframe
- Configure the input parameters and enable Algo Trading
What to Consider Before Using This EA
Strengths of the approach. By waiting for a pullback rather than chasing an extended move, the strategy targets a more favorable reward-to-risk entry point than buying a 3-ATR extension outright. Normalizing by ATR makes the displacement reading comparable across instruments and volatility regimes, which is a genuinely useful concept to study. The layered conditions — thrust, shallow retrace, oscillator turn, and RSI agreement — are designed to filter out low-quality signals, and the ATR-based stop keeps risk proportional to current volatility.
Known limitations. Like all trend-continuation systems, this strategy depends on trends actually continuing. In choppy, range-bound, or sharply mean-reverting markets, a "pullback" can easily become a full reversal, and the protective flip-exit may trigger only after the position has already moved against you. The requirement for a strong thrust followed by a shallow, in-trend retrace means qualifying setups can be relatively infrequent, which may test a trader's patience during quiet periods.
Where it may underperform. During low-volatility drift, news-driven whipsaws, or violent reversals, the displacement signal can flip quickly and produce a cluster of losing brackets. The fixed lot size does not scale to account equity, and the spread filter, while helpful, does not eliminate slippage on fast fills. As always, no combination of parameters guarantees consistent behavior across all conditions — thorough forward testing is essential before drawing any conclusions.
Risk Management Tips
Sound risk management matters far more than any single entry signal. Consider the following general principles as part of your education:
- Risk a small, fixed fraction per trade. Many educators suggest never risking more than 1–2% of account equity on any one position. Because this EA uses a fixed lot size, you may need to adjust the
Lotsvalue so that the ATR-based stop distance corresponds to an acceptable percentage of your account. - Test on a demo account first. Run the strategy on a demo or simulated environment for an extended period before considering any live use, so you understand how it behaves across different market phases.
- Understand drawdown. Every strategy experiences losing streaks. Study the depth and duration of potential drawdowns so you are mentally and financially prepared, and never rely on capital you cannot afford to lose.
- Mind costs and conditions. Spreads, commissions, and slippage all erode results. The built-in spread filter helps, but real-world trading costs should always be part of your analysis.
- Avoid over-optimization. Tuning parameters to fit past data can produce results that fail to hold up going forward. Favor robust, sensible settings over curve-fitted extremes.
Risk Warning
Trading foreign exchange, CFDs, and other leveraged financial instruments involves substantial risk of loss and is not suitable for all investors. The strategies and tools discussed on this page are provided for educational purposes only and do not constitute financial advice, investment recommendations, or solicitation to trade. Always consult a qualified financial adviser before making trading decisions. Past backtest performance is not indicative of future results.
Downloads
- Expert Advisor: NormalizedDisplacementPullback.ex5 (29 downloads)
- Source Code: NormalizedDisplacementPullback.mq5 (34 downloads)
- Documentation: NormalizedDisplacementPullback.pdf (39 downloads)