TheForexStore

Why your Expert Advisor is not opening trades: 12 causes, in order

Every guide lists the same four checks and they solve half the cases. Here are twelve, ordered by frequency, including symbol suffixes, minimum stop level, MT5 filling modes and magic number collisions, each with how to confirm it.

An Expert Advisor that is attached, shows a smiling face, and never places an order is the most common problem in automated trading. Almost every guide lists the same four checks. They are correct and they solve maybe half of real cases. What follows is the full list, ordered by how often each one turns out to be the cause, with how to confirm each rather than guess.

Read the log first

Before changing anything, look at what the platform already told you. Two tabs at the bottom of the terminal:

  • Experts: messages printed by the robot itself, including its own explanations for not trading.
  • Journal: messages from the platform, including every rejected order and its error code.

If the Journal shows rejected orders, the robot is trying and the broker is refusing, which points at causes 5 to 9 below. If neither tab shows anything at all, the robot is not even attempting, which points at causes 1 to 4. That single distinction cuts the search in half.

1. Automated trading is off

The AutoTrading button in the toolbar must be on and green. Separately, in the robot’s own properties, Common tab, “Allow live trading” must be ticked. Both are needed, and the second resets when you reattach the robot or reload a template.

Confirm it: the face in the top right of the chart is smiling, not frowning. A frown means trading is disabled for this chart.

2. The smiling face is lying

A smile means the robot is running, not that it is allowed to trade or that its conditions are met. Many robots print their status on the chart with a comment. If yours does, read it. If it says it is waiting for a signal, everything is working and there is nothing to fix.

3. The conditions have not occurred

Before assuming a fault, establish how often the robot is supposed to trade. A system built for one trade a week on H1 has not failed because it did nothing on Tuesday. Check the documentation, and check the timeframe: many robots only work on the timeframe they were designed for and will sit silent on any other.

4. The symbol name does not match

This one is invisible and very common. Brokers rename instruments: EURUSD may be EURUSD.pro, EURUSDm, EURUSD-STP, EURUSD.raw or EURUSD_i. A robot that looks for a hard-coded “EURUSD” finds nothing and, depending on how it was written, fails silently.

Confirm it: look at the exact symbol name in the Market Watch window, character for character. If the robot has a symbol or suffix input, set it. If it does not and the name differs, the robot will not work on that broker without modification.

Related: an instrument that is not in Market Watch at all may be invisible to a robot that trades multiple pairs. Right-click Market Watch and choose Show All.

5. The stop is closer than the broker allows

Every symbol has a minimum stop level: the closest a stop loss or take profit may sit to the current price. If the robot asks for a 3 pip stop and the broker requires 10, the order is rejected with an invalid stops error, every time, forever.

Confirm it: right-click the symbol in Market Watch, open Specification, and find the stop level, sometimes shown as “Stops level” or “Freeze level”. Compare it to what the robot is trying to use. This single setting is why tight-stop systems do not work on some brokers at all, and it is not a fault in the robot.

6. The volume is invalid

Three ways to get this wrong, all returning an invalid volume error:

  • Below the minimum, usually 0.01.
  • Above the maximum for that symbol or account.
  • Not a multiple of the volume step: 0.037 is not tradeable when the step is 0.01.

A robot that sizes from a risk percentage on a small account can easily calculate something below the minimum and then be rejected on every attempt. See lots.

7. Not enough free margin

The order is rejected if the required margin exceeds free margin. This happens with large fixed lots on small accounts, and it happens progressively to systems that hold several positions: the first few open, then the rest are silently refused. See margin.

8. The spread filter is blocking it

Many robots include a maximum spread setting, and it is a good feature: it stops the system trading when costs would destroy the edge. It also means that on a broker whose spread is habitually above that limit, the robot never trades at all and looks broken.

Confirm it: find the maximum spread input, then watch the actual spread on your account at the hours the robot is supposed to work. If the filter is 2.0 and your spread is 2.5 all day, that is the answer. Raising the limit is not automatically the fix, because the limit exists for a reason. See spread.

9. MT5 only: the filling mode is wrong

MetaTrader 5 orders specify how they may be filled: fill or kill, immediate or cancel, or return. Brokers do not all support all three on all symbols. A robot requesting an unsupported mode gets an unsupported filling mode error and never opens anything, on a platform that otherwise looks perfectly healthy.

Confirm it: the Journal shows the specific error. Some robots expose a filling mode input; if yours does, try the alternatives. This cause does not exist on MT4, which is why a system ported from MT4 can fail immediately on MT5 with nothing obviously wrong.

10. A time or day filter is active

Many systems only trade certain hours, and those hours are usually expressed in broker server time, which is not your time. A GMT offset input set incorrectly shifts the whole schedule, and the robot waits for a window that has already passed. Daylight saving moves this twice a year. See market hours.

11. The magic number collides

The magic number identifies which orders belong to which robot. Two systems on the same account with the same magic number will read each other’s positions as their own, and a robot that thinks it already has a position open will not open another.

Confirm it: give each robot a distinct magic number.

12. Netting, on MT5

On a netting account there is one position per symbol. A robot designed for hedging that tries to open an opposite position will find it closes or reduces the existing one instead of adding a second. Behaviour looks erratic rather than absent, and it is an account model mismatch, not a bug.

Still nothing?

Two final checks that catch stragglers:

  • Is the market open? The platform runs at weekends; the instrument does not. Some instruments also have daily breaks.
  • Is the licence valid? Commercial robots are often tied to an account number or a demo period. When that lapses, many simply stop trading, sometimes with a message and sometimes without.

Frequently asked questions

The smiling face is showing but nothing happens. Is it broken?

Not necessarily. The smile means the robot is running, not that it is allowed to trade or that its conditions are met. Check the Experts and Journal tabs: if the Journal shows rejected orders the broker is refusing them, and if both tabs are empty the robot is not even attempting.

What is the minimum stop level and why does it stop my robot?

It is the closest a stop loss or take profit may sit to the current price, set per symbol by the broker and visible in the symbol specification. If the robot asks for a tighter stop than the broker allows, every order is rejected with an invalid stops error. This is why tight-stop systems do not work on some brokers at all.

My robot worked on MT4 and does nothing on MT5. Why?

Two causes unique to MT5. Filling modes: orders specify fill or kill, immediate or cancel, or return, and brokers do not support all three on all symbols, so an unsupported request fails every time. And netting accounts: there is one position per symbol, so a robot designed for hedging behaves erratically rather than as intended.

Updated in September 2026

About the author. Martin Alejandro Bamonte develops Expert Advisors for MetaTrader 4 and MetaTrader 5 and writes technical articles published on MQL5.com. Pages on this site explain how trading systems work and what they require. No performance claims: results depend on your broker, your settings and market conditions.