Cross Pair Mean Reversion
- Experts
-
Fernando Altair Kuhn
Trader and MQL5 developer from Brazil. I build MetaTrader 5 tools for risk control and trade execution: lot calculators, loss limits, stop managers, a trade copier and strategy builders. Every product shows its limits and its tester results with real costs. No profit promises. Support through MQL5 - Versione: 1.1
- Aggiornato: 6 novembre 2026
- Attivazioni: 10
Cross Pair Mean Reversion trades a simple, fully transparent rule on cross pairs: when the price of a pair is stretched far from its average of the last two months, it opens a position betting on a return toward that average. One chart manages EURGBP, AUDCAD and EURCHF together. Everything is calculated on closed H1 bars, so what you see in the Strategy Tester is what runs on the account.
It trades rarely and holds positions for days or weeks. It is not a scalper, it does not use a grid or martingale, and it never adds to a losing position.
The rule
- For each pair, on every H1 bar close: z = (natural log of the close minus its average over the last N bars) divided by the standard deviation over the same N bars.
- No position and z below -1.5: buy. No position and z above +1.5: sell.
- Close the position when z comes back near the average (|z| below 0.5), when it reaches the maximum holding time (480 hours), or when z reaches the opposite extreme. In that last case the robot can open the opposite side right after.
- One position per symbol, a safety stop loss 250 pips away, no take profit, no entry when the spread is above 3 pips.
Presets
- Slow (default): lookback 1440 H1 bars (about two months), entry 1.5, exit 0.5, maximum 480 hours. About 15 trades a year per pair.
- Fast: lookback 720, entry 1.25, exit 0.5, maximum 240 hours. About 37 trades a year per pair, shorter holds.
- Custom: your own lookback, entry, exit and holding time.
Where it comes from, and where it failed
The rule was found and validated in our own research with real trading costs on several years of data. It held up on EURGBP, AUDCAD and EURCHF. The same rule was tested on 15 other pairs (AUDCHF, AUDJPY, AUDNZD, CADJPY, CHFJPY, EURAUD, EURCAD, EURJPY, EURNZD, GBPAUD, GBPCAD, GBPCHF, GBPJPY, GBPNZD, NZDJPY) and was rejected on all of them. That is why the default list has only three pairs. Adding other symbols is possible, but there is no evidence that it works on them.
Backtest (our own, with real costs)
Slow preset, the three pairs together, fixed 0.10 lot on a 10,000 account, January 2022 to November 2026, spread of each bar times 1.3 plus 1 pip of extra friction per trade, and the broker's swap:
- 215 trades (about 45 a year for the three pairs), 70% closed with profit, average hold 12 days.
- Result +2,901 in account currency. By year: 2022 +1,659, 2023 +880, 2024 +59, 2025 +544, 2026 (until November) -242.
- Maximum drawdown of equity, open positions included: -1,020 (8.7%).
- Swap paid: -868. Worst single trade: -327 (safety stop).
- By pair: EURGBP +1,696, AUDCAD +628, EURCHF +576.
Results depend on the broker's spread and swap. Past results do not guarantee future results.
Weak points (please read)
- Few trades. Weeks without a new position are normal.
- Positions stay open for days or weeks, so the swap matters: on many brokers holding one side of these pairs costs swap every night, and it took about a quarter of the gross profit in the backtest. A swap-free or low-swap account helps.
- Most trades win a little and a few lose more. A trend that keeps going (a regime break, like EURCHF in January 2015 when the Swiss franc floor was removed) can run straight to the 250 pip safety stop, or gap past it.
- Losing years happen: 2024 was almost flat and 2026 so far is negative.
- The terminal must be running (a VPS is recommended) for the exits based on z and time. The safety stop sits on the broker's server.
Position size
- Lot per 10,000 of balance (default 0.10, that is 0.01 per 1,000).
- Fixed lot.
- Risk percent of equity at the safety stop distance.
- Optional maximum lot. When the calculated lot is below the broker's minimum, the minimum lot is used (can be turned off). With all three pairs open at the default size, a safety stop on all of them at once would cost about 8% of a 10,000 balance.
Symbols
Write the pairs without suffix (default "EURGBP,AUDCAD,EURCHF"). The robot finds the broker's name by itself, for example EURGBPm, EURGBP.raw or EURGBP.pro. Attach it to one chart of any symbol and timeframe: it reads H1 data of every pair. You can also choose to trade only the chart symbol. If none of the listed pairs exists at the broker, it trades the chart symbol.
Panel
- Result of the robot (closed plus open) and today's closed result.
- For each pair: the current z, a bar with its distance from the mean, and the zone (buy zone, sell zone, at the mean).
- Positions table: side and lot, age in hours, profit and swap.
- Time to the next H1 close (next evaluation), lot in use, closed trades and win share.
- Pause entries button (open positions are still managed) and Close all button with a confirmation click. Close all also pauses new entries until you resume them.
- The panel can be collapsed by clicking its header.
Account types
Works on hedging and netting accounts. On netting accounts a symbol that already has a position of another robot or a manual trade is skipped. Use a different magic number for each copy of the robot (for example Slow on one chart and Fast on another, hedging accounts only).
Inputs
- Symbols: pair list, trade only the chart symbol
- Signal: preset (Slow, Fast, Custom), custom lookback, entry z, exit z, maximum holding hours
- Protection: safety stop loss in pips (default 250), maximum spread at entry in pips (default 3)
- Position size: mode, lot per 10,000, fixed lot, risk percent, maximum lot, use minimum lot
- Robot: magic number (default 7302), order comment
- Display: panel corner and offsets
Strategy Tester
Use H1 or any timeframe with "1 minute OHLC" or "Every tick". The lookback needs about two months of H1 history before the start date. A short test of a few weeks can end without trades: the rule is slow by design.
Risk warning
Trading leveraged products carries a high risk of losing money. This robot does not guarantee profit. Test it on a demo account first, use a size you can afford to lose, and keep in mind that a backtest is not a promise of future results.
