Blog · Operations
My EA stopped trading and I didn't notice: the MT5 checklist
The eight reasons an MT5 expert advisor silently stops trading, a two-minute triage order, and how a heartbeat monitor alerts you when an EA or VPS goes quiet.
An expert advisor that loses money is visible. An expert advisor that silently stops is not: the chart still shows the smiley, the VPS still answers ping, and the account simply does nothing for three days while the setup it was built for comes and goes. Or worse, it stops managing positions that are still open. This checklist covers the eight ways an MT5 EA stops trading without telling you, how to tell them apart in a couple of minutes, and how to be alerted the next time it happens.
First: is it stopped, or just not finding trades?
Before touching anything, separate "no signal" from "not running". Open the Experts and Journal tabs in the Toolbox and look at the timestamp of the last line written by the EA. An EA that is alive normally logs something on every new bar or at least on initialisation. If the last entry is from two days ago and the market has been open, the EA is not executing. If it logs every bar but opens nothing, the logic is running and the conditions are simply not met (or a filter such as spread, session or news is blocking it).
The eight usual causes
| # | Cause | How to confirm |
|---|---|---|
| 1 | Algo Trading button is off (globally or for that EA) | Toolbar button is red; the chart icon shows a stop sign instead of a hat. MT5 turns it off by itself after some account or profile switches. |
| 2 | Terminal lost connection or was logged out | Bottom-right status shows "No connection" or "Invalid account". Common after broker server migrations and password changes (prop firms reset credentials between phases). |
| 3 | VPS rebooted and the terminal did not start | Windows Update restarts are the classic cause. Check system uptime; check that MT5 is in the startup folder and the Windows user logs in automatically. |
| 4 | EA removed from the chart | Journal shows "expert removed" — caused by a critical error, a chart template change, or a symbol change on the chart. |
| 5 | Trading disabled for the symbol or account | Orders fail with "trade disabled" or "market closed". Happens with symbol suffix changes (EURUSD → EURUSD.r), expired contracts, or a breached prop account switched to read-only. |
| 6 | Not enough margin / lot below minimum | Experts tab shows "not enough money" or "invalid volume". After a drawdown, risk-based sizing can fall under the broker's minimum lot and every order is rejected. |
| 7 | Internal filter stuck | A news filter whose calendar failed to download, a spread filter during a permanently wider spread, a daily-loss guard that never reset. The EA logs "blocked" on every bar. |
| 8 | Licence or external dependency failed | Commercial EAs that validate a licence or call a web service stop when the URL is not in the allowed WebRequest list or the service is down. |
A two-minute triage order
- Connection status in the bottom-right corner. No connection explains everything else.
- Algo Trading button and the icon in the chart's top-right corner.
- Last timestamp in the Experts tab for that EA.
- Last error text in the Experts and Journal tabs (search for "failed", "disabled", "invalid", "removed").
- VPS uptime. If it is a few hours, you have found the cause.
Write down what you find. The same cause tends to come back, and the second time you want to recognise it in ten seconds.
Why you didn't find out sooner
All eight failures have one thing in common: they produce silence, not an error you would receive. MT5 push notifications are sent by the terminal, so a terminal that is down, disconnected or without Algo Trading cannot tell you it has a problem. Email alerts written inside the EA have the same limit: a stopped EA sends nothing, and nothing looks the same as "all quiet".
The only reliable pattern is the one used for servers for decades: a heartbeat. The EA reports to something outside the terminal at a fixed interval. When the reports stop, the outside system raises the alarm. Silence becomes the signal.
Setting up a heartbeat that actually helps
- Send from
OnTimer, not only fromOnTick. Ticks stop on weekends and in illiquid hours; a timer keeps running, so you can distinguish "market closed" from "EA dead". - Report state, not just "alive". Include whether trading is allowed (
TerminalInfoInteger(TERMINAL_TRADE_ALLOWED),MQLInfoInteger(MQL_TRADE_ALLOWED),AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)), connection status, the last decision and the reason for the last block. An EA that is running but has been blocked by its own spread filter for six hours is also a problem. - Define freshness explicitly. For a one-minute heartbeat, treat more than five minutes without a report as stale during market hours.
- Alert on the transition. One message when an EA goes stale, one when it recovers. Repeating alarms get muted, and a muted alarm is the same as none.
- Keep the receiver independent. It must not live on the same VPS as the terminal.
This is what Quantisentry's telemetry contract does: each expert posts a small, validated payload; the platform tracks a five-minute freshness window per EA and per account; and the dashboard shows which experts are fresh, stale, armed or blocked, and why. It is read-only by design: it can tell you an EA has stopped, and it cannot touch the trade.
Prevention checklist
- Set Windows Update active hours and disable automatic restarts on the trading VPS.
- Put MT5 in the Windows startup folder and enable automatic logon for that user.
- Save a profile with all charts and EAs attached, and make it the default.
- After any broker migration or prop-firm phase change, re-check symbol names and credentials on every terminal.
- Add the URLs your EAs need to Tools → Options → Expert Advisors → Allow WebRequest.
- Make every internal filter log why it blocked, with the measured value.
- Run a heartbeat to an external monitor, and test it by closing the terminal on purpose.
Frequently asked questions
Why did my expert advisor stop trading with no error?
The most common causes are Algo Trading being switched off, a lost connection or changed password, a VPS reboot after Windows Update, the EA being removed from the chart, or an internal filter that stays blocked. All of them produce silence rather than an error message.
How can I get an alert when my EA stops?
Use a heartbeat: the EA reports to an external service on a timer, and that service alerts when reports stop. MT5 push notifications cannot do this because a stopped terminal cannot send them.
Should the heartbeat run from OnTick or OnTimer?
From OnTimer. Ticks stop when the market is closed or illiquid, so a tick-based heartbeat cannot distinguish a closed market from a dead EA.
How long without a report means the EA is down?
With a one-minute heartbeat, more than five minutes without data during market hours is a sensible staleness threshold.