Most trend systems die the same way. You set a 1:1 target because it feels safe, your win rate looks respectable, and then you spend three years wondering why the account is flat. The trades that were supposed to pay for all the losers got cut at +1R and handed the rest of the move to somebody else.

I spent a while proving that to myself with numbers instead of opinions.

Straight up before you read further: I built Aeolus and I sell it, so this isn't an independent review. Every figure below came out of the MT5 Strategy Tester, the .set file is at the bottom of the post, and you can re-run the whole thing yourself. If you want the version where I tear apart somebody else's EA and don't care about the outcome, those posts are over here.

Where it started

Aeolus began as somebody else's idea. There's an open-source Pine script on TradingView called "3Commas Bot" by Bjorgum, published free, and it's a decent piece of work: MA cross entries, a stop placed behind the recent swing and pushed back by ATR, an optional target, an optional ATR trailing stop. The author calls it a template rather than a finished system, and he's right to.

I ported it to MQL5 bar for bar. Every one of the nine moving-average types, the ATR using Pine's RMA smoothing rather than MetaTrader's, the swing lookback with Pine's window semantics at the start of history, even a sign quirk in the target-distance math that most people would have silently "fixed" into something different.

Then I measured it 72 times.

And the honest result is that the script, on its own defaults, doesn't make money. Sixteen of the twenty-four cells in my first sweep came in under a profit factor of 1.0. On gold it was worse: 0.68 to 1.03 across every variant I tried. The settings the author shows in his own screenshot aren't better than the defaults either. They push win rate up to 53–57% by putting the target closer, and the profit factor stays right around break-even. Textbook case of a high win rate that buys you nothing.

So what am I selling? Not the entry logic. That's public and I just told you where to find it. What took the time was the 72 measurements that located the one configuration that works, and the MetaTrader engineering underneath it. More on both.

Two things that went wrong

The first backtest returned zero trades. Not "few trades", zero, across nine years, while the log cheerfully printed a signal every few days and then refused to send any of them.

The cause turned out to be the session check. MT5 publishes a 24/7 symbol as a trading session running "00:00 to 00:00", and the code read that as an empty window and concluded the market was permanently shut. It also mangles sessions that cross midnight. On gold nobody would have noticed, because Exness publishes gold as "00:00 to 20:58", an ordinary interval that the buggy code handled fine. On BTCUSD it blocked every single order. I found the same defect in six other EAs of mine afterwards.

The second problem was worse, because it produced beautiful results instead of no results.

My first regime split gave profit factors of 1.65 and 4.32 on the two oldest windows. Best numbers in the whole study. Then I checked how much data the tester had actually built:

WindowH4 barsExpectedTicks
2017–2019517≈4,3802,060
2019–2021683≈4,3802,732
2021–20233,747≈4,3803,150,000
2023–20254,386≈4,3804,210,000
2025–2026.083,462≈3,4603,320,000

Two thousand ticks for two years. Real BTCUSD data on that server only starts around 2021, and everything before it is a shell that MetaTrader will happily generate bars from and hand you a plausible-looking report. Those two gorgeous windows were five trades and seven trades on fabricated prices.

So the nine-year study became a five-and-a-half-year study, and every number from here down was re-run on the clean range. I'd rather tell you that than quietly keep a profit factor of 4.32 in the marketing.

What Aeolus actually does

Long when the fast average crosses above the slow one, short when it crosses below. Stop goes behind the lowest low (or highest high) of the last few bars, pushed further out by a multiple of ATR so it sits behind the structure rather than on top of it. Position size comes from that stop distance and a fixed percentage of the balance, so risk per trade is the same whether you run it on a $500 account or a $50,000 one.

And then nothing. No target.

The stop trails behind price at one ATR and that's the only way a winning trade ever ends. That single change is worth more than everything else I tested:

