intermediate moderate drawdown ~5 trades/mo

Mean Reversion

Mean-reversion EAs enter against a move once price has stretched a measured distance from its average, and target the return. The label describes the entry only. Across the six published here, win rate runs from 40.26% to 79.17% and payoff ratio by a factor of six — yet all six profit factors land between 1.25 and 1.50.

Mechanism

The EA measures how far price has deviated from a moving average or Bollinger centre, usually in standard deviations or ATR units, and confirms the stretch with an oscillator in extreme territory. Entry is against the move; the target is the mean, and the stop sits beyond the level that would invalidate the reversion thesis. The distance between those two exits fixes the record. A target close to the entry produces a high win rate and a payoff ratio well below 1; a target at the full mean produces the reverse. The six mean-reversion EAs published here take 1.5 to 5.45 trades a month and hold their median winner for 48 to 187 hours.

Suitability

Best where the pair spends most of its time inside a range and returns to a definable centre — historically the CHF crosses. The mean-reversion EAs published on this site run on AUD/CAD, USD/JPY, GBP/AUD, GBP/JPY and EUR/GBP instead. Structurally unsuited to momentum currencies during trend phases, when the stretch keeps stretching and a counter-trend position is held against a move that does not return. A trend filter such as ADX below 25 is close to mandatory. Suitable for a trader who can accept a long losing run — the worst in these records is eleven consecutive losses — and who reads the stop distance before the win rate.

Notes

Mean reversion bets on elastic rather than momentum: that a price stretched far from its average is more likely to snap back than to keep stretching. The EA waits for a statistically significant deviation — typically 1.5 to 2.5 standard deviations from a moving average or Bollinger centre. It confirms the stretch with an oscillator in extreme territory, then enters against the move and targets the mean itself.

That describes the entry, and the entry is the part buyers understand. The description usually bolted onto it — mean-reversion systems win most of their trades and lose big occasionally — is a claim about numbers, not about mechanism. That means it can be checked instead of repeated. Checked against our own data, the six mean-reversion EAs published on this site, it holds for two of them. This page covers how the machine is built inside MetaTrader 5, what those records show about the shape of its results, and how to stress-test one before any capital is exposed.

How it works: the entry is a distance, the exit is the record

The entry side is a measurement, and the three common constructions are close to interchangeable:

  • Deviation from a moving average. Price a set number of ATR units or standard deviations from a mean, treated as a statement that the move has over-extended. Cheap, and the whole strategy in one line.
  • Bollinger touch or close beyond the band. The same idea with the deviation calculated for you. A close beyond the band is stricter than a touch, and it changes trade count more than win rate.
  • Oscillator extreme with a regime filter. RSI or Stochastic past a threshold, gated by an ADX reading low enough to say the market is not trending. The filter is the difference between a mean-reversion EA and one that fades trends until it is stopped out of all of them.

The exit is where the records are actually made, and there are two of them: a target at or near the mean, and a stop beyond the level that invalidates the thesis. Expectancy per trade is win rate × average win − (1 − win rate) × average loss. That is arithmetic, not a finding — but the useful consequence is that the terms stop being independent once the two exit distances are fixed. Pull the target close to the entry and most trades reach it before noise takes them out: the win rate rises and the average win shrinks below the average loss. Push it out to the full mean and fewer trades survive the trip: the win rate falls and the payoff ratio climbs above 1.

Both are mean reversion; both enter against a stretch. They produce records that look like different strategies, and the numbers below are what that looks like in practice.

What the published mean-reversion records show

Every figure in the table is computed from the closed-trade lists published on each EA page — 1,994 trades in total, from records that begin in 2019 and run to March 2026. The full runs, parameters and testing conditions are published under the site’s methodology.

EASymbol / TFTradesWin ratePayoff (avg win ÷ avg loss)Profit factorMedian hold, winners ÷ losersWorst losing run
BeaconAUD/CAD M1538479.17%0.321.250.41×3
BallastEUR/GBP H130778.50%0.371.400.49×3
LanternfishUSD/JPY M540762.65%0.751.292.91×3
WindroseAUD/CAD H110159.41%0.901.310.56×4
Lattice WeaveGBP/AUD H149246.34%1.741.502.66×11
Tidewell SlackGBP/JPY M1530340.26%2.001.351.62×10

