Lab note · aggregate · 29 Oct 2026

372 free EAs, one harness: the best made 10× — after giving back 96%

Three months of downloading everything the MQL5 Code Base offers free and running it on the same fixed conditions. 175 of the 372 never opened a single trade. Of the 190 that did, 157 lost money. And all five of the best returns came with a maximum drawdown between 76% and 99% — which is the entire finding in one sentence.

EURUSD  ·  H1  ·  Feb 2024 – Oct 2026 (32 months)  ·  17-point spread  ·  $10,000 start  ·  open prices only  ·  MT4 build 1492  ·  the raw CSV
372
files downloaded and run
175
never opened a position
-19.3%
median return, the 190 that traded
13
made money with a drawdown under 20%

1 · Where 372 files actually go

Each bar is a share of the 372. Nothing was excluded from the count for being uninteresting.

downloaded from the Code Base
every free EA listed as downloadable over three months
372
100%
compiled as shipped
40 did not build from the file as posted
332
89%
opened a position
135 compiled, ran for 32 months and never sent an order
197
53%
closed one
7 opened positions that never came back (no SL, no TP, no exit)
190
51%
ended positive
157 finished negative, median -19.3%
32
9%
ended positive with max DD under 20%
and at least 30 closed trades, so the result is not one lucky order
13
3%

The drop from 332 to 197 is the number most people never see. 135 EAs compiled cleanly, attached to a chart, ran for 32 months of hourly bars, and never sent a single order — usually because a hard-coded session filter, a spread guard, or a lot-size check quietly refused every trade on this symbol. A file that does nothing looks identical to a file that is carefully waiting, right up until the day you are relying on it.

Then 7 more opened positions and never closed one. No stop, no target, no exit condition that this market ever satisfied. Those are the rows that matter most in a live account and are invisible in a screenshot of a backtest.

2 · The leaderboard is a drawdown contest

Every file that closed a trade, plotted by what it made against what it put at risk. The shaded box is the only region a real account can live in.

Return vs max drawdown, 190 EAs 0%20%40%60%80%100%-100%-50%-20%-5%0%+5%+20%+50%+100%+300%+1000% #182 +1041%#314 +480%#298 +262% 13 files

Each dot is one file that closed a trade. Across: maximum drawdown. Up: return, on a log scale so +1041% and −99% fit on one axis. Green finished positive, red finished negative.

Read the chart from the right. The further right a point sits, the closer that EA came to taking the whole account. Of the 13 files that returned more than 20%, 8 did it while running a drawdown above 60% — and all 5 that returned more than 100% did.

#FileReturn Max DDCloses Win %
182The MasterMind 3 (Championship Edition)+1041.34%96.0%2250.0
314OverHedgeV2+480.43%92.8%1,67563.0
298L3_H3_Expert+261.89%76.0%1,95211.5
52Swaper+205.88%98.8%2350.0
56Ilan1.4+167.77%98.7%11,33974.5
24Simple moving-average EA+99.99%62.0%27322.0
200HarVesteR+98.98%64.7%28535.1
367CyberiaTrader+53.31%84.3%1080.0
← swipe the table for the rest of the columns

#182 turned $10,000 into $114,000 and did it on 22 closed trades — with a 96% drawdown, meaning that at some point it had given back almost everything it had built. That is not a strategy with a bad year; it is a coin flipped twenty-two times with the lot size of someone else's money. #52 is the same shape with 23 trades.

#56 is Ilan 1.4 at +167.8% and a 98.7% drawdown. I have already tested that one separately on 2014 M1 data: it reached +15% on a $10,000 account and was at zero six days later. It is lab note 004, and the equity line there is the same mechanism that produced this leaderboard place.

3 · The 13 that passed a generous filter

Positive return, maximum drawdown under 20%, and at least 30 closed trades — the last condition exists so a single lucky order cannot qualify.

#FileReturn Max DDCloses Per month
310Daydream01+16.71%15.9%43+0.48%
145The new moving-average trading system+12.88%17.7%64+0.38%
137Virtual trailing stop+5.41%10.3%103+0.16%
252Currencyprofits_01.1+4.82%5.3%44+0.15%
48MACD EA+4.69%6.7%46+0.14%
169Eugene+4.69%16.2%32+0.14%
61х1+3.61%6.0%76+0.11%
118MA2CCI+3.31%6.4%261+0.10%
313MA2CCI+3.31%6.4%261+0.10%
377MA2CCI+3.31%6.4%261+0.10%
316SMC MaxMin at 1200+2.59%5.7%983+0.08%
4VR Locker Lite - positive-lock strategy+2.56%3.4%145+0.08%
274Channels+0.71%10.4%50+0.02%
← swipe the table for the rest of the columns

