← К каталогу
Исходный код · ID 2341

common.mqh

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Common.mqh — заголовочная библиотека на языке MQL (MetaQuotes Language), предназначенная для работы с кодами ошибок в торговых терминалах MetaTrader 4 и MetaTrader 5. Она предоставляет набор пользовательских кодов ошибок, а также обработку стандартных HTTP-кодов ответов и кодов торгового сервера.

Библиотека содержит две структуры (CustomInfo и ErrorInfo), перечисления языков, уровней ошибок и режимов запуска. Основные функции позволяют определить текущий режим работы программы (оптимизация, визуальный режим, тестер или живой торговый режим), получить текстовое описание ошибки на английском или русском языке, определить уровень ошибки и вывести её в лог.

Функция GetErrorInfo поддерживает двуязычные описания ошибок, включая ошибки WebRequest, файловой системы, торгового терминала и HTTP-ответы. PrintError выводит сообщение в журнал с учётом выбранного языка.

Состав библиотеки

Классов: 2 · методов: 0 · конструкторов: 0 · деструкторов: 0 · отдельных функций: 4

Классы
Класс class CustomInfo

Структура для хранения пользовательской информации об ошибке (текст, цвет, уровень).

Класс class ErrorInfo

Структура для хранения кода ошибки, описания, уровня и языка.

Функции
Функция ENUM_RUN_MODE GetRunMode(void)

Определяет текущий режим запуска программы (оптимизация, визуальный, тестер, живой торговый режим).

Функция bool GetErrorInfo(ErrorInfo &info)

Заполняет структуру ErrorInfo описанием и уровнем по коду ошибки на выбранном языке.

Функция ENUM_ERROR_LEVEL GetErrorLevel(const int _error_code)

Возвращает уровень severity (информация, предупреждение, ошибка, критическая) для заданного кода ошибки.

Функция ENUM_ERROR_LEVEL PrintError(int _error_code,const ENUM_LANGUAGES _lang)

Выводит в лог описание ошибки на выбранном языке и возвращает её уровень.

Получить полный код

Поиск по коду файла

??//+------------------------------------------------------------------+

//|                                                       Common.mqh |

//|                        Copyright 2014, MetaQuotes Software Corp. |

//|                                              http://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2014, MetaQuotes Software Corp."

#property link      "http://www.mql5.com"

#property strict



//+------------------------------------------------------------------+

//|   Define                                                         |

//+------------------------------------------------------------------+

#define CUSTOM_ERROR_FIRST          ERR_USER_ERROR_FIRST

#define ERR_JSON_PARSING            ERR_USER_ERROR_FIRST+1

#define ERR_JSON_NOT_OK             ERR_USER_ERROR_FIRST+2

#define ERR_TOKEN_ISEMPTY           ERR_USER_ERROR_FIRST+3

#define ERR_RUN_LIMITATION          ERR_USER_ERROR_FIRST+4

//---

#define ERR_NOT_ACTIVE              ERR_USER_ERROR_FIRST+100

#define ERR_NOT_CONNECTED           ERR_USER_ERROR_FIRST+101

#define ERR_ORDER_SELECT            ERR_USER_ERROR_FIRST+102

#define ERR_INVALID_ORDER_TYPE      ERR_USER_ERROR_FIRST+103

#define ERR_INVALID_SYMBOL_NAME     ERR_USER_ERROR_FIRST+104

#define ERR_INVALID_EXPIRATION_TIME ERR_USER_ERROR_FIRST+105

#define ERR_HTTP_ERROR_FIRST        ERR_USER_ERROR_FIRST+1000 //+511

//+------------------------------------------------------------------+

//|   ENUM_LANGUAGES                                                 |

//+------------------------------------------------------------------+

enum ENUM_LANGUAGES

{

   LANGUAGE_EN,// English

   LANGUAGE_RU // Russian

};

//+------------------------------------------------------------------+

//|   ENUM_UPDATE_MODE                                               |

//+------------------------------------------------------------------+

enum ENUM_UPDATE_MODE

{

   UPDATE_FAST,   //Fast

   UPDATE_NORMAL, //Normal

   UPDATE_SLOW,   //Slow

};

//+------------------------------------------------------------------+

//|   ENUM_RUN_MODE                                                  |

//+------------------------------------------------------------------+

enum ENUM_RUN_MODE

{

