MT4 Error 133: Why Trading Is Disabled and How to Fix It
By FXNook Lab team
MT4 error 133 is ERR_TRADE_DISABLED: the trade request was refused because trading is disabled for the account, symbol or trading environment. It is not the error MT4 uses to report an invalid lot size or stop distance. Start by checking the terminal and EA permissions, then ask the broker to confirm that the account and instrument are allowed to trade if the local settings are already correct.
Do not keep resending the same order to see whether the error goes away. Repeated requests do not restore permission and can create unwanted trades if access becomes available. Find which layer is blocking the request, correct that setting or restriction, and make one deliberate test only when it is safe to do so.
What MT4 error 133 means
MT4 reports trade errors as numeric codes. Error 133 is ERR_TRADE_DISABLED, meaning the trade server refused the request because trading is disabled. The request may come from an EA calling OrderSend, or from a manual action in the terminal.
The code identifies a permission problem, but it does not tell you exactly where the restriction originates. It might be a broker-side setting for the account or instrument, or a restriction that applies to a particular account type or trading session. A separate client-side permission problem can produce error 4109, so read the actual code in the Experts or Journal tab rather than assuming every “trading disabled” message has the same cause.
Error 133 is not the same as an order rejected for volume, price or stop-level rules. Those problems have their own errors, such as invalid trade volume (131), invalid price (129) or invalid stops (130). Fixing the lot size or changing stop-loss distance will not restore trading permission when the reported error is 133.
Check MT4 terminal and EA permissions
Before contacting the broker, rule out the settings that control whether this MT4 terminal and this EA may send orders. These permissions are independent: turning on the terminal's AutoTrading button does not override a disabled permission in the EA's properties, and enabling the EA does not override a broker restriction.
- Turn on AutoTrading. In the MT4 toolbar, the AutoTrading button must be enabled for EAs to trade. If it is off, click it once and look for the enabled state. This setting controls automated trading in the terminal; it does not grant permission to trade a symbol that the broker has disabled.
- Review the terminal's Expert Advisors options. Open Tools > Options > Expert Advisors and make sure Allow automated trading is selected. Also look for options that automatically disable automated trading after an account or profile change, or when the account or chart symbol changes. If one of these is selected, MT4 may turn off trading after the event it is configured to monitor.
- Review the EA's Common tab. Right-click the chart, choose Expert Advisors > Properties, and open Common. Select Allow live trading. This is a permission for the EA instance on that chart; an EA attached to a second chart has its own settings.
- Read the chart and terminal indicators. Confirm that the EA is attached to the intended chart and that its name or status icon indicates it is running. Then open the Experts and Journal tabs in the Terminal window. Messages there can show whether the EA was stopped by a local setting or whether an order reached the server and was rejected.
These checks matter even if the EA compiled successfully. Compilation confirms that MetaEditor accepted the source code; it does not prove that the terminal, EA, account or broker permits a live trade. If you are also dealing with an EA that never reaches an order request, see MT4 EA Not Opening Trades: Checks, Causes and Fixes.
Check account and symbol trading restrictions
If local permissions are enabled, the restriction may be outside the EA. Brokers can apply different trading permissions to accounts, symbols and account types. A symbol can also have different rules from the main currency pair or instrument you normally trade, so test the actual symbol shown in the rejected request.
| Possible restriction | What to check | Next step |
|---|---|---|
| Account status or account type | The account may be disabled, read-only, limited to closing positions, or otherwise restricted from opening trades. | Ask the broker whether the account is enabled for new trades and whether any account-level restriction applies. |
| Instrument permission | The broker may disable trading on one symbol, allow only certain directions, or make an instrument close-only. | Check the exact symbol and ask whether it is currently enabled for the order type you are attempting. |
| Trading schedule | The instrument may be outside its permitted trading hours or in a session during which orders are disabled. | Compare the request time with the broker's trading schedule for that instrument. Error 132 specifically indicates that the market is closed, but ask the broker if the session status is unclear. |
| Broker-side maintenance or configuration | A server-side setting or temporary restriction can prevent new orders even when MT4's local switches are on. | Contact the broker with the error code, server, symbol and time of the rejected request. |
| Wrong or unavailable symbol | The chart or EA may be using a broker-specific suffix or a symbol that is not enabled for trading on the account. | Compare the EA's symbol with the broker's symbol list in Market Watch and ask which symbol is tradable on your account. |
In MQL4, MarketInfo(symbol, MODE_TRADEALLOWED) can report whether trading is allowed for a symbol according to the terminal's symbol information. It is useful diagnostic information, but it is not a substitute for a successful order request or confirmation from the broker. For example, a symbol can appear in Market Watch while the account still lacks permission to open a trade.
When you contact support, give them the account's server name, the exact symbol, the date and time of the request, the order type, and the MT4 error code. Include the relevant Experts or Journal message if it helps explain what happened. Do not send your password. Ask directly whether the account and that instrument are enabled for new trades, and whether any account, direction or session restriction explains error 133.
How error 133 differs from nearby MT4 errors
Nearby error codes can look similar in a log because several of them prevent an order from opening. The code narrows down what to investigate, so capture the actual error instead of relying only on a generic message such as “OrderSend failed.”
| Code | MT4 name | What it points to |
|---|---|---|
| 132 | ERR_MARKET_CLOSED | The market or instrument is closed for trading. Check the broker's session hours and the time of the request. |
| 133 | ERR_TRADE_DISABLED | Trading is disabled for the request. Check local permissions first, then account and symbol permissions with the broker. |
| 134 | ERR_NOT_ENOUGH_MONEY | The account does not have enough free funds for the requested trade. This is a funds or margin issue, not a trading-permission switch. |
| 4109 | ERR_TRADE_NOT_ALLOWED | The terminal does not allow the EA to trade. Review AutoTrading, Allow automated trading and the EA's Allow live trading setting. |
There can be overlap in the wording shown by an EA, and the exact cause depends on where the rejection occurs. As a practical distinction, 4109 often points toward a client-side EA or terminal permission, while 133 says trading is disabled for the request and can require a broker-side check. Use the code in the MT4 log together with the terminal settings and the broker's response.
Log error 133 after an OrderSend rejection
OrderSend returns a ticket when MT4 accepts the request, or -1 when it fails. Call GetLastError() immediately after the failure and save its result once; reading the error clears the stored last-error value. The example below is MQL4 code for an EA and defines a function that sends a small market buy when called.
int SendDiagnosticBuy()
{
RefreshRates();
ResetLastError();
int ticket = OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3,
0, 0, "Permission check", 0, 0, clrNONE);
if(ticket < 0)
{
int errorCode = GetLastError();
Print("OrderSend failed: symbol=", Symbol(),
" error=", errorCode);
return(-1);
}
Print("OrderSend accepted: symbol=", Symbol(),
" ticket=", ticket);
return(ticket);
}
This is not an automatic test loop: call the function only as a deliberate, broker-permitted test, preferably on a demo account. It sends a real order if accepted, so use a suitable symbol and volume and make sure you know how the position will be managed. Do not call it on every tick or repeatedly after an error. Logging helps identify the rejection; it does not enable trading or change account permissions.
The example uses no stop-loss or take-profit levels because it is focused on logging the permission result. That does not make it appropriate for every test. If you need protective levels or a different order type, use values and trade rules that are valid for the broker and the instrument, and make sure the test is permitted before sending it.
Fix the cause and retry safely
Work through the causes in order, changing one thing at a time. This keeps the diagnosis clear and avoids repeatedly submitting orders while the source of the rejection is unknown.
- Correct local settings. Enable AutoTrading, select Allow automated trading in Tools > Options > Expert Advisors, and select Allow live trading in the EA's Common tab. If you change a setting, make sure it applies to the EA instance and chart that produced the error.
- Verify the account and symbol. Confirm that you are connected to the intended account and server, and that the EA is sending an order for the broker's exact tradable symbol. Ask the broker whether that account can open the requested type of trade on that symbol.
- Reconnect or restart only if there is a reason. If MT4 is disconnected, showing stale connection status, or has not reflected a permission change the broker confirmed, reconnect to the correct server. Restarting the terminal is not a fix for an account restriction, and it should not be the first response to error 133.
- Make one controlled test. Once the permissions are confirmed, use a demo environment and a deliberate test order that complies with the broker's symbol rules. Record the result and stop if it is rejected; do not run an EA that keeps retrying the same request.
- Keep the diagnostic details. Note the exact error code, time, symbol and relevant Experts or Journal entries. If 133 persists after local settings are correct, send these details to the broker and ask them to identify the permission that blocked the request.
Verify that the EA can trade
After changing a setting or getting a broker confirmation, watch the Experts and Journal tabs during the controlled test. Look for the EA's order request, the result returned by MT4, and any message that names a disabled permission or account restriction. A successful test means the request was accepted in that test environment; it does not establish that later trades will be accepted under different symbol, session or account conditions.
If error 133 remains, give the broker the account server, symbol, timestamp, order direction and volume, error code, and the relevant log lines. Ask whether the account is permitted to open that trade on that instrument at that time. If the broker says trading is enabled, compare its answer with the symbol used by the EA and check that the EA is attached to the chart and account you intended.
When the logs show that the EA is not reaching OrderSend at all, the problem may be an entry condition or program flow rather than error 133. The FXNook EA debugger checks an EA's trading path and can explain what stops it from trading. For an MQL4 source-code error that needs correction, the MQL4/MQL5 error-fixing page describes the Lab's compile-and-fix workflow.
Frequently asked questions
What does error 133 mean in MT4?
Error 133 is ERR_TRADE_DISABLED. MT4 refused the trade request because trading is disabled for that request, so investigate terminal and EA permissions as well as account and symbol restrictions.
How do I enable live trading for an MT4 EA?
Enable the terminal's AutoTrading button, select Allow automated trading under Tools > Options > Expert Advisors, and select Allow live trading in the EA's Common tab. If those settings are already enabled, the account or symbol may still be restricted by the broker.
Why does MT4 say trading is disabled when AutoTrading is on?
AutoTrading permits EAs to operate in the terminal, but it does not override the EA's own permission or the broker's account and instrument rules. Also read the numeric error in the Experts or Journal tab: 4109 often points to an EA or terminal permission, while 133 can require a broker-side check.
Your practical next step is to record the exact error, symbol and time, then follow the permission checks in order and ask the broker about any remaining account or instrument restriction. If the EA does not reach its order request, use the EA debugger to trace the code path instead of repeatedly sending orders.
Questions
What does error 133 mean in MT4?
Error 133 is ERR_TRADE_DISABLED. MT4 refused the trade request because trading is disabled for that request, so investigate terminal and EA permissions as well as account and symbol restrictions.
How do I enable live trading for an MT4 EA?
Enable the terminal's AutoTrading button, select Allow automated trading under Tools > Options > Expert Advisors, and select Allow live trading in the EA's Common tab. If those settings are already enabled, the account or symbol may still be restricted by the broker.
Why does MT4 say trading is disabled when AutoTrading is on?
AutoTrading permits EAs to operate in the terminal, but it does not override the EA's own permission or the broker's account and instrument rules. Also read the numeric error in the Experts or Journal tab: 4109 often points to an EA or terminal permission, while 133 can require a broker-side check.