317 lines
		
	
	
	
		
			24 KiB
		
	
	
	
		
			MQL5
		
	
	
	
	
	
			
		
		
	
	
			317 lines
		
	
	
	
		
			24 KiB
		
	
	
	
		
			MQL5
		
	
	
	
	
	
//+------------------------------------------------------------------+
 | 
						|
//|                                             ErrorDescription.mqh |
 | 
						|
//|                        Copyright 2010, MetaQuotes Software Corp. |
 | 
						|
//|                                              http://www.mql5.com |
 | 
						|
//+------------------------------------------------------------------+
 | 
						|
#property copyright "2010, MetaQuotes Software Corp."
 | 
						|
#property link      "http://www.mql5.com"
 | 
						|
#property version   "1.00"
 | 
						|
//+------------------------------------------------------------------+
 | 
						|
//| returns trade server return code description                     |
 | 
						|
//+------------------------------------------------------------------+
 | 
						|
string TradeServerReturnCodeDescription(int return_code)
 | 
						|
  {
 | 
						|
//---
 | 
						|
   switch(return_code)
 | 
						|
     {
 | 
						|
      case TRADE_RETCODE_REQUOTE:            return("Requote");
 | 
						|
      case TRADE_RETCODE_REJECT:             return("Request rejected");
 | 
						|
      case TRADE_RETCODE_CANCEL:             return("Request canceled by trader");
 | 
						|
      case TRADE_RETCODE_PLACED:             return("Order placed");
 | 
						|
      case TRADE_RETCODE_DONE:               return("Request completed");
 | 
						|
      case TRADE_RETCODE_DONE_PARTIAL:       return("Only part of the request was completed");
 | 
						|
      case TRADE_RETCODE_ERROR:              return("Request processing error");
 | 
						|
      case TRADE_RETCODE_TIMEOUT:            return("Request canceled by timeout");
 | 
						|
      case TRADE_RETCODE_INVALID:            return("Invalid request");
 | 
						|
      case TRADE_RETCODE_INVALID_VOLUME:     return("Invalid volume in the request");
 | 
						|
      case TRADE_RETCODE_INVALID_PRICE:      return("Invalid price in the request");
 | 
						|
      case TRADE_RETCODE_INVALID_STOPS:      return("Invalid stops in the request");
 | 
						|
      case TRADE_RETCODE_TRADE_DISABLED:     return("Trade is disabled");
 | 
						|
      case TRADE_RETCODE_MARKET_CLOSED:      return("Market is closed");
 | 
						|
      case TRADE_RETCODE_NO_MONEY:           return("There is not enough money to complete the request");
 | 
						|
      case TRADE_RETCODE_PRICE_CHANGED:      return("Prices changed");
 | 
						|
      case TRADE_RETCODE_PRICE_OFF:          return("There are no quotes to process the request");
 | 
						|
      case TRADE_RETCODE_INVALID_EXPIRATION: return("Invalid order expiration date in the request");
 | 
						|
      case TRADE_RETCODE_ORDER_CHANGED:      return("Order state changed");
 | 
						|
      case TRADE_RETCODE_TOO_MANY_REQUESTS:  return("Too frequent requests");
 | 
						|
      case TRADE_RETCODE_NO_CHANGES:         return("No changes in request");
 | 
						|
      case TRADE_RETCODE_SERVER_DISABLES_AT: return("Autotrading disabled by server");
 | 
						|
      case TRADE_RETCODE_CLIENT_DISABLES_AT: return("Autotrading disabled by client terminal");
 | 
						|
      case TRADE_RETCODE_LOCKED:             return("Request locked for processing");
 | 
						|
      case TRADE_RETCODE_FROZEN:             return("Order or position frozen");
 | 
						|
      case TRADE_RETCODE_INVALID_FILL:       return("Invalid order filling type");
 | 
						|
      case TRADE_RETCODE_CONNECTION:         return("No connection with the trade server");
 | 
						|
      case TRADE_RETCODE_ONLY_REAL:          return("Operation is allowed only for live accounts");
 | 
						|
      case TRADE_RETCODE_LIMIT_ORDERS:       return("The number of pending orders has reached the limit");
 | 
						|
      case TRADE_RETCODE_LIMIT_VOLUME:       return("The volume of orders and positions for the symbol has reached the limit");
 | 
						|
     }
 | 
						|
//---
 | 
						|
   return("Invalid return code of the trade server");
 | 
						|
  }
 | 
						|