Three of those rows are the same MA2CCI code posted three times, so this is really 11 distinct EAs — 2.7% of the pile, or 5.3% of the files that traded at all.

Now read the last column. The best result in the entire batch is +0.48% a month over 32 months, before the spread widening you will actually meet and before the swap on any position held overnight. Everything else on that list is between +0.02% and +0.4% a month. This is what the honest end of the free-EA distribution looks like: not fraud, not a scam, just a result that does not clear the cost of the risk it takes.

4 · Win rate is not the answer, but it is not noise either

The 190 files that traded, grouped by the win rate they achieved.

Win rateFiles Median returnMedian max DD Ended positiveDD over 50%
<40%97-18.9%26.0%1140
40-60%47-32.8%45.6%422
60-70%13-31.3%80.1%27
70-85%17-3.8%41.6%65
85+%16+0.5%16.8%95
← swipe the table for the rest of the columns

Only one bucket has a median that is not negative: the sixteen files above an 85% win rate, at +0.5% over 32 months. Below 70% the median file loses between 19% and 33%. So win rate does carry information — it is just that the information it carries, at the top of its range, is flat.

That is not a coincidence, it is arithmetic. A high win rate at a low reward-to-risk is what you get when the target is close and the stop is far; the 5/10 arithmetic needs 66.7% just to break even before the spread. And five of those sixteen still ran a drawdown past 50% getting there.

5 · The structure that fails hardest

Grouped by reward-to-risk, as the run measured it.

Reward : riskFiles Median returnEnded positive
<0.546-26.5%2
0.5-142-30.0%4
1-1.529-51.5%3
1.5-343-17.0%8
3+16-4.9%6
← swipe the table for the rest of the columns

The tight-target group — reward under half the risk — is the worst cohort on the page: 46 files, median -26.5%, and 2 of them finished positive. These are the EAs that look calmest in a screenshot, because most individual trades are winners. The cost of that calm is entirely in the tail, and the 32-month window contains the tail.

6 · The same defects, five times the scale

Batch A was 77 files I picked by hand and tested in depth. Batch B is 372 files nobody picked — every free download I could get. The mechanical failure rate barely moved: 44% of batch A never opened a position, 47% of batch B did not. Selecting files more carefully did not select for EAs that trade; it selected for EAs with documentation.

One thing batch B adds is that the pile is not as large as it looks: 12 of the 190 traded files are byte-for-byte the same result as another row (11 groups — the same code reposted under a new name). 372 downloads is closer to 360 ideas, and the Code Base's own search ranking is doing most of the curation for you.

The filter in section 3 is deliberately looser than the one batch A used to name a survivor: batch A also re-ran each file with floating P/L included, which is why 77 files produced one survivor and 372 produce thirteen on this test. Both numbers are real; they answer slightly different questions.

7 · What I would do with this

Do not shop from the return column. On this page the return column and the drawdown column are almost the same column. If a free EA shows a spectacular curve, the first question is what the account was worth at the worst moment, and the answer is usually in the file's own report.

Treat “it trades” as a finding, not a baseline. Nearly half of these files never sent an order on a symbol and timeframe that every one of them claims to support. Before you judge an EA's edge, confirm it has one at all.

If you want a number you can trust, run it yourself. The whole batch took one harness and a few hours of compute. Nothing here needed a vendor's permission, and the same runs that produced this page are the ones behind every EA record in the database.

Conditions: EURUSD H1, 1 Feb 2024 – 31 Oct 2026, 17-point spread measured on the live feed, open-prices-only modelling, $10,000 starting balance, MT4 build 1492, one file per run with default inputs. Every figure above is recomputed from batch-b.csv by data/gen_batch_b_analysis.py. Per-trade ledgers were not retained for this batch; the defect patterns were diagnosed on the batch-A sample, whose ledgers exist.

The next batch, as it finishes. One note when a batch is done: what was tested, what failed, and the number that decided it. No product offers, no “top 10” roundups, no affiliate mail.