Four things follow from it, and the folklore predicts none of them.

The high win rate is not a property of the strategy. The six span 40.26% to 79.17%, and not one sits inside the 65-75% band the strategy is usually sold with. Their median, 61.03%, sits above the median of the trend-following EAs published here (55.90%). Whatever separates a mean-reversion EA from a trend EA, it does not show up in the column most buyers sort by.

Win rate and payoff ratio are the same dial read from two ends. Order the six by win rate and the payoff ratio orders itself perfectly in reverse. A 79.17% win rate pairs with a payoff of 0.32, then 78.50% with 0.37, 62.65% with 0.75, 59.41% with 0.90, 46.34% with 1.74, and 40.26% with 2.00. Six out of six, no exceptions. This is not a discovery about markets. It is what happens when the target moves relative to the stop — and the reason a win rate quoted without its payoff ratio carries almost no information.

What the dial does not move is the profit factor. The payoff ratios differ by a factor of six across the group. The profit factors are 1.25, 1.29, 1.31, 1.35, 1.40 and 1.50 — the whole group inside a spread of 0.25. And the highest win rate of the six still produces the lowest profit factor of the six, while the rest of the ordering has no pattern at all. Placing the target closer buys a smoother-looking record and pays for it in size; placing it further does the opposite; neither converts into a materially better rule.

Reverting is what the winners do slowly. The strategy is described as taking quick profits and holding losers, which would put the median winning hold below the median losing hold. It is true of three EAs out of six. Beacon holds winners 0.41× as long as losers, Ballast 0.49× and Windrose 0.56×, as advertised. The other three hold winners 1.62× to 2.91× longer, and the group median is 1.09× against the trend group’s 1.10× — with six records the two groups are indistinguishable on this axis, and the half that holds winners longer is exactly the half whose target sits at the full mean.

40.26%–79.17%Win rate, six published mean-reversion EAs
1.25–1.50Profit factor, same six — while payoff ratio spans 6×
11Lattice Weave: worst losing run, at a 46.34% win rate

Market conditions: when mean reversion pays and when it does not

ConditionFavourable for a mean-reversion EAHostile for a mean-reversion EA
Market stateRange with a definable centre price returns toA directional move that keeps extending
VolatilityElevated but non-directional — wide bars, no net progressExpanding with follow-through in one direction
The stretch itselfCaused by flow that exhausts — thin session, overreactionCaused by information that repriced the pair
Trade frequencyEnough range touches to sample the edgeA trending month with few valid setups and every one wrong
Holding costShort reversion, financing immaterialA position held days against the move, paying swap to be wrong

The bad environment is not a losing market — it is a directional one, the exact mirror of how trend-following fails in a range. That symmetry is the honest argument for looking at the two together rather than as substitutes: they lose money in different weather. It is also why the losing runs cluster. Eleven consecutive losses is not eleven unrelated mistakes; it is one trending stretch met by the same rule eleven times.

What caused the deviation matters as much as its size. A price stretched by thin liquidity in a quiet session is a candidate for reversion. A price stretched by a rate decision has been repriced, and there is no old mean for it to return to. No indicator separates the two, which is why a news filter matters more here than for a strategy entering with the move.

The same elastic assumption drives statistical arbitrage, which trades the spread between two correlated instruments rather than one instrument’s deviation from its own mean. The thesis is identical — applied to a relationship instead of a price — and so is the failure mode: it breaks precisely when the relationship stops holding. On a single pair such as EUR/GBP, the relationship assumed is the pair’s own history with its average.

Parameters and settings in MT5

