Learn

MT5 EA Not Trading? Diagnose Permissions, Signals and Order Errors

At a glance

When an MT5 EA does not trade, separate four questions: did the program start, is trading allowed, did its conditions trigger, and what happened to the order request? Begin with the relevant Experts and Journal entries. An enabled Algo Trading control does not prove there was a signal, and an empty log does not prove the EA is working correctly.

On this page
Four stages of MT5 EA diagnosis: runtime, permissions, signal conditions and order response.
MetaTrader 5
An original diagnostic map, not a platform screenshot or a trading result.

You have attached an Expert Advisor to MT5, but it is not opening trades. Before changing its settings, identify where the expected action stops. This guide is for an already installed MT5 EA. A working program can be waiting for a valid condition, prevented from trading, or receiving an order rejection. Those situations need different checks.

Platform references were checked on 21 September 2026. Labels can vary by terminal build and language. RoboXpert develops trading software; AI assisted with research, code and drafting. This is an execution diagnostic, not a recommendation to trade or an assessment of an EA's profitability. See our editorial disclosure.

Start with the evidence

Pick one specific time when you expected an action. Confirm which terminal instance, EA version and chart you are observing. A local terminal and the terminal running on a VPS may have different settings and logs.

Open MT5's Toolbox, then inspect Experts and Journal. The Experts tab is the starting point for program messages; use the surrounding Journal entries for platform context. Read the first relevant failure, not just the last line. Keep timestamps and a few surrounding entries together.

Scroll horizontally if needed

ObservationWhat it establishesNext evidence to find
EA appears on the chartIt is attachedSuccessful initialization or an explicit startup error
Automated trading is enabledA permission is enabledThe other permissions and the EA's decision at that time
EA reports an entry signalIts diagnostics report a conditionRemaining filters and whether a request was sent
Request is loggedAn operation was attemptedResponse, order status, resulting deal or position
No useful messagesThe available log is insufficientDocumented debug mode or developer diagnostics
  1. 01Runtime

    Did the EA initialize?

  2. 02Permission

    Is trading allowed?

  3. 03Decision

    Are its conditions met?

  4. 04Execution

    What happened to the request?

Check each stage separately. Unknown evidence is a reason to investigate, not a passed check.

Record the exact symbol, including any broker suffix, timeframe, relevant inputs, MT5 build and server time. Compare these with the EA's instructions. A program configured for one symbol or session may correctly stay idle on another. A trade assistant or indicator may never be intended to open entries automatically.

Diagnose your MT5 EA

Use observations from a single event. The helper suggests an investigation from your answers; it does not connect to your account, read your terminal or certify a fix. If you have a trade return code, it can narrow the next check even when other evidence is incomplete.

Find your next check

Use observations from the same EA, terminal and time. Leave anything you cannot establish as Not sure.

This helper uses your answers, not a connection to MT5. Entries stay in this tab and clear on reload. Save your notes before leaving.

Check the current terminal's Experts log for loading, initialization or a failure.

Check both the terminal-wide control and this EA's permission, on the instance running it.

Use this EA's diagnostics or documented conditions for the specific time, including its filters.

Look for a matching request and response. A quiet log is not proof that nothing was attempted.

Select only a response from the relevant request. MT4 errors and MQL5 runtime errors use different references.

Next investigation

More evidence is needed

Startup or trading permissions are still unconfirmed. Unknown answers are not passed checks.

Next: Confirm the active instance, initialization and both local permissions. Record the relevant Experts and Journal entries.

Read the relevant checks →

Check trading permissions

An active toolbar control is only one part of the permission chain. MetaTrader documents both the platform-wide automated-trading setting and the individual EA's trading permission. Inspect both on the instance actually running your EA.

The distinction matters: MQL5's OnTick documentation says disabling automated trading prevents EA trade requests without stopping the program's execution. An EA can continue evaluating data while it cannot trade.

Check whether a permission was deliberately disabled, including after a configuration or account change. Do not turn on trading across an unfamiliar live setup just to make the warning disappear. Establish the intended settings in an isolated test first.

Local and server restrictions also differ. 10027 points to client-terminal automated trading; 10026 points to the server. 10017 is the broader trading-disabled response. Keep the full message and ask the broker about account or symbol restrictions where appropriate. A local switch cannot remove a server restriction.

DLL imports and WebRequest access are separate dependencies. Enable them only if the EA's documentation requires them and you trust the software and destination. They are not universal “EA not trading” fixes.

No errors and no trades