//+------------------------------------------------------------------+
 | 
						|
//| returns runtime error code description                           |
 | 
						|
//+------------------------------------------------------------------+
 | 
						|
string ErrorDescription(int err_code)
 | 
						|
  {
 | 
						|
//---
 | 
						|
   switch(err_code)
 | 
						|
     {
 | 
						|
      //--- Constant Description
 | 
						|
      case ERR_SUCCESS:                      return("The operation completed successfully");
 | 
						|
      case ERR_INTERNAL_ERROR:               return("Unexpected internal error");
 | 
						|
      case ERR_WRONG_INTERNAL_PARAMETER:     return("Wrong parameter in the inner call of the client terminal function");
 | 
						|
      case ERR_INVALID_PARAMETER:            return("Wrong parameter when calling the system function");
 | 
						|
      case ERR_NOT_ENOUGH_MEMORY:            return("Not enough memory to perform the system function");
 | 
						|
      case ERR_STRUCT_WITHOBJECTS_ORCLASS:   return("The structure contains objects of strings and/or dynamic arrays and/or structure of such objects and/or classes");
 | 
						|
      case ERR_INVALID_ARRAY:                return("Array of a wrong type, wrong size, or a damaged object of a dynamic array");
 | 
						|
      case ERR_ARRAY_RESIZE_ERROR:           return("Not enough memory for the relocation of an array, or an attempt to change the size of a static array");
 | 
						|
      case ERR_STRING_RESIZE_ERROR:          return("Not enough memory for the relocation of string");
 | 
						|
      case ERR_NOTINITIALIZED_STRING:        return("Not initialized string");
 | 
						|
      case ERR_INVALID_DATETIME:             return("Invalid date and/or time");
 | 
						|
      case ERR_ARRAY_BAD_SIZE:               return("Requested array size exceeds 2 GB");
 | 
						|
      case ERR_INVALID_POINTER:              return("Wrong pointer");
 | 
						|
      case ERR_INVALID_POINTER_TYPE:         return("Wrong type of pointer");
 | 
						|
      case ERR_FUNCTION_NOT_ALLOWED:         return("System function is not allowed to call");
 | 
						|
      //--- Charts	
 | 
						|
      case ERR_CHART_WRONG_ID:               return("Wrong chart ID");
 | 
						|
      case ERR_CHART_NO_REPLY:               return("Chart does not respond");
 | 
						|
      case ERR_CHART_NOT_FOUND:              return("Chart not found");
 | 
						|
      case ERR_CHART_NO_EXPERT:              return("No Expert Advisor in the chart that could handle the event");
 | 
						|
      case ERR_CHART_CANNOT_OPEN:            return("Chart opening error");
 | 
						|
      case ERR_CHART_CANNOT_CHANGE:          return("Failed to change chart symbol and period");
 | 
						|
      case ERR_CHART_CANNOT_CREATE_TIMER:    return("Failed to create timer");
 | 
						|
      case ERR_CHART_WRONG_PROPERTY:         return("Wrong chart property ID");
 | 
						|
      case ERR_CHART_SCREENSHOT_FAILED:      return("Error creating screenshots");
 | 
						|
      case ERR_CHART_NAVIGATE_FAILED:        return("Error navigating through chart");
 | 
						|
      case ERR_CHART_TEMPLATE_FAILED:        return("Error applying template");
 | 
						|
      case ERR_CHART_WINDOW_NOT_FOUND:       return("Subwindow containing the indicator was not found");
 | 
						|
      case ERR_CHART_INDICATOR_CANNOT_ADD:   return("Error adding an indicator to chart");
 | 
						|
      case ERR_CHART_INDICATOR_CANNOT_DEL:   return("Error deleting an indicator from the chart");
 | 
						|
      case ERR_CHART_INDICATOR_NOT_FOUND:    return("Indicator not found on the specified chart");
 | 
						|
      //--- Graphical Objects	
 | 
						|
      case ERR_OBJECT_ERROR:                 return("Error working with a graphical object");
 | 
						|
      case ERR_OBJECT_NOT_FOUND:             return("Graphical object was not found");
 | 
						|
      case ERR_OBJECT_WRONG_PROPERTY:        return("Wrong ID of a graphical object property");
 | 
						|
      case ERR_OBJECT_GETDATE_FAILED:        return("Unable to get date corresponding to the value");
 | 
						|
      case ERR_OBJECT_GETVALUE_FAILED:       return("Unable to get value corresponding to the date");
 | 
						|
      //--- MarketInfo	
 | 
						|
      case ERR_MARKET_UNKNOWN_SYMBOL:        return("Unknown symbol");
 | 
						|
      case ERR_MARKET_NOT_SELECTED:          return("Symbol is not selected in MarketWatch");
 | 
						|
      case ERR_MARKET_WRONG_PROPERTY:        return("Wrong identifier of a symbol property");
 | 
						|
      case ERR_MARKET_LASTTIME_UNKNOWN:      return("Time of the last tick is not known (no ticks)");
 | 
						|
      case ERR_MARKET_SELECT_ERROR:          return("Error adding or deleting a symbol in MarketWatch");
 | 
						|
      //--- History Access	
 | 
						|
      case ERR_HISTORY_NOT_FOUND:            return("Requested history not found");
 | 
						|
      case ERR_HISTORY_WRONG_PROPERTY:       return("Wrong ID of the history property");
 | 
						|
      //--- Global_Variables	
 | 
						|
      case ERR_GLOBALVARIABLE_NOT_FOUND:     return("Global variable of the client terminal is not found");
 | 
						|
      case ERR_GLOBALVARIABLE_EXISTS:        return("Global variable of the client terminal with the same name already exists");
 | 
						|
      case ERR_MAIL_SEND_FAILED:             return("Email sending failed");
 | 
						|
      case ERR_PLAY_SOUND_FAILED:            return("Sound playing failed");
 | 
						|
      case ERR_MQL5_WRONG_PROPERTY:          return("Wrong identifier of the program property");
 | 
						|
      case ERR_TERMINAL_WRONG_PROPERTY:      return("Wrong identifier of the terminal property");
 | 
						|
      case ERR_FTP_SEND_FAILED:              return("File sending via ftp failed");
 | 
						|
      case ERR_NOTIFICATION_SEND_FAILED:     return("Error in sending notification");
 | 
						|
      //--- Custom Indicator Buffers
 | 
						|
      case ERR_BUFFERS_NO_MEMORY:            return("Not enough memory for the distribution of indicator buffers");
 | 
						|
      case ERR_BUFFERS_WRONG_INDEX:          return("Wrong indicator buffer index");
 | 
						|
      //--- Custom Indicator Properties
 | 
						|
      case ERR_CUSTOM_WRONG_PROPERTY:        return("Wrong ID of the custom indicator property");
 | 
						|
      //--- Account
 | 
						|
      case ERR_ACCOUNT_WRONG_PROPERTY:       return("Wrong account property ID");
 | 
						|
      case ERR_TRADE_WRONG_PROPERTY:         return("Wrong trade property ID");
 | 
						|
      case ERR_TRADE_DISABLED:               return("Trading by Expert Advisors prohibited");
 | 
						|
      case ERR_TRADE_POSITION_NOT_FOUND:     return("Position not found");
 | 
						|
      case ERR_TRADE_ORDER_NOT_FOUND:        return("Order not found");
 | 
						|
      case ERR_TRADE_DEAL_NOT_FOUND:         return("Deal not found");
 | 
						|
      case ERR_TRADE_SEND_FAILED:            return("Trade request sending failed");
 | 
						|
      //--- Indicators	
 | 
						|
      case ERR_INDICATOR_UNKNOWN_SYMBOL:     return("Unknown symbol");
 | 
						|
      case ERR_INDICATOR_CANNOT_CREATE:      return("Indicator cannot be created");
 | 
						|
      case ERR_INDICATOR_NO_MEMORY:          return("Not enough memory to add the indicator");
 | 
						|
      case ERR_INDICATOR_CANNOT_APPLY:       return("The indicator cannot be applied to another indicator");
 | 
						|
      case ERR_INDICATOR_CANNOT_ADD:         return("Error applying an indicator to chart");
 | 
						|
      case ERR_INDICATOR_DATA_NOT_FOUND:     return("Requested data not found");
 | 
						|
      case ERR_INDICATOR_WRONG_HANDLE:       return("Wrong indicator handle");
 | 
						|
      case ERR_INDICATOR_WRONG_PARAMETERS:   return("Wrong number of parameters when creating an indicator");
 | 
						|
      case ERR_INDICATOR_PARAMETERS_MISSING: return("No parameters when creating an indicator");
 | 
						|
      case ERR_INDICATOR_CUSTOM_NAME:        return("The first parameter in the array must be the name of the custom indicator");
 | 
						|
      case ERR_INDICATOR_PARAMETER_TYPE:     return("Invalid parameter type in the array when creating an indicator");
 | 
						|
      case ERR_INDICATOR_WRONG_INDEX:        return("Wrong index of the requested indicator buffer");
 | 
						|
      //--- Depth of Market	
 | 
						|
      case ERR_BOOKS_CANNOT_ADD:             return("Depth Of Market can not be added");
 | 
						|
      case ERR_BOOKS_CANNOT_DELETE:          return("Depth Of Market can not be removed");
 | 
						|
      case ERR_BOOKS_CANNOT_GET:             return("The data from Depth Of Market can not be obtained");
 | 
						|
      case ERR_BOOKS_CANNOT_SUBSCRIBE:       return("Error in subscribing to receive new data from Depth Of Market");
 | 
						|
      //--- File Operations
 | 
						|
      case ERR_TOO_MANY_FILES:               return("More than 64 files cannot be opened at the same time");
 | 
						|
      case ERR_WRONG_FILENAME:               return("Invalid file name");
 | 
						|
      case ERR_TOO_LONG_FILENAME:            return("Too long file name");
 | 
						|
      case ERR_CANNOT_OPEN_FILE:             return("File opening error");
 | 
						|
      case ERR_FILE_CACHEBUFFER_ERROR:       return("Not enough memory for cache to read");
 | 
						|
      case ERR_CANNOT_DELETE_FILE:           return("File deleting error");
 | 
						|
      case ERR_INVALID_FILEHANDLE:           return("A file with this handle was closed, or was not opening at all");
 | 
						|
      case ERR_WRONG_FILEHANDLE:             return("Wrong file handle");
 | 
						|
      case ERR_FILE_NOTTOWRITE:              return("The file must be opened for writing");
 | 
						|
      case ERR_FILE_NOTTOREAD:               return("The file must be opened for reading");
 | 
						|
      case ERR_FILE_NOTBIN:                  return("The file must be opened as a binary one");
 | 
						|
      case ERR_FILE_NOTTXT:                  return("The file must be opened as a text");
 | 
						|
      case ERR_FILE_NOTTXTORCSV:             return("The file must be opened as a text or CSV");
 | 
						|
      case ERR_FILE_NOTCSV:                  return("The file must be opened as CSV");
 | 
						|
      case ERR_FILE_READERROR:               return("File reading error");
 | 
						|
      case ERR_FILE_BINSTRINGSIZE:           return("String size must be specified, because the file is opened as binary");
 | 
						|
      case ERR_INCOMPATIBLE_FILE:            return("A text file must be for string arrays, for other arrays - binary");
 | 
						|
      case ERR_FILE_IS_DIRECTORY:            return("This is not a file, this is a directory");
 | 
						|
      case ERR_FILE_NOT_EXIST:               return("File does not exist");
 | 
						|
      case ERR_FILE_CANNOT_REWRITE:          return("File can not be rewritten");
 | 
						|
      case ERR_WRONG_DIRECTORYNAME:          return("Wrong directory name");
 | 
						|
      case ERR_DIRECTORY_NOT_EXIST:          return("Directory does not exist");
 | 
						|
      case ERR_FILE_ISNOT_DIRECTORY:         return("This is a file, not a directory");
 | 
						|
      case ERR_CANNOT_DELETE_DIRECTORY:      return("The directory cannot be removed");
 | 
						|
      case ERR_CANNOT_CLEAN_DIRECTORY:       return("Failed to clear the directory (probably one or more files are blocked and removal operation failed)");
 | 
						|
      case ERR_FILE_WRITEERROR:              return("Failed to write a resource to a file");
 | 
						|
      //--- String Casting	
 | 
						|
      case ERR_NO_STRING_DATE:               return("No date in the string");
 | 
						|
      case ERR_WRONG_STRING_DATE:            return("Wrong date in the string");
 | 
						|
      case ERR_WRONG_STRING_TIME:            return("Wrong time in the string");
 | 
						|
      case ERR_STRING_TIME_ERROR:            return("Error converting string to date");
 | 
						|
      case ERR_STRING_OUT_OF_MEMORY:         return("Not enough memory for the string");
 | 
						|
      case ERR_STRING_SMALL_LEN:             return("The string length is less than expected");
 | 
						|
      case ERR_STRING_TOO_BIGNUMBER:         return("Too large number, more than ULONG_MAX");
 | 
						|
      case ERR_WRONG_FORMATSTRING:           return("Invalid format string");
 | 
						|
      case ERR_TOO_MANY_FORMATTERS:          return("Amount of format specifiers more than the parameters");
 | 
						|
      case ERR_TOO_MANY_PARAMETERS:          return("Amount of parameters more than the format specifiers");
 | 
						|
      case ERR_WRONG_STRING_PARAMETER:       return("Damaged parameter of string type");
 | 
						|
      case ERR_STRINGPOS_OUTOFRANGE:         return("Position outside the string");
 | 
						|
      case ERR_STRING_ZEROADDED:             return("0 added to the string end, a useless operation");
 | 
						|
      case ERR_STRING_UNKNOWNTYPE:           return("Unknown data type when converting to a string");
 | 
						|
      case ERR_WRONG_STRING_OBJECT:          return("Damaged string object");
 | 
						|
      //--- Operations with Arrays	
 | 
						|
      case ERR_INCOMPATIBLE_ARRAYS:          return("Copying incompatible arrays. String array can be copied only to a string array, and a numeric array - in numeric array only");
 | 
						|
      case ERR_SMALL_ASSERIES_ARRAY:         return("The receiving array is declared as AS_SERIES, and it is of insufficient size");
 | 
						|
      case ERR_SMALL_ARRAY:                  return("Too small array, the starting position is outside the array");
 | 
						|
      case ERR_ZEROSIZE_ARRAY:               return("An array of zero length");
 | 
						|
      case ERR_NUMBER_ARRAYS_ONLY:           return("Must be a numeric array");
 | 
						|
      case ERR_ONEDIM_ARRAYS_ONLY:           return("Must be a one-dimensional array");
 | 
						|
      case ERR_SERIES_ARRAY:                 return("Timeseries cannot be used");
 | 
						|
      case ERR_DOUBLE_ARRAY_ONLY:            return("Must be an array of type double");
 | 
						|
      case ERR_FLOAT_ARRAY_ONLY:             return("Must be an array of type float");
 | 
						|
      case ERR_LONG_ARRAY_ONLY:              return("Must be an array of type long");
 | 
						|
      case ERR_INT_ARRAY_ONLY:               return("Must be an array of type int");
 | 
						|
      case ERR_SHORT_ARRAY_ONLY:             return("Must be an array of type short");
 | 
						|
      case ERR_CHAR_ARRAY_ONLY:              return("Must be an array of type char");
 | 
						|
      //--- Operations with OpenCL	
 | 
						|
      case ERR_OPENCL_NOT_SUPPORTED:         return("OpenCL functions are not supported on this computer");
 | 
						|
      case ERR_OPENCL_INTERNAL:              return("Internal error occurred when running OpenCL");
 | 
						|
      case ERR_OPENCL_INVALID_HANDLE:        return("Invalid OpenCL handle");
 | 
						|
      case ERR_OPENCL_CONTEXT_CREATE:        return("Error creating the OpenCL context");
 | 
						|
      case ERR_OPENCL_QUEUE_CREATE:          return("Failed to create a run queue in OpenCL");
 | 
						|
      case ERR_OPENCL_PROGRAM_CREATE:        return("Error occurred when compiling an OpenCL program");
 | 
						|
      case ERR_OPENCL_TOO_LONG_KERNEL_NAME:  return("Too long kernel name (OpenCL kernel)");
 | 
						|
      case ERR_OPENCL_KERNEL_CREATE:         return("Error creating an OpenCL kernel");
 | 
						|
      case ERR_OPENCL_SET_KERNEL_PARAMETER:  return("Error occurred when setting parameters for the OpenCL kernel");
 | 
						|
      case ERR_OPENCL_EXECUTE:               return("OpenCL program runtime error");
 | 
						|
      case ERR_OPENCL_WRONG_BUFFER_SIZE:     return("Invalid size of the OpenCL buffer");
 | 
						|
      case ERR_OPENCL_WRONG_BUFFER_OFFSET:   return("Invalid offset in the OpenCL buffer");
 | 
						|
      case ERR_OPENCL_BUFFER_CREATE:         return("Failed to create and OpenCL buffer");
 | 
						|
      
 | 
						|
      //--- Database errors (general)
 | 
						|
      case ERR_DATABASE_INTERNAL:            return("Internal database error");
 | 
						|
      case ERR_DATABASE_INVALID_HANDLE:      return("Invalid database handle");
 | 
						|
      case ERR_DATABASE_TOO_MANY_OBJECTS:    return("Exceeded the maximum acceptable number of Database objects");
 | 
						|
      case ERR_DATABASE_CONNECT:             return("Database connection error");
 | 
						|
      case ERR_DATABASE_EXECUTE:             return("Request execution error");
 | 
						|
      case ERR_DATABASE_PREPARE:             return("Request generation error");
 | 
						|
      case ERR_DATABASE_NO_MORE_DATA:        return("No more data to read");
 | 
						|
      case ERR_DATABASE_STEP:                return("Failed to move to the next request entry");
 | 
						|
      case ERR_DATABASE_NOT_READY:           return("Data for reading request results are not ready yet");
 | 
						|
      case ERR_DATABASE_BIND_PARAMETERS:     return("Failed to auto substitute parameters to an SQL request");
 | 
						|
      
 | 
						|
      //--- WebRequest errors
 | 
						|
      case ERR_WEBREQUEST_INVALID_ADDRESS:   return("Invalid URL");
 | 
						|
      case ERR_WEBREQUEST_CONNECT_FAILED:    return("Failed to connect to specified URL");
 | 
						|
      case ERR_WEBREQUEST_TIMEOUT:           return("Timeout exceeded");
 | 
						|
      case ERR_WEBREQUEST_REQUEST_FAILED:    return("HTTP request failed");
 | 
						|
      
 | 
						|
      //--- Network (sockets) errors
 | 
						|
      case ERR_NETSOCKET_INVALIDHANDLE:      return("Invalid socket handle passed to function");
 | 
						|
      case ERR_NETSOCKET_TOO_MANY_OPENED:    return("Too many open sockets (max 128)");
 | 
						|
      case ERR_NETSOCKET_CANNOT_CONNECT:     return("Failed to connect to remote host");
 | 
						|
      case ERR_NETSOCKET_IO_ERROR:           return("Failed to send/receive data from socket");
 | 
						|
      case ERR_NETSOCKET_HANDSHAKE_FAILED:   return("Failed to establish secure connection (TLS Handshake)");
 | 
						|
      case ERR_NETSOCKET_NO_CERTIFICATE:     return("No data on certificate protecting the connection");
 | 
						|
      
 | 
						|
      //--- Custom Symbols errors
 | 
						|
      case ERR_NOT_CUSTOM_SYMBOL:            return("A custom symbol must be specified");
 | 
						|
      case ERR_CUSTOM_SYMBOL_WRONG_NAME:     return("Invalid custom symbol name (only Latin letters, '.', '_', '&', '#' allowed)");
 | 
						|
      case ERR_CUSTOM_SYMBOL_NAME_LONG:      return("Custom symbol name too long (max 32 characters)");
 | 
						|
      case ERR_CUSTOM_SYMBOL_PATH_LONG:      return("Custom symbol path too long (max 128 characters)");
 | 
						|
      case ERR_CUSTOM_SYMBOL_EXIST:          return("Custom symbol with this name already exists");
 | 
						|
      case ERR_CUSTOM_SYMBOL_ERROR:          return("Error creating/deleting/changing custom symbol");
 | 
						|
      case ERR_CUSTOM_SYMBOL_SELECTED:       return("Cannot delete custom symbol selected in Market Watch");
 | 
						|
      case ERR_CUSTOM_SYMBOL_PROPERTY_WRONG: return("Invalid custom symbol property");
 | 
						|
      case ERR_CUSTOM_SYMBOL_PARAMETER_ERROR: return("Wrong parameter while setting custom symbol property");
 | 
						|
      case ERR_CUSTOM_SYMBOL_PARAMETER_LONG: return("String parameter too long while setting custom symbol property");
 | 
						|
      case ERR_CUSTOM_TICKS_WRONG_ORDER:     return("Ticks in array not arranged in time order");
 | 
						|
      
 | 
						|
      //--- Economic Calendar errors
 | 
						|
      case ERR_CALENDAR_MORE_DATA:           return("Array size insufficient for all calendar values");
 | 
						|
      case ERR_CALENDAR_TIMEOUT:             return("Request time limit exceeded");
 | 
						|
      case ERR_CALENDAR_NO_DATA:             return("Country not found");
 | 
						|
      
 | 
						|
      //--- SQLite specific errors
 | 
						|
      case ERR_DATABASE_ERROR:               return("Generic database error");
 | 
						|
      case ERR_DATABASE_LOGIC:              return("SQLite internal logic error");
 | 
						|
      case ERR_DATABASE_PERM:                return("Access denied");
 | 
						|
      case ERR_DATABASE_ABORT:              return("Callback routine requested abort");
 | 
						|
      case ERR_DATABASE_BUSY:               return("Database file locked");
 | 
						|
      case ERR_DATABASE_LOCKED:              return("Database table locked");
 | 
						|
      case ERR_DATABASE_NOMEM:              return("Insufficient memory for operation");
 | 
						|
      case ERR_DATABASE_READONLY:           return("Attempt to write to readonly database");
 | 
						|
      case ERR_DATABASE_INTERRUPT:           return("Operation terminated by sqlite3_interrupt()");
 | 
						|
      case ERR_DATABASE_IOERR:               return("Disk I/O error");
 | 
						|
      case ERR_DATABASE_CORRUPT:             return("Database disk image corrupted");
 | 
						|
      case ERR_DATABASE_NOTFOUND:            return("Unknown operation code in sqlite3_file_control()");
 | 
						|
      case ERR_DATABASE_FULL:                return("Database is full");
 | 
						|
      case ERR_DATABASE_CANTOPEN:            return("Unable to open database file");
 | 
						|
      case ERR_DATABASE_PROTOCOL:            return("Database lock protocol error");
 | 
						|
      case ERR_DATABASE_EMPTY:               return("Internal use only");
 | 
						|
      case ERR_DATABASE_SCHEMA:              return("Database schema changed");
 | 
						|
      case ERR_DATABASE_TOOBIG:              return("String or BLOB exceeds size limit");
 | 
						|
      case ERR_DATABASE_CONSTRAINT:          return("Constraint violation");
 | 
						|
      case ERR_DATABASE_MISMATCH:            return("Data type mismatch");
 | 
						|
      case ERR_DATABASE_MISUSE:              return("Library used incorrectly");
 | 
						|
      case ERR_DATABASE_NOLFS:               return("Uses OS features not supported on host");
 | 
						|
      case ERR_DATABASE_AUTH:                return("Authorization denied");
 | 
						|
      case ERR_DATABASE_FORMAT:              return("Not used");
 | 
						|
      case ERR_DATABASE_RANGE:               return("Bind parameter error, incorrect index");
 | 
						|
      case ERR_DATABASE_NOTADB:              return("File opened is not a database file");
 | 
						|
      
 | 
						|
      //--- Matrix and Vector errors
 | 
						|
      case ERR_MATRIX_INTERNAL:              return("Internal matrix/vector subsystem error");
 | 
						|
      case ERR_MATRIX_NOT_INITIALIZED:       return("Matrix/vector not initialized");
 | 
						|
      case ERR_MATRIX_INCONSISTENT:          return("Inconsistent size of matrices/vectors");
 | 
						|
      case ERR_MATRIX_INVALID_SIZE:          return("Invalid matrix/vector size");
 | 
						|
      case ERR_MATRIX_INVALID_TYPE:          return("Invalid matrix/vector type");
 | 
						|
      case ERR_MATRIX_FUNC_NOT_ALLOWED:      return("Function not available for this matrix/vector");
 | 
						|
      case ERR_MATRIX_CONTAINS_NAN:          return("Matrix/vector contains non-numbers (Nan/Inf)");
 | 
						|
      
 | 
						|
      //--- ONNX models errors
 | 
						|
      case ERR_ONNX_INTERNAL:                return("ONNX internal error");
 | 
						|
      case ERR_ONNX_NOT_INITIALIZED:         return("ONNX Runtime API initialization error");
 | 
						|
      case ERR_ONNX_NOT_SUPPORTED:           return("Property or value not supported by MQL5");
 | 
						|
      case ERR_ONNX_RUN_FAILED:              return("ONNX runtime API run error");
 | 
						|
      case ERR_ONNX_INVALID_PARAMETERS_COUNT: return("Invalid number of parameters passed to OnnxRun");
 | 
						|
      case ERR_ONNX_INVALID_PARAMETER:       return("Invalid parameter value");
 | 
						|
      case ERR_ONNX_INVALID_PARAMETER_TYPE:  return("Invalid parameter type");
 | 
						|
      case ERR_ONNX_INVALID_PARAMETER_SIZE:  return("Invalid parameter size");
 | 
						|
      case ERR_ONNX_WRONG_DIMENSION:         return("Tensor dimension not set or invalid");
 | 
						|
      
 | 
						|
      //--- User-Defined Errors	
 | 
						|
      default: if(err_code>=ERR_USER_ERROR_FIRST && err_code<ERR_USER_ERROR_LAST)
 | 
						|
                                             return("User error "+string(err_code-ERR_USER_ERROR_FIRST));
 | 
						|
     }
 | 
						|
//---
 | 
						|
   return("Unknown error");
 | 
						|
  }
 | 
						|
//+------------------------------------------------------------------+
 |