InputTypical starting pointWhat it controls
MA_Period / BB_PeriodLong enough that the mean is a level, not a lagging copy of priceWhat the EA treats as the value price should return to
Deviation (σ or ATR multiple)1.5–2.5σ, or a volatility-scaled equivalentHow far price must stretch before the entry is valid — the trade-count dial
RSI_Period / thresholdsConfirmation only, not the trigger on its ownFilters stretches that are still accelerating
ADX_MaxAround 25, tested rather than assumedSuppresses entries in trends — the single most important input on this page
TakeProfit (distance to mean)The mean itself, or a fraction of the distance to itTogether with the stop, this sets win rate and payoff ratio
StopLossBeyond the level that would invalidate the reversionThe line between mean reversion and an accidental martingale
MaxSpreadPointsJust above the symbol’s normal spreadExtremes and wide spreads arrive together; this blocks the worst fills
OncePerBartrue for bar-close logicStops one extended bar from firing the same signal repeatedly

Three MT5-specific realities decide whether a promising backtest survives contact:

  • The stop has a minimum distance, and this strategy wants a wide one anyway. Read SymbolInfoInteger(symbol, SYMBOL_TRADE_STOPS_LEVEL) and clamp to it; treat SYMBOL_TRADE_FREEZE_LEVEL the same way for modifications near price. A stop the broker silently rejected turns a defined-risk trade into an open-ended one.
  • Spread widens exactly where this strategy enters. The extremes it fades often occur in thin conditions. A test run on average spread overstates the edge of an EA whose entries cluster where spread is worst. Test with realistic or real-tick spread, and read the modelling quality before the profit.
  • Holds are longer than the strategy’s reputation implies. The median winner in these records is held 48 to 187 hours. That makes SYMBOL_SWAP_LONG and SYMBOL_SWAP_SHORT a real line item rather than a rounding error, and triple-swap day differs by broker.
  1. Fix the entry distance and the filter, then leave them alone — the record you are about to measure is mostly made by the two exits, and changing everything at once tells you nothing.
  2. Test the same entry with a near target and with a target at the full mean, and record win rate, payoff ratio and profit factor for each. That comparison is the choice you are actually making.
  3. Set the stop from the level that invalidates the thesis, not from a round number, and clamp it to the symbol’s minimum stop distance.
  4. Run the ADX or regime filter on and off over the same period. If it makes little difference, the test period contained no real trend and the result is untested rather than robust.
  5. Read the worst losing run in the resulting record and decide, before funding anything, whether you would sit through one twice as long.

Failure modes: how a mean-reversion EA loses money

  • The stretch keeps stretching. The normal way this strategy loses. Every entry is against a move that does not return, and because the rule keeps re-qualifying, the losses arrive in a block. The eleven-loss run in the table is this failure mode, not a broken EA.
  • The mean moves. A pair that has repriced has a new average, and the old one is no longer a level. The EA keeps measuring distance from a number that has stopped meaning anything.
  • The stop is removed to avoid the loss. Widening a stop, or replacing it with an average-down, converts a defined-risk strategy into a grid with a good story. The equity curve improves immediately and the tail risk becomes unbounded.
  • The win rate is treated as a margin of safety. At a 79% win rate with an average loss three times the average win, the strategy is solvent only while the hit rate holds.
  • Cost is measured on the wrong bar. Entries cluster at extremes where spread is widest, and multi-day holds pay swap. Both are invisible in a test configured with fixed average spread and no financing.
  • Parameters fitted to a range-bound sample. A deviation threshold optimised over a period without trends will be the wrong one in the next. Neighbouring values producing very different results is the tell that the number was fitted rather than chosen.

How to build and stress-test a mean-reversion EA in mt5depot

You do not need to write MQL5 to assemble the machine described above. A deviation measure, an oscillator confirmation, an ADX gate, a target at the mean and a stop beyond the extreme are all blocks in the no-code builder. The reason to build it yourself: the test that matters is not “does it make money”. It is the comparison between two target placements on one entry rule, and no vendor page runs that comparison for you.

  • Test one entry with a near target and with a target at the mean, and compare win rate, payoff ratio and profit factor rather than net profit alone.
  • Include a trend filter and measure the record with it off, so you know what the filter is actually doing.
  • Set the stop from the invalidation level and clamp it to the symbol’s minimum stop distance so tester and live account agree.
  • Test on real tick history with realistic spread, since the entries cluster where spread is widest, and read the modelling quality of the run.
  • Include swap over the real holding period — the median winner in the records here is held for days, not minutes.
  • Read the worst losing run, and confirm the backtest period contained at least one sustained trend against the strategy.

