Коды ошибок mql4

GetLastError() — функция, возвращающая коды ошибок. Кодовые константы ошибок определены
в файле stderror.mqh. Для вывода текстовых сообщений следует использовать функцию
ErrorDescription(), определенную в файле stdlib.mqh.

Константа Значение Описание
ERR_NO_ERROR 0 Нет ошибки
ERR_NO_RESULT 1 Нет ошибки, но результат неизвестен
ERR_COMMON_ERROR 2 Общая ошибка
ERR_INVALID_TRADE_PARAMETERS 3 Неправильные параметры
ERR_SERVER_BUSY 4 Торговый сервер занят
ERR_OLD_VERSION 5 Старая версия клиентского терминала
ERR_NO_CONNECTION 6 Нет связи с торговым сервером
ERR_NOT_ENOUGH_RIGHTS 7 Недостаточно прав
ERR_TOO_FREQUENT_REQUESTS 8 Слишком частые запросы
ERR_MALFUNCTIONAL_TRADE 9 Недопустимая операция нарушающая функционирование сервера
ERR_ACCOUNT_DISABLED 64 Счет заблокирован
ERR_INVALID_ACCOUNT 65 Неправильный номер счета
ERR_TRADE_TIMEOUT 128 Истек срок ожидания совершения сделки
ERR_INVALID_PRICE 129 Неправильная цена
ERR_INVALID_STOPS 130 Неправильные стопы
ERR_INVALID_TRADE_VOLUME 131 Неправильный объем
ERR_MARKET_CLOSED 132 Рынок закрыт
ERR_TRADE_DISABLED 133 Торговля запрещена
ERR_NOT_ENOUGH_MONEY 134 Недостаточно денег для совершения операции
ERR_PRICE_CHANGED 135 Цена изменилась
ERR_OFF_QUOTES 136 Нет цен
ERR_BROKER_BUSY 137 Брокер занят
ERR_REQUOTE 138 Новые цены
ERR_ORDER_LOCKED 139 Ордер заблокирован и уже обрабатывается
ERR_LONG_POSITIONS_ONLY_ALLOWED 140 Разрешена только покупка
ERR_TOO_MANY_REQUESTS 141 Слишком много запросов
ERR_TRADE_MODIFY_DENIED 145 Модификация запрещена, так как ордер слишком близок к рынку
ERR_TRADE_CONTEXT_BUSY 146 Подсистема торговли занята
ERR_TRADE_EXPIRATION_DENIED 147 Использование даты истечения ордера запрещено брокером
ERR_TRADE_TOO_MANY_ORDERS 148 Количество открытых и отложенных ордеров достигло предела, установленного брокером.
Константа Значение Описание
ERR_NO_MQLERROR 4000 Нет ошибки
ERR_WRONG_FUNCTION_POINTER 4001 Неправильный указатель функции
ERR_ARRAY_INDEX_OUT_OF_RANGE 4002 Индекс массива — вне диапазона
ERR_NO_MEMORY_FOR_FUNCTION_CALL_STACK 4003 Нет памяти для стека функций
ERR_RECURSIVE_STACK_OVERFLOW 4004 Переполнение стека после рекурсивного вызова
ERR_NOT_ENOUGH_STACK_FOR_PARAMETER 4005 На стеке нет памяти для передачи параметров
ERR_NO_MEMORY_FOR_PARAMETER_STRING 4006 Нет памяти для строкового параметра
ERR_NO_MEMORY_FOR_TEMP_STRING 4007 Нет памяти для временной строки
ERR_NOT_INITIALIZED_STRING 4008 Неинициализированная строка
ERR_NOT_INITIALIZED_ARRAYSTRING 4009 Неинициализированная строка в массиве
ERR_NO_MEMORY_FOR_ARRAYSTRING 4010 Нет памяти для строкового массива
ERR_TOO_LONG_STRING 4011 Слишком длинная строка
ERR_REMAINDER_FROM_ZERO_DIVIDE 4012 Остаток от деления на ноль
ERR_ZERO_DIVIDE 4013 Деление на ноль
ERR_UNKNOWN_COMMAND 4014 Неизвестная команда
ERR_WRONG_JUMP 4015 Неправильный переход
ERR_NOT_INITIALIZED_ARRAY 4016 Неинициализированный массив
ERR_DLL_CALLS_NOT_ALLOWED 4017 Вызовы DLL не разрешены
ERR_CANNOT_LOAD_LIBRARY 4018 Невозможно загрузить библиотеку
ERR_CANNOT_CALL_FUNCTION 4019 Невозможно вызвать функцию
ERR_EXTERNAL_EXPERT_CALLS_NOT_ALLOWED 4020 Вызовы внешних библиотечных функций не разрешены
ERR_NOT_ENOUGH_MEMORY_FOR_RETURNED_STRING 4021 Недостаточно памяти для строки, возвращаемой из функции
ERR_SYSTEM_BUSY 4022 Система занята
ERR_INVALID_FUNCTION_PARAMETERS_COUNT 4050 Неправильное количество параметров функции
ERR_INVALID_FUNCTION_PARAMETER_VALUE 4051 Недопустимое значение параметра функции
ERR_STRING_FUNCTION_INTERNAL_ERROR 4052 Внутренняя ошибка строковой функции
ERR_SOME_ARRAY_ERROR 4053 Ошибка массива
ERR_INCORRECT_SERIES_ARRAY_USING 4054 Неправильное использование массива-таймсерии
ERR_CUSTOM_INDICATOR_ERROR 4055 Ошибка пользовательского индикатора
ERR_INCOMPATIBLE_ARRAYS 4056 Массивы несовместимы
ERR_GLOBAL_VARIABLES_PROCESSING_ERROR 4057 Ошибка обработки глобальныех переменных
ERR_GLOBAL_VARIABLE_NOT_FOUND 4058 Глобальная переменная не обнаружена
ERR_FUNCTION_NOT_ALLOWED_IN_TESTING_MODE 4059 Функция не разрешена в тестовом режиме
ERR_FUNCTION_NOT_CONFIRMED 4060 Функция не подтверждена
ERR_SEND_MAIL_ERROR 4061 Ошибка отправки почты
ERR_STRING_PARAMETER_EXPECTED 4062 Ожидается параметр типа string
ERR_INTEGER_PARAMETER_EXPECTED 4063 Ожидается параметр типа integer
ERR_DOUBLE_PARAMETER_EXPECTED 4064 Ожидается параметр типа double
ERR_ARRAY_AS_PARAMETER_EXPECTED 4065 В качестве параметра ожидается массив
ERR_HISTORY_WILL_UPDATED 4066 Запрошенные исторические данные в состоянии обновления
ERR_TRADE_ERROR 4067 Ошибка при выполнении торговой операции
ERR_END_OF_FILE 4099 Конец файла
ERR_SOME_FILE_ERROR 4100 Ошибка при работе с файлом
ERR_WRONG_FILE_NAME 4101 Неправильное имя файла
ERR_TOO_MANY_OPENED_FILES 4102 Слишком много открытых файлов
ERR_CANNOT_OPEN_FILE 4103 Невозможно открыть файл
ERR_INCOMPATIBLE_ACCESS_TO_FILE 4104 Несовместимый режим доступа к файлу
ERR_NO_ORDER_SELECTED 4105 Ни один ордер не выбран
ERR_UNKNOWN_SYMBOL 4106 Неизвестный символ
ERR_INVALID_PRICE_PARAM 4107 Неправильный параметр цены для торговой функции
ERR_INVALID_TICKET 4108 Неверный номер тикета
ERR_TRADE_NOT_ALLOWED 4109 Торговля не разрешена
ERR_LONGS_NOT_ALLOWED 4110 Длинные позиции не разрешены
ERR_SHORTS_NOT_ALLOWED 4111 Короткие позиции не разрешены
ERR_OBJECT_ALREADY_EXISTS 4200 Объект уже существует
ERR_UNKNOWN_OBJECT_PROPERTY 4201 Запрошено неизвестное свойство объекта
ERR_OBJECT_DOES_NOT_EXIST 4202 Объект не существует
ERR_UNKNOWN_OBJECT_TYPE 4203 Неизвестный тип объекта
ERR_NO_OBJECT_NAME 4204 Нет имени объекта
ERR_OBJECT_COORDINATES_ERROR 4205 Ошибка координат объекта
ERR_NO_SPECIFIED_SUBWINDOW 4206 Не найдено указанное подокно
ERR_SOME_OBJECT_ERROR 4207 Ошибка при работе с объектом
  • Коды возврата торгового сервера
  • Предупреждения компилятора
  • Ошибки компиляции
  • Ошибки времени выполнения

Справка MQL4 одним файлом:

  • Русский
  • Английский

Коды ошибок и предупреждений

Раздел содержит следующие описания:

  • Коды возврата торгового сервера – анализ результатов отправки торгового запроса, отправленного функцией OrderSend();
  • Предупреждения компилятора – коды предупредительных сообщений, выводимые при компиляции (не являются ошибками);
  • Ошибки компиляции – коды сообщений об ошибке при неудачной попытке компиляции;
  • Ошибки времени выполнения – коды ошибок при выполнении mql4-программы, которые можно получить при помощи функции GetLastError().

Структура для получения текущих ценКоды возврата торгового сервера

При работе торгового терминала MetaTrader 4 возникают различные ошибки при обмене информацией с торговым сервером, который в ответ на ошибочные запросы отсылает программе MetaTrader 4 не описание ошибки, а цифровой код ошибки — специальную комбинацию цифр, которая отображается во вкладках Эксперты и Журнал (примеры этих вкладок и описание типичной ситуации при возникновении ошибок можно найти в статье «Обзор торгового терминала MetaTrader 4»). Не все торговые терминалы MetaTrader 4 различных дилинговых центров дают расшифровку цифрового кода, а если она и есть, то — на английском языке. Чтобы понять, почему программа МетаТрейдер 4 работает неправильно, полезно знать расшифровку цифрового кода — какой комбинации цифр соответствует определенное описание ошибки. В некоторых случаях эта информация может сильно облегчить «жизнь» трейдеру и помочь быстрее справиться с возникшей проблемой.