A quiet log is not proof that the EA never tried to trade. Logging depends on the program, the event and which log you read. If the EA does not expose its decision process, you may need the developer's help.

Work from the EA's own documented rules:

  • Entry condition: which values must be true, and on which completed bar or event?
  • Filters: does a spread, session, news, exposure or daily-risk rule prevent a new entry?
  • Data: are the inputs used by this EA available and current?
  • Existing activity: does it already have a pending order or position that changes what it should do next?

Write down the observed value next to the expected condition. For example, “the EA reports spread 18 points against its configured ceiling of 15” is more useful than “it should have traded.” Those numbers are an illustrative example, not a recommended threshold.

If a signal is confirmed but the request is not sent, ask for diagnostics between the signal and the order call. Another guard or code path may intervene. If you only have a compiled EX5, do not pretend that its internal conditions are visible. Request a documented debug mode or diagnostic build.

Read the trade return code

The following short reference uses the MQL5 trade-request return codes, with suggested investigation steps. It is not the MT4 error list or the MQL5 runtime-error list. Check the origin of a number before matching it. Meanings are grounded in the official return-code reference.

10013Invalid trade request

Inspect the full request and its context with the developer. This broad response does not identify a single invalid field or prove a broker rejection.

10027Client automated trading disabled

Inspect the terminal-wide automated-trading control on the instance that produced this response. Record the state before changing it.

10026Server automated trading disabled

Ask the broker to explain this account's automated-trading restriction. Repeated local toggling will not resolve a server restriction.

10017Trading disabled

Check the account and symbol trading permissions with the broker; the code alone does not identify which restriction applies.

10014Invalid order volume

Compare requested lots with the symbol's minimum, maximum and volume step. Correct the sizing calculation in a test environment.

10016Invalid stops

Compare requested SL/TP with the current price, order direction, tick size and permitted stop distance. Do not remove protection to force a trade.

10018Market closed

Check this symbol's trading session and the broker's server time at the request timestamp.

10019Insufficient funds for the request

Inspect required and available margin for this request. Review sizing on demo; do not treat this code as a recommendation to deposit money.

10030Unsupported filling policy

Ask the developer to match the requested filling policy to the symbol's execution and filling settings.

10031No trade-server connection

Check terminal connection, selected server and the timing of the request. A connection that works now does not explain an earlier outage.

For volume, stops and execution settings, compare the request with the current symbol properties. Check units as well as values: points, price increments and lots are not interchangeable. The diagnosis should identify a mismatch, not supply a universal lot size or stop distance.

For developers, a successful OrderSend() return value is not sufficient evidence of execution. Inspect the result fields and follow the resulting trade events, as described in the OrderSend reference. A pending order, a filled deal and an open position are different observations. A response about closing an existing position is not necessarily evidence of a new entry signal.

Works in the tester but not on the account

First define what “works” means. Does the tester initialize the EA, generate entries, or produce attractive results? Only the first two concern this diagnostic. Interpreting returns belongs in our backtest versus live trading guide.

Create a small comparison record before drawing a conclusion:

Scroll horizontally if needed

CompareTesterAccount / running terminal
SoftwareExact EA version and inputsExact EA version and inputs
EventHistorical timestamp and signalExpected event and observed conditions
InstrumentSymbol specification usedActual symbol, suffix and current specification
EnvironmentTest model and simulated conditionsPermissions, connection and account restrictions
OutcomeRequest, response and simulated fillRequest, response and actual order/deal status

Different time periods do not promise identical signals. If the tester shows an entry on a historical Tuesday, that does not mean the EA should enter immediately when attached today. A comparison is most useful when it identifies a specific differing condition.

For a VPS setup, collect logs from the execution environment itself. Make sure you are not inspecting a local chart while a different configuration runs remotely. Avoid blindly restarting the terminal: save the relevant logs and understand how the EA restores state first.

A controlled MT5 lab

The following section records our own controlled execution checks. These are software tests using a teaching EA and synthetic prices, not an EA performance backtest, broker execution test or live-account result.

Test record, 21 September 2026: MT5 x64 build 6182 through Wine 10.0 on macOS; separate portable terminal; RoboXpertPermissionProbe v1.00; custom symbol RX.LAB, M1. We created 2,880 artificial one-minute bars for 1–2 September. No trading account or broker connection was used.

01 — Permission off, program still running

Real MT5 lab screenshot: Algo Trading is off while the permission probe shows ongoing timer callbacks on RX.LAB.Open original screenshot ↗
Original capture from the isolated terminal. The chart is synthetic, and the text overlay comes from our teaching EA. Read the extracted log messages below for the exact outcome.

