What I learned auditing 15 of my own EAs: strategy, code, and going live
1. What a good strategy actually needs
I spent a few months auditing my own EAs properly. Most of what I believed about strategy-building was wrong. Here's what held up.
1. Split your data, and never touch the test half. Build on 2018–2022 and judge on 2023–2026. Three of my EAs that lost in the first half went on to win in the second. So drop a strategy only if it loses in both halves, not after one bad stretch.
2. Test every "improvement" against random. I tested 14 filters: volatility regimes, trend filters, day-of-week, volume and others. Each one looked good on its own backtest. Against a control (the same filter shifted randomly in time), all 14 failed. If your filter can't beat a shuffled version of itself, it's curve-fitting.
3. Compare at equal exposure. One sizing tweak looked like +49% return. Once compared with a version taking the same total risk, it was +3–5%. Use profit factor and R per trade, which don't depend on position size. Don't trust raw dollars when exposure changes.
4. Check your costs before you declare "no edge". A bug in my spread conversion hid a real edge for three rounds of testing. When a result says nothing works, audit the cost model first.
5. Watch for look-ahead. My Python replica of one of my strategies looked great. Running it in MT5 exposed it: the code was resolving entries in the order the setups formed instead of in time order, so it peeked at the future. Always confirm in the real tester.
6. Some appealing ideas are simply false. "Size up after a red day, since the EAs are bullish-dependent" did worse than random. Forecasting volatility added nothing either, because ATR-based stops already adjust for volatility. The edge sits in the surprise moves: my book makes about 4× its normal R per trade on the biggest-move days.
2. What a good EA needs (the bugs that hit live money)
The strategy can be fine and the EA can still quietly break it.
1. Never hardcode a dollar stop. One of my EAs had a fixed $5 stop on gold. When it was built, that was 0.42× the daily range. As gold rose, it shrank to 0.05×. A swing strategy silently became a scalper. Make stops relative to ATR or price.
2. Decide what happens at the minimum lot. On a small account, 0.01 lot is often more than your risk %. Each EA has to either skip the trade or take the min lot up to a cap. I found most of mine were skipping, far more often live than in an 8-year backtest, because gold's price had doubled. Make it an input, document what 0 means, and log the skip with the stop size.
3. Give every EA its own magic number. Two of mine shared one, and each would treat the other's positions as its own.
4. Fail loudly at startup. One EA refuses to start on the wrong timeframe. Good. But when a misclick switched its chart, MT5 removed the EA without any warning, and I migrated the empty chart to the VPS. Check that the chart count matches the EA count after every change.
5. Tester traps that wasted my time:
- Saved .set files override your inputs. An input left out of the .ini falls back to the saved value, not the code default. Clear them before every run.
- A hardcoded symbol input such as XAUUSD produces zero trades on a broker that names it XAUUSDm .
- Stale .ex5 files: the source had been edited, but the compiled file was older and was still the one running.
- Zero-commission backtests on a commission account.
3. Going live and running a portfolio
1. Replay your live weeks in the tester. I re-ran the exact live period with the exact live inputs. Every live trade had a matching tester trade: same minute, same direction. So the logic was fine. But on those same trades, live made only about 60% of the tester's profit. The whole gap came from fills.
2. Tight-exit EAs suffer most from feed differences. On one of my EAs with a tight stop and trail, a 36-cent difference in entry price was the difference between a +$14 win and a −$49 loss. If your exits are tight compared with the spread and the difference between data feeds, discount the backtest heavily.
3. Fourteen EAs is not fourteen bets. Two of my EAs shared 93–96% of their entries, so they were one bet at double risk. Across the book, the effective number of independent strategies was 6–7 out of 14. Check how often your EAs enter together before stacking them.
4. Risk % sets your drawdown, not just your return. Same book, same trades, in backtest (2018–2026):
- At 0.35% per trade: about 28% in a typical year, 20% worst drawdown.
- At 1%: about 96% in a typical year, but a 50% worst drawdown, and every single year had a 24–38% drop somewhere in it.
Pick the drawdown you can actually sit through.
5. Stop tinkering. It takes roughly 300 trades before live results tell you anything. Performance does persist somewhat, but every rule I tried for re-weighting or dropping EAs after a bad stretch made things worse. Set it, verify it, and leave it alone for months.
What's the one bug or backtest trap that cost you the most on live money? And if you want me to go deeper on any part, the random-control test, the live replay, or the min-lot problem, just ask.
All numbers are from my own backtests and a short live sample. Not financial advice.


