MT5 error 4014: Function is not allowed for call
Call it from an EA, not an indicator.
Updated 24 October 2026. Runs in your browser; nothing you type is uploaded.
The number after retcode= or "error" in MT5's Experts or Journal tab. 296 codes, return codes and runtime errors, as MQL5's reference words them.
Share this fix
What MQL5 says
4014ERR_FUNCTION_NOT_ALLOWED- Function is not allowed for call
From MQL5's table of runtime errors, read 24 October 2026. An Expert Advisor reads it with GetLastError() after a call fails; the Experts tab prints what the EA logs.
What causes it
A function was called from a program type that may not call it. MQL5's WebRequest page says WebRequest() works only in Expert Advisors and scripts and returns 4014 from an indicator; its Sleep page says Sleep() can't be called in custom indicators either, because they run in the interface thread.
The fix in MQL5
Move the call into an Expert Advisor or a script. An EA can run it on a timer while the indicator only calculates; for WebRequest(), also add the server to the allowed URLs in Tools, Options, Expert Advisors.
#property indicator_chart_window
#property indicator_plots 0
int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[])
{
char body[], reply[];
string headers;
// an indicator can't call WebRequest(): it returns -1 and GetLastError() gives 4014
WebRequest("GET", "https://example.com/news", "", 5000, body, reply, headers);
return(rates_total);
}// the same call from an Expert Advisor, which runs in its own thread; add the URL under
// Tools > Options > Expert Advisors > Allow WebRequest for listed URL
void OnTimer()
{
char body[], reply[];
string headers;
int status = WebRequest("GET", "https://example.com/news", "", 5000, body, reply, headers);
if(status == -1)
Print("WebRequest failed: ", GetLastError());
}
int OnInit()
{
EventSetTimer(60);
return(INIT_SUCCEEDED);
}Both compile in MetaEditor 5 with no errors or warnings. Adapt them to your EA; they were not run against a trade server.
Other MT5 errors
- MT5 error 4753: Position not found
- MT5 error 4756: Trade request sending failed
- MT5 error 4802: Indicator cannot be created
- MT5 error 4806: Requested data not found
- MT5 error 5004: File opening error
- MT5 error 10004: Requote
- MT5 error 10006: Request rejected
- MT5 retcode 10009: Request completed
- MT5 error 10013: Invalid request
- MT5 error 10014: Invalid volume in the request
- MT5 error 10015: Invalid price in the request
- MT5 error 10016: Invalid stops in the request
- MT5 error 10017: Trade is disabled
- MT5 error 10018: Market is closed
- MT5 error 10019: There is not enough money to complete the request
- MT5 error 10021: There are no quotes to process the request
- MT5 error 10022: Invalid order expiration date in the request
- MT5 error 10026: Autotrading disabled by server
- MT5 error 10027: Autotrading disabled by client terminal
- MT5 error 10030: Invalid order filling type
- MT5 error 10031: No connection with the trade server
- MT5 error 10044: The request is rejected, because the "Only position closing is allowed" rule is set for the symbol
- MT5 error 10046: The request is rejected, because the "Opposite positions on a single symbol are disabled" rule is set for the trading account.
Read a whole MT5 EA's source
- MTR FullSystemEA (MQL5 source) The full MQL5 source of a production MT5 EA for XAUUSD M5 (hedge-grid and recovery): 21 files, 16,923 lines. $49 once.