   RUN_OPTIMIZATION,

   RUN_VISUAL,

   RUN_TESTER,

   RUN_LIVE

};

//+------------------------------------------------------------------+

//|   GetRunMode                                                     |

//+------------------------------------------------------------------+

ENUM_RUN_MODE GetRunMode(void)

{

   if(MQLInfoInteger(MQL_OPTIMIZATION))



      return(RUN_OPTIMIZATION);

   if(MQLInfoInteger(MQL_VISUAL_MODE))

      return(RUN_VISUAL);

   if(MQLInfoInteger(MQL_TESTER))

      return(RUN_TESTER);

   return(RUN_LIVE);

}

//+------------------------------------------------------------------+

//|   ENUM_ERROR_LEVEL                                               |

//+------------------------------------------------------------------+

enum ENUM_ERROR_LEVEL

{

   LEVEL_INFO,

   LEVEL_WARNING,

   LEVEL_ERROR,

   LEVEL_CRITICAL

};

//+------------------------------------------------------------------+

//|   CustomInfo                                                     |

//+------------------------------------------------------------------+

struct CustomInfo

{

   string            text1;

   string            text2;

   color             colour;

   ENUM_ERROR_LEVEL  level;

};

//+------------------------------------------------------------------+

//|   ErrorInfo                                                      |

//+------------------------------------------------------------------+

struct ErrorInfo

{

   int               code;

   string            desc;

   ENUM_ERROR_LEVEL  level;

   ENUM_LANGUAGES    lang;

};

//+------------------------------------------------------------------+

//|   GetErrorInfo                                                   |

//+------------------------------------------------------------------+

bool GetErrorInfo(ErrorInfo &info)