Итак, предлагаем Вашему вниманию расшифровку кодов ошибок, которые можно встретить при работе с торговым терминалом MetaTrader 4:

Коды ошибок, возвращаемые торговым сервером терминалу MetaTrader 4.

  • Error: 0 — Нет ошибки.
  • Error: 1 — Нет ошибки, но результат неизвестен.
  • Error: 2 — Общая ошибка.
  • Error: 3 — Неправильные параметры.
  • Error: 4 — Торговый сервер занят.
  • Error: 5 — Старая версия клиентского терминала.
  • Error: 6 — Нет связи с торговым сервером.
  • Error: 7 — Недостаточно прав.
  • Error: 8 — Слишком частые запросы.
  • Error: 9 — Недопустимая операция, нарушающая функционирование сервера.
  • Error: 64 — Счёт заблокирован.
  • Error: 65 — Неправильный номер счета.
  • Error: 128 — Истек срок ожидания совершения сделки.
  • Error: 129 — Неправильная цена.
  • Error: 130 — Неправильные стопы.
  • Error: 131 — Неправильный объём.
  • Error: 132 — Рынок закрыт.
  • Error: 133 — Торговля запрещена.
  • Error: 134 — Недостаточно денег для совершения операции.
  • Error: 135 — Цена изменилась.
  • Error: 136 — Нет цен.
  • Error: 137 — Брокер занят.
  • Error: 138 — Новые цены.
  • Error: 139 — Ордер заблокирован и уже обрабатывается.
  • Error: 140 — Разрешена только покупка.
  • Error: 145 — Модификация запрещена, так как ордер слишком близок к рынку.
  • Error: 146 — Подсистема торговли занята.
  • Error: 147 — Использование даты истечения ордера запрещено брокером.
  • Error: 148 — Количество открытых и отложенных ордеров достигло предела, установленного брокером.
  • Error: 149 — Попытка открыть противоположную позицию к уже существующей в случае, если хеджирование запрещено.
  • Error: 150 — Попытка закрыть позицию по инструменту в противоречии с правилом FIFO.

Коды ошибок выполнения MQL4-программы (советника):

  • Error: 4000 — Нет ошибки.
  • Error: 4001 — Неправильный указатель функции.
  • Error: 4002 — Индекс массива — вне диапазона.
  • Error: 4003 — Нет памяти для стека функций.
  • Error: 4004 — Переполнение стека после рекурсивного вызова.
  • Error: 4005 — На стеке нет памяти для передачи параметров.
  • Error: 4006 — Нет памяти для строкового параметра.
  • Error: 4007 — Нет памяти для временной строки.
  • Error: 4008 — Неинициализированная строка.
  • Error: 4009 — Неинициализированная строка в массиве.
  • Error: 4010 — Нет памяти для строкового массива.
  • Error: 4011 — Слишком длинная строка.
  • Error: 4012 — Остаток от деления на ноль.
  • Error: 4013 — Деление на ноль.
  • Error: 4014 — Неизвестная команда.
  • Error: 4015 — Неправильный переход.
  • Error: 4016 — Неинициализированный массив.
  • Error: 4017 — Вызовы DLL не разрешены.
  • Error: 4018 — Невозможно загрузить библиотеку.
  • Error: 4019 — Невозможно вызвать функцию.
  • Error: 4020 — Вызовы внешних библиотечных функций не разрешены.
  • Error: 4021 — Недостаточно памяти для строки, возвращаемой из функции.
  • Error: 4022 — Система занята.
  • Error: 4050 — Неправильное количество параметров функции.
  • Error: 4051 — Недопустимое значение параметра функции.
  • Error: 4052 — Внутренняя ошибка строковой функции.
  • Error: 4053 — Ошибка массива.
  • Error: 4054 — Неправильное использование массива-таймсерии.
  • Error: 4055 — Ошибка пользовательского индикатора.
  • Error: 4056 — Массивы несовместимы.
  • Error: 4057 — Ошибка обработки глобальныех переменных.
  • Error: 4058 — Глобальная переменная не обнаружена.
  • Error: 4059 — Функция не разрешена в тестовом режиме.
  • Error: 4060 — Функция не разрешена.
  • Error: 4061 — Ошибка отправки почты.
  • Error: 4062 — Ожидается параметр типа string.
  • Error: 4063 — Ожидается параметр типа integer.
  • Error: 4064 — Ожидается параметр типа double.
  • Error: 4065 — В качестве параметра ожидается массив.
  • Error: 4066 — Запрошенные исторические данные в состоянии обновления.
  • Error: 4067 — Ошибка при выполнении торговой операции.
  • Error: 4099 — Конец файла.
  • Error: 4100 — Ошибка при работе с файлом.
  • Error: 4101 — Неправильное имя файла.
  • Error: 4102 — Слишком много открытых файлов.
  • Error: 4103 — Невозможно открыть файл.
  • Error: 4104 — Несовместимый режим доступа к файлу.
  • Error: 4105 — Ни один ордер не выбран.
  • Error: 4106 — Неизвестный символ.
  • Error: 4107 — Неправильный параметр цены для торговой функции.
  • Error: 4108 — Неверный номер тикета.
  • Error: 4109 — Торговля не разрешена. Необходимо включить опцию Разрешить советнику торговать в свойствах эксперта.
  • Error: 4110 — Длинные позиции не разрешены — необходимо проверить свойства эксперта.
  • Error: 4111 — Короткие позиции не разрешены — необходимо проверить свойства эксперта.
  • Error: 4200 — Объект уже существует.
  • Error: 4201 — Запрошено неизвестное свойство объекта.
  • Error: 4202 — Объект не существует.
  • Error: 4203 — Неизвестный тип объекта.
  • Error: 4204 — Нет имени объекта.
  • Error: 4205 — Ошибка координат объекта.
  • Error: 4206 — Не найдено указанное подокно.
  • Error: 4207 — Ошибка при работе с объектом.

0

ERR_NO_ERROR

Нет ошибки

1

ERR_NO_RESULT

Нет ошибки, но результат неизвестен

2

ERR_COMMON_ERROR

Общая ошибка

3

ERR_INVALID_TRADE_PARAMETERS

Неправильные параметры

4

ERR_SERVER_BUSY

Торговый сервер занят

5

ERR_OLD_VERSION

Старая версия клиентского терминала

6

ERR_NO_CONNECTION

Нет связи с торговым сервером

7

ERR_NOT_ENOUGH_RIGHTS

Недостаточно прав

8

ERR_TOO_FREQUENT_REQUESTS

Слишком частые запросы

9

ERR_MALFUNCTIONAL_TRADE

Недопустимая операция, нарушающая функционирование сервера

64

ERR_ACCOUNT_DISABLED

Счет заблокирован

65

ERR_INVALID_ACCOUNT

Неправильный номер счета

128

ERR_TRADE_TIMEOUT

Истек срок ожидания совершения сделки

129

ERR_INVALID_PRICE

Неправильная цена

130

ERR_INVALID_STOPS

Неправильные стопы

131

ERR_INVALID_TRADE_VOLUME

Неправильный объем

132

ERR_MARKET_CLOSED

Рынок закрыт

133

ERR_TRADE_DISABLED

Торговля запрещена

134

ERR_NOT_ENOUGH_MONEY

Недостаточно денег для совершения операции

135

ERR_PRICE_CHANGED

Цена изменилась

136

ERR_OFF_QUOTES

Нет цен

137

ERR_BROKER_BUSY

Брокер занят

138

ERR_REQUOTE

Новые цены

139

ERR_ORDER_LOCKED

Ордер заблокирован и уже обрабатывается

140

ERR_LONG_POSITIONS_ONLY_ALLOWED

Разрешена только покупка

141

ERR_TOO_MANY_REQUESTS

Слишком много запросов

145

ERR_TRADE_MODIFY_DENIED

Модификация запрещена, так как ордер слишком близок к рынку

146

ERR_TRADE_CONTEXT_BUSY

Подсистема торговли занята

147

ERR_TRADE_EXPIRATION_DENIED

Использование даты истечения ордера запрещено брокером

148

ERR_TRADE_TOO_MANY_ORDERS

Количество открытых и отложенных ордеров достигло предела, установленного брокером

149

ERR_TRADE_HEDGE_PROHIBITED

Попытка открыть противоположный ордер в случае, если хеджирование запрещено

150

ERR_TRADE_PROHIBITED_BY_FIFO

Попытка закрыть позицию по инструменту в противоречии с правилом FIFO

4000

ERR_NO_MQLERROR

Нет ошибки

4001

ERR_WRONG_FUNCTION_POINTER

Неправильный указатель функции

4002

ERR_ARRAY_INDEX_OUT_OF_RANGE

Индекс массива — вне диапазона

4003

ERR_NO_MEMORY_FOR_CALL_STACK

Нет памяти для стека функций

4004

ERR_RECURSIVE_STACK_OVERFLOW

Переполнение стека после рекурсивного вызова

4005

ERR_NOT_ENOUGH_STACK_FOR_PARAM

На стеке нет памяти для передачи параметров

4006

ERR_NO_MEMORY_FOR_PARAM_STRING

Нет памяти для строкового параметра

4007

ERR_NO_MEMORY_FOR_TEMP_STRING

Нет памяти для временной строки

4008