Mean reversion versus trend

Mean reversionTrend-following
What it assumesA stretched price returns to its averageAn established direction continues
Entry relative to the moveAgainst it, at an extremeWith it, after confirmation
Loses whenThe market trends and the stretch keeps stretchingThe market ranges and moves fold back
Typical exitFixed target at or near the meanTrailing stop or signal reversal
Worst caseOne position, or a run of them, held against a move that does not returnA long series of ordinary losses
Published win-rate median61.03% (six EAs)55.90% (five EAs)
Published worst-run median3.5, longest 114, longest 9
ComplexityIntermediate — the two exit distances carry the riskBeginner — few inputs, hard to sit through

Neither is safer in general, and their failure modes are close to complementary: one needs stillness, the other needs movement. That is a real argument for running both, with one caveat the table cannot show. A mean-reversion EA and a trend EA with a fixed take-profit are not as different as their labels suggest, because both then depend on price stopping where the rule says it should. Check what each exit actually does before assuming that holding two EAs has diversified anything.

Typical pairs

Where this strategy works best

EA catalogue

12 Mean Reversion EAs on this catalogue

All EAs →

Frequently asked questions

What is a mean-reversion EA?
A mean-reversion EA waits until price has moved a measured distance away from its own average, then enters against that move and targets the return. The distance is normally expressed in standard deviations from a Bollinger centre or in ATR units from a moving average, and an oscillator such as RSI or Stochastic in extreme territory is used as confirmation. The stop is placed beyond the level that would say the stretch is not a stretch at all but the start of a trend. It is the natural opposite of trend-following in its entry, and it fails in the opposite weather.
Do mean-reversion EAs have a high win rate?
Not reliably, and it is the most common wrong assumption about the strategy. The six mean-reversion EAs published on this site record win rates of 79.17%, 78.50%, 62.65%, 59.41%, 46.34% and 40.26%. Not one of them falls inside the 65-75% band that mean reversion is usually described with, and the median of the six, 61.03%, sits above the median of the trend-following EAs published here (55.90%). The win rate follows from where the target is placed relative to the stop, not from the fact that the entry is counter-trend.
Which pairs suit a mean-reversion EA?
The textbook answer is the structurally range-bound crosses — EUR/CHF, USD/CHF, EUR/GBP — because a pair that keeps returning to a centre gives the strategy something to revert to. Only one of our own published mean-reversion EAs runs on a pair from that list, EUR/GBP; the other five run on AUD/CAD, USD/JPY, GBP/AUD and GBP/JPY. That suggests the requirement is narrower than the pair name: what matters is whether the specific symbol, on its timeframe, spends more time reverting than extending. Test that on the symbol you intend to trade rather than inheriting a pair list.
How is mean reversion different from a grid or martingale EA?
By the stop. All three add exposure or hold exposure against an adverse move, and all three look profitable while the market obliges. A mean-reversion EA takes one position at a measured extreme and closes it at a defined loss if the reversion thesis is wrong. A grid or martingale EA answers an adverse move by adding to it, so the loss is only realised when the account cannot fund the next addition. If an EA sold as mean reversion has no stop, or averages down into a losing position, it is a different strategy wearing the label.
How long a losing streak should I expect from a mean-reversion EA?
Longer than the strategy's reputation suggests. The worst run in the six records published here is eleven consecutive losses, on the EA with a 46.34% win rate. The median worst run across the six is 3.5 — just below the trend-following group's 4 — but the tail is longer: two of the six reach 10 and 11, against a trend-following maximum of 9. A counter-trend strategy meets its bad weather in a continuous block, because the same trending market that beats one entry beats the next one too. Read the worst run before funding the account, not during it.
Why should I read the profit factor rather than the win rate?
Because on these records the win rate moves and the profit factor barely does. The six published mean-reversion EAs span 40.26% to 79.17% on win rate, and a factor of six on payoff ratio. Their profit factors are 1.25, 1.29, 1.31, 1.35, 1.40 and 1.50 — a spread of 0.25 across the group. The highest win rate of the six produces the lowest profit factor of the six. Win rate and payoff ratio describe where the exits were placed; the profit factor is closer to what the rule actually earned.