ErrorDescription – library MetaTrader 5

The library contains the following functions:

  • TradeServerReturnCodeDescription – returns description of trade server return codes;
  • ErrorDescription – returns description of runtime errors.
//+------------------------------------------------------------------+
//|                                             ErrorDescription.mqh |
//|                        Copyright 2010, MetaQuotes Software Corp. |
//|                                               |
//+------------------------------------------------------------------+
#property copyright "2010, MetaQuotes Software Corp."
#property link      ""
#property version   "1.00"
//+------------------------------------------------------------------+
//| returns trade server return code description                     |
//+------------------------------------------------------------------+
string TradeServerReturnCodeDescription(int return_code)
//+------------------------------------------------------------------+
//| returns runtime error code description                           |
//+------------------------------------------------------------------+
string ErrorDescription(int err_code)

Example:

(Don’t forget to copy the file ErrorDescription.mq5 to the folder \MetaTrader 5\MQL5\Include)

//+------------------------------------------------------------------+
//|                                               ErrorDescrTest.mq5 |
//|                        Copyright 2010, MetaQuotes Software Corp. |
//|                                               |
//+------------------------------------------------------------------+
#property copyright "2010, MetaQuotes Software Corp."
#property link      ""
#property version   "1.00"
#include <ErrorDescription.mqh>
//+------------------------------------------------------------------+
//| Example of use of the ErrorDescription.mqh library               |
//+------------------------------------------------------------------+
void OnStart()
  {
   Print("----- Description of trade server return codes -----");
   for(int i=10004;i<=10034;i++)
     {
      Print("Trade server return code:",i,TradeServerReturnCodeDescription(i));
     }
   Print("-------- Description of runtime error codes ---------");
   for(int i=4001;i<=4014;i++)
     {
      Print("Runtime error code:",i,ErrorDescription(i));
     }
  }
//+------------------------------------------------------------------+

In some cases it’s necessary to work with user defined errors. In MQL5 there is a function SetUserError, what sets the predefined variable _LastError into the value equal to ERR_USER_ERROR_FIRST + user_error.

The user defined error codes starts from code ERR_USER_ERROR_FIRST. In such cases you can use the function ErrorDescriptionExt to return description of errors, including the user defined errors:

//+------------------------------------------------------------------+
//|                                               UserErrorDescr.mq5 |
//|                        Copyright 2010, MetaQuotes Software Corp. |
//|                                               |
//+------------------------------------------------------------------+
#property copyright "2010, MetaQuotes Software Corp."
#property link      ""
#property version   "1.00"
#include <ErrorDescription.mqh>
//+------------------------------------------------------------------+
//|  returns runtime error code description,                         |
//|  with user defined errors                                        |
//+------------------------------------------------------------------+
string ErrorDescriptionExt(int err_code,string&user_errors[])
  {
   if(err_code>=0 && err_code<ERR_USER_ERROR_FIRST) return(ErrorDescription(err_code));
//--- user defined runtime errors
   err_code-=ERR_USER_ERROR_FIRST;
   if(err_code<=ArraySize(user_errors)) return(user_errors[err_code]);
//---
   return("Unknown error");
  };

// an array with description of the user defined runtime errors
string MyErrors[]=
  {
   "User error №1",
   "User error №2",
   "User error №3"
  };
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   for(int i=0;i<=2;i++)
     {
      SetUserError(i);
      Print("User defined error code:",i,ErrorDescriptionExt(GetLastError(),MyErrors));
     }
  }
//+------------------------------------------------------------------+


📈 ROBOTFX MetaTrader Expert Advisors and Indicators to maximize profits and minimize the risks