ERR_NOT_INITIALIZED_STRING

Неинициализированная строка

4009

ERR_NOT_INITIALIZED_ARRAYSTRING

Неинициализированная строка в массиве

4010

ERR_NO_MEMORY_FOR_ARRAYSTRING

Нет памяти для строкового массива

4011

ERR_TOO_LONG_STRING

Слишком длинная строка

4012

ERR_REMAINDER_FROM_ZERO_DIVIDE

Остаток от деления на ноль

4013

ERR_ZERO_DIVIDE

Деление на ноль

4014

ERR_UNKNOWN_COMMAND

Неизвестная команда

4015

ERR_WRONG_JUMP

Неправильный переход

4016

ERR_NOT_INITIALIZED_ARRAY

Неинициализированный массив

4017

ERR_DLL_CALLS_NOT_ALLOWED

Вызовы DLL не разрешены

4018

ERR_CANNOT_LOAD_LIBRARY

Невозможно загрузить библиотеку

4019

ERR_CANNOT_CALL_FUNCTION

Невозможно вызвать функцию

4020

ERR_EXTERNAL_CALLS_NOT_ALLOWED

Вызовы внешних библиотечных функций не разрешены

4021

ERR_NO_MEMORY_FOR_RETURNED_STR

Недостаточно памяти для строки, возвращаемой из функции

4022

ERR_SYSTEM_BUSY

Система занята

4023

ERR_DLLFUNC_CRITICALERROR

Критическая ошибка вызова DLL-функции

4024

ERR_INTERNAL_ERROR

Внутренняя ошибка

4025

ERR_OUT_OF_MEMORY

Нет памяти

4026

ERR_INVALID_POINTER

Неверный указатель

4027

ERR_FORMAT_TOO_MANY_FORMATTERS

Слишком много параметров форматирования строки

4028

ERR_FORMAT_TOO_MANY_PARAMETERS

Число параметров превышает число параметров форматирования строки

4029

ERR_ARRAY_INVALID

Неверный массив

4030

ERR_CHART_NOREPLY

График не отвечает

4050

ERR_INVALID_FUNCTION_PARAMSCNT

Неправильное количество параметров функции

4051

ERR_INVALID_FUNCTION_PARAMVALUE

Недопустимое значение параметра функции

4052

ERR_STRING_FUNCTION_INTERNAL

Внутренняя ошибка строковой функции

4053

ERR_SOME_ARRAY_ERROR

Ошибка массива

4054

ERR_INCORRECT_SERIESARRAY_USING

Неправильное использование массива-таймсерии

4055

ERR_CUSTOM_INDICATOR_ERROR

Ошибка пользовательского индикатора

4056

ERR_INCOMPATIBLE_ARRAYS

Массивы несовместимы

4057

ERR_GLOBAL_VARIABLES_PROCESSING

Ошибка обработки глобальных переменных

4058

ERR_GLOBAL_VARIABLE_NOT_FOUND

Глобальная переменная не обнаружена

4059

ERR_FUNC_NOT_ALLOWED_IN_TESTING

Функция не разрешена в тестовом режиме

4060

ERR_FUNCTION_NOT_CONFIRMED

Функция не разрешена

4061

ERR_SEND_MAIL_ERROR

Ошибка отправки почты

4062

ERR_STRING_PARAMETER_EXPECTED

Ожидается параметр типа string

4063

ERR_INTEGER_PARAMETER_EXPECTED

Ожидается параметр типа integer

4064

ERR_DOUBLE_PARAMETER_EXPECTED

Ожидается параметр типа double

4065

ERR_ARRAY_AS_PARAMETER_EXPECTED

В качестве параметра ожидается массив

4066

ERR_HISTORY_WILL_UPDATED

Запрошенные исторические данные в состоянии обновления

4067

ERR_TRADE_ERROR

Ошибка при выполнении торговой операции

4068

ERR_RESOURCE_NOT_FOUND

Ресурс не найден

4069

ERR_RESOURCE_NOT_SUPPORTED

Ресурс не поддерживается

4070

ERR_RESOURCE_DUPLICATED

Дубликат ресурса

4071

ERR_INDICATOR_CANNOT_INIT

Ошибка инициализации пользовательского индикатора

4072

ERR_INDICATOR_CANNOT_LOAD

Ошибка загрузки пользовательского индикатора

4073

ERR_NO_HISTORY_DATA

Нет исторических данных

4074

ERR_NO_MEMORY_FOR_HISTORY

Не хватает памяти для исторических данных

4075

ERR_NO_MEMORY_FOR_INDICATOR

Не хватает памяти для расчёта индикатора

4099

ERR_END_OF_FILE

Конец файла

4100

ERR_SOME_FILE_ERROR

Ошибка при работе с файлом

4101

ERR_WRONG_FILE_NAME

Неправильное имя файла

4102

ERR_TOO_MANY_OPENED_FILES

Слишком много открытых файлов

4103

ERR_CANNOT_OPEN_FILE

Невозможно открыть файл

4104

ERR_INCOMPATIBLE_FILEACCESS

Несовместимый режим доступа к файлу

4105

ERR_NO_ORDER_SELECTED

Ни один ордер не выбран

4106

ERR_UNKNOWN_SYMBOL

Неизвестный символ

4107

ERR_INVALID_PRICE_PARAM

Неправильный параметр цены для торговой функции

4108

ERR_INVALID_TICKET

Неверный номер тикета

4109

ERR_TRADE_NOT_ALLOWED

Торговля не разрешена. Необходимо включить опцию «Разрешить советнику торговать» в свойствах эксперта

4110

ERR_LONGS_NOT_ALLOWED

Ордера на покупку не разрешены. Необходимо проверить свойства эксперта

4111

ERR_SHORTS_NOT_ALLOWED

Ордера на продажу не разрешены. Необходимо проверить свойства эксперта

4112

ERR_TRADE_EXPERT_DISABLED_BY_SERVER

Автоматическая торговля с помощью экспертов/скриптов запрещена на стороне сервера

4200

ERR_OBJECT_ALREADY_EXISTS

Объект уже существует

4201

ERR_UNKNOWN_OBJECT_PROPERTY

Запрошено неизвестное свойство объекта

4202

ERR_OBJECT_DOES_NOT_EXIST

Объект не существует

4203

ERR_UNKNOWN_OBJECT_TYPE

Неизвестный тип объекта

4204

ERR_NO_OBJECT_NAME

Нет имени объекта

4205

ERR_OBJECT_COORDINATES_ERROR

Ошибка координат объекта

4206

ERR_NO_SPECIFIED_SUBWINDOW

Не найдено указанное подокно

4207

ERR_SOME_OBJECT_ERROR

Ошибка при работе с объектом

4210

ERR_CHART_PROP_INVALID

Неизвестное свойство графика

4211

ERR_CHART_NOT_FOUND

График не найден

4212

ERR_CHARTWINDOW_NOT_FOUND

Не найдено подокно графика

4213

ERR_CHARTINDICATOR_NOT_FOUND

Индикатор не найден

4220

ERR_SYMBOL_SELECT

Ошибка выбора инструмента

4250

ERR_NOTIFICATION_ERROR

Ошибка отправки push-уведомления

4251

ERR_NOTIFICATION_PARAMETER

Ошибка параметров push-уведомления

4252

ERR_NOTIFICATION_SETTINGS

Уведомления запрещены

4253

ERR_NOTIFICATION_TOO_FREQUENT

Слишком частые запросы отсылки push-уведомлений

4260

ERR_FTP_NOSERVER

Не указан FTP сервер

4261

ERR_FTP_NOLOGIN

Не указан FTP логин

4262

ERR_FTP_CONNECT_FAILED

Ошибка при подключении к FTP серверу

4263

ERR_FTP_CLOSED

Подключение к FTP серверу закрыто

4264

ERR_FTP_CHANGEDIR

На FTP сервере не найдена директория для выгрузки файла

4265

ERR_FTP_FILE_ERROR

Не найден файл в директории MQL4Files для отправки на FTP сервер

4266

ERR_FTP_ERROR

Ошибка при передаче файла на FTP сервер

5001

ERR_FILE_TOO_MANY_OPENED

Слишком много открытых файлов

5002

ERR_FILE_WRONG_FILENAME

Неверное имя файла

5003

ERR_FILE_TOO_LONG_FILENAME

Слишком длинное имя файла

5004

ERR_FILE_CANNOT_OPEN

Ошибка открытия файла

5005

ERR_FILE_BUFFER_ALLOCATION_ERROR

Ошибка размещения буфера текстового файла

5006

ERR_FILE_CANNOT_DELETE

Ошибка удаления файла

5007

ERR_FILE_INVALID_HANDLE

Неверный хендл файла (файл закрыт или не был открыт)

5008

ERR_FILE_WRONG_HANDLE

Неверный хендл файла (индекс хендла отсутствует в таблице)

5009

ERR_FILE_NOT_TOWRITE

Файл должен быть открыт с флагом FILE_WRITE

5010

ERR_FILE_NOT_TOREAD

Файл должен быть открыт с флагом FILE_READ

5011

ERR_FILE_NOT_BIN

Файл должен быть открыт с флагом FILE_BIN

5012

ERR_FILE_NOT_TXT

Файл должен быть открыт с флагом FILE_TXT

5013

ERR_FILE_NOT_TXTORCSV

Файл должен быть открыт с флагом FILE_TXT или FILE_CSV

5014

ERR_FILE_NOT_CSV

Файл должен быть открыт с флагом FILE_CSV

5015

ERR_FILE_READ_ERROR

Ошибка чтения файла

5016

ERR_FILE_WRITE_ERROR

Ошибка записи файла

5017

ERR_FILE_BIN_STRINGSIZE

