Learn › EAs and automated trading
Equity Curve Trading: Does Switching Off Below the Equity MA Really Help?
Switch a system off when equity drops below its own moving average, on again when it recovers. Simulations show when it helps, when it hurts, and the test it must pass.
- Equity curve trading switches a system off while its equity is below its own moving average, and keeps trading it virtually to know when to switch back on
- If trades are independent, the filter just discards trades at random, profit falls in line with the trades skipped, and you miss the recoveries
- The filter helps when results come in clear regimes, with real stretches of edge and no edge, each long enough to react to
- The filter must beat trading every trade at a smaller size with the same risk. If it doesn't, cut the size instead. It's simpler and keeps the good trades
- A simple test is to shuffle the trade order. If the filter does about as well on shuffled orders, it isn't detecting any regime at all
Equity curve trading uses a system’s own equity curve as an on/off switch. If the equity drops below its own moving average, or the system loses a set number of trades in a row, you stop trading it for real, then start again once the equity climbs back above the line. It sounds like a free lunch: sit out the bad stretches, stay in for the good ones. The simulations in this article show that some systems genuinely benefit, others just give away profit, and how to tell which kind yours is.
How equity curve trading works
There are three common rules.
- Moving average of equity. Track cumulative equity after each closed trade and compute its MA (moving average) over the last N trades. If the latest equity is below the MA, the next trade is not taken for real. If it is at or above the MA, it is taken
- N losses in a row. Stop after N consecutive losses, and resume when the system wins its next trade
- Drawdown threshold. Stop when equity falls more than a set distance from its peak, and resume when it recovers to a set point
All three share one requirement: while switched off you keep trading virtually, meaning the system still produces signals and every trade is recorded as if it were live, just without money. The curve that drives the decision has to be the system’s equity over every trade, virtual ones included. If you use your real account equity, it freezes as soon as you stop, and it can never cross back above the line by itself.
Everything in this article is measured in R, the risk per trade. A loser costs 1 R, a winner makes 2 R. If you risk 1% of the account per trade, 1 R is 1% (why risk 1% per trade).
Worked example: how MA(20) decides
Take the first 20 trades of the simulated system in the first chart below. Cumulative equity (in R) after trades 1 to 20 is:
2, 1, 3, 5, 4, 3, 2, 4, 3, 5, 4, 3, 2, 1, 0, −1, −2, 0, 2, 1
- The sum of the 20 values = 42
- MA(20) = 42 ÷ 20 = 2.1 R
- Latest equity after trade 20 = 1 R, below 2.1, so trade 21 is not taken for real
- Trade 21 loses −1 virtually, system equity becomes 0, the new MA = 2.0. Still below, so trade 22 is virtual too
- Trade 22 wins +2 virtually, equity becomes 2, but the MA = 2.05, still just below, so trade 23 is virtual too
- Trade 23 wins +2 virtually, equity becomes 4, above the MA of 2.1, so trade 24 is taken for real, and it loses −1
Check: the three trades skipped (21–23) add up to −1 + 2 + 2 = +3 R, and the first real trade after switching back on lost. This short stretch shows the weakness of every filter of this kind. It decides from results that have already happened, so it always lags reality, however good the system is.
When it helps: results that come in regimes
The first model is a system whose results come in regimes, like a market that changes character. In the good regime it wins 55%, in the bad regime 22%, always at RR 1:2. After each trade there is a 2% chance of switching regime, so a regime lasts 50 trades on average. Overall the system has an edge, about 0.155 R per trade on average.
On this path, taking every trade ends at +37 R, with a 31 R drawdown on the way. The MA(20) filter takes 119 real trades, ends at +46 R, and its deepest drawdown is only 12 R. The 81 trades it skipped averaged −0.11 R each, while the trades it took averaged +0.39 R. The filter really did discard the bad trades, because the bad regimes lasted long enough for it to catch up.
When it hurts: independent trades
The second model is a system whose trades are independent of each other: 40% winners at RR 1:2 every time. Expected result per trade is 0.4 × 2 − 0.6 × 1 = +0.2 R. The last trade tells you nothing about the next one.
Taking every trade ends at +40 R with a 13 R maximum drawdown. The MA(20) filter takes 148 real trades, ends at +29 R, with an 11 R maximum drawdown. The 52 trades it skipped averaged +0.21 R, as good as the trades it took (+0.20 R). The filter isn’t selecting anything. It just throws away about a quarter of good trades, and the ones it throws away tend to be the trades that pull equity back up from a low, because that is exactly where equity sits below the line.
It must beat “every trade, smaller size”
A filter lowers drawdown almost every time, but that isn’t evidence that it works. Trading less makes drawdown smaller on its own, whether or not you pick trades well. The right comparison is taking every trade at a smaller size, scaled until its drawdown equals the filter’s. That alternative is the cheapest one: no extra rules, and no good trades missed. It is the same principle we use to judge our own test results. Every filter has to beat simply resizing the position to the same risk first.
A filter that lowers drawdown but makes less than simply trading smaller at the same drawdown is just a more expensive way to trade smaller
Using the two paths above:
- Independent trades: scaling down so drawdown is 11 R, the same as the filter, means multiplying size by 11 ÷ 13 = 0.846. Profit becomes 40 × 0.846 = 33.8 R, better than the filter (29 R)
- Regimes: scaling down to a 12 R drawdown means multiplying by 12 ÷ 31 = 0.387. Profit becomes 37 × 0.387 = 14.3 R. The filter (46 R) wins clearly
A single path can be luck, so we repeated the simulation 5,000 times, 500 trades each, and averaged.
With independent trades, the filter skips 30% of trades and profit falls by almost exactly the same share (100.4 → 70.1 R, down 30%), while drawdown only falls from 17.5 to 15.9 R. As a control, we also discarded 30% of trades by coin flip: +70.3 R with a 15.8 R drawdown, practically identical on every number. On a system like this, the filter is no smarter than a coin. With regimes, the filter gets both more profit (117.4 vs 76.8 R) and far less drawdown (15.4 vs 52.9 R).
How clear must the regimes be?
The results above look good because the model makes the good and bad regimes very different (55% vs 22%). Let’s change two things, how long a regime lasts and how different the regimes are, while keeping the system’s average win rate at 38.5%. Every row is an average over simulations of 500 trades.
| Good / bad regime | Average regime length | Every trade (R) | MA(20) (R) | Every trade, smaller (R) | Filter wins |
|---|---|---|---|---|---|
| 55% / 22% | 2 trades | 77.7 | 50.7 | 75.3 | 30.4% of runs |
| 55% / 22% | 5 trades | 76.6 | 63.5 | 58.1 | 61.2% |
| 55% / 22% | 10 trades | 77.8 | 79.7 | 48.0 | 86.2% |
| 55% / 22% | 50 trades | 79.6 | 119.7 | 35.7 | 98.6% |
| 45% / 32% | 50 trades | 77.4 | 62.7 | 63.6 | About even |
| 45% / 32% | 200 trades | 76.6 | 64.7 | 66.1 | About even |
The 55%/22% rows use 3,000 runs, the 45%/32% rows 5,000 runs. An average regime length of 2 trades means the regime is re-drawn at random every trade, which is the same as independent trades. The filter loses.
The last two rows matter most. If the good and bad regimes are not very different, even regimes hundreds of trades long only let the filter tie with trading smaller. A system with a small edge has an equity curve that swings with luck more than with regime, so the filter can’t tell real regimes from noise. Most systems traded for real look more like the bottom rows than the top ones.
We tried other rules on the same models (500 trades, 5,000 runs):
- Stop after 3 losses in a row, resume after the next win: independent trades 79.1 R against 98.7 R for trading smaller at the same drawdown. Clear regimes 98.4 vs 50.0 R. Mild regimes (45/32) 65.4 vs 69.4 R
- Don’t stop, trade half size below the MA(20): independent trades 85.3 vs 84.2 R, about the same. Clear regimes 97.1 vs 50.7 R. Mild regimes 70.0 vs 61.4 R
Half size loses less when there are no real regimes, because it still keeps half of every recovery trade, and on the mild regimes it was the only rule that beat trading smaller. If you want to use a filter at all, this kind does less damage when you’re wrong, but it still has to pass the same comparison.
Evidence from our own systems
Do real systems have regimes? In our backtests on gold (XAUUSD) M1 for 2022–2026, almost every system that survived our selection rounds, built on quite different ideas, lost money or just broke even in 2022–2024, were mixed in 2025, and then made money in 2026. For one pullback system we tried 7 fractal settings: 2026 was positive in all 7 cells, while 2022–2025 lost in 25 of 28 cells (the older years use ticks generated from 1-minute data). The details are in Market regime.
That is the pattern where an equity filter could have a chance to help, because the regimes last years and the yearly signs flip clearly. But we have not tested an equity filter on these systems, so we have no numbers to confirm that it helps. Year-long regimes also bring their own problem: in a year where the system only breaks even, equity hovers around its average and the filter flips on and off, missing good trades along the way. Backtest results do not predict future results, and they are not returns you should expect.
Test it on your own system in 5 steps
- Take the trade list from your backtest and convert it to R, then simulate the filter in a spreadsheet. No need to change the EA first
- Choose the MA length in advance, then try neighbours like 10 and 40. If only one value wins, it is usually luck (Overfitting and Testing many ideas until one looks good)
- Look at the average result of the skipped trades, year by year. A good filter skips trades that are worse than average, in the same direction every year. If it skips good trades some years and bad trades in others, it is noise
- Compare with trading smaller at the same drawdown, as in the section above
- Shuffle the trade order. Shuffle your trade list at random a few thousand times and rerun the filter each time. If the filter’s advantage on the real order is about the same as on shuffled orders, it isn’t catching any regime (Monte Carlo)
Step 5 on the two paths in this article, measuring the advantage as the filter’s profit minus the profit of trading smaller at the same drawdown, with 2,000 shuffles:
- Independent trades: the real order scores −4.8 R, and 41.6% of shuffled orders do as well or better. The order means nothing
- Regimes: the real order scores +31.7 R, and only 1.1% of shuffled orders reach it. The order matters, and the filter is catching real regimes
If a filter works about as well on a shuffled trade order, it isn’t detecting regimes, it’s just trading less
Using it with risk management
An equity filter always reacts at least one trade late. It can only help through long bad stretches. It does not protect you from a single trade or a single day. Stop loss, position size and a daily loss limit all still need to be in place. And don’t judge a system by the drawdown with the filter without knowing how long a losing streak is normal for its win rate (Losing streaks are normal).
The figures in this article treat R as already net of costs. In real trading, virtual trades pay no spread but real ones do, and the price you actually get when switching back on can differ from what was recorded. Use virtual results from a demo account running alongside, not prices read off a historical chart.
Common mistakes
- Using real account equity as the switch. Once you stop trading it freezes, so the system never switches back on, or switches back on by gut feeling
- Looking only at the lower drawdown. Trading less lowers drawdown on its own. Compare with trading smaller at the same risk
- Searching for the best MA length on one data set. You get a beautiful curve on the past that says nothing about the future
- Using it on a system with independent trades. The filter discards recovery trades, the very trades that pay back the drawdown
- Leaving the system off forever because it stays below the line. If a system has truly lost its edge, retire it for a reason written down in advance, such as a drawdown beyond the range seen in Monte Carlo, rather than letting the filter sit in the off position indefinitely
Frequently asked questions
What do I do while the system is switched off?
Keep the system generating signals and record every trade as if it were live, for example on a demo account running alongside, or in a spreadsheet. The decision to switch back on needs the system's equity including those virtual trades. If you stop recording, the equity freezes and can never climb back above its average.
How many trades should the MA use?
There is no correct value for every system. This article uses 20 trades as an example. What matters is choosing the value before testing, then checking that nearby values like 10 or 40 point the same way. If only one value works, it usually just happens to fit that data.
Can it replace a Stop loss or a daily loss limit?
No. The filter decides from several trades that have already closed. It doesn't limit the damage from the trade that is open now. Stop loss, position size and loss limits all still need to be in place.
This is general education, not investment advice. Trading is risky and you may lose all of your capital.