#property link          "https://www.earnforex.com/"
#property version       "1.00"
#property strict
#property copyright     "EarnForex.com - 2020"
#property description   "This is list of the available MT5 errors" 
#property description   " "
#property description   "Find More on EarnForex.com"

string GetLastErrorText(int Error){
   string Text="";
   //Print(Error);
   if(Error==ERR_SUCCESS) Text="The operation completed successfully";
   if(Error==ERR_INTERNAL_ERROR) Text="Unexpected internal error";
   if(Error==ERR_WRONG_INTERNAL_PARAMETER) Text="Wrong parameter in the inner call of the client terminal function";
   if(Error==ERR_INVALID_PARAMETER) Text="Wrong parameter when calling the system function";
   if(Error==ERR_NOT_ENOUGH_MEMORY) Text="Not enough memory to perform the system function";
   if(Error==ERR_STRUCT_WITHOBJECTS_ORCLASS) Text="The structure contains objects of strings and/or dynamic arrays and/or structure of such objects and/or classes";
   if(Error==ERR_INVALID_ARRAY) Text="Array of a wrong type, wrong size, or a damaged object of a dynamic array";
   if(Error==ERR_ARRAY_RESIZE_ERROR) Text="Not enough memory for the relocation of an array, or an attempt to change the size of a static array";
   if(Error==ERR_STRING_RESIZE_ERROR) Text="Not enough memory for the relocation of string";
   if(Error==ERR_NOTINITIALIZED_STRING) Text="Not initialized string";
   if(Error==ERR_INVALID_DATETIME) Text="Invalid date and/or time";
   if(Error==ERR_ARRAY_BAD_SIZE) Text="Requested array size exceeds 2 GB";
   if(Error==ERR_INVALID_POINTER) Text="Wrong pointer";
   if(Error==ERR_INVALID_POINTER_TYPE) Text="Wrong type of pointer";
   if(Error==ERR_FUNCTION_NOT_ALLOWED) Text="Function is not allowed for call";
   if(Error==ERR_RESOURCE_NAME_DUPLICATED) Text="The names of the dynamic and the static resource match";
   if(Error==ERR_RESOURCE_NOT_FOUND) Text="Resource with this name has not been found in EX5";
   if(Error==ERR_RESOURCE_UNSUPPORTED_TYPE) Text="Unsupported resource type or its size exceeds 16 Mb";
   if(Error==ERR_RESOURCE_NAME_IS_TOO_LONG) Text="The resource name exceeds 63 characters";
   if(Error==ERR_MATH_OVERFLOW) Text="Overflow occurred when calculating math function";
   if(Error==ERR_CHART_WRONG_ID) Text="Wrong chart ID";
   if(Error==ERR_CHART_NO_REPLY) Text="Chart does not respond";
   if(Error==ERR_CHART_NOT_FOUND) Text="Chart not found";
   if(Error==ERR_CHART_NO_EXPERT) Text="No Expert Advisor in the chart that could handle the event";
   if(Error==ERR_CHART_CANNOT_OPEN) Text="Chart opening error";
   if(Error==ERR_CHART_CANNOT_CHANGE) Text="Failed to change chart symbol and period";
   if(Error==ERR_CHART_WRONG_PARAMETER) Text="Error value of the parameter for the function of working with charts";
   if(Error==ERR_CHART_CANNOT_CREATE_TIMER) Text="Failed to create timer";
   if(Error==ERR_CHART_WRONG_PROPERTY) Text="Wrong chart property ID";
   if(Error==ERR_CHART_SCREENSHOT_FAILED) Text="Error creating screenshots";
   if(Error==ERR_CHART_NAVIGATE_FAILED) Text="Error navigating through chart";
   if(Error==ERR_CHART_TEMPLATE_FAILED) Text="Error applying template";
   if(Error==ERR_CHART_WINDOW_NOT_FOUND) Text="Subwindow containing the indicator was not found";
   if(Error==ERR_CHART_INDICATOR_CANNOT_ADD) Text="Error adding an indicator to chart";
   if(Error==ERR_CHART_INDICATOR_CANNOT_DEL) Text="Error deleting an indicator from the chart";
   if(Error==ERR_CHART_INDICATOR_NOT_FOUND) Text="Indicator not found on the specified chart";
   if(Error==ERR_OBJECT_ERROR) Text="Error working with a graphical object";
   if(Error==ERR_OBJECT_NOT_FOUND) Text="Graphical object was not found";
   if(Error==ERR_OBJECT_WRONG_PROPERTY) Text="Wrong ID of a graphical object property";
   if(Error==ERR_OBJECT_GETDATE_FAILED) Text="Unable to get date corresponding to the value";
   if(Error==ERR_OBJECT_GETVALUE_FAILED) Text="Unable to get value corresponding to the date";
   if(Error==ERR_MARKET_UNKNOWN_SYMBOL) Text="Unknown symbol";
   if(Error==ERR_MARKET_NOT_SELECTED) Text="Symbol is not selected in MarketWatch";
   if(Error==ERR_MARKET_WRONG_PROPERTY) Text="Wrong identifier of a symbol property";
   if(Error==ERR_MARKET_LASTTIME_UNKNOWN) Text="Time of the last tick is not known (no ticks)";
   if(Error==ERR_MARKET_SELECT_ERROR) Text="Error adding or deleting a symbol in MarketWatch";
   if(Error==ERR_HISTORY_NOT_FOUND) Text="Requested history not found";
   if(Error==ERR_HISTORY_WRONG_PROPERTY) Text="Wrong ID of the history property";
   if(Error==ERR_HISTORY_TIMEOUT) Text="Exceeded history request timeout";
   if(Error==ERR_HISTORY_BARS_LIMIT) Text="Number of requested bars limited by terminal settings";
   if(Error==ERR_HISTORY_LOAD_ERRORS) Text="Multiple errors when loading history";
   if(Error==ERR_HISTORY_SMALL_BUFFER) Text="Receiving array is too small to store all requested data";
   if(Error==ERR_GLOBALVARIABLE_NOT_FOUND) Text="Global variable of the client terminal is not found";
   if(Error==ERR_GLOBALVARIABLE_EXISTS) Text="Global variable of the client terminal with the same name already exists";
   if(Error==ERR_GLOBALVARIABLE_NOT_MODIFIED) Text="Global variables were not modified";
   if(Error==ERR_GLOBALVARIABLE_CANNOTREAD) Text="Cannot read file with global variable values";
   if(Error==ERR_GLOBALVARIABLE_CANNOTWRITE) Text="Cannot write file with global variable values";
   if(Error==ERR_MAIL_SEND_FAILED) Text="Email sending failed";
   if(Error==ERR_PLAY_SOUND_FAILED) Text="Sound playing failed";
   if(Error==ERR_MQL5_WRONG_PROPERTY) Text="Wrong identifier of the program property";
   if(Error==ERR_TERMINAL_WRONG_PROPERTY) Text="Wrong identifier of the terminal property";
   if(Error==ERR_FTP_SEND_FAILED) Text="File sending via ftp failed";
   if(Error==ERR_NOTIFICATION_SEND_FAILED) Text="Failed to send a notification";
   if(Error==ERR_NOTIFICATION_WRONG_PARAMETER) Text="Invalid parameter for sending a notification – an empty string or NULL has been passed to the SendNotification() function";
   if(Error==ERR_NOTIFICATION_WRONG_SETTINGS) Text="Wrong settings of notifications in the terminal (ID is not specified or permission is not set)";
   if(Error==ERR_NOTIFICATION_TOO_FREQUENT) Text="Too frequent sending of notifications";
   if(Error==ERR_FTP_NOSERVER) Text="FTP server is not specified";
   if(Error==ERR_FTP_NOLOGIN) Text="FTP login is not specified";
   if(Error==ERR_FTP_FILE_ERROR) Text="File not found in the MQL5\\Files directory to send on FTP server";
   if(Error==ERR_FTP_CONNECT_FAILED) Text="FTP connection failed";
   if(Error==ERR_FTP_CHANGEDIR) Text="FTP path not found on server";
   if(Error==ERR_BUFFERS_NO_MEMORY) Text="Not enough memory for the distribution of indicator buffers";
   if(Error==ERR_BUFFERS_WRONG_INDEX) Text="Wrong indicator buffer index";
   if(Error==ERR_CUSTOM_WRONG_PROPERTY) Text="Wrong ID of the custom indicator property";
   if(Error==ERR_ACCOUNT_WRONG_PROPERTY) Text="Wrong account property ID";
   if(Error==ERR_TRADE_WRONG_PROPERTY) Text="Wrong trade property ID";
   if(Error==ERR_TRADE_DISABLED) Text="Trading by Expert Advisors prohibited";
   if(Error==ERR_TRADE_POSITION_NOT_FOUND) Text="Position not found";
   if(Error==ERR_TRADE_ORDER_NOT_FOUND) Text="Order not found";
   if(Error==ERR_TRADE_DEAL_NOT_FOUND) Text="Deal not found";
   if(Error==ERR_TRADE_SEND_FAILED) Text="Trade request sending failed";
   if(Error==ERR_TRADE_CALC_FAILED) Text="Failed to calculate profit or margin";
   if(Error==ERR_INDICATOR_UNKNOWN_SYMBOL) Text="Unknown symbol";
   if(Error==ERR_INDICATOR_CANNOT_CREATE) Text="Indicator cannot be created";
   if(Error==ERR_INDICATOR_NO_MEMORY) Text="Not enough memory to add the indicator";
   if(Error==ERR_INDICATOR_CANNOT_APPLY) Text="The indicator cannot be applied to another indicator";
   if(Error==ERR_INDICATOR_CANNOT_ADD) Text="Error applying an indicator to chart";
   if(Error==ERR_INDICATOR_DATA_NOT_FOUND) Text="Requested data not found";
   if(Error==ERR_INDICATOR_WRONG_HANDLE) Text="Wrong indicator handle";
   if(Error==ERR_INDICATOR_WRONG_PARAMETERS) Text="Wrong number of parameters when creating an indicator";
   if(Error==ERR_INDICATOR_PARAMETERS_MISSING) Text="No parameters when creating an indicator";
   if(Error==ERR_INDICATOR_CUSTOM_NAME) Text="The first parameter in the array must be the name of the custom indicator";
   if(Error==ERR_INDICATOR_PARAMETER_TYPE) Text="Invalid parameter type in the array when creating an indicator";
   if(Error==ERR_INDICATOR_WRONG_INDEX) Text="Wrong index of the requested indicator buffer";
   if(Error==ERR_BOOKS_CANNOT_ADD) Text="Depth Of Market can not be added";
   if(Error==ERR_BOOKS_CANNOT_DELETE) Text="Depth Of Market can not be removed";
   if(Error==ERR_BOOKS_CANNOT_GET) Text="The data from Depth Of Market can not be obtained";
   if(Error==ERR_BOOKS_CANNOT_SUBSCRIBE) Text="Error in subscribing to receive new data from Depth Of Market";
   if(Error==ERR_TOO_MANY_FILES) Text="More than 64 files cannot be opened at the same time";
   if(Error==ERR_WRONG_FILENAME) Text="Invalid file name";
   if(Error==ERR_TOO_LONG_FILENAME) Text="Too long file name";
   if(Error==ERR_CANNOT_OPEN_FILE) Text="File opening error";
   if(Error==ERR_FILE_CACHEBUFFER_ERROR) Text="Not enough memory for cache to read";
   if(Error==ERR_CANNOT_DELETE_FILE) Text="File deleting error";
   if(Error==ERR_INVALID_FILEHANDLE) Text="A file with this handle was closed, or was not opening at all";
   if(Error==ERR_WRONG_FILEHANDLE) Text="Wrong file handle";
   if(Error==ERR_FILE_NOTTOWRITE) Text="The file must be opened for writing";
   if(Error==ERR_FILE_NOTTOREAD) Text="The file must be opened for reading";
   if(Error==ERR_FILE_NOTBIN) Text="The file must be opened as a binary one";
   if(Error==ERR_FILE_NOTTXT) Text="The file must be opened as a text";
   if(Error==ERR_FILE_NOTTXTORCSV) Text="The file must be opened as a text or CSV";
   if(Error==ERR_FILE_NOTCSV) Text="The file must be opened as CSV";
   if(Error==ERR_FILE_READERROR) Text="File reading error";
   if(Error==ERR_FILE_BINSTRINGSIZE) Text="String size must be specified, because the file is opened as binary";
   if(Error==ERR_INCOMPATIBLE_FILE) Text="A text file must be for string arrays, for other arrays - binary";
   if(Error==ERR_FILE_IS_DIRECTORY) Text="This is not a file, this is a directory";
   if(Error==ERR_FILE_NOT_EXIST) Text="File does not exist";
   if(Error==ERR_FILE_CANNOT_REWRITE) Text="File can not be rewritten";
   if(Error==ERR_WRONG_DIRECTORYNAME) Text="Wrong directory name";
   if(Error==ERR_DIRECTORY_NOT_EXIST) Text="Directory does not exist";
   if(Error==ERR_FILE_ISNOT_DIRECTORY) Text="This is a file, not a directory";
   if(Error==ERR_CANNOT_DELETE_DIRECTORY) Text="The directory cannot be removed";
   if(Error==ERR_CANNOT_CLEAN_DIRECTORY) Text="Failed to clear the directory (probably one or more files are blocked and removal operation failed)";
   if(Error==ERR_FILE_WRITEERROR) Text="Failed to write a resource to a file";
   if(Error==ERR_FILE_ENDOFFILE) Text="Unable to read the next piece of data from a CSV file (FileReadString, FileReadNumber, FileReadDatetime, FileReadBool), since the end of file is reached";
   if(Error==ERR_NO_STRING_DATE) Text="No date in the string";
   if(Error==ERR_WRONG_STRING_DATE) Text="Wrong date in the string";
   if(Error==ERR_WRONG_STRING_TIME) Text="Wrong time in the string";
   if(Error==ERR_STRING_TIME_ERROR) Text="Error converting string to date";
   if(Error==ERR_STRING_OUT_OF_MEMORY) Text="Not enough memory for the string";
   if(Error==ERR_STRING_SMALL_LEN) Text="The string length is less than expected";
   if(Error==ERR_STRING_TOO_BIGNUMBER) Text="Too large number, more than ULONG_MAX";
   if(Error==ERR_WRONG_FORMATSTRING) Text="Invalid format string";
   if(Error==ERR_TOO_MANY_FORMATTERS) Text="Amount of format specifiers more than the parameters";
   if(Error==ERR_TOO_MANY_PARAMETERS) Text="Amount of parameters more than the format specifiers";
   if(Error==ERR_WRONG_STRING_PARAMETER) Text="Damaged parameter of string type";
   if(Error==ERR_STRINGPOS_OUTOFRANGE) Text="Position outside the string";
   if(Error==ERR_STRING_ZEROADDED) Text="0 added to the string end, a useless operation";
   if(Error==ERR_STRING_UNKNOWNTYPE) Text="Unknown data type when converting to a string";
   if(Error==ERR_WRONG_STRING_OBJECT) Text="Damaged string object";
   if(Error==ERR_INCOMPATIBLE_ARRAYS) Text="Copying incompatible arrays. String array can be copied only to a string array, and a numeric array - in numeric array only";
   if(Error==ERR_SMALL_ASSERIES_ARRAY) Text="The receiving array is declared as AS_SERIES, and it is of insufficient size";
   if(Error==ERR_SMALL_ARRAY) Text="Too small array, the starting position is outside the array";
   if(Error==ERR_ZEROSIZE_ARRAY) Text="An array of zero length";
   if(Error==ERR_NUMBER_ARRAYS_ONLY) Text="Must be a numeric array";
   if(Error==ERR_ONEDIM_ARRAYS_ONLY) Text="Must be a one-dimensional array";
   if(Error==ERR_SERIES_ARRAY) Text="Timeseries cannot be used";
   if(Error==ERR_DOUBLE_ARRAY_ONLY) Text="Must be an array of type double";
   if(Error==ERR_FLOAT_ARRAY_ONLY) Text="Must be an array of type float";
   if(Error==ERR_LONG_ARRAY_ONLY) Text="Must be an array of type long";
   if(Error==ERR_INT_ARRAY_ONLY) Text="Must be an array of type int";
   if(Error==ERR_SHORT_ARRAY_ONLY) Text="Must be an array of type short";
   if(Error==ERR_CHAR_ARRAY_ONLY) Text="Must be an array of type char";
   if(Error==ERR_STRING_ARRAY_ONLY) Text="String array only";
   if(Error==ERR_OPENCL_NOT_SUPPORTED) Text="OpenCL functions are not supported on this computer";
   if(Error==ERR_OPENCL_INTERNAL) Text="Internal error occurred when running OpenCL";
   if(Error==ERR_OPENCL_INVALID_HANDLE) Text="Invalid OpenCL handle";
   if(Error==ERR_OPENCL_CONTEXT_CREATE) Text="Error creating the OpenCL context";
   if(Error==ERR_OPENCL_QUEUE_CREATE) Text="Failed to create a run queue in OpenCL";
   if(Error==ERR_OPENCL_PROGRAM_CREATE) Text="Error occurred when compiling an OpenCL program";
   if(Error==ERR_OPENCL_TOO_LONG_KERNEL_NAME) Text="Too long kernel name (OpenCL kernel)";
   if(Error==ERR_OPENCL_KERNEL_CREATE) Text="Error creating an OpenCL kernel";
   if(Error==ERR_OPENCL_SET_KERNEL_PARAMETER) Text="Error occurred when setting parameters for the OpenCL kernel";
   if(Error==ERR_OPENCL_EXECUTE) Text="OpenCL program runtime error";
   if(Error==ERR_OPENCL_WRONG_BUFFER_SIZE) Text="Invalid size of the OpenCL buffer";
   if(Error==ERR_OPENCL_WRONG_BUFFER_OFFSET) Text="Invalid offset in the OpenCL buffer";
   if(Error==ERR_OPENCL_BUFFER_CREATE) Text="Failed to create an OpenCL buffer";
   if(Error==ERR_OPENCL_TOO_MANY_OBJECTS) Text="Too many OpenCL objects";
   if(Error==ERR_OPENCL_SELECTDEVICE) Text="OpenCL device selection error";
   if(Error==ERR_WEBREQUEST_INVALID_ADDRESS) Text="Invalid URL";
   if(Error==ERR_WEBREQUEST_CONNECT_FAILED) Text="Failed to connect to specified URL";
   if(Error==ERR_WEBREQUEST_TIMEOUT) Text="Timeout exceeded";
   if(Error==ERR_WEBREQUEST_REQUEST_FAILED) Text="HTTP request failed";
   if(Error==ERR_NOT_CUSTOM_SYMBOL) Text="A custom symbol must be specified";
   if(Error==ERR_CUSTOM_SYMBOL_WRONG_NAME) Text="The name of the custom symbol is invalid. The symbol name can only contain Latin letters without punctuation, spaces or special characters (may only contain '.', '_', '&' and '#'). It is not recommended to use characters <, >, :, ', /,\\, |, ?, *.";
   if(Error==ERR_CUSTOM_SYMBOL_NAME_LONG) Text="The name of the custom symbol is too long. The length of the symbol name must not exceed 32 characters including the ending 0 character";
   if(Error==ERR_CUSTOM_SYMBOL_PATH_LONG) Text="The path of the custom symbol is too long. The path length should not exceed 128 characters including 'Custom', the symbol name, group separators and the ending 0";
   if(Error==ERR_CUSTOM_SYMBOL_EXIST) Text="A custom symbol with the same name already exists";
   if(Error==ERR_CUSTOM_SYMBOL_ERROR) Text="Error occurred while creating, deleting or changing the custom symbol";
   if(Error==ERR_CUSTOM_SYMBOL_SELECTED) Text="You are trying to delete a custom symbol selected in Market Watch";
   if(Error==ERR_CUSTOM_SYMBOL_PROPERTY_WRONG) Text="An invalid custom symbol property";
   if(Error==ERR_CUSTOM_SYMBOL_PARAMETER_ERROR) Text="A wrong parameter while setting the property of a custom symbol";
   if(Error==ERR_CUSTOM_SYMBOL_PARAMETER_LONG) Text="A too long string parameter while setting the property of a custom symbol";
   if(Error==ERR_CUSTOM_TICKS_WRONG_ORDER) Text="Ticks in the array are not arranged in the order of time";
   
   return Text;
}