Exit styleTradesNetPFMax DDWin rate
1:1 target (the script's default)123+9501.196.4%54.5%
Target + trailing stop187+1,7921.355.2%44.9%
Trailing stop, no target187+3,8991.627.7%39.6%

BTCUSD H4, 2021.01 to 2026.08, $10,000 start, 1% risk per trade, real historical spread and swap.

Look at what happens to the win rate as the profit factor climbs. It falls from 54.5% to 39.6%. The version that wins most often is the version that makes the least money, and if you'd been picking settings by win rate you'd have chosen exactly wrong.

Here's the same thing in trade sizes. The average winner is $136.64 and the average loser is $54.50, so one win pays for two and a half losses. The biggest single winner was $964.04. The biggest single loser was $145.20. That gap is the entire business model, and a fixed target is the thing that closes it.

The numbers

Everything below is BTCUSD H4, January 2021 to August 2026, 1% risk per trade, with the broker's own historical spread and swap applied. Not a fixed spread I picked.

Balance after each closed trade: 187 BTCUSD H4 trades from 2021 to 2026, starting at $10,000, ending at $13,899, with long flat stretches broken by sharp step-ups

That shape is worth sitting with for a second. Most of the chart is flat or drifting down. The gains arrive in a handful of steps. If you opened this account at the wrong moment you'd have spent five months watching nothing happen, which is the part nobody puts in the sales page.

Three separate market regimes, tested independently:

WindowMarketTradesNetPFMax DD
2021–20232021 top, then the 2022 bear64+9191.507.5%
2023–2025recovery67+1,3291.687.2%
2025–2026.08recent56+1,4071.837.6%

The 2022 bear market window is the one I care about. A trend system that only works when the asset goes up isn't a trend system, it's a long position with extra steps.

Which brings up the obvious test. Split the run into long trades only and short trades only:

DirectionTradesNetPF
Long only107+1,1171.41
Short only108+7161.23

Shorts made money over a period when Bitcoin mostly went up. If this were just beta dressed up as a strategy, that row would be deeply red.

Is it one lucky settings cell? This is the test I'd want to see if somebody were selling this to me. I moved the two moving-average lengths, then the trailing multiplier, and re-ran everything:

Profit factor across neighbouring settings. Moving-average pairs from 13/34 to 50/100 score between 1.21 and 1.90. Trailing multipliers from 0.5 to 3.0 score between 1.46 and 1.91. Nothing falls below break-even

Nothing drops below break-even anywhere on either axis. That's the difference between a real effect and a curve fit: a curve fit is a spike with cliffs on both sides, and this is a table-top.

Now the part I could have left out. The settings I ship are not the best cell on that chart. 50/100 scores 1.90 and a 3.0 trailing multiplier scores 1.91, both better than the 1.63 I ship. I ship 21/50 with a 1.0 multiplier anyway, for two reasons: those higher cells rest on 92 and 145 trades instead of 187, and the peak of a plateau is exactly where a curve fit hides. Sitting in the middle costs some backtested return and buys a much better chance the thing still works next year. If you'd rather run the edges, the .set file is yours to edit.

Timeframes. H4 through D1 all come in positive. H2 breaks down at 0.97, which makes sense: more trades, more spread paid, and eventually the costs eat whatever edge exists. I ship it for H4 and I'd be comfortable on H6 or H8.

And the test I trust most. MetaTrader's default simulation builds ticks from one-minute bars, which can flatter a system when the stop and the target sit inside the same minute. So I ran the whole thing again on real tick data:

Tick modelTradesNetPFMax DD
1-minute OHLC187+3,8991.6287.71%
Real ticks187+3,8791.6237.72%

Two-tenths of a percent apart. Whatever else is true about these results, they aren't a simulation artifact.

All 72 runs are in the CSVs linked at the bottom, including the ones that lost money.

Who shouldn't buy this

If you can't sit through losing streaks, skip it. It loses roughly six trades out of ten, 113 of the 187. The worst run was six losers back to back, costing $402 on a $10,000 account. That's how a trend system pays: small losses over and over, then one move that covers all of them and more. Every single one of those red trades will feel like the system is broken. It isn't, but knowing that in advance and living through it are different things.

If you want it on gold or EURUSD, it won't work. I tested those. Gold ran 0.68 to 1.07 depending on settings, EURUSD 0.66 to 1.03, GBPUSD 0.68 to 1.05. Some of those cells are technically above 1.0 and I don't believe any of them, because they're thin enough that a slightly worse spread flips them negative. Aeolus is a BTCUSD system. I'd rather tell you that than sell you a "works on all pairs" claim you'll disprove in a month.

If you need a lot of trades, look elsewhere. 187 trades in five and a half years is about 34 a year. Some weeks nothing happens.

And the gap I can't close. My sample has a bear market and two rallies in it. What it does not have is a multi-year sideways grind, which is the exact condition that hurts trend-following most. The data to test that doesn't exist on my broker's server, and I'm not going to pretend otherwise. If you find me clean BTCUSD tick data from 2015 to 2020, I'll run it and publish whatever comes back, good or bad.

Questions you're about to ask

"It's a port of a free script. Why would I pay for it?"

Because the free version loses money on its defaults, and that's not a dig at the author. He published a template and said so. What you'd be paying for is the work between the template and a configuration that survives three separate regimes, plus the MT5 side: broker session handling, minimum stop distance enforcement, risk-based sizing that uses tick value rather than point value, and an order queue that retries instead of dropping a signal when the venue hiccups. That last one exists because I watched a real signal vanish into a five-minute gap between a broker's quote session and its trade session. If you'd rather port it yourself, the Pine source is public and I linked it above. Genuinely, go ahead.

"Only 187 trades. Isn't that thin?"

Yes. I'd want 500. On H4 over five and a half years, 187 is what there is, and inflating it by dropping to M15 would just be measuring spread. The reason I lean on the settings plateau and the three-window split rather than the headline profit factor is precisely that the sample is thin. Wide plateaus survive small samples better than single peaks do.

"Why should I trust a backtest at all?"

You shouldn't, entirely. It's a backtest and I've called it one every time in this post. What I can tell you is what I did to make it harder to fool myself: real broker spread and swap rather than fixed assumptions, three disjoint regimes rather than one window split in half, a real-tick confirmation run, and a data-quality check that threw out four years of results after I'd already run them. Past performance does not guarantee future results.

"What if I bump the risk up?"

Drawdown at 1% per trade was 7.7%, so there's room. At 3% you'd be looking at roughly three times the return and something near 23% drawdown, if the shape of the distribution holds. That's a big if, and it's your call. I run it at 1%.

What you need

  • BTCUSD, H4 chart. That's what it was built and tested for.
  • Around $500 minimum at 1% risk, given typical BTC stop distances. More is more comfortable.
  • Any account type. It opens one position at a time and doesn't need hedging.
  • A broker with BTCUSD tick history back to at least 2021 if you want to reproduce my results. Check the bar and tick counts before you trust any window, for the reason I described earlier.
  • The .set file below. It's the exact configuration every number in this post came from.

[ CTA placeholder ]

📎 Aeolus_BTCUSD_H4_trailonly.set — the tested configuration
📎 grid1.csvgrid4.csv — all 72 runs, including the losing ones

Past performance does not guarantee future results. Aeolus is a trend-following system that loses more trades than it wins by design. Test it yourself before committing money to it.

Related: how I test an EA before I believe it · what 72 backtests say about MA-cross systems