Treating volatility as direction
High volatility says price is moving a lot, not that it is moving up. Trend and volatility are separate measurements — a violent range is high-volatility and trendless at the same time.
Volatility is the degree of price variation over time — how far price moves, not which way. Statistically it is the standard deviation of returns; inside an MT5 EA it is read as Average True Range, and it decides whether last month's stop distance is still right today.
also: market volatility, price volatility
Updated · Reviewed
How far price tends to move, not which way. A quiet market and a violent one can end the week at the same price; volatility is the difference between the two journeys.
Every stop distance, target and lot size inside an EA is calibrated against some assumption about how far price moves in a session. Volatility is that assumption made explicit. When it changes after deployment, an EA that was correct becomes wrong without a single line of its logic having changed.
σ = standard deviation of periodic returns · annualised σ = σ_daily × √252 The statistical definition is the standard deviation of returns, and it is the one used by the Sharpe ratio, value at risk and every risk model. The practical definition inside an EA is Average True Range, which measures the same idea in price units and needs no return series to compute. Two figures called 'volatility' are often these two different things.
No single number describes a strategy. These metrics change how this one should be read.
A worked illustration: the same EA runs a 30-pip fixed stop through two regimes. Only the size of an ordinary hourly move changes.
The ATR-based version widens with the market — but the lot size must then shrink with it.
Calculation 30 ÷ 12 = 2.5 ranges · 30 ÷ 34 = 0.88 ranges
Result A fixed stop changes meaning by a factor of nearly three; an ATR-based stop does not
mt5depot EA pages state the tested window and the data source for each listing, so whether a result spans more than one regime can be read from the dates. Every measured figure on this page comes from those listings' published trade ledgers (EXP-VOL-REGIME-001), closed-trade basis.
High volatility says price is moving a lot, not that it is moving up. Trend and volatility are separate measurements — a violent range is high-volatility and trendless at the same time.
On the published ledgers the most volatile quarter of an EA's daily P/L was profitable on 13 of 22, and the worst single day fell outside that quarter on 15 of 22. A filter that switches the EA off in high volatility would have sat out that quarter and still missed most of the worst days.
An ATR-based stop that triples in a volatile regime triples the money at risk unless position size falls with it. The adaptive stop only helps when it is paired with adaptive sizing.
The tester never prints a volatility figure. Three of its settings decide how much of it reaches the report.
Modelling. Every tick based on real ticks replays the recorded path inside each bar, so a stop inside an ordinary bar is hit when it would have been hit. Every tick generated from M1 bars interpolates that path, and Open prices only discards it. A strategy whose stop is narrower than the bar range cannot be judged on either — see tick data and modelling quality.
Spread. Strategy Tester → Settings → Spread offers Current or a fixed number of points. Both pin one value across years, so the widening that arrives with a volatility spike is absent from a generated-tick test. On real ticks the spread is whatever the tick file carried.
Inputs. An ATR-sized stop exposes two inputs on the Inputs tab, the period
and the multiplier. A multiplier that works at 2.0
but not at 1.8 or 2.2 has been fitted to one window’s retracements, not to
volatility. In MQL5 the handle is created once with
iATR(_Symbol, PERIOD_CURRENT, 14) in OnInit. The value is read from the
last completed bar, index 1, so the stop distance does not depend on when the
signal fired. The ATR entry has the settings.
Each listing carries its closed-trade list, so the σ of an EA’s own daily P/L can be measured by calendar quarter and compared with the whole window. Two of 24 listings never reach 10 active days in any quarter and were skipped, not padded.
| Measure (closed-trade basis, quarters with 10+ active days) | Median across 22 EAs | Range or count |
|---|---|---|
| Qualifying quarters per EA | 15.5 | 375 in total |
| Regime span: most volatile quarter σ ÷ calmest quarter σ | 2.29× | 1.25× to 5.33× |
| EAs whose regime span exceeds 2× | — | 15 of 22 |
| Quarters within ±25% of the whole-window σ | 78.76% | 282 of 375 |
| Worst single day inside the most volatile quarter | — | 7 of 22 |
| Most volatile quarter lost money | — | 9 of 22 |
| Last qualifying quarter σ ÷ whole-window σ | 0.91× | below 1 on 17 of 22 |
Two rows contradict what a volatility filter assumes. The worst day landed outside the most volatile quarter on 15 of 22 EAs, and that quarter made money on 13 of 22. A single bad day is not a regime, and a rolling measure does not see it coming.
The widest span belongs to Murmuration: a quarterly σ of 4.591% in 2026-Q1 against 0.862% in the next quarter, 5.33 times apart with identical settings. Its worst day, 9.579% on 2020-03-18, sat six years earlier in a calmer quarter.
Read the regime, not the level: compare today’s ATR with the ATR over the tested window, on the timeframe the EA trades.
CopyBuffer(handle, 0, 1, bars, array) and average the array.Running a backtest in MT5 covers the settings above, and parameter optimisation the neighbouring-values check for an ATR multiplier. How a spike turns into money is the subject of position sizing, slippage and maximum drawdown.