Rated 4.5 out of 5

“Trade with the trend” is the most repeated advice in trading. Almost nobody tests it.

Every course says it. Filter your entries by trend, stay out of the chop, only trade in the direction of the bigger move. It sounds so obviously right that it is almost never checked — and when it is, you are usually shown one strategy, with the filter already on, and no idea what the same strategy did without it.

That is a one-variable experiment, and it is easy to run properly. So we ran it seven times: the same Expert Advisor, seven different indicator engines driving its entries, each one tested twice — once taking every arrow, once allowed to take an arrow only while ADX said the market was trending.

Everything else was held still. Same pair, same 2.5 years, same 0.5% risk, same stops, same spread. The only thing that changes between two columns of the table below is whether the filter was allowed to veto the trade.

How the test was set up

The EA used is our own, and that matters for one boring but important reason: it can swap its signal source without changing anything else. Seven engines, one code path, one risk model, one order handler. If the results differ, the difference is the signal or the filter — not two different programs written by two different people.

Why this test is even possible. Most “signal EAs” you can buy are bridges — the strategy lives on the seller's server and the EA just fills the orders it is sent. There is nothing local for the Strategy Tester to replay, so the seller's screenshots are the only evidence that exists. An EA that carries its logic locally can be re-run by anyone on their own broker, history and spread. That is the difference between a result and a claim.

The seven engines, with the filter off and on

Net profit in account currency on a $10,000 start, profit factor, and the largest balance drawdown reached during the run. Green is net positive, red is net negative. Nothing has been left out — every engine the EA can run is in this table.

Signal engineNo filter — netPFMax DDTrending only — netPFMax DDVerdict
Stochastic + ADX+332.661.0215.9%+1,508.501.108.94%Filter helped a lot
RSI + Bollinger−338.840.9814.9%+208.461.0214.7%Flipped positive
ROC + Parabolic SAR−1,351.540.8918.2%+240.281.047.40%Flipped positive
Keltner × SuperTrend−1,314.360.8620.4%−1,153.480.8214.9%Still losing
EMA + MACD−1,545.400.8219.8%−1,281.040.7215.1%Still losing
CCI + EMA−2,313.770.8626.0%−1,540.460.8317.9%Still losing
Heikin Ashi + EMA−1,804.240.8918.3%−2,344.120.7624.1%Filter made it worse
3
engines went from net negative to net positive when the filter was switched on
8.94%
max drawdown of the best engine with the filter on — down from 15.9% without it
4 of 7
were still unprofitable with the filter on — and one was made worse by it

What the filter is actually doing

A trend filter does not make a strategy smarter. It removes trades. Whether that helps depends entirely on where the losses were sitting.

For Stochastic + ADX, ROC + SAR and RSI + Bollinger, the losses were concentrated in flat conditions — oscillator crossings fire constantly in a range and most of those crossings go nowhere. Cut the ranging trades out and you cut most of the damage. That is why ROC + SAR moved 1,591 points of net result and why its drawdown fell from 18.2% to 7.40%.

For the others, the losses were not concentrated anywhere in particular. Filtering them just produced a smaller version of the same loss: Keltner × SuperTrend improved by 161 and stayed firmly negative. And Heikin Ashi + EMA got worse — it lost 540 more with the filter than without it, and its drawdown rose from 18.3% to 24.1%. For that engine, ADX was removing the trades that were paying for the others.

The useful conclusion is not “use an ADX filter.” It is that a filter is a hypothesis about where your losses live, and it has to be tested against your own strategy rather than assumed. On this data it was the difference between a losing system and a modest one for three engines, and actively harmful for a fourth.

The one configuration worth keeping

Stochastic + ADX with the trending-only filter was the best result in the table, and it is what the EA ships with as its default. Here is the whole run, with nothing rounded in its favour:

Net result+1,508.50 on a $10,000 start — about +15.1% across 2.5 years
Profit factor1.10
Trades953
Win rate53.4%
Max balance drawdown8.94%
Sharpe ratio0.96
Recovery factor1.39
Expected payoff1.58 per trade
Worst losing streak8 trades in a row, −295.70

+15.1% over two and a half years is roughly 5.7% a year in a tester, before slippage, before commission on a real account, and before the trader does anything human to it. That is a modest number and we are not going to dress it up. A profit factor of 1.10 means that for every 1.00 lost, 1.10 was won — a thin margin that a wider spread or a worse fill can eat.

What makes it worth publishing is not the size. It is that the drawdown stayed under 9% across 953 trades, that no guard had to fire to keep it there, and that anyone can re-run it and get the same numbers.

Balance curve for Stochastic plus ADX with the trending-only filter, EUR/USD H1, January 2024 to August 2026, with a drawdown-from-peak panel and the summary statistics

Nearly half the months were losers

This is the part that equity curves hide. Broken down month by month, 15 of the 31 months finished negative. The curve above is not a staircase — it is a long grind with a visible slide through late 2025 and another through early 2026.

Month-by-month percentage results across three years, with the losing months shown in red - 15 of 31 months finished negative

Combine that with the worst losing streak — eight trades in a row for −295.70 — and you have the real risk of running any mechanical system: not that the maths stops working, but that a human switches it off in the middle of a normal losing run and never sees the recovery. If a red month would make you change the settings, the settings are not the problem.

The trailing stop was doing more work than expected

One extra test worth reporting, because the result was not what we assumed. Turning the ATR trailing stop off on the same engine, filter open, took the run from +332.66 to −36.00 — and the win rate fell from about 51% to 40%.

