« Предыдущий пост | На главную страницу | Следующий пост »

Коды ошибок в советниках и функция GetLastError()

Как я уже неоднократно упоминал в предыдущих выпусках, если какая-то функция вернула ошибку, то код этой ошибки можно получить с помощью функции GetLastError():

   int GetLastError()

После вызова этой функции код последней ошибки обнуляется, поэтому если в промежутке между двумя вызовами функции GetLastError() не произошло новой ошибки, то второй раз функция вернет 0.

Функция GetLastError() возвращает числовой код ошибки. Если же Вы хотите получить словесное описание ошибки, то используйте функцию ErrorDescription(), описанную в файле stdlib.mqh:

   string ErrorDescription(int error_code)
     {
      string error_string;
   //----
      switch(error_code)
        {
         //---- codes returned from trade server
         case 0:
           case 1:   error_string="no error";            break;
           case 2:   error_string="common error";   break;
            ...
        }
   //----
      return(error_string);
     }

Коды ошибок, возвращаемые сервером:

КонстантаЗначениеОписание
 ERR_NO_ERROR0 Нет ошибки
 ERR_NO_RESULT1 Нет ошибки, но результат неизвестен
 ERR_COMMON_ERROR2 Общая ошибка
 ERR_INVALID_TRADE_PARAMETERS3 Неправильные параметры
 ERR_SERVER_BUSY4 Торговый сервер занят
 ERR_OLD_VERSION5 Старая версия клиентского терминала
 ERR_NO_CONNECTION6 Нет связи с торговым сервером
 ERR_NOT_ENOUGH_RIGHTS7 Недостаточно прав
 ERR_TOO_FREQUENT_REQUESTS8 Слишком частые запросы
 ERR_MALFUNCTIONAL_TRADE9 Недопустимая операция нарушающая функционирование сервера
 ERR_ACCOUNT_DISABLED64 Счет заблокирован
 ERR_INVALID_ACCOUNT65 Неправильный номер счета
 ERR_TRADE_TIMEOUT128 Истек срок ожидания совершения сделки
 ERR_INVALID_PRICE129 Неправильная цена
 ERR_INVALID_STOPS130 Неправильные стопы
 ERR_INVALID_TRADE_VOLUME131 Неправильный объем
 ERR_MARKET_CLOSED132 Рынок закрыт
 ERR_TRADE_DISABLED133 Торговля запрещена
 ERR_NOT_ENOUGH_MONEY134 Недостаточно денег для совершения операции
 ERR_PRICE_CHANGED135 Цена изменилась
 ERR_OFF_QUOTES136 Нет цен
 ERR_BROKER_BUSY137 Брокер занят
 ERR_REQUOTE138 Новые цены
 ERR_ORDER_LOCKED139 Ордер заблокирован и уже обрабатывается
 ERR_LONG_POSITIONS_ONLY_ALLOWED140 Разрешена только покупка
 ERR_TOO_MANY_REQUESTS141 Слишком много запросов
 ERR_TRADE_MODIFY_DENIED145 Модификация запрещена, так как ордер слишком близок к рынку
 ERR_TRADE_CONTEXT_BUSY146 Подсистема торговли занята
 ERR_TRADE_EXPIRATION_DENIED147 Использование даты истечения ордера запрещено брокером
 ERR_TRADE_TOO_MANY_ORDERS148 Количество открытых и отложенных ордеров достигло предела, установленного брокером


Коды ошибок выполнения, генерируемые клиентским терминалом при выполнении советника:

КонстантаЗначениеОписание
 ERR_NO_MQLERROR4000 Нет ошибки
 ERR_WRONG_FUNCTION_POINTER4001 Неправильный указатель функции
 ERR_ARRAY_INDEX_OUT_OF_RANGE4002 Индекс массива - вне диапазона
 ERR_NO_MEMORY_FOR_FUNCTION_CALL_STACK4003 Нет памяти для стека функций
 ERR_RECURSIVE_STACK_OVERFLOW4004 Переполнение стека после рекурсивного вызова
 ERR_NOT_ENOUGH_STACK_FOR_PARAMETER4005 На стеке нет памяти для передачи параметров
 ERR_NO_MEMORY_FOR_PARAMETER_STRING4006 Нет памяти для строкового параметра
 ERR_NO_MEMORY_FOR_TEMP_STRING4007 Нет памяти для временной строки
 ERR_NOT_INITIALIZED_STRING4008 Неинициализированная строка
 ERR_NOT_INITIALIZED_ARRAYSTRING 4009 Неинициализированная строка в массиве
 ERR_NO_MEMORY_FOR_ARRAYSTRING4010 Нет памяти для строкового массива
 ERR_TOO_LONG_STRING4011 Слишком длинная строка
 ERR_REMAINDER_FROM_ZERO_DIVIDE4012 Остаток от деления на ноль
 ERR_ZERO_DIVIDE4013 Деление на ноль
 ERR_UNKNOWN_COMMAND4014 Неизвестная команда
 ERR_WRONG_JUMP4015 Неправильный переход
 ERR_NOT_INITIALIZED_ARRAY4016 Неинициализированный массив
 ERR_DLL_CALLS_NOT_ALLOWED4017 Вызовы DLL не разрешены
 ERR_CANNOT_LOAD_LIBRARY4018 Невозможно загрузить библиотеку
 ERR_CANNOT_CALL_FUNCTION4019 Невозможно вызвать функцию
 ERR_EXTERNAL_EXPERT_CALLS_NOT_ALLOWED4020 Вызовы внешних библиотечных функций не разрешены
 ERR_NOT_ENOUGH_MEMORY_FOR_RETURNED_STRING4021 Недостаточно памяти для строки, возвращаемой из функции
 ERR_SYSTEM_BUSY4022 Система занята
 ERR_INVALID_FUNCTION_PARAMETERS_COUNT4050 Неправильное количество параметров функции
 ERR_INVALID_FUNCTION_PARAMETER_VALUE4051 Недопустимое значение параметра функции
 ERR_STRING_FUNCTION_INTERNAL_ERROR4052 Внутренняя ошибка строковой функции
 ERR_SOME_ARRAY_ERROR4053 Ошибка массива
 ERR_INCORRECT_SERIES_ARRAY_USING4054 Неправильное использование массива-таймсерии
 ERR_CUSTOM_INDICATOR_ERROR4055 Ошибка пользовательского индикатора
 ERR_INCOMPATIBLE_ARRAYS4056 Массивы несовместимы
 ERR_GLOBAL_VARIABLES_PROCESSING_ERROR4057 Ошибка обработки глобальныех переменных
 ERR_GLOBAL_VARIABLE_NOT_FOUND4058 Глобальная переменная не обнаружена
 ERR_FUNCTION_NOT_ALLOWED_IN_TESTING_MODE4059 Функция не разрешена в тестовом режиме
 ERR_FUNCTION_NOT_CONFIRMED4060 Функция не подтверждена
 ERR_SEND_MAIL_ERROR4061 Ошибка отправки почты
 ERR_STRING_PARAMETER_EXPECTED4062 Ожидается параметр типа string
 ERR_INTEGER_PARAMETER_EXPECTED4063 Ожидается параметр типа integer
 ERR_DOUBLE_PARAMETER_EXPECTED4064 Ожидается параметр типа double
 ERR_ARRAY_AS_PARAMETER_EXPECTED4065 В качестве параметра ожидается массив
 ERR_HISTORY_WILL_UPDATED4066 Запрошенные исторические данные в состоянии обновления
 ERR_TRADE_ERROR4067 Ошибка при выполнении торговой операции
 ERR_END_OF_FILE4099 Конец файла
 ERR_SOME_FILE_ERROR4100 Ошибка при работе с файлом
 ERR_WRONG_FILE_NAME4101 Неправильное имя файла
 ERR_TOO_MANY_OPENED_FILES4102 Слишком много открытых файлов
 ERR_CANNOT_OPEN_FILE4103 Невозможно открыть файл
 ERR_INCOMPATIBLE_ACCESS_TO_FILE4104 Несовместимый режим доступа к файлу
 ERR_NO_ORDER_SELECTED4105 Ни один ордер не выбран
 ERR_UNKNOWN_SYMBOL4106 Неизвестный символ
 ERR_INVALID_PRICE_PARAM4107 Неправильный параметр цены для торговой функции
 ERR_INVALID_TICKET4108 Неверный номер тикета
 ERR_TRADE_NOT_ALLOWED4109 Торговля не разрешена
 ERR_LONGS_NOT_ALLOWED4110 Длинные позиции не разрешены
 ERR_SHORTS_NOT_ALLOWED4111 Короткие позиции не разрешены
 ERR_OBJECT_ALREADY_EXISTS4200 Объект уже существует
 ERR_UNKNOWN_OBJECT_PROPERTY4201 Запрошено неизвестное свойство объекта
 ERR_OBJECT_DOES_NOT_EXIST4202 Объект не существует
 ERR_UNKNOWN_OBJECT_TYPE4203 Неизвестный тип объекта
 ERR_NO_OBJECT_NAME4204 Нет имени объекта
 ERR_OBJECT_COORDINATES_ERROR4205 Ошибка координат объекта
 ERR_NO_SPECIFIED_SUBWINDOW4206 Не найдено указанное подокно
 ERR_SOME_OBJECT_ERROR4207 Ошибка при работе с объектом

В следующем выпуске я расскажу о том, как проверить, разрешено ли торговать эксперту. Я расскажу о функциях IsExpertEnabled(), IsTradeContextBusy() и IsTradeAllowed().



Все статьи по теме "Пишем советников для MetaTrader 4".

« Предыдущий пост | На главную страницу | Следующий пост »

Подписаться на мою рассылку



Размещение статьи "Коды ошибок в советниках и функция GetLastError()" на Вашем сайте

Размещение статьи "Коды ошибок в советниках и функция GetLastError()" на Вашем сайте возможно при условии выполнениия следующих условий:

  • Запрещается изменение оригинального текста без согласия автора - Андрея Ведихина.
  • Должен быть указан первоисточник. В случае публикации в интернете Вы должны разместить следующий код гиперссылки без изменений:
  • Запрещается коммерческое использование материалов, взятых с блога "Интернет-трейдинг на форекс / forex". Доступ к ним должен быть свободным, без взимания какой-либо платы, без обязательной регистрации и/или заполнения опросного листа (анкеты) и т.д.

В случае выполнения данных условий не требуется согласия автора блога "Интернет-трейдинг на форекс / forex" на размещение статьи "Коды ошибок в советниках и функция GetLastError()" на Вашем сайте.

Журнал FOREX MAGAZINE:



Архив номеров FOREX MAGAZINE
Котировки Forex:

Счетчики:

Авторские права © 2005-2006 Андрей Ведихин

Условия использования материалов блога "Интернет-трейдинг на форекс / forex"

Контакты с автором:


Движок сайта:
Movable Type 5.04