Размер строки должен быть указан для двоичных файлов

5018

ERR_FILE_INCOMPATIBLE

Неверный тип файла (для строковых массивов-TXT, для всех других-BIN)

5019

ERR_FILE_IS_DIRECTORY

Файл является директорией

5020

ERR_FILE_NOT_EXIST

Файл не существует

5021

ERR_FILE_CANNOT_REWRITE

Файл не может быть перезаписан

5022

ERR_FILE_WRONG_DIRECTORYNAME

Неверное имя директории

5023

ERR_FILE_DIRECTORY_NOT_EXIST

Директория не существует

5024

ERR_FILE_NOT_DIRECTORY

Указанный файл не является директорией

5025

ERR_FILE_CANNOT_DELETE_DIRECTORY

Ошибка удаления директории

5026

ERR_FILE_CANNOT_CLEAN_DIRECTORY

Ошибка очистки директории

5027

ERR_FILE_ARRAYRESIZE_ERROR

Ошибка изменения размера массива

5028

ERR_FILE_STRINGRESIZE_ERROR

Ошибка изменения размера строки

5029

ERR_FILE_STRUCT_WITH_OBJECTS

Структура содержит строки или динамические массивы

5200

ERR_WEBREQUEST_INVALID_ADDRESS

URL не прошел проверку

5201

ERR_WEBREQUEST_CONNECT_FAILED

Не удалось подключиться к указанному URL

5202

ERR_WEBREQUEST_TIMEOUT

Превышен таймаут получения данных

5203

ERR_WEBREQUEST_REQUEST_FAILED

Ошибка в результате выполнения HTTP запроса

Пользовательские ошибки

65536

ERR_USER_ERROR_FIRST

С этого кода начинаются ошибки, задаваемые пользователем

GetLastError() – функция, возвращающая код последней ошибки, которая хранится в предопределенной переменной _LastError. Значение этой переменной можно сбросить в ноль функцией ResetLastError().

0

ERR_NO_ERROR

Нет ошибки

1

ERR_NO_RESULT

Нет ошибки, но результат неизвестен

2

ERR_COMMON_ERROR

Общая ошибка

3

ERR_INVALID_TRADE_PARAMETERS

Неправильные параметры

4

ERR_SERVER_BUSY

Торговый сервер занят

5

ERR_OLD_VERSION

Старая версия клиентского терминала

6

ERR_NO_CONNECTION

Нет связи с торговым сервером

7

ERR_NOT_ENOUGH_RIGHTS

Недостаточно прав

8

ERR_TOO_FREQUENT_REQUESTS

Слишком частые запросы

9

ERR_MALFUNCTIONAL_TRADE

Недопустимая операция, нарушающая функционирование сервера

64

ERR_ACCOUNT_DISABLED

Счет заблокирован

65

ERR_INVALID_ACCOUNT

Неправильный номер счета

128

ERR_TRADE_TIMEOUT

Истек срок ожидания совершения сделки

129

ERR_INVALID_PRICE

Неправильная цена

130

ERR_INVALID_STOPS

Неправильные стопы

131

ERR_INVALID_TRADE_VOLUME

Неправильный объем

132

ERR_MARKET_CLOSED

Рынок закрыт

133

ERR_TRADE_DISABLED

Торговля запрещена

134

ERR_NOT_ENOUGH_MONEY

Недостаточно денег для совершения операции

135

ERR_PRICE_CHANGED

Цена изменилась

136

ERR_OFF_QUOTES

Нет цен

137

ERR_BROKER_BUSY

Брокер занят

138

ERR_REQUOTE

Новые цены

139

ERR_ORDER_LOCKED

Ордер заблокирован и уже обрабатывается

140

ERR_LONG_POSITIONS_ONLY_ALLOWED

Разрешена только покупка

141

ERR_TOO_MANY_REQUESTS

Слишком много запросов

145

ERR_TRADE_MODIFY_DENIED

Модификация запрещена, так как ордер слишком близок к рынку

146

ERR_TRADE_CONTEXT_BUSY

Подсистема торговли занята

147

ERR_TRADE_EXPIRATION_DENIED

Использование даты истечения ордера запрещено брокером

148

ERR_TRADE_TOO_MANY_ORDERS

Количество открытых и отложенных ордеров достигло предела, установленного брокером

149

ERR_TRADE_HEDGE_PROHIBITED

Попытка открыть противоположный ордер в случае, если хеджирование запрещено

150

ERR_TRADE_PROHIBITED_BY_FIFO

Попытка закрыть позицию по инструменту в противоречии с правилом FIFO

4000

ERR_NO_MQLERROR

Нет ошибки

4001

ERR_WRONG_FUNCTION_POINTER

Неправильный указатель функции

4002

ERR_ARRAY_INDEX_OUT_OF_RANGE

Индекс массива — вне диапазона

4003

ERR_NO_MEMORY_FOR_CALL_STACK

Нет памяти для стека функций

4004

ERR_RECURSIVE_STACK_OVERFLOW

Переполнение стека после рекурсивного вызова

4005

ERR_NOT_ENOUGH_STACK_FOR_PARAM

На стеке нет памяти для передачи параметров

4006

ERR_NO_MEMORY_FOR_PARAM_STRING

Нет памяти для строкового параметра

4007

ERR_NO_MEMORY_FOR_TEMP_STRING

Нет памяти для временной строки

4008

ERR_NOT_INITIALIZED_STRING

Неинициализированная строка

4009

ERR_NOT_INITIALIZED_ARRAYSTRING

Неинициализированная строка в массиве

4010

ERR_NO_MEMORY_FOR_ARRAYSTRING

Нет памяти для строкового массива

4011

ERR_TOO_LONG_STRING

Слишком длинная строка

4012

ERR_REMAINDER_FROM_ZERO_DIVIDE

Остаток от деления на ноль

4013

ERR_ZERO_DIVIDE

Деление на ноль

4014

ERR_UNKNOWN_COMMAND

Неизвестная команда

4015

ERR_WRONG_JUMP

Неправильный переход

4016

ERR_NOT_INITIALIZED_ARRAY

Неинициализированный массив

4017

ERR_DLL_CALLS_NOT_ALLOWED

Вызовы DLL не разрешены

4018

ERR_CANNOT_LOAD_LIBRARY

Невозможно загрузить библиотеку

4019

ERR_CANNOT_CALL_FUNCTION

Невозможно вызвать функцию

4020

ERR_EXTERNAL_CALLS_NOT_ALLOWED

Вызовы внешних библиотечных функций не разрешены

4021

ERR_NO_MEMORY_FOR_RETURNED_STR

Недостаточно памяти для строки, возвращаемой из функции

4022

ERR_SYSTEM_BUSY

Система занята

4023

ERR_DLLFUNC_CRITICALERROR

Критическая ошибка вызова DLL-функции

4024

ERR_INTERNAL_ERROR

Внутренняя ошибка

4025

ERR_OUT_OF_MEMORY

Нет памяти

4026

ERR_INVALID_POINTER

Неверный указатель

4027

ERR_FORMAT_TOO_MANY_FORMATTERS

Слишком много параметров форматирования строки

4028

ERR_FORMAT_TOO_MANY_PARAMETERS

Число параметров превышает число параметров форматирования строки

4029

ERR_ARRAY_INVALID

Неверный массив

4030

ERR_CHART_NOREPLY

График не отвечает

4050

ERR_INVALID_FUNCTION_PARAMSCNT

Неправильное количество параметров функции

4051

ERR_INVALID_FUNCTION_PARAMVALUE

Недопустимое значение параметра функции

4052

ERR_STRING_FUNCTION_INTERNAL

Внутренняя ошибка строковой функции

4053

ERR_SOME_ARRAY_ERROR

Ошибка массива

4054

ERR_INCORRECT_SERIESARRAY_USING

Неправильное использование массива-таймсерии

4055

ERR_CUSTOM_INDICATOR_ERROR

Ошибка пользовательского индикатора

4056

ERR_INCOMPATIBLE_ARRAYS

Массивы несовместимы

4057

ERR_GLOBAL_VARIABLES_PROCESSING

Ошибка обработки глобальных переменных

4058

ERR_GLOBAL_VARIABLE_NOT_FOUND

Глобальная переменная не обнаружена

4059

ERR_FUNC_NOT_ALLOWED_IN_TESTING

Функция не разрешена в тестовом режиме

4060

ERR_FUNCTION_NOT_CONFIRMED

Функция не разрешена

4061

ERR_SEND_MAIL_ERROR

Ошибка отправки почты

4062

ERR_STRING_PARAMETER_EXPECTED

Ожидается параметр типа string

4063

ERR_INTEGER_PARAMETER_EXPECTED

Ожидается параметр типа integer

4064

ERR_DOUBLE_PARAMETER_EXPECTED

Ожидается параметр типа double

4065

ERR_ARRAY_AS_PARAMETER_EXPECTED

В качестве параметра ожидается массив

4066

ERR_HISTORY_WILL_UPDATED

Запрошенные исторические данные в состоянии обновления

4067

ERR_TRADE_ERROR

Ошибка при выполнении торговой операции

4068

ERR_RESOURCE_NOT_FOUND

Ресурс не найден

4069

ERR_RESOURCE_NOT_SUPPORTED

Ресурс не поддерживается

4070

ERR_RESOURCE_DUPLICATED

Дубликат ресурса

4071

ERR_INDICATOR_CANNOT_INIT

Ошибка инициализации пользовательского индикатора

4072

ERR_INDICATOR_CANNOT_LOAD

Ошибка загрузки пользовательского индикатора

4073

ERR_NO_HISTORY_DATA

Нет исторических данных

4074

ERR_NO_MEMORY_FOR_HISTORY