{



   info.level=LEVEL_INFO;



   if(info.lang==LANGUAGE_EN)

   {



      switch(info.code)

      {

      case ERR_NOT_CONNECTED:

         info.desc="No connection with server";

         info.level=LEVEL_ERROR;

         break;

      case ERR_JSON_PARSING:

         info.desc="JSON parsing error";

         info.level=LEVEL_ERROR;

         break;

      case ERR_JSON_NOT_OK:

         info.desc="JSON parsing not OK";

         info.level=LEVEL_ERROR;

         break;

      case ERR_TOKEN_ISEMPTY:

         info.desc="Token is empty";

         info.level=LEVEL_ERROR;

         break;

      case ERR_RUN_LIMITATION:

         info.desc="The bot does not run in tester mode";

         info.level=LEVEL_ERROR;

         break;



      case ERR_WEBREQUEST_INVALID_ADDRESS:

         info.desc="Invalid URL";

         break;

      case ERR_WEBREQUEST_CONNECT_FAILED:

         info.desc="Failed to connect to specified URL";

         break;

      case ERR_WEBREQUEST_TIMEOUT:

         info.desc="Timeout exceeded";

         break;

      case ERR_WEBREQUEST_REQUEST_FAILED:

         info.desc="HTTP request failed";

         break;



#ifdef __MQL4__

      case ERR_FUNCTION_NOT_CONFIRMED:

         info.desc="URL does not allowed for WebRequest";

         break;

#endif



#ifdef __MQL5__

      case ERR_FUNCTION_NOT_ALLOWED:

         info.desc="URL does not allowed for WebRequest";

         break;

      case ERR_FILE_NOT_EXIST:

         info.desc="File is not exists";

         break;

      case ERR_CHART_NOT_FOUND:

         info.desc="Chart not found";

         break;

      case ERR_SUCCESS:

         info.desc="The operation completed successfully";

         break;

#endif

      //---

      case ERR_HTTP_ERROR_FIRST+100:

         info.desc="Continue";

         break;

      case ERR_HTTP_ERROR_FIRST+101:

         info.desc="Switching Protocols";

         break;

      case ERR_HTTP_ERROR_FIRST+103:

         info.desc="Checkpoint";

         break;

      case ERR_HTTP_ERROR_FIRST+200:

         info.desc="OK";

         break;

      case ERR_HTTP_ERROR_FIRST+201:

         info.desc="Created";

         break;

      case ERR_HTTP_ERROR_FIRST+202:

         info.desc="Accepted";

         break;

      case ERR_HTTP_ERROR_FIRST+203:

         info.desc="Non-Authoritative Information";

         break;

      case ERR_HTTP_ERROR_FIRST+204:

         info.desc="No Content";

         break;

      case ERR_HTTP_ERROR_FIRST+205:

         info.desc="Reset Content";

         break;

      case ERR_HTTP_ERROR_FIRST+206:

         info.desc="Partial Content";

         break;

      case ERR_HTTP_ERROR_FIRST+300:

         info.desc="Multiple Choices";

         break;

      case ERR_HTTP_ERROR_FIRST+301:

         info.desc="Moved Permanently";

         break;

      case ERR_HTTP_ERROR_FIRST+302:

         info.desc="Found";

         break;

      case ERR_HTTP_ERROR_FIRST+303:

         info.desc="See Other";

         break;

      case ERR_HTTP_ERROR_FIRST+304:

         info.desc="Not Modified";

         break;

      case ERR_HTTP_ERROR_FIRST+306:

         info.desc="Switch Proxy";

         break;

      case ERR_HTTP_ERROR_FIRST+307:

         info.desc="Temporary Redirect";

         break;

      case ERR_HTTP_ERROR_FIRST+308:

         info.desc="Resume Incomplete";

         break;

      case ERR_HTTP_ERROR_FIRST+400:

         info.desc="Bad Request";

         break;

      case ERR_HTTP_ERROR_FIRST+401:

         info.desc="Unauthorized";

         break;

      case ERR_HTTP_ERROR_FIRST+402:

         info.desc="Payment Required";

         break;

      case ERR_HTTP_ERROR_FIRST+403:

         info.desc="Forbidden";

         break;

      case ERR_HTTP_ERROR_FIRST+404:

         info.desc="Not Found";

         break;

      case ERR_HTTP_ERROR_FIRST+405:

         info.desc="Method Not Allowed";

         break;

      case ERR_HTTP_ERROR_FIRST+406:

         info.desc="Not Acceptable";

         break;

      case ERR_HTTP_ERROR_FIRST+407:

         info.desc="Proxy Authentication Required";

         break;

      case ERR_HTTP_ERROR_FIRST+408:

         info.desc="Request Timeout";

         break;

      case ERR_HTTP_ERROR_FIRST+409:

         info.desc="Conflict";

         break;

      case ERR_HTTP_ERROR_FIRST+410:

         info.desc="Gone";

         break;

      case ERR_HTTP_ERROR_FIRST+411:

         info.desc="Length Required";

         break;

      case ERR_HTTP_ERROR_FIRST+412:

         info.desc="Precondition Failed";

         break;

      case ERR_HTTP_ERROR_FIRST+413:

         info.desc="Request Entity Too Large";

         break;

      case ERR_HTTP_ERROR_FIRST+414:

         info.desc="Request-URI Too Long";

         break;

      case ERR_HTTP_ERROR_FIRST+415:

         info.desc="Unsupported Media Type";

         break;

      case ERR_HTTP_ERROR_FIRST+416:

         info.desc="Requested Range Not Satisfiable";

         break;

      case ERR_HTTP_ERROR_FIRST+417:

         info.desc="Expectation Failed";

         break;

      case ERR_HTTP_ERROR_FIRST+500:

         info.desc="Internal Server Error";

         break;

      case ERR_HTTP_ERROR_FIRST+501:

         info.desc="Not Implemented";

         break;

      case ERR_HTTP_ERROR_FIRST+502:

         info.desc="Bad Gateway";

         break;

      case ERR_HTTP_ERROR_FIRST+503:

         info.desc="Service Unavailable";

         break;

      case ERR_HTTP_ERROR_FIRST+504:

         info.desc="Gateway Timeout";

         break;

      case ERR_HTTP_ERROR_FIRST+505:

         info.desc="HTTP Version Not Supported";

         break;

      case ERR_HTTP_ERROR_FIRST+511:

         info.desc="Network Authentication Required";

         break;



         //--- The error codes returned by trade server:

#ifdef __MQL4__

      case ERR_NO_ERROR:

         info.desc="No error";

         break;

      case ERR_NO_RESULT:

         info.desc="No error returned, but the result is unknown";

         info.level=LEVEL_WARNING;

         break;

      case ERR_COMMON_ERROR:

         info.desc="Common error.";

         info.level=LEVEL_WARNING;

         break;

      case ERR_INVALID_TRADE_PARAMETERS:

         info.desc="Invalid trade parameters";

         info.level=LEVEL_WARNING;

         break;

      case ERR_SERVER_BUSY:

         info.desc="Trade server is busy";

         info.level=LEVEL_WARNING;

         break;

      case ERR_OLD_VERSION:

         info.desc="Old version of the client terminal";

         info.level=LEVEL_WARNING;

         break;

      case ERR_NO_CONNECTION:

         info.desc="No connection with trade server";

         info.level=LEVEL_WARNING;

         break;

      case ERR_NOT_ENOUGH_RIGHTS:

         info.desc="Not enough rights";

         info.level=LEVEL_WARNING;

         break;

      case ERR_TOO_FREQUENT_REQUESTS:

         info.desc="Too frequent requests";

         info.level=LEVEL_WARNING;

         break;

      case ERR_MALFUNCTIONAL_TRADE:

         info.desc="Malfunctional trade operation";

         info.level=LEVEL_WARNING;

         break;

      case ERR_ACCOUNT_DISABLED:

         info.desc="Account disabled";

         info.level= LEVEL_ERROR;

         break;

      case ERR_INVALID_ACCOUNT:

         info.desc="Invalid account";

         info.level= LEVEL_WARNING;

         break;

      case ERR_TRADE_TIMEOUT:

         info.desc="Trade timeout";

         info.level=LEVEL_WARNING;

         break;

      case ERR_INVALID_PRICE:

         info.desc="Invalid price";

         info.level= LEVEL_WARNING;

         break;

      case ERR_INVALID_STOPS:

         info.desc="Invalid stops";

         info.level= LEVEL_WARNING;

         break;

      case ERR_INVALID_TRADE_VOLUME:

         info.desc="Invalid trade volume";

         info.level=LEVEL_WARNING;

         break;

      case ERR_MARKET_CLOSED:

         info.desc="Market is closed";

         info.level=LEVEL_ERROR;

         break;

      case ERR_TRADE_DISABLED:

         info.desc="Trade is disabled";

         info.level=LEVEL_ERROR;

         break;

      case ERR_NOT_ENOUGH_MONEY:

         info.desc="Not enough money";

         info.level=LEVEL_ERROR;

         break;

      case ERR_PRICE_CHANGED:

         info.desc="Price changed";

         info.level=LEVEL_WARNING;

         break;

      case ERR_OFF_QUOTES:

         info.desc="Off quotes";

         info.level=LEVEL_WARNING;

         break;

      case ERR_BROKER_BUSY:

         info.desc="Broker is busy";

         info.level=LEVEL_WARNING;

         break;

      case ERR_REQUOTE:

         info.desc="Requote";

         info.level=LEVEL_WARNING;

         break;

      case ERR_ORDER_LOCKED:

         info.desc="Order is locked";

         info.level=LEVEL_WARNING;

         break;

      case ERR_LONG_POSITIONS_ONLY_ALLOWED:

         info.desc="Long positions only allowed";

         info.level=LEVEL_WARNING;

         break;

      case ERR_TOO_MANY_REQUESTS:

         info.desc="Too many requests";

         info.level=LEVEL_WARNING;

         break;

      case ERR_TRADE_MODIFY_DENIED:

         info.desc="Modification denied because order too close to market";

         info.level=LEVEL_WARNING;

         break;

      case ERR_TRADE_CONTEXT_BUSY:

         info.desc="Trade context is busy";

         info.level=LEVEL_WARNING;

         break;

      case ERR_TRADE_EXPIRATION_DENIED:

         info.desc="Expirations are denied by broker";

         info.level=LEVEL_WARNING;

         break;

      case ERR_TRADE_TOO_MANY_ORDERS:

         info.desc="The amount of open and pending orders has reached the limit set by the broker";

         info.level=LEVEL_ERROR;

         break;

      case ERR_TRADE_HEDGE_PROHIBITED:

         info.desc="An attempt to open a position opposite to the existing one when hedging is disabled";

         info.level=LEVEL_ERROR;

         break;

      case ERR_TRADE_PROHIBITED_BY_FIFO:

         info.desc="An attempt to close a position contravening the FIFO rule";

         info.level=LEVEL_WARNING;

         break;

      //--- MQL4 run time error codes

      case ERR_TRADE_NOT_ALLOWED:

         info.desc="Trade

Показано первые 50% кода (символов: 48445)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
4 844,50₽ ≈ $59.22