The terminal reported trading permission 0. Timer callbacks continued and the local request returned 10027. This demonstrates that a running EA can still be prevented from trading.

Recorded EA messages · timestamped rows in download

RX_OFFLINE_INIT build=6182 account_login=0 connected=0 terminal_trade_allowed=0
RX_OFFLINE_TIMER callback=1 terminal_trade_allowed=0
RX_OFFLINE_REQUEST OrderSend=0 retcode=10027 runtime_error=4752 comment=AutoTrading disabled by client
RX_OFFLINE_TIMER callback=2 terminal_trade_allowed=0

02 — Permission on, execution still fails

Real MT5 lab screenshot: Algo Trading is on, the probe continues to run, and Journal shows an invalid request with no account connected.Open original screenshot ↗
Original capture from the isolated terminal. The chart is synthetic, and the text overlay comes from our teaching EA. Read the extracted log messages below for the exact outcome.

With local permission enabled, the same account-free setup returned 10013 (invalid request). This is not a successful fill or proof of the precise invalid field. Enabling one permission did not establish a working order path.

Recorded EA messages · timestamped rows in download

RX_OFFLINE_INIT build=6182 account_login=0 connected=0 terminal_trade_allowed=1
RX_OFFLINE_TIMER callback=1 terminal_trade_allowed=1
RX_OFFLINE_REQUEST OrderSend=0 retcode=10013 runtime_error=4756 comment=Invalid request
RX_OFFLINE_TIMER callback=2 terminal_trade_allowed=1

Limits: These are local terminal checks, not connected demo tests. The volume and stops cases in the reference above were not reproduced here. Our separate attempt to start Strategy Tester stopped because an account was not configured, so we report no tester fills. The runtime-error field and trade return code are different fields; do not treat them as interchangeable.

Download the timestamped log extract · Download teaching source, configuration and reproduction notes

Send a useful support request

Send a reproducible observation rather than “the bot doesn't work.” Keep a private copy of the original logs, and share only the relevant sanitized excerpt. Do not include trading passwords, account numbers or unrelated personal information.

A useful request identifies the EA version, MT5 build, environment, exact symbol, timestamp, expected action, observed action and relevant inputs. Include the earliest failure and the request/response sequence where available. State which facts remain unknown.

At [server time and timezone], EA [name/version] on [symbol/timeframe] was expected to [action] because [documented condition]. It instead [observation]. Attached are the relevant settings and sanitized log lines. Can you identify the next condition or order response I should check?

The interactive helper can export your observations. The blank worksheet also works without JavaScript.

Reader resource · TXT

Give the developer a problem they can reproduce

Record the environment, expected action, observed behaviour and relevant logs. A plain-text template with no registration.

Download the support template

If the required environment or support is unclear before purchase, use our EA selection checklist to resolve compatibility and operating requirements first.

Frequently asked questions

Why is my EA not trading even though Algo Trading is enabled?

That control does not establish successful startup, individual EA permission, a qualifying signal or a successful request. Check the same event through the four-stage diagnostic.

Is an empty Experts log proof that the EA is working?

No. It may simply lack useful messages. Confirm initialization, the relevant event and the EA's own diagnostic options. If its internal decisions are unavailable, record that limitation.

Should I wait a fixed number of hours before assuming there is a fault?

There is no universal waiting period. Use the EA's documented conditions and expected behaviour. A specific missed, evidenced event is more useful than elapsed time alone.

Does fixing an order error mean the EA is ready for live trading?

No. It establishes only what your controlled test demonstrated about execution. Strategy risk, robustness, costs and operational readiness require separate evidence.

Can this page diagnose my account automatically?

No. The helper uses the observations you select and runs locally in your browser. It needs no account credentials, external account import or AI analysis. Its output is a next investigation, not an automatic account assessment.

Friendly robot illustration representing the RoboXpert pen name.
AI-generated avatar

About the author

RoboXpert

Pen name

The person behind RoboXpert writes about expert advisors, trading evidence and programming, and develops their own trading software. They report 10 years of experience in these areas; this is self-reported, not an independently verified qualification or performance record.

Sources & further reading

Your next question

Continue reading

Testing & evidence

Backtest vs Live Trading: What EA Results Really Show

Once orders execute, understand why a tester result and an account's performance can still differ.

Read the guide →
Expert advisors

How to Choose an Expert Advisor: MT4 & MT5 Checklist

Check support, compatibility and operating requirements before selecting another EA.

Read the guide →