Almost nobody arrives at this page with a broken EA. They arrive with an EA that is switched off, filtered out, or waiting for a condition the market has not met. The order below is deliberate: the first one takes five seconds and accounts for more dead charts than the other six combined.
Same harness as lab note 008: 1,430 compiled free EAs, EURUSD H1, 32 months.
“My EA is not trading” is three different problems wearing one sentence, and they have nothing in common:
| What you see | What it usually is | How bad |
|---|---|---|
| It has never opened a trade | Something in the list below, or the file is dead | Annoying, cheap to diagnose |
| It traded, then stopped | A filter, a limit, or state that was lost on restart | Quiet, and it costs money while you wait |
| It opened and never closes | The EA can enter but cannot exit | Worst of the three — the loss is real and unrealised |
The third one is not covered by any checklist below, because nothing is technically wrong. In the 1,430-file run, 428 files (29.9%) opened positions and closed none in 32 months. Live, that is a position sitting on your account while the EA waits for a target the market is not going to give it.
| # | Cause | Fix |
|---|---|---|
| 1 | The AutoTrading button is off Top-left toolbar, and a frowning face in the chart's top-right corner. The journal says trade is not allowed or error 4109. | Click it. Nothing after this one matters if it is red. |
| 2 | The symbol name does not match the broker's An EA written for EURUSD placed on a server quoting EURUSD.m, EURUSDm or EURUSD.pro gets error 4106 (unknown symbol) and often swallows it. | Right-click the Market Watch entry → Specification, copy the exact name, and put that in the EA's symbol input if it has one. |
| 3 | The lot is below the broker's minimum, or above your margin Errors 131 (invalid volume) and 134 (not enough money). | A $200 account at 1:500 cannot carry the 0.5 lots a $5,000-tuned EA opens. Scale the lot, do not top up the account. |
| 4 | Stops are closer than the broker allows Error 130 (invalid stops). Every broker publishes a minimum stop distance; several now sit at 2–3 pips on majors. | Find the EA's stop input and widen it, or change broker. An EA with a fixed 5-pip stop cannot run on a server whose floor is 3 and whose spread is 2.4. |
| 5 | A spread filter is sitting out your session No error at all. The EA simply logs nothing while the spread input is below the current value. | Compare the EA's max-spread input to the spread in Market Watch at the hour you expect it to trade. Rollover and the first minute of the session are when this bites. |
| 6 | A time or news filter is doing its job Again no error. This is the single most common false alarm: the EA is waiting, not broken. | Run the same EA in the strategy tester over the same dates and count trades by hour. If the tester trades and live does not, it is the filter, not your setup. |
| 7 | No ticks are reaching it OnTick only fires on a price change. A closed market, a frozen quote or a symbol you just added with no history produces total silence. | Check the chart is actually moving. On a Sunday, everything looks broken. |
Half of everything I have tested never opened a single trade. 707 of 1,430 files (49.4%) ran 32 months of EURUSD H1 and did nothing. Some were switched-off samples, some were written for a different symbol, some were genuinely dead code from 2010. The point is the prior: when your chart is quiet, the ordinary explanation is the file, not your setup. Check the seven, and if they are all clear, the eighth answer is the uncomfortable one — the EA does not work.
That is also why “it works in the tester” proves less than it feels like it does. Of the 295 files that did trade, 65.8% showed a profit on their realised column, and only 35.7% still did once you require each file to close what it opens. A file that can open but not close looks profitable for as long as the position stays open.
Same seven checks, plus five that only apply after the first trade:
Before trying any of the above, do this: open the strategy tester, run the same EA, same symbol, same inputs, over the last 30 days.
| Tester result | What it means | Where to look |
|---|---|---|
| It trades there | Your environment differs from the tester | AutoTrading, symbol suffix, spread, minimum stops — checks 1–5 |
| It also does nothing | The EA is not meant to trade in this window | Time and news filters — check 6 |
| It trades on some dates only | Nothing is wrong at all | Read the dates. That is the strategy. |
If the tester trades, live does not, and checks 1–5 are clean, stop editing inputs for a week and compare the two trade lists hour by hour. The difference is almost always a number: a spread threshold, a stop floor, a lot step.
Whether your specific EA is any good. Clearing seven checks means it is allowed to trade, not that it should. If you want the second question answered for one file, that is what the audit is for — it is the same harness these numbers come from, pointed at one EA instead of 1,430.