Strategy testing and trading software · Germanycontact@stratcorealpha.com · DE
All trading software errors

MT5 · code and request checks

MT5 error 10027: your terminal blocks automatic trading

Your EA can find a signal and still receive error 10027. In my EURUSD run, the terminal permission was 0 and the request was rejected with 10027. The corrected permission check kept the request stopped. Start with the Algo Trading permission, before changing your entry rule or sending the same order again.

Native HolaPrime MT5 run: terminal permission 0, rejected request 10027, corrected readiness 0, supplied enabled readiness 1 and zero account orders.

Arnold Holm · 2026-10-07

What the error means

I kept automatic trading disabled for this run in HolaPrime MT5. I built an immediate EURUSD BUY request and called OrderSend. The native result was false, the returned code was 10027 and the terminal error was 4752. No account order executed. That gives you a concrete difference between finding a trade and being allowed to send it. The old decision simply assumed that a supplied signal meant ready. The corrected decision asks for the signal, the terminal permission and the permission of this program. With the native permissions off, it returns false. With enabled values supplied to the small helper it returns true; with no signal it returns false again. The enabled case checks the decision only. I kept trading disabled and did not demonstrate an accepted account order. MetaQuotes names 10027 as automatic trading disabled by the client terminal. Code 10026 names a server restriction instead. Read the actual number from the returned result so that you do not try to solve a broker restriction with a desktop button. An EA is a program applying your trading rules in MetaTrader. This error concerns permission to trade, before you can judge whether its entry rule is useful.

Three code paths to check

  1. 1. Algo Trading is off in this terminal

    Look at the terminal where the EA is actually running. A different open MT5 window can have a different permission. Record TERMINAL_TRADE_ALLOWED when the request is made. If it is false, stop the request and explain that permission is missing. Repeating it on every tick produces more rejected calls without changing the cause.

  2. 2. The individual EA has no trading permission

    Check the Allow Algo Trading setting for the attached EA as well as the terminal button. Record MQL_TRADE_ALLOWED in that same program. Enabling one permission does not establish that every other permission is available. Do this on the intended demo setup first, with the correct chart, source and inputs.

  3. 3. The log and the window describe different moments

    A saved error may come from before you changed a setting, or from an EA on another chart. Record symbol, request time and permissions together. Keep the first result after the change so that you can compare the same request path. Do not erase the original error or assume the setting applied to every running instance.

Own pattern: permission is part of request readiness

Keep your signal calculation separate from this decision. The pattern does not turn trading on, change the entry rule or retry a rejected request. Your EA can report which permission is missing so that you can review the intended setup. After you enable the intended demo permissions, inspect the returned trade result and the actual order or position too. A permission check alone cannot show that the broker accepted an order.

bool RequestReady(bool signal, bool terminalAllowed, bool programAllowed)
{
   return signal && terminalAllowed && programAllowed;
}

bool ready = RequestReady(signal,
   (bool)TerminalInfoInteger(TERMINAL_TRADE_ALLOWED),
   (bool)MQLInfoInteger(MQL_TRADE_ALLOWED));
if(!ready) return; // keep the order path stopped

The screenshot shows a controlled native rejection and three helper decisions in EURUSD H1. It does not test a complete customer EA or a successful funded-account trade.

How you know it is fixed

When it stops: terminal permission is 0

A supplied signal is true, but readiness is false. The native controlled request returned 10027. Keep that result visible and prevent repeated requests while the permission remains missing.

When the helper continues: all supplied inputs are true

Signal, terminal permission and program permission set to true produce readiness true in the helper. This checks the decision without placing another account order.

When there is no signal

Enabled supplied permissions with signal false still produce readiness false. Fixing a permission must not make the EA trade when its entry rule says no.

Your own source

Find the next line to check

Start with the free EA-Check. Your code stays in your browser. It highlights patterns with line numbers; it does not prove the broker accepts an order.

Check my EA locally

Want one small change shown on your own case?

SOLVED-FIRST: one small fix or change to your own case, shown first as screenshots or a short screen video. 15 USD fixed (or the higher platform minimum), first five paid orders only during 4–17 October 2026. The file follows within 24 hours after funding. Close on Upwork first; marketplace cases stay on their marketplace.

Outside that sprint: R49: one authorised, reproducible MT4/MT5 defect, with three agreed cases. 49 USD fixed. Delivery within 48 hours after source review and funding. The exact case is agreed before funded work.

Send the expected and actual behaviour

Common questions

Should I change the strategy when I see 10027?

First check permission in the actual running terminal and EA. Changing an indicator or entry rule does not grant permission to send orders.

Can the EA switch this permission on itself?

This pattern only reads permission. Review the intended terminal and EA settings yourself, then verify the next demo result. Keep server, account and symbol checks separate.

Sources and limits

These public questions explain the error; use your own EA log to check whether the same cause applies.

Trading risk disclosure

Futures and forex trading contains substantial risk and is not for every investor. An investor could potentially lose all or more than the initial investment. Risk capital is money that can be lost without jeopardizing one's financial security or lifestyle. Only risk capital should be used for trading, and only those with sufficient risk capital should consider trading. Past performance is not necessarily indicative of future results.

Hypothetical performance disclosure

Hypothetical performance results have many inherent limitations. No representation is being made that any account will or is likely to achieve profits or losses similar to those shown. There are frequently sharp differences between hypothetical performance results and the actual results subsequently achieved by any particular trading program. Hypothetical results are generally prepared with the benefit of hindsight, do not involve financial risk, and cannot completely account for the impact of financial risk in actual trading. Market conditions, the ability to withstand losses, and adherence to a trading program can all materially affect actual results.

NinjaTrader trademark disclosure

NinjaTrader® is a registered trademark of NinjaTrader Group, LLC. No NinjaTrader company has any affiliation with the owner, developer, or provider of the products or services described herein, or any interest, ownership or otherwise, in any such product or service, or endorses, recommends or approves any such product or service.

Testimonials, when shown, may not represent the experience of other clients and are not a guarantee of future performance or success. Virtual-currency trading carries additional risks. See the CFTC customer advisories. Read the full financial risk disclaimer.