Не хватает памяти для исторических данных

4075

ERR_NO_MEMORY_FOR_INDICATOR

Не хватает памяти для расчёта индикатора

4099

ERR_END_OF_FILE

Конец файла

4100

ERR_SOME_FILE_ERROR

Ошибка при работе с файлом

4101

ERR_WRONG_FILE_NAME

Неправильное имя файла

4102

ERR_TOO_MANY_OPENED_FILES

Слишком много открытых файлов

4103

ERR_CANNOT_OPEN_FILE

Невозможно открыть файл

4104

ERR_INCOMPATIBLE_FILEACCESS

Несовместимый режим доступа к файлу

4105

ERR_NO_ORDER_SELECTED

Ни один ордер не выбран

4106

ERR_UNKNOWN_SYMBOL

Неизвестный символ

4107

ERR_INVALID_PRICE_PARAM

Неправильный параметр цены для торговой функции

4108

ERR_INVALID_TICKET

Неверный номер тикета

4109

ERR_TRADE_NOT_ALLOWED

Торговля не разрешена. Необходимо включить опцию «Разрешить советнику торговать» в свойствах эксперта

4110

ERR_LONGS_NOT_ALLOWED

Ордера на покупку не разрешены. Необходимо проверить свойства эксперта

4111

ERR_SHORTS_NOT_ALLOWED

Ордера на продажу не разрешены. Необходимо проверить свойства эксперта

4112

ERR_TRADE_EXPERT_DISABLED_BY_SERVER

Автоматическая торговля с помощью экспертов/скриптов запрещена на стороне сервера

4200

ERR_OBJECT_ALREADY_EXISTS

Объект уже существует

4201

ERR_UNKNOWN_OBJECT_PROPERTY

Запрошено неизвестное свойство объекта

4202

ERR_OBJECT_DOES_NOT_EXIST

Объект не существует

4203

ERR_UNKNOWN_OBJECT_TYPE

Неизвестный тип объекта

4204

ERR_NO_OBJECT_NAME

Нет имени объекта

4205

ERR_OBJECT_COORDINATES_ERROR

Ошибка координат объекта

4206

ERR_NO_SPECIFIED_SUBWINDOW

Не найдено указанное подокно

4207

ERR_SOME_OBJECT_ERROR

Ошибка при работе с объектом

4210

ERR_CHART_PROP_INVALID

Неизвестное свойство графика

4211

ERR_CHART_NOT_FOUND

График не найден

4212

ERR_CHARTWINDOW_NOT_FOUND

Не найдено подокно графика

4213

ERR_CHARTINDICATOR_NOT_FOUND

Индикатор не найден

4220

ERR_SYMBOL_SELECT

Ошибка выбора инструмента

4250

ERR_NOTIFICATION_ERROR

Ошибка отправки push-уведомления

4251

ERR_NOTIFICATION_PARAMETER

Ошибка параметров push-уведомления

4252

ERR_NOTIFICATION_SETTINGS

Уведомления запрещены

4253

ERR_NOTIFICATION_TOO_FREQUENT

Слишком частые запросы отсылки push-уведомлений

4260

ERR_FTP_NOSERVER

Не указан FTP сервер

4261

ERR_FTP_NOLOGIN

Не указан FTP логин

4262

ERR_FTP_CONNECT_FAILED

Ошибка при подключении к FTP серверу

4263

ERR_FTP_CLOSED

Подключение к FTP серверу закрыто

4264

ERR_FTP_CHANGEDIR

На FTP сервере не найдена директория для выгрузки файла

4265

ERR_FTP_FILE_ERROR

Не найден файл в директории MQL4Files для отправки на FTP сервер

4266

ERR_FTP_ERROR

Ошибка при передаче файла на FTP сервер

5001

ERR_FILE_TOO_MANY_OPENED

Слишком много открытых файлов

5002

ERR_FILE_WRONG_FILENAME

Неверное имя файла

5003

ERR_FILE_TOO_LONG_FILENAME

Слишком длинное имя файла

5004

ERR_FILE_CANNOT_OPEN

Ошибка открытия файла

5005

ERR_FILE_BUFFER_ALLOCATION_ERROR

Ошибка размещения буфера текстового файла

5006

ERR_FILE_CANNOT_DELETE

Ошибка удаления файла

5007

ERR_FILE_INVALID_HANDLE

Неверный хендл файла (файл закрыт или не был открыт)

5008

ERR_FILE_WRONG_HANDLE

Неверный хендл файла (индекс хендла отсутствует в таблице)

5009

ERR_FILE_NOT_TOWRITE

Файл должен быть открыт с флагом FILE_WRITE

5010

ERR_FILE_NOT_TOREAD

Файл должен быть открыт с флагом FILE_READ

5011

ERR_FILE_NOT_BIN

Файл должен быть открыт с флагом FILE_BIN

5012

ERR_FILE_NOT_TXT

Файл должен быть открыт с флагом FILE_TXT

5013

ERR_FILE_NOT_TXTORCSV

Файл должен быть открыт с флагом FILE_TXT или FILE_CSV

5014

ERR_FILE_NOT_CSV

Файл должен быть открыт с флагом FILE_CSV

5015

ERR_FILE_READ_ERROR

Ошибка чтения файла

5016

ERR_FILE_WRITE_ERROR

Ошибка записи файла

5017

ERR_FILE_BIN_STRINGSIZE

Размер строки должен быть указан для двоичных файлов

5018

ERR_FILE_INCOMPATIBLE

Неверный тип файла (для строковых массивов-TXT, для всех других-BIN)

5019

ERR_FILE_IS_DIRECTORY

Файл является директорией

5020

ERR_FILE_NOT_EXIST

Файл не существует

5021

ERR_FILE_CANNOT_REWRITE

Файл не может быть перезаписан

5022

ERR_FILE_WRONG_DIRECTORYNAME

Неверное имя директории

5023

ERR_FILE_DIRECTORY_NOT_EXIST

Директория не существует

5024

ERR_FILE_NOT_DIRECTORY

Указанный файл не является директорией

5025

ERR_FILE_CANNOT_DELETE_DIRECTORY

Ошибка удаления директории

5026

ERR_FILE_CANNOT_CLEAN_DIRECTORY

Ошибка очистки директории

5027

ERR_FILE_ARRAYRESIZE_ERROR

Ошибка изменения размера массива

5028

ERR_FILE_STRINGRESIZE_ERROR

Ошибка изменения размера строки

5029

ERR_FILE_STRUCT_WITH_OBJECTS

Структура содержит строки или динамические массивы

5200

ERR_WEBREQUEST_INVALID_ADDRESS

URL не прошел проверку

5201

ERR_WEBREQUEST_CONNECT_FAILED

Не удалось подключиться к указанному URL

5202

ERR_WEBREQUEST_TIMEOUT

Превышен таймаут получения данных

5203

ERR_WEBREQUEST_REQUEST_FAILED

Ошибка в результате выполнения HTTP запроса

Пользовательские ошибки

65536

ERR_USER_ERROR_FIRST

С этого кода начинаются ошибки, задаваемые пользователем

Introduction

Some older programs can return errors in the new version of the MQL4 of compiler.

To avoid critical completion of programs, the previous version compiler handled many errors in the runtime environment. For example, division by zero or array out of range are critical errors and usually lead to application crash. Such errors occur only in some states for certain values ​​of variables. Read this article to know how to handle such cases.

The new compiler can detect actual or potential sources of errors and improve code quality.

In this article, we discuss possible errors that can be detected during compilation of old programs and ways to fix them.

  1. Compilation Errors
    • 1.1. Identifier coincides with a reserved word
    • 1.2. Special characters in the names of variables and functions
    • 1.3. Errors using the switch operator
    • 1.4. Function return values
    • 1.5. Arrays in function arguments
  2. Runtime Errors
    • 2.1. Array out of range
    • 2.2. Zero divide
    • 2.3. Use of 0 instead of NULL for the current character
    • 2.4. Unicode format strings and their use in a DLL
    • 2.5. File sharing
    • 2.6. Datetime conversion
  3. Compiler Warnings
    • 3.1. Names of global and local variables coincide
    • 3.2. Mismatch of types
    • 3.3. Unused variables

1 Compilation Errors

If a program code contains errors, it cannot be compiled.

To fully control all errors, it is recommended to use strict compilation mode, which is set by the following directive:

#property strict

This mode greatly simplifies troubleshooting.

1.1. Identifier coincides with a reserved word

If the name of a variable or function coincides with one of the reserved words

int char[];  
int char1[]; 
int char()   
{
 return(0);
}

the compiler returns an error messages:

Figure 1. Errors "unexpected token" and "name expected"

Figure 1. Errors «unexpected token» and «name expected»

To fix this error, you need to use the correct name of the variable or function.

1.2. Special characters in the names of variables and functions

If names of variables or functions contain special characters ($, @, point):

int $var1; 
int @var2; 
int var.3; 
void f@()  
{
 return;
}

the compiler returns an error messages:

Figure 2. Errors "unknown symbol" and "semicolon expected"

Figure 2. Errors «unknown symbol» and «semicolon expected»

To fix this error, you need to use correct function or variable names.

1.3. Errors using the switch operator

In the old version of the compiler you could use any values ​​in expressions and constants of the switch operator:

void start()
  {
   double n=3.14;
   switch(n)
     {
      case 3.14: Print("Pi");break;
      case 2.7: Print("E");break;
     }
  }

In the new compiler, constants and expressions of the switch operator must be integers, so errors occur when you try to use such constructions:

Figure 3. Errors "illegal switch expression type" and "constant expression is not integral"

Figure 3. Errors «illegal switch expression type» and «constant expression is not integral»

In such cases, you can use explicit comparison of numerical values, for example:

void start()
  {
   double n=3.14;
   if(n==3.14) Print("Pi");
   else
      if(n==2.7) Print("E");
  }

1.4. Return values ​​of functions

All functions except void should return the declared type value. For example:

int function()
{
}

In strict compilation mode an error occurs:

Figure 4. Error "not all control paths return a value"

Figure 4. Error «not all control paths return a value»

In default compilation mode, the compiler returns a warning:

Figure 5. Warning "not all control paths return a value"

Figure 5. Warning «not all control paths return a value»

If the return value of the function does not match the declared one:

int init()                         
  {
   return;                          
  }

an error is detected during strict compilation:

Figure 6. Error "function must return a value"

Figure 6. Error «function must return a value»

In default compilation mode, the compiler returns a warning:

Figure 7. Warning 'return - function must return a value"

Figure 7. Warning ‘return — function must return a value»

To fix such errors, add the return operator with the return value of the corresponding type to the function code.

1.5. Arrays in function arguments

In function arguments, arrays are now passed by reference only.

double ArrayAverage(double a[])
{
 return(0);
}

In strict compilation mode, this code will cause an error:

Figure 8. Compiler error "arrays passed by reference only"

Figure 8. Compiler error «arrays passed by reference only»

In default compilation mode, the compiler returns a warning:

Figure 9. Compiler warning "arrays passed by reference only"

Figure 9. Compiler warning «arrays passed by reference only»

To fix this error, you must explicitly specify that the array is passed by reference by adding the prefix & before the name of the array:

double ArrayAverage(double &a[])
{
 return(0);
}

It should be noted that now constant arrays (Time[], Open[], High[], Low[], Close[], Volume[]) cannot be passed by reference. For example, the following call:

ArrayAverage(Open);

regardless of the compilation mode leads to an error:

Figure 10. Error 'Open' - constant variable cannot be passed as reference

Figure 10. Error ‘Open’ — constant variable cannot be passed as reference

To avoid these errors, copy the required data from the constant array:

   
   double OpenPrices[];
   
   ArrayCopy(OpenPrices,Open,0,0,WHOLE_ARRAY);
   
   ArrayAverage(OpenPrices);

2. Runtime Errors

Errors that occur during the execution of the program code are called runtime errors. Such errors usually depend on the state of a program and are associated with incorrect values ​​of the variables.

For example, if a variable is used as an index of array elements, its negative values ​​will inevitably lead to the Array out of Range error.

2.1. Array out of Range

This error often occurs in indicators when accessing indicator buffers. The IndicatorCounted() function returns the number of bars unchanged since the last indicator call. Indicator values on previously calculated bars do not need recalculation, so for faster calculations you only need to process the last few bars.

Most indicators that use this method of calculation optimization look like this:


int start()
  {
   
   if (Bars<100) 
     return(-1); 

   
   int counted_bars=IndicatorCounted();
   
   if(counted_bars<0) return(-1);
      
   
   int limit=Bars-counted_bars;

   
   if(counted_bars==0) 
     {
      limit--;  
      
      limit-=10;
     }
   else 
     {     
      
      limit++;
     } 
   
   for (int i=limit; i>0; i--)
   {
     Buff1[i]=0.5*(Open[i+5]+Close[i+10]) 
   }
}

Often the case of counted_bars==0 is handled incorrectly (the initial limit position should be reduced by the value equal to 1 + maximum index relative to the loop variable).

Also, remember that at the time of the start() function execution we can access elements of arrays of indicator buffers from 0 to Bars ()-1. If you need to work with the arrays that are not indicator buffers, increase their size using the ArrayResize() function in accordance with the current size of indicator buffers. The maximum index of the element to address can also be obtained by calling ArraySize() with one of the indicator buffers used as an argument.

2.2. Zero Divide

The Zero Divide error occurs when a divisor in a division operation is equal to zero:

void OnStart()
  {

   int a=0, b=0,c;
   c=a/b;
   Print("c=",c);
  }

When you run this script, an error message appears in the Experts tab and the program shuts down:

Figure 11. Error message "zero divide"

Figure 11. Error message «zero divide»

Usually this error occurs when the value of the divisor is determined by the values ​​of any external data. For example, if trade parameters are analyzed, the value of the used margin is equal to 0 if there are no open orders. Another example: if the analyzed data are read from a file, we can not guarantee correct operation if the file is not available. So you should take into account such cases and process them correctly.

The easiest way is to check the divisor before the division operation and report an incorrect parameter value:

void OnStart()
  {

   int a=0, b=0,c;
   if(b!=0) {c=a/b; Print(c);}
   else {Print("Error: b=0"); return; };
  }

This does not cause a critical error, but a message about an incorrect parameter value appears and program shuts down:

Figure 12. Incorrect divider message

Figure 12. Incorrect divider message

2.3. Use of 0 instead of NULL for the current character

In the old version of the compiler 0 (zero) could be used as an argument in functions that require specification of a financial instrument.

For example, the value of the Moving Average technical indicator for the current symbol could be requested as follows:

AlligatorJawsBuffer[i]=iMA(0,0,13,8,MODE_SMMA,PRICE_MEDIAN,i); 

In the new compiler you should explicitly specify NULL to specify the current symbol:

AlligatorJawsBuffer[i]=iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i); 

In addition, the current symbol and chart period can be specified using the Symbol() and Period() functions.

AlligatorJawsBuffer[i]=iMA(Symbol(),Period(),13,8,MODE_SMMA,PRICE_MEDIAN,i); 

2.4. Unicode strings and their use in a DLL

Strings are now represented as a sequence of Unicode characters.

Remember this and use appropriate Windows functions. For example, when using the wininet.dll library instead InternetOpenA() and InternetOpenUrlA(), you should call InternetOpenW() and InternetOpenUrlW().

The internal structure of strings has changed in MQL4 (now it takes 12 bytes), and the MqlString structure should be used when passing strings to DLL:

#pragma pack(push,1)
struct MqlString
  {
   int      size;       
   LPWSTR   buffer;     
   int      reserved;   
  };
#pragma pack(pop,1)

2.5. File sharing

In the new MQL4, FILE_SHARE_WRITE and FILE_SHARE_READ flags should explicitly be specified for shared use when opening files.

If the flags are absent, the file is opened in exclusive mode and cannot be opened by anyone else till it is closed by the user who opened it.

For example, when working with offline charts share flags should be explicitly specified:

   
   ExtHandle=FileOpenHistory(c_symbol+i_period+".hst",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ);

For more details please read Offline Charts in the New MQL4.

2.6. Datetime Conversion

Conversion of datetime to a string now depends on the compilation mode:

  datetime date=D'2014.03.05 15:46:58';
  string str="mydate="+date;

For example, trying to work with files whose name contains a colon causes an error.

3. Compiler Warnings

Compiler Warnings are informative and are not error messages, but they indicate possible error sources.

A clear code should not contain warnings.

3.1. Names of global and local variables coincide

If variables on the global and local levels have similar names:

int i; 
void OnStart()
  {

   int i=0,j=0; 
   for (i=0; i<5; i++) {j+=i;}
   PrintFormat("i=%d, j=%d",i,j);
  }

the compiler displays a warning showing the line number on which the global variable is declared:

Figure 13. Warning "declaration of '%' hides global declaration at line %"

Figure 13. Warning «declaration of ‘%’ hides global declaration at line %»

To fix such warnings correct names of global variables.

3.2. Mismatch of Types

The new compiler has a new typecasting operation.

#property strict
void OnStart()
  {
   double a=7;
   float b=a;
   int c=b;
   string str=c;
   Print(c);
  }

In strict compilation mode the compiler shows warnings if types mismatch:

Figure 14. Warnings "possible loss of data due to type conversion" and "implicit conversion from 'number' to 'string'

Figure 14. Warnings «possible loss of data due to type conversion» and «implicit conversion from ‘number’ to ‘string’

In this example, the compiler warns about the possible loss of accuracy for different data types assigned and implicit conversion from int to string.

To fix the warning use explicit typecasting:

#property strict
void OnStart()
  {
   double a=7;
   float b=(float)a;
   int c=(int)b;
   string str=(string)c;
   Print(c);
  }

3.3. Unused Variables

The presence of variables that are not used in the program code (superfluous entities) is not a good habit.

void OnStart()
  {
   int i,j=10,k,l,m,n2=1;
   for(i=0; i<5; i++) {j+=i;}
  }

Reports of such variables are displayed regardless of the compilation mode:

Figure 15. Warning "variable '%' not used'

Figure 15. Warning «variable ‘%’ not used’

To fix it, remove unused variables from your code.

Conclusions

The article describes common problems that may occur during compilation of old programs that contain errors.

In all cases it is recommended to use strict compilation mode for program debugging.

В исполняющей подсистеме клиентского терминала имеется возможность сохранения кода ошибки в случае ее возникновения при выполнении mql-программы. Для каждой исполняемой mql-программы предусмотрена своя собственная специальная переменная last_error. Перед запуском функции OnInit() переменная last_error обнуляется. В случае возникновения патовой ситуации во время вычислений или во время вызова встроенной функции переменная last_error принимает соответствующий код ошибки. Значение, сохраненное в этой переменной, можно получить при помощи функции GetLastError(). При этом переменная last_error обнуляется.

Существует ряд критических ошибок, при возникновении которых выполнение программы немедленно завершается:

Константа Значение Описание
ERR_WRONG_FUNCTION_POINTER 4001 При вызове внутренней функции обнаружен неправильный указатель вызываемой функции
ERR_NO_MEMORY_FOR_CALL_STACK 4003 При вызове внутренней функции невозможно перераспределить память для стека вызовов функции
ERR_RECURSIVE_STACK_OVERFLOW 4004 При рекурсивном вызове функции исчерпан стек данных
ERR_NO_MEMORY_FOR_PARAM_STRING 4006 При вызове внутренней функции невозможно распределить память для передачи строки в качестве параметра функции
ERR_NO_MEMORY_FOR_TEMP_STRING 4007 Невозможно распределить временный буфер для операций со строками
ERR_NO_MEMORY_FOR_ARRAYSTRING 4010 При присвоении невозможно перераспределить память для строки в массиве
ERR_TOO_LONG_STRING 4011 При присвоении слишком длинная результатная строка для помещения в служебный буфер (невозможно перераспределить память для служебного буфера)
ERR_REMAINDER_FROM_ZERO_DIVIDE 4012 Деление на 0 при взятии остатка от деления
ERR_ZERO_DIVIDE 4013 Деление на 0
ERR_UNKNOWN_COMMAND 4014 Неизвестная инструкция

Если выполнение программы было прервано из-за критической ошибки, то при следующем запуске функции OnTick или функции OnDeinit можно прочитать код этой ошибки, используя функцию GetLastError(). Перед выполнением функций OnTick и OnDeinit переменная last_error не сбрасывается.

Существует ряд критических ошибок, связанных с вызовом импортируемых функций, при возникновении которых выполнение эксперта или индикатора немедленно прерывается и функция OnTick не запускается до тех пор, пока не будет произведена переинициализация эксперта или индикатора.

Константа Значение Описание
ERR_CANNOT_LOAD_LIBRARY 4018 При вызове импортируемой функции произошла ошибка загрузки dll или ex4-библиотеки
ERR_CANNOT_CALL_FUNCTION 4019 При вызове импортируемой из функции выяснилось, что dll или ex4-библиотека не содержит эту функцию
ERR_DLL_CALLS_NOT_ALLOWED 4017 При вызове импортируемой из dll функции выяснилось, что установлен запрет на вызовы из dll
ERR_EXTERNAL_CALLS_NOT_ALLOWED 4020 При вызове импортируемой из ex4-библиотеки выяснилось, что установлен запрет на вызовы из ex4
ERR_FUNCTION_NOT_CONFIRMED 4060 Не подтвержден вызов импортируемой из dll функции. Если нажата кнопка «Нет», то выполнение программы не прерывается. Если нажата кнопка «Отмена», то выполнение программы немедленно прерывается

Остальные ошибки не прерывают работу программы.

Константа Значение Описание
ERR_ARRAY_INDEX_OUT_OF_RANGE 4002 Обращение к элементу массива, номер которого находится за пределами массива
ERR_NOT_INITIALIZED_STRING 4008 Неинициализированная строка; строке, участвующей в каком-либо выражении, не присвоено никакого значения
ERR_NOT_INITIALIZED_ARRAYSTRING 4009 Неинициализированная строка в массиве строк; строке, участвующей в каком-либо выражении, не присвоено никакого значения
ERR_NO_MEMORY_FOR_RETURNED_STR 4021 Невозможно перераспределить память для строки, возвращаемой из функции

Никогда не генерируется код ошибки ERR_NO_MQLERROR (4000).

Имеется ряд ошибок, которые случаются только в результате сбоя. При постоянном проявлении какой-либо из нижеуказанных ошибок следует связаться с разработчиками.

Константа Значение Описание
ERR_WRONG_FUNCTION_POINTER 4001 При вызове внутренней функции обнаружен неправильный указатель вызываемой функции
ERR_UNKNOWN_COMMAND 4014 Неизвестная инструкция
ERR_NOT_INITIALIZED_ARRAY 4016 Неинициализированный массив
ERR_INVALID_FUNCTION_PARAMSCNT 4050 Неверное количество параметров, передаваемых во встроенную функцию
ERR_STRING_FUNCTION_INTERNAL 4052 Ошибка при работе со строками
ERR_TRADE_ERROR 4067 Ошибка при выполнении торговой функции
ERR_SOME_OBJECT_ERROR 4207 Ошибка при работе с объектами

Существует несколько встроенных функций, которые всегда меняют значение переменной last_error.

Функция Коды ошибок
AccountFreeMarginCheck ERR_STRING_PARAMETER_EXPECTED (4062), ERR_INTEGER_PARAMETER_EXPECTED (4063), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_UNKNOWN_SYMBOL (4106), ERR_NOT_ENOUGH_MONEY (134)
OrderSend ERR_CUSTOM_INDICATOR_ERROR (4055), ERR_STRING_PARAMETER_EXPECTED (4062), ERR_INTEGER_PARAMETER_EXPECTED (4063), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INVALID_PRICE_PARAM (4107), ERR_UNKNOWN_SYMBOL (4106), ERR_TRADE_NOT_ALLOWED (4109), ERR_LONGS_NOT_ALLOWED (4110), ERR_SHORTS_NOT_ALLOWED (4111), коды от торгового сервера
OrderClose ERR_CUSTOM_INDICATOR_ERROR (4055), ERR_INTEGER_PARAMETER_EXPECTED (4063), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INVALID_PRICE_PARAM (4107), ERR_INVALID_TICKET (4108), ERR_UNKNOWN_SYMBOL (4106), ERR_TRADE_NOT_ALLOWED (4109), коды от торгового сервера
OrderCloseBy ERR_CUSTOM_INDICATOR_ERROR (4055), ERR_INTEGER_PARAMETER_EXPECTED (4063), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INVALID_TICKET (4108), ERR_UNKNOWN_SYMBOL (4106), ERR_TRADE_NOT_ALLOWED (4109), коды от торгового сервера
OrderDelete ERR_CUSTOM_INDICATOR_ERROR (4055), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INVALID_TICKET (4108), ERR_UNKNOWN_SYMBOL (4106), ERR_TRADE_NOT_ALLOWED (4109), коды от торгового сервера
OrderModify ERR_CUSTOM_INDICATOR_ERROR (4055), ERR_INTEGER_PARAMETER_EXPECTED (4063), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INVALID_PRICE_PARAM (4107), ERR_INVALID_TICKET (4108), ERR_UNKNOWN_SYMBOL (4106), ERR_TRADE_NOT_ALLOWED (4109), коды от торгового сервера
GetLastError ERR_NO_ERROR (0)

Некоторые функции меняют значение переменной last_error только в случае возникновения какой-либо ошибки.