That is a large effect for a component people often treat as optional polish. On this strategy the trailing stop is not protecting profit at the end of a move; it is closing trades that would otherwise have run back through the entry. It stays on.

Two tester traps that nearly invalidated the whole thing

Both of these produced confident, completely wrong results before they were caught. If you run your own tests in MT5, they are worth more than the table above.

1. A max-drawdown halt measured from peak equity kills long backtests

The EA has a guard that stops trading permanently past a set drawdown, and it was shipping at 10%. Drawdown is measured from peak equity, and the peak ratchets upward — so a perfectly normal pullback after a good run trips it. In the first sweep, all seven engines halted permanently during 2024. Even the profitable one stopped on 23 December 2024, about a year into a 2.5-year test, and everything after that was a flat line.

The results looked plausible. They were measuring the guard, not the strategy. Set the drawdown halt to zero for any backtest you intend to read, and re-enable it afterwards for live use.

2. The Strategy Tester silently overrides your recompiled defaults

After changing three defaults in the source and recompiling cleanly, a verification run reported the old input values and reproduced the old result byte for byte — while the log confirmed the new compiled file had been loaded.

The cause is MQL5\Profiles\Tester\<Expert>.set. The tester caches the last input set you used and applies it over the compiled defaults; a [TesterInputs] block in an ini file only overrides the keys you actually list, and everything else comes from that cached file. Delete or rename the .set file before any run meant to prove what the compiled defaults do — and then confirm it by reading the Inp...= lines the tester prints at the start of each pass instead of trusting that it worked.

Reproduce it yourself

None of this is meant to be taken on trust. The EA runs locally, so the test is repeatable on your own terminal:

  1. Attach the EA in the MT5 Strategy Tester on EURUSD, H1, 1-minute OHLC model, 1 Jan 2024 → 1 Aug 2026, $10,000 start.
  2. Set the max-drawdown guard and the daily-loss stop to 0 so the full period actually runs.
  3. Run once with the regime filter set to any, then again set to trending only. Change nothing else.
  4. Repeat for each signal engine to rebuild the table.
  5. Your numbers will not match ours exactly — your broker's spread and history are not ours. The direction of the effect is what should reproduce.

What this does not prove

Stating the limits is not modesty, it is the difference between a test and an advert:

Our rating: 4.5 out of 5

Rated 4.5 out of 5

4.5 out of 5 — and the rating is for the method, not for the size of the result. What earns it: only one variable moves between the two columns; every engine is published, including the four that lost; the guard that would have distorted the run was found and disabled rather than left to flatter the numbers; the losing months and the worst losing streak are shown next to the equity curve; and the whole thing is reproducible on your own terminal instead of being a screenshot.

What holds it back from 5: it is a single pair on a single timeframe over a single window, with no out-of-sample period held back. Until the same comparison runs on other pairs and other periods, the honest description of this result is “consistent on the data we tested” — not “proven.”

Frequently asked questions

Does an ADX trend filter improve every strategy?

No. Across the seven strategies here it turned three from losing to positive and halved the drawdown of the best one, but it barely helped Keltner × SuperTrend and it made Heikin Ashi + EMA clearly worse — from −1,804 to −2,344. A filter does not add skill, it removes trades. That only helps if the losses it removes were concentrated in the conditions being filtered out.

What ADX level counts as trending?

This test used ADX with a period of 14 at its default trend level, and an entry was simply refused while ADX sat below it. The level itself was never tuned, on purpose — tuning the filter on the same data used to judge it is how a backtest starts flattering itself. Read the result as what the untuned default produced, not as the best obtainable setting.

Why did most of the seven strategies lose money?

Because they were traded completely mechanically on default settings, on one pair and one timeframe, with a real spread and a fixed risk model, and with nobody deciding to sit a session out. Six of seven were unprofitable with the filter off; four were still unprofitable with it on. That is the normal outcome for indicator arrows traded blind, and publishing it is the point — a study that only shows its winner is not a study.

Can a signal-service EA be backtested?

Usually not. Most are bridges: the strategy lives on the vendor's server and the EA only fills the orders it receives, so the Strategy Tester has nothing to replay and the vendor's own screenshots become the only evidence available. An EA that carries its logic locally can be run on your broker, your history and your spread — which is what makes a table like the one above possible at all.

Do these results apply to the MT4 version?

No, and they should not be reused that way. These 2.5-year figures came from the MT5 Strategy Tester. The MT4 build of the same strategy has so far only been run across roughly three months of history — 96 trades, +91.78, profit factor 1.05 — which proves the port executes correctly but is far too short to compare with 953 trades. The two sets of numbers are kept apart deliberately.

Where to go next

The EA that produced every number on this page is documented in full on its own page, including the settings it ships with and the same limitations listed above: the MT5 & MT4 Signal EA. It is part of the $39 lifetime library rather than a separate purchase.

If you would rather look at the same indicators without installing MetaTrader at all, the Signals web app (a month of it is included with the $39 package) runs them in the browser and includes a scanner that reads every indicator across every market at once — along with a server-scored leaderboard whose bots are currently below break-even, published for the same reason the four losing engines are in the table above.

Risk note. This content is for educational purposes only. Trading involves risk. Past results do not guarantee future outcomes. Always practice responsible money management — limit the number of trades you take in a day, keep the risk per trade small, and never trade money you cannot afford to lose. Every figure on this page is what one backtest produced on one data set, not a projection of what any account will do.