Раздел содержит следующие описания:
- Коды возврата торгового сервера – анализ результатов отправки торгового запроса, отправленного функцией OrderSend();
- Предупреждения компилятора – коды предупредительных сообщений, выводимые при компиляции (не являются ошибками);
- Ошибки компиляции – коды сообщений об ошибке при неудачной попытке компиляции;
- Ошибки времени выполнения – коды ошибок при выполнении mql5-программы, которые можно получить при помощи функции GetLastError().
Коды возврата торгового сервера
Все приказы на совершение торговых операций отправляются в виде структуры торгового запроса MqlTradeRequest с помощью функции OrderSend(). Результат выполнения этой функции помещается в структуру MqlTradeResult, поле retcode которой содержит код возврата торгового сервера.
| Код | Идентификатор | Описание |
| 10004 | TRADE_RETCODE_REQUOTE | Реквота |
| 10006 | TRADE_RETCODE_REJECT | Запрос отклонен |
| 10007 | TRADE_RETCODE_CANCEL | Запрос отменен трейдером |
| 10008 | TRADE_RETCODE_PLACED | Ордер размещен |
| 10009 | TRADE_RETCODE_DONE | Заявка выполнена |
| 10010 | TRADE_RETCODE_DONE_PARTIAL | Заявка выполнена частично |
| 10011 | TRADE_RETCODE_ERROR | Ошибка обработки запроса |
| 10012 | TRADE_RETCODE_TIMEOUT | Запрос отменен по истечению времени |
| 10013 | TRADE_RETCODE_INVALID | Неправильный запрос |
| 10014 | TRADE_RETCODE_INVALID_VOLUME | Неправильный объем в запросе |
| 10015 | TRADE_RETCODE_INVALID_PRICE | Неправильная цена в запросе |
| 10016 | TRADE_RETCODE_INVALID_STOPS | Неправильные стопы в запросе |
| 10017 | TRADE_RETCODE_TRADE_DISABLED | Торговля запрещена |
| 10018 | TRADE_RETCODE_MARKET_CLOSED | Рынок закрыт |
| 10019 | TRADE_RETCODE_NO_MONEY | Нет достаточных денежных средств для выполнения запроса |
| 10020 | TRADE_RETCODE_PRICE_CHANGED | Цены изменились |
| 10021 | TRADE_RETCODE_PRICE_OFF | Отсутствуют котировки для обработки запроса |
| 10022 | TRADE_RETCODE_INVALID_EXPIRATION | Неверная дата истечения ордера в запросе |
| 10023 | TRADE_RETCODE_ORDER_CHANGED | Состояние ордера изменилось |
| 10024 | TRADE_RETCODE_TOO_MANY_REQUESTS | Слишком частые запросы |
| 10025 | TRADE_RETCODE_NO_CHANGES | В запросе нет изменений |
| 10026 | TRADE_RETCODE_SERVER_DISABLES_AT | Автотрейдинг запрещен сервером |
| 10027 | TRADE_RETCODE_CLIENT_DISABLES_AT | Автотрейдинг запрещен клиентским терминалом |
| 10028 | TRADE_RETCODE_LOCKED | Запрос заблокирован для обработки |
| 10029 | TRADE_RETCODE_FROZEN | Ордер или позиция заморожены |
| 10030 | TRADE_RETCODE_INVALID_FILL | Указан неподдерживаемый тип исполнения ордера по остатку |
| 10031 | TRADE_RETCODE_CONNECTION | Нет соединения с торговым сервером |
| 10032 | TRADE_RETCODE_ONLY_REAL | Операция разрешена только для реальных счетов |
| 10033 | TRADE_RETCODE_LIMIT_ORDERS | Достигнут лимит на количество отложенных ордеров |
| 10034 | TRADE_RETCODE_LIMIT_VOLUME | Достигнут лимит на объем ордеров и позиций для данного символа |
| 10035 | TRADE_RETCODE_INVALID_ORDER | Неверный или запрещённый тип ордера |
| 10036 | TRADE_RETCODE_POSITION_CLOSED | Позиция с указанным POSITION_IDENTIFIER уже закрыта |
| 10038 | TRADE_RETCODE_INVALID_CLOSE_VOLUME | Закрываемый объем превышает текущий объем позиции |
| 10039 | TRADE_RETCODE_CLOSE_ORDER_EXIST | Для указанной позиции уже есть ордер на закрытие. Может возникнуть при работе в системе хеджинга:
|
| 10040 | TRADE_RETCODE_LIMIT_POSITIONS | Количество открытых позиций, которое можно одновременно иметь на счете, может быть ограничено настройками сервера. При достижении лимита в ответ на выставление ордера сервер вернет ошибку TRADE_RETCODE_LIMIT_POSITIONS. Ограничение работает по-разному в зависимости от типа учета позиций на счете:
|
| 10041 | TRADE_RETCODE_REJECT_CANCEL | Запрос на активацию отложенного ордера отклонен, а сам ордер отменен |
| 10042 | TRADE_RETCODE_LONG_ONLY | Запрос отклонен, так как на символе установлено правило «Разрешены только длинные позиции» (POSITION_TYPE_BUY) |
| 10043 | TRADE_RETCODE_SHORT_ONLY | Запрос отклонен, так как на символе установлено правило «Разрешены только короткие позиции» (POSITION_TYPE_SELL) |
| 10044 | TRADE_RETCODE_CLOSE_ONLY | Запрос отклонен, так как на символе установлено правило «Разрешено только закрывать существующие позиции« |
Предупреждения компилятора
Предупреждения компилятора носят информационный характер и не являются сообщениями об ошибках.
| Номер | Описание |
| Неполная запись даты в строке datetime | |
| Ошибочные числа в строке datetime для даты, требования: год 1970 месяц 0 день 0 | |
| Ошибочные числа в строке datetime для времени, требования: час 0 минута 0 | |
| Некорректный цвет в формате RGB: одна из компонент RGB меньше 0 или больше 255 | |
| Неизвестный символ эскейп последовательности. Известные: \n \r \t \\ \» \’ \X \x | |
| Слишком большой объем локальных переменных (>512кб) функции, уменьшите их количество | |
| Перечисление уже определено (дублирование) – члены будут добавлены к первому определению | |
| Переопределение макроса | |
| Переменная объявлена, но нигде не используется | |
| Конструктор должен иметь тип void | |
| Деструктор должен иметь тип void | |
| Константа не вмещается в диапазон целых (X>_UI64_MAX || X<_i64_min double> | |
| Слишком длинный HEX больше 16 значащих символов (обрезаются старшие полубайты) | |
| Нет ни одного полубайта в HEX строке «0x» | |
| Нет ни одной функции — нечего будет выполнять | |
| Используется неинициализированная переменная | |
| Функция не имеет тела, но и не вызывается | |
| Возможны потери данных при преобразовании типа. Пример: int x=(double)z; | |
| Потеря точности(данных) при преобразовании константы. Пример: int x=M_PI | |
| Несовпадение знаков операндов в операциях сравнения. Пример: (char)c1>(uchar)c2 | |
| Проблемы с импортом функций – требуется объявление #import либо импорт функций уже закрыт | |
| Описание слишком большое – лишние символы не будут включены в исполняемый файл | |
| Количество индикаторных буферов объявлено меньше, чем требуется | |
| Не указан цвет для отрисовки графической серии в индикаторе | |
| Нет ни одной графической серии для отображения индикатора | |
| Не обнаружена функция-обработчик ‘OnStart» в скрипте | |
| Функция-обработчик ‘OnStart» определена с неверными параметрами | |
| Функция ‘OnStart’ может быть определена только в скрипте | |
| Функция ‘OnInit’ определена с неверными параметрами | |
| Функция ‘OnInit’ не используется в скриптах | |
| Функция ‘OnDeinit’ определена с неверными параметрами | |
| Функция ‘OnDeinit’ не используется в скриптах | |
| Определены две функции ‘OnCalculate’. Будет использована OnCalculate() на одном ценовом массиве | |
| Обнаружено переполнение при вычислении сложной целочисленной константы | |
| Возможно, переменная неинициализирована. | |
| Данное объявление делает недоступным обращение к локальной переменной, объявленной на указанной строке | |
| Данное объявление делает недоступным обращение к глобальной переменной, объявленной на указанной строке | |
| Не может быть использовано для статических массивов | |
| Данное объявление делает недоступным обращение к предопределенной переменной | |
| Значение выражения всегда true/false | |
| Использование переменной или выражения типа bool в математических операциях является небезопасным | |
| Результат применения оператора унарного минуса к беззнаковому типу ulong неопределен | |
| Версия, указанная в свойстве #property version, недопустима для размещения в разделе Маркет, правильный формат #property version «XXX.YYY» | |
| Отсутствует выражение для выполнения по условию | |
| Неверный возвращаемый тип функции или некорректные параметры при объявлении функции-обработчика события | |
| Требуется явное приведение структур к одному типу | |
| Данное объявление делает недоступным прямое обращение к члену класса, объявленному на указанной строке. Доступ будет возможен только с помощью операции разрешения контекста :: | |
| Константа в двоичной записи слишком велика, старшие разряды будут отброшены | |
| Параметр в методе наследуемого класса отличается модификатором const, дочерняя функция перегрузила функцию родителя | |
| Отрицательное или слишком большое значения смещения в битовой операции сдвига, результат выполнения неопределён | |
| Функция должна вернуть значение | |
| Функция типа void не должна возвращать значение | |
| Не все варианты выполнения возвращают значение | |
| Выражения на глобальном уровне не разрешены | |
| Возможна ошибка в последовательности выполнения операций, используйте скобки для явного указания порядка | |
| Найдено два вида вызова OnCalCulate(). Вызываться будет вариант с использованием таймсерий OHLC | |
| Структура не содержит членов, размер будет приравнен 1 байту | |
| Нет обработки результата выполнения функции | |
| Индикатор, включаемый как ресурс, скомпилирован в режиме отладки. Это снижает его производительность. Для повышения скорости работы его нужно перекомпилировать | |
| Слишком большой код символа в строке, должен быть в диапазоне от 0 до 65535 | |
| Нераспознанный служебный символ в строке | |
| Не указано свойство индикатора, задающее вывод в главное окно или в отдельное подокно. Будет применено свойство #property indicator_chart_window |
Ошибки компиляции
MetaEdtior 5, редактор mql5-программ, выдает сообщения об ошибках программы, обнаруженных встроенным компилятором на стадии компиляции. Список этих ошибок приведен ниже в таблице. Для компиляции исходного кода в исполняемый нажмите F7. Программы с ошибками не могут быть скомпилированы, пока ошибки, указанные компилятором, не будут устранены.
| Номер | Описание |
| Ошибка чтения файла | |
| Ошибка открытия *.EX5 файла для записи | |
| Недостаточно свободной памяти для завершения компиляции | |
| Нераспознанная компилятором пустая синтаксическая единица | |
| Некорректное имя файла в #include | |
| Ошибка доступа к файлу в #include (возможно файл не существует) | |
| Неподходящее имя для #define | |
| Неизвестная команда препроцессора (допустимы #include,#define,#property,#import) | |
| Неизвестный для компилятора символ | |
| Функция не реализована (описание есть, тела нет) | |
| Пропущена двойная кавычка («) | |
| Пропущена открывающая угловая скобка ( | |
| Пропущена одинарная кавычка (‘) | |
| Пропущена закрывающая угловая скобка «>» | |
| Не указан тип в объявлении | |
| Нет оператора возврата return или имеется не во всех ветках выполнения | |
| Ожидалась открывающая скобка параметров вызова | |
| Ошибка записи EX5 | |
| Некорректный доступ к элементу массива | |
| Функция не имеет тип void и оператор return должен вернуть значение | |
| Некорректное объявление деструктора | |
| Отсутствует двоеточие «:» | |
| Переменная уже объявлена | |
| Переменная с таким идентификатором уже объявлена | |
| Имя переменной слишком длинное (>250 символов) | |
| Структура с таким идентификатором уже определена | |
| Структура не определена | |
| Член структуры с таким именем уже определен | |
| Нет такого члена структуры | |
| Нарушена парность квадратных скобок | |
| Ожидается открывающая круглая скобка «(« | |
| Несбалансированные фигурные скобки ( отсутствует «}» ) | |
| Сложно для компиляции (слишком большое ветвление, внутренний стек уровней переполнен) | |
| Ошибка открытия файла на чтение | |
| Недостаточно памяти для загрузки исходного файла в память | |
| Ожидается переменная | |
| Ссылка не может быть инициализирована | |
| Ожидалось присваивание (возникает при объявлении) | |
| Ожидается открывающая фигурная скобка «{« | |
| Параметр может быть только динамическим массивом | |
| Использование типа «void» недопустимо | |
| Нет пары для «)» или «]», т.е. отсутствует «(» или «[« | |
| Нет пары для «(» или «[«, т.е. отсутствует «)» или «]» | |
| Некорректная размерность массива | |
| Слишком много параметров (>64) | |
| Этот токен тут не ожидается | |
| Недопустимое использование операции (неправильные операнды) | |
| Выражение типа void недопустимо | |
| Ожидается оператор | |
| Неправильное использование break | |
| Ожидается точка с запятой «;» | |
| Ожидается запятая «,» | |
| Тип должен быть определен как класс, а не как структура | |
| Ожидалось выражение | |
| В HEX встречается «не HEX символ» или слишком длинное число (количество цифр > 511) | |
| Строка-константа имеет более 65534 символов | |
| Определение функции здесь недопустимо | |
| Неожиданный конец программы | |
| Форвардная декларация для структур запрещена | |
| Функция с таким именем уже определена и имеет иной тип возвращаемого значения | |
| Функция с таким именем уже определена и имеет иной набор параметров | |
| Функция с таким именем уже определена и реализована | |
| Перегрузка функции для данного вызова не найдена | |
| Функция с возвращаемым значением типа void не может возвращать значение | |
| Функция не определена | |
| Ожидается значение | |
| В выражении case допустимы только целочисленные константы | |
| Значение для case в этом switch уже использовано | |
| Ожидается целочисленное значение | |
| В выражении #import ожидается имя файла | |
| Выражения на глобальном уровне не допустимы | |
| Пропущена круглая скобка «)» перед «;» | |
| Слева от знака равенства предполагается переменная | |
| Результат выражения не используется | |
| Объявление переменных в case недопустимо | |
| Неявное преобразование из строки в число | |
| Неявное преобразование числа в строку | |
| Неоднозначный вызов перегруженной функции (подходят несколько перегрузок) | |
| Недопустимый else без соответствующего if | |
| Недопустимый case или default без соответствующего switch | |
| Недопустимое использование эллипсиса | |
| Инициализирующая последовательность имеет большее количество элементов чем инициализируемая переменная | |
| Ожидается константа для case | |
| Требуется константное выражение | |
| Константная переменная не может быть изменена | |
| Ожидается закрывающая скобка или запятая (объявление члена массива) | |
| Идентификатор перечисления уже используется | |
| Перечисление не может иметь модификаторов доступа (const, extern, static) | |
| Член перечисления уже объявлен с другим значением | |
| Существует переменная, определенная с таким же именем | |
| Существует структура, определенная с таким же именем | |
| Ожидается имя члена перечисления | |
| Ожидается целочисленное выражение | |
| Деление на ноль в константном выражении | |
| Неверное количество параметров в функции | |
| Параметром по ссылке должна быть переменная | |
| Ожидается переменная такого же типа для передачи по ссылке | |
| Константная переменная не может быть передана по неконстантной ссылке | |
| Требуется целочисленная положительная константа | |
| Ошибка доступа к защищенному члену класса | |
| Импорт уже определен по другому пути | |
| Исполняемый файл не создан | |
| Для индикатора не найдена точка входа ‘OnCalculate’ | |
| Оператор continue может быть использован только внутри цикла | |
| Ошибка доступа к private(закрытому) члену класса | |
| Метод структуры или класса не объявлен | |
| Ошибка доступа к private(закрытому) методу класса | |
| Копирование структур с объектами недопустимо | |
| Выход индекса за границы массива | |
| Недопустима инициализация массивов в объявлении структуры или класса | |
| Конструктор класса не может иметь параметров | |
| Деструктор класса не может иметь параметров | |
| Метод класса или структуры с таким именем и параметрами уже объявлен | |
| Ожидается операнд | |
| Метод класса или структуры с таким именем есть, но с другими параметрами (объявление!=реализация) | |
| Импортируемая функция не описана | |
| Функция ZeroMemory() не применима для классов с защищенными членами или наследованием | |
| Неоднозначный вызов перегруженной функции (точное совпадение параметров для нескольких перегрузок) | |
| Ожидается имя переменной | |
| Ссылку нельзя объявить в этом месте | |
| Уже используется в качестве имени перечисления | |
| Ожидается класс или структура | |
| Нельзя вызывать delete для удаления массива | |
| Ожидается оператор ‘ while ‘ | |
| В delete должен быть указатель | |
| default для этого switch уже есть | |
| Синтаксическая ошибка | |
| Escape-последовательность может встретиться только в строках ( начинается с ‘\’ ) | |
| Требуется массив – квадратная скобка ‘[‘ не относится к массиву либо в качестве параметра-массива подают не массив | |
| Не может быть инициализировано посредством инициализирующей последовательности | |
| Импорт не определен | |
| Ошибка оптимизатора на синтаксическом дереве | |
| Объявлено слишком много структур (упростите программу) | |
| Преобразование параметра недопустимо | |
| Некорректное использование оператора delete | |
| Нельзя объявить указатель на ссылку | |
| Нельзя объявить ссылку на ссылку | |
| Нельзя объявить указатель на указатель | |
| Недопустимо объявление структуры в списке параметров | |
| Недопустимая операция приведения типов | |
| Указатель можно объявить только для класса или структуры | |
| Необъявленный идентификатор | |
| Ошибка оптимизатора исполняемого кода | |
| Ошибка генерации исполняемого кода | |
| Недопустимое выражение для оператора switch | |
| Переполнение пула строковых констант, упростите программу | |
| Невозможно преобразовать к перечислению | |
| Нельзя использовать virtual для данных (членов класса или структуры) | |
| Нельзя вызвать защищенный метод класса | |
| Переопределяемая виртуальная функция возвращает другой тип | |
| Класс нельзя наследовать от структуры | |
| Структуру нельзя наследовать от класса | |
| Конструктор не может быть виртуальным (спецификатор virtual недопустим) | |
| Структура не может иметь виртуальных методов | |
| Функция должна иметь тело | |
| Перегрузка системных функций (функций терминала) запрещена | |
| Спецификатор const недопустим для функций, не являющихся членом класса или структуры | |
| Нельзя менять члены класса в константном методе | |
| Неподходящая инициализирующая последовательность | |
| Пропущено значение по умолчанию для параметра (специфика объявления параметров по умолчанию) | |
| Переопределение параметра по умолчанию (в объявлении и реализации разные значения) | |
| Нельзя вызвать неконстантный метод для константного объекта | |
| Для доступа к членам требуется объект (поставлена точка для не класса/структуры) | |
| Имя уже объявленной структуры нельзя использовать при объявлении | |
| Неразрешенное преобразование (при закрытом наследовании) | |
| Структуры и массивы не могут быть использованы в качестве input-переменных | |
| Спецификатор const недопустим для конструктора/деструктора | |
| Неправильное строковое выражение для типа datetime | |
| Неизвестное свойство (#property) | |
| Некорректное значение для свойства | |
| Некорректный индекс для свойства в #property | |
| Пропущен параметр вызова – | |
| Объект должен быть передан по ссылке | |
| Массив должен быть передан по ссылке | |
| Функция была декларирована как экспортируемая | |
| Функция не была декларирована как экспортируемая | |
| Экспортировать импортируемую функцию нельзя | |
| Импортируемая функция не может иметь такого параметра (нельзя передавать указатель, класс или структуру, содержащую динамический массив, указатель, класс и т.д.) | |
| Должен быть класс | |
| Секция #import не закрыта | |
| Несоответствие типов | |
| extern-переменная уже инициализирована | |
| Не найдено ни одной экспортируемой функции или стандартной точки входа | |
| Явный вызов конструктора запрещен | |
| Метод был объявлен константным | |
| Метод не был объявлен константным | |
| Некорректный размер ресурсного файла | |
| Некорректное имя ресурса | |
| Ошибка открытия файла ресурса | |
| Ошибка чтения файла ресурса | |
| Неизвестный тип ресурса | |
| Некорректный путь к файлу ресурса | |
| Указанное имя ресурса уже используется | |
| Ожидались параметры макроса | |
| После имени макроса должен быть пробел | |
| Ошибка в описании параметров макроса | |
| Неверное число параметров при использовании макроса | |
| Превышение максимального количества(16) параметров для макроса | |
| Макрос слишком сложный, требуется упрощение | |
| Параметром EnumToString() может быть только перечисление | |
| Имя ресурса слишком длинное | |
| Неподдерживаемый формат изображения (допустим только BMP-формат с глубиной цвета 24 или 32 бита) | |
| Объявление массива внутри оператора запрещено | |
| Функцию можно определить только на глобальном уровне | |
| Данное объявление недопустимо для текущей области видимости (области определения) | |
| Инициализация статичных переменных значениями локальных недопустима | |
| Недопустимое объявление массива объектов, не имеющих конструктора по умолчанию | |
| Список инициализации разрешен только для конструкторов | |
| Отсутствует определение функции после списка инициализации | |
| Список инициализации пуст | |
| Инициализация массива в конструкторе запрещена | |
| В списке инициализации запрещено инициализировать члены родительского класса | |
| Ожидалось выражение целого типа | |
| Требуемый объем памяти для массива превышает максимально допустимое значение | |
| Требуемый объем памяти для структуры превышает максимально допустимое значение | |
| Требуемый объем памяти для переменных, объявленных на глобальном уровне, превышает максимально допустимое значение | |
| Требуемый объем памяти для локальных переменных превышает максимально допустимое значение | |
| Конструктор не определен | |
| Недопустимое имя для файла иконки | |
| Не удалось открыть файла иконки по указанному пути | |
| Файл иконки некорректен и не соответствует формату ICO | |
| Повторная инициализация члена в конструкторе класса/структуры с помощью списка инициализации | |
| Инициализация статических членов в списке инициализации конструктора не допускается | |
| Инициализация нестатического члена класса/структуры на глобальном уровне запрещена | |
| Имя метода класса/структуры совпадает с ранее объявленным именем члена | |
| Имя члена класса/структуры совпадает с ранее объявленным именем метода | |
| Виртуальная функция не может быть объявлена как static | |
| Модификатор const недопустим для статической функции | |
| Конструктор или деструктор не могут быть статическими | |
| Нельзя обращаться к нестатическому члену/методу класса или структуры из статической функции | |
| После ключевого слова operator ожидается перегружаемая операция (+,-,[],++,— и т.д.) | |
| Не все операции можно перегружать в MQL5 | |
| Определение не соответствует объявлению | |
| Указано неверное количество параметров для оператора | |
| Не обнаружено ни одной функции-обработчика события | |
| Методы не могут быть экспортируемыми | |
| Нельзя приводить указатель на константный объект к указателю на неконстантный объект | |
| Шаблоны классов пока не поддерживаются | |
| Перегрузка шаблонов функций пока не поддерживается | |
| Невозможно применить шаблон функции | |
| Неоднозначный параметр в шаблоне функции (подходят несколько типов параметра) | |
| Невозможно определить к какому типу параметра приводить аргумент шаблона функции | |
| Неверное количество параметров в шаблоне функции | |
| Шаблон функции не может быть виртуальным | |
| Шаблоны функций не могут быть экспортированы | |
| Нельзя импортировать шаблоны функций | |
| Структуры, содержащие объекты, недопустимы | |
| Массивы строк и структуры, содержащие объекты, недопустимы | |
| Статический член класса/структуры должен быть явно инициализирован | |
| Ограничение компилятора: строка не может содержать более 65 535 символов | |
| Несогласованные #ifdef/#endif | |
| Результатом выполнения функции не может быть объект класса, так как отсутствует конструктор копирования | |
| Нельзя использовать нестатические члены и/или методы при инициализации статической переменной | |
| OnTesterInit() нельзя использовать без объявления обработчика OnTesterDeinit() | |
| Имя локальной переменной совпадает с именем одного из параметров функции | |
| Нельзя использовать макросы __FUNCSIG__ и __FUNCTION__ вне тела функции | |
| Недопустимый возвращаемый тип. Например, такая ошибка будет выдана для функций, импортированных из DLL, которые возвращают структуру или указатель в качестве результата | |
| Ошибка при использовании шаблона | |
| Не используется | |
| Недопустимый синтаксис при объявлении чисто виртуальной функции, разрешено «=NULL» или «=0» | |
| Только виртуальные функции могут быть объявлены со спецификатором чисто виртуальной функции («=NULL» или «=0») | |
| Нельзя создать экземпляр абстрактного класса | |
| Для динамического приведения с помощью оператора dynamic_cast типом назначения должен быть указатель на пользовательский тип | |
| Ожидается тип «указатель на функцию» | |
| Указатели на методы не поддерживаются | |
| Ошибка – невозможно определить тип указателя на функцию | |
| Приведение типа недоступно из-за закрытого наследования | |
| Переменная с модификатором const должна быть проинициализирована при объявлении | |
| В интерфейсе могут быть объявлены только методы с публичным доступом | |
| Недопустимое вложение интерфейса в другой интерфейс | |
| Интерфейс может наследоваться только от другого интерфейса | |
| Ожидается интерфейс | |
| Интерфейсы поддерживают только публичное наследование | |
| Интерфейс не может содержать члены | |
| Нельзя создавать объекты интерфейса напрямую, только через наследование |
Ошибки времени выполнения
GetLastError() – функция, возвращающая код последней ошибки, которая хранится в предопределенной переменной _LastError. Значение этой переменной можно сбросить в ноль функцией ResetLastError().
| Константа | Значение | Описание |
| ERR_SUCCESS | 0 | Операция выполнена успешно |
| ERR_INTERNAL_ERROR | 4001 | Неожиданная внутренняя ошибка |
| ERR_WRONG_INTERNAL_PARAMETER | 4002 | Ошибочный параметр при внутреннем вызове функции клиентского терминала |
| ERR_INVALID_PARAMETER | 4003 | Ошибочный параметр при вызове системной функции |
| ERR_NOT_ENOUGH_MEMORY | 4004 | Недостаточно памяти для выполнения системной функции |
| ERR_STRUCT_WITHOBJECTS_ORCLASS | 4005 | Структура содержит объекты строк и/или динамических массивов и/или структуры с такими объектами и/или классы |
| ERR_INVALID_ARRAY | 4006 | Массив неподходящего типа, неподходящего размера или испорченный объект динамического массива |
| ERR_ARRAY_RESIZE_ERROR | 4007 | Недостаточно памяти для перераспределения массива либо попытка изменения размера статического массива |
| ERR_STRING_RESIZE_ERROR | 4008 | Недостаточно памяти для перераспределения строки |
| ERR_NOTINITIALIZED_STRING | 4009 | Неинициализированная строка |
| ERR_INVALID_DATETIME | 4010 | Неправильное значение даты и/или времени |
| ERR_ARRAY_BAD_SIZE | 4011 | Запрашиваемый размер массива превышает 2 гигабайта |
| ERR_INVALID_POINTER | 4012 | Ошибочный указатель |
| ERR_INVALID_POINTER_TYPE | 4013 | Ошибочный тип указателя |
| ERR_FUNCTION_NOT_ALLOWED | 4014 | Системная функция не разрешена для вызова |
| ERR_RESOURCE_NAME_DUPLICATED | 4015 | Совпадении имени динамического и статического ресурсов |
| ERR_RESOURCE_NOT_FOUND | 4016 | Ресурс с таким именем в EX5 не найден |
| ERR_RESOURCE_UNSUPPOTED_TYPE | 4017 | Неподдерживаемый тип ресурса или размер более 16 MB |
| ERR_RESOURCE_NAME_IS_TOO_LONG | 4018 | Имя ресурса превышает 63 символа |
| ERR_MATH_OVERFLOW | 4019 | При вычислении математической функции произошло переполнение |
| Графики |
|
|
| ERR_CHART_WRONG_ID | 4101 | Ошибочный идентификатор графика |
| ERR_CHART_NO_REPLY | 4102 | График не отвечает |
| ERR_CHART_NOT_FOUND | 4103 | График не найден |
| ERR_CHART_NO_EXPERT | 4104 | У графика нет эксперта, который мог бы обработать событие |
| ERR_CHART_CANNOT_OPEN | 4105 | Ошибка открытия графика |
| ERR_CHART_CANNOT_CHANGE | 4106 | Ошибка при изменении для графика символа и периода |
| ERR_CHART_WRONG_PARAMETER | 4107 | Ошибочное значение параметра для функции по работе с графиком |
| ERR_CHART_CANNOT_CREATE_TIMER | 4108 | Ошибка при создании таймера |
| ERR_CHART_WRONG_PROPERTY | 4109 | Ошибочный идентификатор свойства графика |
| ERR_CHART_SCREENSHOT_FAILED | 4110 | Ошибка при создании скриншота |
| ERR_CHART_NAVIGATE_FAILED | 4111 | Ошибка навигации по графику |
| ERR_CHART_TEMPLATE_FAILED | 4112 | Ошибка при применении шаблона |
| ERR_CHART_WINDOW_NOT_FOUND | 4113 | Подокно, содержащее указанный индикатор, не найдено |
| ERR_CHART_INDICATOR_CANNOT_ADD | 4114 | Ошибка при добавлении индикатора на график |
| ERR_CHART_INDICATOR_CANNOT_DEL | 4115 | Ошибка при удалении индикатора с графика |
| ERR_CHART_INDICATOR_NOT_FOUND | 4116 | Индикатор не найден на указанном графике |
| Графические объекты |
|
|
| ERR_OBJECT_ERROR | 4201 | Ошибка при работе с графическим объектом |
| ERR_OBJECT_NOT_FOUND | 4202 | Графический объект не найден |
| ERR_OBJECT_WRONG_PROPERTY | 4203 | Ошибочный идентификатор свойства графического объекта |
| ERR_OBJECT_GETDATE_FAILED | 4204 | Невозможно получить дату, соответствующую значению |
| ERR_OBJECT_GETVALUE_FAILED | 4205 | Невозможно получить значение, соответствующее дате |
| MarketInfo |
|
|
| ERR_MARKET_UNKNOWN_SYMBOL | 4301 | Неизвестный символ |
| ERR_MARKET_NOT_SELECTED | 4302 | Символ не выбран в MarketWatch |
| ERR_MARKET_WRONG_PROPERTY | 4303 | Ошибочный идентификатор свойства символа |
| ERR_MARKET_LASTTIME_UNKNOWN | 4304 | Время последнего тика неизвестно (тиков не было) |
| ERR_MARKET_SELECT_ERROR | 4305 | Ошибка добавления или удаления символа в MarketWatch |
| Доступ к истории |
|
|
| ERR_HISTORY_NOT_FOUND | 4401 | Запрашиваемая история не найдена |
| ERR_HISTORY_WRONG_PROPERTY | 4402 | Ошибочный идентификатор свойства истории |
| ERR_HISTORY_TIMEOUT | 4403 | Превышен таймаут при запросе истории |
| ERR_HISTORY_BARS_LIMIT | 4404 | Количество запрашиваемых баров ограничено настройками терминала |
| ERR_HISTORY_LOAD_ERRORS | 4405 | Множество ошибок при загрузке истории |
| ERR_HISTORY_SMALL_BUFFER | 4407 | Принимающий массив слишком мал чтобы вместить все запрошенные данные |
| Global_Variables |
|
|
| ERR_GLOBALVARIABLE_NOT_FOUND | 4501 | Глобальная переменная клиентского терминала не найдена |
| ERR_GLOBALVARIABLE_EXISTS | 4502 | Глобальная переменная клиентского терминала с таким именем уже существует |
| ERR_GLOBALVARIABLE_NOT_MODIFIED | 4503 | Не было модификаций глобальных переменных |
| ERR_GLOBALVARIABLE_CANNOTREAD | 4504 | Не удалось открыть и прочитать файл со значениями глобальных переменных |
| ERR_GLOBALVARIABLE_CANNOTWRITE | 4505 | Не удалось записать файл со значениями глобальных переменных |
| ERR_MAIL_SEND_FAILED | 4510 | Не удалось отправить письмо |
| ERR_PLAY_SOUND_FAILED | 4511 | Не удалось воспроизвести звук |
| ERR_MQL5_WRONG_PROPERTY | 4512 | Ошибочный идентификатор свойства программы |
| ERR_TERMINAL_WRONG_PROPERTY | 4513 | Ошибочный идентификатор свойства терминала |
| ERR_FTP_SEND_FAILED | 4514 | Не удалось отправить файл по ftp |
| ERR_NOTIFICATION_SEND_FAILED | 4515 | Не удалось отправить уведомление |
| ERR_NOTIFICATION_WRONG_PARAMETER | 4516 | Неверный параметр для отправки уведомления – в функцию SendNotification() передали пустую строку или NULL |
| ERR_NOTIFICATION_WRONG_SETTINGS | 4517 | Неверные настройки уведомлений в терминале (не указан ID или не выставлено разрешение) |
| ERR_NOTIFICATION_TOO_FREQUENT | 4518 | Слишком частая отправка уведомлений |
| ERR_FTP_NOSERVER | 4519 | Не указан FTP сервер |
| ERR_FTP_NOLOGIN | 4520 | Не указан FTP логин |
| ERR_FTP_FILE_ERROR | 4521 | Не найден файл в директории MQL5\Files для отправки на FTP сервер |
| ERR_FTP_CONNECT_FAILED | 4522 | Ошибка при подключении к FTP серверу |
| ERR_FTP_CHANGEDIR | 4523 | На FTP сервере не найдена директория для выгрузки файла |
| ERR_FTP_CLOSED | 4524 | Подключение к FTP серверу закрыто |
| Буферы пользовательских индикаторов |
|
|
| ERR_BUFFERS_NO_MEMORY | 4601 | Недостаточно памяти для распределения индикаторных буферов |
| ERR_BUFFERS_WRONG_INDEX | 4602 | Ошибочный индекс своего индикаторного буфера |
| Свойства пользовательских индикаторов |
|
|
| ERR_CUSTOM_WRONG_PROPERTY | 4603 | Ошибочный идентификатор свойства пользовательского индикатора |
| Account |
|
|
| ERR_ACCOUNT_WRONG_PROPERTY | 4701 | Ошибочный идентификатор свойства счета |
| ERR_TRADE_WRONG_PROPERTY | 4751 | Ошибочный идентификатор свойства торговли |
| ERR_TRADE_DISABLED | 4752 | Торговля для эксперта запрещена |
| ERR_TRADE_POSITION_NOT_FOUND | 4753 | Позиция не найдена |
| ERR_TRADE_ORDER_NOT_FOUND | 4754 | Ордер не найден |
| ERR_TRADE_DEAL_NOT_FOUND | 4755 | Сделка не найдена |
| ERR_TRADE_SEND_FAILED | 4756 | Не удалось отправить торговый запрос |
| ERR_TRADE_CALC_FAILED | 4758 | Не удалось вычислить значение прибыли или маржи |
| Индикаторы |
|
|
| ERR_INDICATOR_UNKNOWN_SYMBOL | 4801 | Неизвестный символ |
| ERR_INDICATOR_CANNOT_CREATE | 4802 | Индикатор не может быть создан |
| ERR_INDICATOR_NO_MEMORY | 4803 | Недостаточно памяти для добавления индикатора |
| ERR_INDICATOR_CANNOT_APPLY | 4804 | Индикатор не может быть применен к другому индикатору |
| ERR_INDICATOR_CANNOT_ADD | 4805 | Ошибка при добавлении индикатора |
| ERR_INDICATOR_DATA_NOT_FOUND | 4806 | Запрошенные данные не найдены |
| ERR_INDICATOR_WRONG_HANDLE | 4807 | Ошибочный хэндл индикатора |
| ERR_INDICATOR_WRONG_PARAMETERS | 4808 | Неправильное количество параметров при создании индикатора |
| ERR_INDICATOR_PARAMETERS_MISSING | 4809 | Отсутствуют параметры при создании индикатора |
| ERR_INDICATOR_CUSTOM_NAME | 4810 | Первым параметром в массиве должно быть имя пользовательского индикатора |
| ERR_INDICATOR_PARAMETER_TYPE | 4811 | Неправильный тип параметра в массиве при создании индикатора |
| ERR_INDICATOR_WRONG_INDEX | 4812 | Ошибочный индекс запрашиваемого индикаторного буфера |
| Стакан цен |
|
|
| ERR_BOOKS_CANNOT_ADD | 4901 | Стакан цен не может быть добавлен |
| ERR_BOOKS_CANNOT_DELETE | 4902 | Стакан цен не может быть удален |
| ERR_BOOKS_CANNOT_GET | 4903 | Данные стакана цен не могут быть получены |
| ERR_BOOKS_CANNOT_SUBSCRIBE | 4904 | Ошибка при подписке на получение новых данных стакана цен |
| Файловые операции |
|
|
| ERR_TOO_MANY_FILES | 5001 | Не может быть открыто одновременно более 64 файлов |
| ERR_WRONG_FILENAME | 5002 | Недопустимое имя файла |
| ERR_TOO_LONG_FILENAME | 5003 | Слишком длинное имя файла |
| ERR_CANNOT_OPEN_FILE | 5004 | Ошибка открытия файла |
| ERR_FILE_CACHEBUFFER_ERROR | 5005 | Недостаточно памяти для кеша чтения |
| ERR_CANNOT_DELETE_FILE | 5006 | Ошибка удаления файла |
| ERR_INVALID_FILEHANDLE | 5007 | Файл с таким хэндлом уже был закрыт, либо не открывался вообще |
| ERR_WRONG_FILEHANDLE | 5008 | Ошибочный хэндл файла |
| ERR_FILE_NOTTOWRITE | 5009 | Файл должен быть открыт для записи |
| ERR_FILE_NOTTOREAD | 5010 | Файл должен быть открыт для чтения |
| ERR_FILE_NOTBIN | 5011 | Файл должен быть открыт как бинарный |
| ERR_FILE_NOTTXT | 5012 | Файл должен быть открыт как текстовый |
| ERR_FILE_NOTTXTORCSV | 5013 | Файл должен быть открыт как текстовый или CSV |
| ERR_FILE_NOTCSV | 5014 | Файл должен быть открыт как CSV |
| ERR_FILE_READERROR | 5015 | Ошибка чтения файла |
| ERR_FILE_BINSTRINGSIZE | 5016 | Должен быть указан размер строки, так как файл открыт как бинарный |
| ERR_INCOMPATIBLE_FILE | 5017 | Для строковых массивов должен быть текстовый файл, для остальных – бинарный |
| ERR_FILE_IS_DIRECTORY | 5018 | Это не файл, а директория |
| ERR_FILE_NOT_EXIST | 5019 | Файл не существует |
| ERR_FILE_CANNOT_REWRITE | 5020 | Файл не может быть переписан |
| ERR_WRONG_DIRECTORYNAME | 5021 | Ошибочное имя директории |
| ERR_DIRECTORY_NOT_EXIST | 5022 | Директория не существует |
| ERR_FILE_ISNOT_DIRECTORY | 5023 | Это файл, а не директория |
| ERR_CANNOT_DELETE_DIRECTORY | 5024 | Директория не может быть удалена |
| ERR_CANNOT_CLEAN_DIRECTORY | 5025 | Не удалось очистить директорию (возможно, один или несколько файлов заблокированы и операция удаления не удалась) |
| ERR_FILE_WRITEERROR | 5026 | Не удалось записать ресурс в файл |
| ERR_FILE_ENDOFFILE | 5027 | Не удалось прочитать следующую порцию данных из CSV-файла (FileReadString, FileReadNumber, FileReadDatetime, FileReadBool), так как достигнут конец файла |
| Преобразование строк |
|
|
| ERR_NO_STRING_DATE | 5030 | В строке нет даты |
| ERR_WRONG_STRING_DATE | 5031 | В строке ошибочная дата |
| ERR_WRONG_STRING_TIME | 5032 | В строке ошибочное время |
| ERR_STRING_TIME_ERROR | 5033 | Ошибка преобразования строки в дату |
| ERR_STRING_OUT_OF_MEMORY | 5034 | Недостаточно памяти для строки |
| ERR_STRING_SMALL_LEN | 5035 | Длина строки меньше, чем ожидалось |
| ERR_STRING_TOO_BIGNUMBER | 5036 | Слишком большое число, больше, чем ULONG_MAX |
| ERR_WRONG_FORMATSTRING | 5037 | Ошибочная форматная строка |
| ERR_TOO_MANY_FORMATTERS | 5038 | Форматных спецификаторов больше, чем параметров |
| ERR_TOO_MANY_PARAMETERS | 5039 | Параметров больше, чем форматных спецификаторов |
| ERR_WRONG_STRING_PARAMETER | 5040 | Испорченный параметр типа string |
| ERR_STRINGPOS_OUTOFRANGE | 5041 | Позиция за пределами строки |
| ERR_STRING_ZEROADDED | 5042 | К концу строки добавлен 0, бесполезная операция |
| ERR_STRING_UNKNOWNTYPE | 5043 | Неизвестный тип данных при конвертации в строку |
| ERR_WRONG_STRING_OBJECT | 5044 | Испорченный объект строки |
| Работа с массивами |
|
|
| ERR_INCOMPATIBLE_ARRAYS | 5050 | Копирование несовместимых массивов. Строковый массив может быть скопирован только в строковый, а числовой массив – в числовой |
| ERR_SMALL_ASSERIES_ARRAY | 5051 | Приемный массив объявлен как AS_SERIES, и он недостаточного размера |
| ERR_SMALL_ARRAY | 5052 | Слишком маленький массив, стартовая позиция за пределами массива |
| ERR_ZEROSIZE_ARRAY | 5053 | Массив нулевой длины |
| ERR_NUMBER_ARRAYS_ONLY | 5054 | Должен быть числовой массив |
| ERR_ONEDIM_ARRAYS_ONLY | 5055 | Должен быть одномерный массив |
| ERR_SERIES_ARRAY | 5056 | Таймсерия не может быть использована |
| ERR_DOUBLE_ARRAY_ONLY | 5057 | Должен быть массив типа double |
| ERR_FLOAT_ARRAY_ONLY | 5058 | Должен быть массив типа float |
| ERR_LONG_ARRAY_ONLY | 5059 | Должен быть массив типа long |
| ERR_INT_ARRAY_ONLY | 5060 | Должен быть массив типа int |
| ERR_SHORT_ARRAY_ONLY | 5061 | Должен быть массив типа short |
| ERR_CHAR_ARRAY_ONLY | 5062 | Должен быть массив типа char |
| ERR_STRING_ARRAY_ONLY | 5063 | Должен быть массив типа string |
| Работа с OpenCL |
|
|
| ERR_OPENCL_NOT_SUPPORTED | 5100 | Функции OpenCL на данном компьютере не поддерживаются |
| ERR_OPENCL_INTERNAL | 5101 | Внутренняя ошибка при выполнении OpenCL |
| ERR_OPENCL_INVALID_HANDLE | 5102 | Неправильный хэндл OpenCL |
| ERR_OPENCL_CONTEXT_CREATE | 5103 | Ошибка при создании контекста OpenCL |
| ERR_OPENCL_QUEUE_CREATE | 5104 | Ошибка создания очереди выполнения в OpenCL |
| ERR_OPENCL_PROGRAM_CREATE | 5105 | Ошибка при компиляции программы OpenCL |
| ERR_OPENCL_TOO_LONG_KERNEL_NAME | 5106 | Слишком длинное имя точки входа (кернел OpenCL) |
| ERR_OPENCL_KERNEL_CREATE | 5107 | Ошибка создания кернел — точки входа OpenCL |
| ERR_OPENCL_SET_KERNEL_PARAMETER | 5108 | Ошибка при установке параметров для кернел OpenCL (точки входа в программу OpenCL) |
| ERR_OPENCL_EXECUTE | 5109 | Ошибка выполнения программы OpenCL |
| ERR_OPENCL_WRONG_BUFFER_SIZE | 5110 | Неверный размер буфера OpenCL |
| ERR_OPENCL_WRONG_BUFFER_OFFSET | 5111 | Неверное смещение в буфере OpenCL |
| ERR_OPENCL_BUFFER_CREATE | 5112 | Ошибка создания буфера OpenCL |
| ERR_OPENCL_TOO_MANY_OBJECTS | 5113 | Превышено максимальное число OpenCL объектов |
| ERR_OPENCL_SELECTDEVICE | 5114 | Ошибка выбора OpenCL устройства |
| Работа с WebRequest |
|
|
| ERR_WEBREQUEST_INVALID_ADDRESS | 5200 | URL не прошел проверку |
| ERR_WEBREQUEST_CONNECT_FAILED | 5201 | Не удалось подключиться к указанному URL |
| ERR_WEBREQUEST_TIMEOUT | 5202 | Превышен таймаут получения данных |
| ERR_WEBREQUEST_REQUEST_FAILED | 5203 | Ошибка в результате выполнения HTTP запроса |
| Пользовательские символы |
|
|
| ERR_NOT_CUSTOM_SYMBOL | 5300 | Должен быть указан пользовательский символ |
| ERR_CUSTOM_SYMBOL_WRONG_NAME | 5301 | Некорректное имя пользовательского символа. В имени символа можно использовать только латинские буквы без знаков препинания, пробелов и спецсимволов (допускаются «.», «_», «&» и «#»). Не рекомендуется использовать символы , :, «, /,\, |, ?, *. |
| ERR_CUSTOM_SYMBOL_NAME_LONG | 5302 | Слишком длинное имя для пользовательского символа. Длина имени символа не должна превышать 32 знака с учётом завершающего 0 |
| ERR_CUSTOM_SYMBOL_PATH_LONG | 5303 | Слишком длинный путь для пользовательского символа. Длина пути не более 128 знаков с учётом «Custom\\», имени символа, разделителей групп и завершающего 0 |
| ERR_CUSTOM_SYMBOL_EXIST | 5304 | Пользовательский символ с таким именем уже существует |
| ERR_CUSTOM_SYMBOL_ERROR | 5305 | Ошибка при создании, удалении или изменении пользовательского символа |
| ERR_CUSTOM_SYMBOL_SELECTED | 5306 | Попытка удалить пользовательский символ, выбранный в обзоре рынка (Market Watch) |
| ERR_CUSTOM_SYMBOL_PROPERTY_WRONG | 5307 | Неправильное свойство пользовательского символа |
| ERR_CUSTOM_SYMBOL_PARAMETER_ERROR | 5308 | Ошибочный параметр при установке свойства пользовательского символа |
| ERR_CUSTOM_SYMBOL_PARAMETER_LONG | 5309 | Слишком длинный строковый параметр при установке свойства пользовательского символа |
| ERR_CUSTOM_TICKS_WRONG_ORDER | 5310 | Не упорядоченный по времени массив тиков |
| Пользовательские ошибки |
|
|
| 65536 | С этого кода начинаются ошибки, задаваемые пользователем |