Функция Коды ошибок
ArrayBsearch ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
ArrayCopy ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INCOMPATIBLE_ARRAYS (4056), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
ArrayCopyRates ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INCOMPATIBLE_ARRAYS (4056), ERR_STRING_PARAMETER_EXPECTED (4062),
ArrayCopySeries ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INCORRECT_SERIESARRAY_USING (4054), ERR_INCOMPATIBLE_ARRAYS (4056), ERR_STRING_PARAMETER_EXPECTED (4062), ERR_HISTORY_WILL_UPDATED (4066), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
ArrayDimension ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053)
ArrayGetAsSeries ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053)
ArrayInitialize ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
ArrayIsSeries ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053)
ArrayMaximum ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
ArrayMinimum ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
ArrayRange ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INTEGER_PARAMETER_EXPECTED (4063), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
ArrayResize ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
ArraySetAsSeries ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053)
ArraySize ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053)
ArraySort ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INCORRECT_SERIESARRAY_USING (4054), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
FileClose ERR_INVALID_FUNCTION_PARAMVALUE (4051)
FileDelete ERR_WRONG_FILE_NAME (4101), ERR_SOME_FILE_ERROR (4100)
FileFlush ERR_INVALID_FUNCTION_PARAMVALUE (4051)
FileIsEnding ERR_INVALID_FUNCTION_PARAMVALUE (4051)
FileIsLineEnding ERR_INVALID_FUNCTION_PARAMVALUE (4051)
FileOpen ERR_TOO_MANY_OPENED_FILES (4102), ERR_WRONG_FILE_NAME (4101), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_SOME_FILE_ERROR (4100), ERR_CANNOT_OPEN_FILE (4103)
FileOpenHistory ERR_TOO_MANY_OPENED_FILES (4102), ERR_WRONG_FILE_NAME (4101), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_SOME_FILE_ERROR (4100), ERR_CANNOT_OPEN_FILE (4103)
FileReadArray ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INCOMPATIBLE_FILEACCESS (4104), ERR_SOME_ARRAY_ERROR (4053), ERR_SOME_FILE_ERROR (4100), ERR_END_OF_FILE (4099)
FileReadDouble ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INCOMPATIBLE_FILEACCESS (4104), ERR_END_OF_FILE (4099)
FileReadInteger ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INCOMPATIBLE_FILEACCESS (4104), ERR_END_OF_FILE (4099)
FileReadNumber ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INCOMPATIBLE_FILEACCESS (4104), ERR_SOME_FILE_ERROR (4100), ERR_END_OF_FILE (4099)
FileReadString ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INCOMPATIBLE_FILEACCESS (4104), ERR_SOME_FILE_ERROR (4100), ERR_TOO_LONG_STRING (4011), ERR_END_OF_FILE (4099)
FileSeek ERR_INVALID_FUNCTION_PARAMVALUE (4051)
FileSize ERR_INVALID_FUNCTION_PARAMVALUE (4051)
FileTell ERR_INVALID_FUNCTION_PARAMVALUE (4051)
FileWrite ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_SOME_FILE_ERROR (4100)
FileWriteDouble ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INCOMPATIBLE_FILEACCESS (4104), ERR_SOME_FILE_ERROR (4100)
FileWriteInteger ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INCOMPATIBLE_FILEACCESS (4104), ERR_SOME_FILE_ERROR (4100)
FileWriteString ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INCOMPATIBLE_FILEACCESS (4104), ERR_SOME_FILE_ERROR (4100), ERR_STRING_PARAMETER_EXPECTED (4062)
FileWriteArray ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INCOMPATIBLE_FILEACCESS (4104), ERR_SOME_FILE_ERROR (4100),
GlobalVariableCheck ERR_STRING_PARAMETER_EXPECTED (4062)
GlobalVariableDel ERR_STRING_PARAMETER_EXPECTED (4062), ERR_GLOBAL_VARIABLES_PROCESSING (4057)
GlobalVariableGet ERR_STRING_PARAMETER_EXPECTED (4062), ERR_GLOBAL_VARIABLE_NOT_FOUND (4058)
GlobalVariablesDeleteAll ERR_STRING_PARAMETER_EXPECTED (4062), ERR_GLOBAL_VARIABLES_PROCESSING (4057)
GlobalVariableSet ERR_STRING_PARAMETER_EXPECTED (4062), ERR_GLOBAL_VARIABLES_PROCESSING (4057)
GlobalVariableSetOnCondition ERR_STRING_PARAMETER_EXPECTED (4062), ERR_GLOBAL_VARIABLE_NOT_FOUND (4058)
iCustom ERR_STRING_PARAMETER_EXPECTED (4062), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
технические индикаторы, функции доступа к таймсериям ERR_HISTORY_WILL_UPDATED (4066)
технические индикаторы OnArray ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053)
IndicatorBuffers ERR_INVALID_FUNCTION_PARAMVALUE (4051)
IndicatorDigits ERR_INVALID_FUNCTION_PARAMVALUE (4051)
IndicatorShortName ERR_STRING_PARAMETER_EXPECTED (4062), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
MarketInfo ERR_STRING_PARAMETER_EXPECTED (4062), ERR_FUNC_NOT_ALLOWED_IN_TESTING (4059), ERR_UNKNOWN_SYMBOL (4106), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
MathArccos ERR_INVALID_FUNCTION_PARAMVALUE (4051)
MathArcsin ERR_INVALID_FUNCTION_PARAMVALUE (4051)
MathMod ERR_ZERO_DIVIDE (4013)
MathSqrt ERR_INVALID_FUNCTION_PARAMVALUE (4051)
MessageBox ERR_FUNC_NOT_ALLOWED_IN_TESTING (4059), ERR_CUSTOM_INDICATOR_ERROR (4055), ERR_STRING_PARAMETER_EXPECTED (4062)
ObjectCreate ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_UNKNOWN_OBJECT_TYPE (4203), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_OBJECT_ALREADY_EXISTS (4200), ERR_NO_SPECIFIED_SUBWINDOW (4206)
ObjectDelete ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202)
ObjectDescription ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202)
ObjectFind ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204)
ObjectGet ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202), ERR_UNKNOWN_OBJECT_PROPERTY (4201)
ObjectGetFiboDescription ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_OBJECT_DOES_NOT_EXIST (4202), ERR_UNKNOWN_OBJECT_TYPE (4203), ERR_UNKNOWN_OBJECT_PROPERTY (4201)
ObjectGetShiftByValue ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202), ERR_OBJECT_COORDINATES_ERROR (4205)
ObjectGetValueByShift ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202), ERR_OBJECT_COORDINATES_ERROR (4205)
ObjectMove ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_OBJECT_DOES_NOT_EXIST (4202)
ObjectName ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_ARRAY_INDEX_OUT_OF_RANGE (4002)
ObjectSet ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202), ERR_UNKNOWN_OBJECT_PROPERTY (4201)
ObjectSetText ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202)
ObjectSetFiboDescription ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_STRING_PARAMETER_EXPECTED (4062), ERR_OBJECT_DOES_NOT_EXIST (4202), ERR_UNKNOWN_OBJECT_TYPE (4203), ERR_UNKNOWN_OBJECT_PROPERTY (4201)
ObjectType ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202)
OrderClosePrice ERR_NO_ORDER_SELECTED (4105)
OrderCloseTime ERR_NO_ORDER_SELECTED (4105)
OrderComment ERR_NO_ORDER_SELECTED (4105)
OrderCommission ERR_NO_ORDER_SELECTED (4105)
OrderExpiration ERR_NO_ORDER_SELECTED (4105)
OrderLots ERR_NO_ORDER_SELECTED (4105)
OrderMagicNumber ERR_NO_ORDER_SELECTED (4105)
OrderOpenPrice ERR_NO_ORDER_SELECTED (4105)
OrderOpenTime ERR_NO_ORDER_SELECTED (4105)
OrderPrint ERR_NO_ORDER_SELECTED (4105)
OrderProfit ERR_NO_ORDER_SELECTED (4105)
OrderStopLoss ERR_NO_ORDER_SELECTED (4105)
OrderSwap ERR_NO_ORDER_SELECTED (4105)
OrderSymbol ERR_NO_ORDER_SELECTED (4105)
OrderTakeProfit ERR_NO_ORDER_SELECTED (4105)
OrderTicket ERR_NO_ORDER_SELECTED (4105)
OrderType ERR_NO_ORDER_SELECTED (4105)
PlaySound ERR_WRONG_FILE_NAME (4101)
SendFTP ERR_FUNC_NOT_ALLOWED_IN_TESTING (4059), ERR_CUSTOM_INDICATOR_ERROR (4055), ERR_STRING_PARAMETER_EXPECTED (4062)
SendMail ERR_FUNC_NOT_ALLOWED_IN_TESTING (4059), ERR_STRING_PARAMETER_EXPECTED (4062), ERR_FUNCTION_NOT_CONFIRMED (4060), ERR_SEND_MAIL_ERROR (4061)
SetIndexArrow ERR_INVALID_FUNCTION_PARAMVALUE (4051)
SetIndexBuffer ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INCORRECT_SERIESARRAY_USING (4054), ERR_INCOMPATIBLE_ARRAYS (4056)
SetIndexDrawBegin ERR_INVALID_FUNCTION_PARAMVALUE (4051)
SetIndexEmptyValue ERR_INVALID_FUNCTION_PARAMVALUE (4051)
SetIndexLabel ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_STRING_PARAMETER_EXPECTED (4062)
SetIndexShift ERR_INVALID_FUNCTION_PARAMVALUE (4051)
SetIndexStyle ERR_INVALID_FUNCTION_PARAMVALUE (4051)
SetLevelValue ERR_INVALID_FUNCTION_PARAMVALUE (4051)
Sleep ERR_CUSTOM_INDICATOR_ERROR (4055)
StringFind ERR_STRING_PARAMETER_EXPECTED (4062)
StringGetChar ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NOT_INITIALIZED_STRING (4008), ERR_ARRAY_INDEX_OUT_OF_RANGE (4002)
StringLen ERR_STRING_PARAMETER_EXPECTED (4062)
StringSetChar ERR_STRING_PARAMETER_EXPECTED (4062), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_NOT_INITIALIZED_STRING (4008), ERR_TOO_LONG_STRING (4011), ERR_ARRAY_INDEX_OUT_OF_RANGE (4002)
StringSubstr ERR_STRING_PARAMETER_EXPECTED (4062), ERR_TOO_LONG_STRING (4011)
StringTrimLeft ERR_STRING_PARAMETER_EXPECTED (4062)
StringTrimRight ERR_STRING_PARAMETER_EXPECTED (4062)
WindowIsVisible ERR_FUNC_NOT_ALLOWED_IN_TESTING (4059)
WindowFind ERR_FUNC_NOT_ALLOWED_IN_TESTING (4059), ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NOT_INITIALIZED_STRING (4008)
WindowHandle ERR_FUNC_NOT_ALLOWED_IN_TESTING (4059), ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NOT_INITIALIZED_STRING (4008)
WindowScreenShot ERR_WRONG_FILE_NAME (4101), ERR_INVALID_FUNCTION_PARAMVALUE (4051)

Следующие функции не меняют значение переменной last_error ни при каких условиях:
AccountBalance, AccountCompany, AccountCredit, AccountCurrency, AccountEquity, AccountFreeMargin, AccountLeverage, AccountMargin, AccountName, AccountNumber, AccountProfit, AccountServer, Alert, CharToStr, Comment, Day, DayOfWeek, DayOfYear, DoubleToStr, GetTickCount, HideTestIndicators, Hour, IndicatorCounted, IsConnected, IsDemo, IsDllsAllowed, IsExpertEnabled, IsLibrariesAllowed, IsOptimization, IsStopped, IsTesting, IsTradeAllowed, IsTradeContextBusy, IsVisualMode, MathAbs, MathArctan, MathCeil, MathCos, MathExp, MathFloor, MathLog, MathMax, MathMin, MathPow, MathRand, MathRound, MathSin, MathSrand, MathTan, Minute, Month, NormalizeDouble, ObjectsDeleteAll, ObjectsTotal, OrderSelect, OrdersHistoryTotal, Period, Print, RefreshRates, Seconds, SetLevelStyle, StringConcatenate, StrToTime, StrToDouble, Symbol, TerminalCompany, TerminalName, TerminalPath, TimeCurrent, TimeDay, TimeDayOfWeek, TimeDayOfYear, TimeHour, TimeLocal, TimeMinute, TimeMonth, TimeSeconds, TimeToStr, TimeYear, UninitializeReason, WindowBarsPerChart, WindowFirstVisibleBar, WindowPriceOnDropped, WindowTimeOnDropped, WindowsTotal, WindowOnDropped, WindowRedraw, WindowXOnDropped, WindowYOnDropped, Year.

Понравилась статья? Поделить с друзьями:
  • Коды ошибок nissan pathfinder
  • Коды ошибок modbus rtu
  • Коды ошибок nissan p0826
  • Коды ошибок mitsubishi rvr
  • Коды ошибок nissan note e12