Стандартные константы

Для облегчения написания программ, а также для удобства восприятия исходных текстов программ, в языке MQL4 предусмотрены предопределенные стандартные константы.

Стандартные константы являются аналогом макроподстановок и имеют тип int.

Константы сгруппированы по своему назначению

Таймсерии

Идентификаторы таймсерий используются в функциях ArrayCopySeries(), iHighest() и iLowest(). Mогут быть одной из следующих величин:

Константа Значение Описание
MODE_OPEN 0 Цена открытия
MODE_LOW 1 Минимальная цена
MODE_HIGH 2 Максимальная цена
MODE_CLOSE 3 Цена закрытия
MODE_VOLUME 4 Объем (количество тиков, сформировавших бар)
MODE_TIME 5 Время открытия бара

Периоды графиков

Период графика может быть любым из следующих величин:

Константа Значение Описание
PERIOD_M1 1 1 минута
PERIOD_M5 5 5 минут
PERIOD_M15 15 15 минут
PERIOD_M30 30 30 минут
PERIOD_H1 60 1 час
PERIOD_H4 240 4 часа
PERIOD_D1 1440 1 день
PERIOD_W1 10080 1 неделя
PERIOD_MN1 43200 1 месяц
0 (ноль) 0 Период текущего графика

Торговые операции

Тип операций для функции OrderSend(). Mожет быть любым из следующих величин:

Константа Значение Описание
OP_BUY 0 Покупка
OP_SELL 1 Продажа
OP_BUYLIMIT 2 Отложенный ордер BUY LIMIT
OP_SELLLIMIT 3 Отложенный ордер SELL LIMIT
OP_BUYSTOP 4 Отложенный ордер BUY STOP
OP_SELLSTOP 5 Отложенный ордер SELL STOP

Ценовые константы

Используемая цена для расчёта индикаторов может принимать любое из следующих значений:

Константа Значение Описание
PRICE_CLOSE 0 Цена закрытия
PRICE_OPEN 1 Цена открытия
PRICE_HIGH 2 Максимальная цена
PRICE_LOW 3 Минимальная цена
PRICE_MEDIAN 4 Средняя цена, (high+low)/2
PRICE_TYPICAL 5 Типичная цена, (high+low+close)/3
PRICE_WEIGHTED 6 Взвешенная цена закрытия, (high+low+close+close)/4

MarketInfo

Идентификаторы запроса, используемые в функции MarketInfo(). Mогут быть одной из следующего величин:

Константа Значение Описание
MODE_LOW 1 Минимальная дневная цена
MODE_HIGH 2 Максимальная дневная цена
MODE_TIME 5 Время поступления последней котировки
MODE_BID 9 Последняя поступившая цена предложения. Для текущего инструмента хранится в предопределенной переменной Bid
MODE_ASK 10 Последняя поступившая цена продажи. Для текущего инструмента хранится в предопределенной переменной Ask
MODE_POINT 11 Размер пункта в валюте котировки. Для текущего инструмента хранится в предопределенной переменной Point
MODE_DIGITS 12 Количество цифр после десятичного точки в цене инструмента. Для текущего инструмента хранится в предопределенной переменной Digits
MODE_SPREAD 13 Спрэд в пунктах
MODE_STOPLEVEL 14 Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах
MODE_LOTSIZE 15 Размер контракта в базовой валюте инструмента
MODE_TICKVALUE 16 Размер минимального изменения цены инструмента в валюте депозита
MODE_TICKSIZE 17 Минимальный шаг изменения цены инструмента в пунктах
MODE_SWAPLONG 18 Размер свопа для длинных позиций
MODE_SWAPSHORT 19 Размер свопа для коротких позиций
MODE_STARTING 20 Календарная дата начала торгов (обычно используется для фьючерсов)
MODE_EXPIRATION 21 Календарная дата конца торгов (обычно используется для фьючерсов)
MODE_TRADEALLOWED 22 Разрешение торгов по указанному инструменту
MODE_MINLOT 23 Минимальный размер лота
MODE_LOTSTEP 24 Шаг изменения размера лота
MODE_MAXLOT 25 Максимальный размер лота
MODE_SWAPTYPE 26 Метод вычисления свопов. 0 — в пунктах; 1 — в базовой валюте инструмента; 2 — в процентах; 3 — в валюте залоговых средств.
MODE_PROFITCALCMODE 27 Способ расчета прибыли. 0 — Forex; 1 — CFD; 2 — Futures
MODE_MARGINCALCMODE 28 Способ расчета залоговых средств. 0 — Forex; 1 — CFD; 2 — Futures; 3 — CFD на индексы
MODE_MARGININIT 29 Начальные залоговые требования для 1 лота
MODE_MARGINMAINTENANCE 30 Размер залоговых средств для поддержки открытых позиций в расчете на 1 лот
MODE_MARGINHEDGED 31 Маржа, взимаемая с перекрытых позиций в расчете на 1 лот
MODE_MARGINREQUIRED 32 Размер свободных средств, необходимых для открытия 1 лота на покупку
MODE_FREEZELEVEL 33 Уровень заморозки ордеров в пунктах. Если цена исполнения находится в пределах, определяемых уровнем заморозки, то ордер не может быть модифицирован, отменен или закрыт

Стили рисования

Перечисленние стилей рисования для функций SetIndexStyle() и SetLevelStyle(). Может быть любым из следующего величин:

Константа Значение Описание
DRAW_LINE 0 Простая линия
DRAW_SECTION 1 Отрезки между непустыми значениями линии
DRAW_HISTOGRAM 2 Гистограмма
DRAW_ARROW 3 Стрелки (символы)
DRAW_ZIGZAG 4 Отрезки между непустыми значениями чётной и нечётной линий (зигзаг)
DRAW_NONE 12 Отсутствие какого-либо рисования

Стиль линии. Используется только при толщине линии 0 или 1. Может быть любое из следующих значений:

Константа Значение Описание
STYLE_SOLID 0 Сплошная линия
STYLE_DASH 1 Штриховая линия
STYLE_DOT 2 Пунктирная линия
STYLE_DASHDOT 3 Штрих-пунктирная линия
STYLE_DASHDOTDOT 4 Штрих-пунктирная линия с двойными точками

Стиль линии может также использоваться для получения или установки свойства OBJPROP_STYLE объекта

Коды стрелок

Константы кодов стрелок. Mогут иметь следующие значения:

Константа Значение Описание
SYMBOL_THUMBSUP 67 Символ — большой палец вверх
SYMBOL_THUMBSDOWN 68 Символ — большой палец вниз
SYMBOL_ARROWUP 241 Символ — стрелка вверх
SYMBOL_ARROWDOWN 242 Символ — стрелка вниз
SYMBOL_STOPSIGN 251 Символ — СТОП
SYMBOL_CHECKSIGN 252 Символ — галочка

Специальные коды стрелок, которые точно указывают на цену и время. Mогут быть следующими величинами:

Константа Значение Описание
1 Восходящая стрелка с подсказкой направо (↱)
2 Нисходящая стрелка с подсказкой направо (↳)
3 Левый указывающий треугольник (◄)
4 Символ Черточки (–)
SYMBOL_LEFTPRICE 5 Левая ценовая метка
SYMBOL_RIGHTPRICE 6 Правая ценовая метка

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

Набор Web-цветов

Тип color, поддерживающий цветовые константы:

Линии индикаторов

Идентификаторы линий индикаторов, используемых при вызове функций iMACD(), iRVI() и iStochastic(). Mогут иметь одно из следующего значений:

Константа Значение Описание
MODE_MAIN 0 Основная линия
MODE_SIGNAL 1 Сигнальная линия

Идентификаторы линий Average Directional Movement Index, используемых при вызове функции iADX():

Константа Значение Описание
MODE_MAIN 0 Основная линия
MODE_PLUSDI 1 Линия +DI
MODE_MINUSDI 2 Линия -DI

Идентификаторы линий индикаторов, используемых при вызове функций iBands(), iEnvelopes(), iEnvelopesOnArray(), iFractals() и iGator():

Константа Значение Описание
MODE_UPPER 1 Верхняя линия
MODE_LOWER 2 Нижняя линия

Ichimoku Kinko Hyo

Идентификаторы линий индикатора Ichimoku Kinko Hyo, используемых при вызове функции iIchimoku(). Могут иметь одно из следующих значений:

Константа Значение Описание
MODE_TENKANSEN 1 Tenkan-sen
MODE_KIJUNSEN 2 Kijun-sen
MODE_SENKOUSPANA 3 Senkou Span A
MODE_SENKOUSPANB 4 Senkou Span B
MODE_CHINKOUSPAN 5 Chinkou Span

Методы скользящих

Метод вычисления скользящего среднего (Moving Average). Используется в индикаторах iAlligator(), iEnvelopes(), iEnvelopesOnArray, iForce(), iGator(), iMA(), iMAOnArray(), iStdDev(), iStdDevOnArray() и iStochastic(). Mожет быть одним из следующих:

Константа Значение Описание
MODE_SMA 0 Простое скользящее среднее
MODE_EMA 1 Экспоненциальное скользящее среднее
MODE_SMMA 2 Сглаженное скользящее среднее
MODE_LWMA 3 Линейно-взвешенное скользящее среднее

MessageBox

Коды возврата функции MessageBox(). Если окно сообщения имеет кнопку Отмена (Cancel), то функция возвращает значение IDCANCEL при нажатой клавише ESC или кнопке Отмена (Cancel). Если окно сообщения не имеет кнопки Отмена (Cancel), нажатие ESC не дает никакого эффекта.

Константа Значение Описание
IDOK 1 Выбрана кнопка OK
IDCANCEL 2 Выбрана кнопка Отмена (Cancel)
IDABORT 3 Выбрана кнопка Прервать (Abort)
IDRETRY 4 Выбрана кнопка Повтор (Retry)
IDIGNORE 5 Выбрана кнопка Пропустить (Ignore)
IDYES 6 Выбрана кнопка Да (Yes)
IDNO 7 Выбрана кнопка Нет (No)
IDTRYAGAIN 10 Выбрана кнопка Повторить (Try Again)
IDCONTINUE 11 Выбрана кнопка Продолжить (Continue)

Эти коды возврата определены в файле WinUser32.mqh, поэтому необходимо включать этот заголовочный файл в программы через #include <WinUser32.mqh>.

Основные флаги функции MessageBox() определяют содержание и поведение диалогового окна. Это значение может быть комбинацией флагов из следующих групп флагов:

Константа Значение Описание
MB_OK 0x00000000 Окно сообщения содержит одну кнопку: OK. По умолчанию
MB_OKCANCEL 0x00000001 Окно сообщения содержит две кнопки: OK и Cancel
MB_ABORTRETRYIGNORE 0x00000002 Окно сообщения содержит три кнопки: Abort, Retry и Ignore
MB_YESNOCANCEL 0x00000003 Окно сообщения содержит три кнопки: Yes, No и Cancel
MB_YESNO 0x00000004 Окно сообщения содержит две кнопки: Yes и No
MB_RETRYCANCEL 0x00000005 Окно сообщения содержит две кнопки: Retry и Cancel
MB_CANCELTRYCONTINUE 0x00000006 Окно сообщения содержит три кнопки: Cancel, Try Again, Continue

Для отображения иконки в окне сообщения необходимо определить дополнительные флаги:

Константа Значение Описание
MB_ICONSTOP, MB_ICONERROR, MB_ICONHAND 0x00000010 Изображение знака STOP
MB_ICONQUESTION 0x00000020 Изображение вопросительного знака
MB_ICONEXCLAMATION, MB_ICONWARNING 0x00000030 Изображение восклицательного знака
MB_ICONINFORMATION, MB_ICONASTERISK 0x00000040 Изображение, состоящее из строчного знака i в круге

Кнопки по умолчанию задаются следующими флагами:

Константа Значение Описание
MB_DEFBUTTON1 0x00000000 Первая кнопка MB_DEFBUTTON1 — кнопка выбрана по умолчанию, если MB_DEFBUTTON2, MB_DEFBUTTON3, или MB_DEFBUTTON4 не определены
MB_DEFBUTTON2 0x00000100 Вторая кнопка — кнопка по умолчанию
MB_DEFBUTTON3 0x00000200 Третья кнопка — кнопка по умолчанию
MB_DEFBUTTON4 0x00000300 Четвертая кнопка — кнопка по умолчанию

Флаги поведения функции MessageBox() определены в файле WinUser32.mqh, поэтому необходимо включать этот заголовочный файл в программы через #include <WinUser32.mqh>. Здесь перечислены не все возможные флаги. Более подробную информацию можно получить в описании Win32 API.

Типы объектов

Идентификаторы типов графических объектов используются в функциях ObjectCreate(), ObjectsDeleteAll() и ObjectType(). Mогут быть любыми из следующих величин (объекты могут иметь 1-3 координаты в зависимости от типа):

Константа Значение Описание
OBJ_VLINE 0 Вертикальная линия. Использует время в качестве первой координаты, цена игнорируется
OBJ_HLINE 1 Горизонтальная линия. Использует цену в качестве первой координаты, время игнорируется
OBJ_TREND 2 Трендовая линия. Использует 2 координаты
OBJ_TRENDBYANGLE 3 Трендовая линия по углу. Использует 2 координаты, либо первую координату и угол. Для установки угла линии (свойство OBJPROP_ANGLE) используется функция ObjectSet()
OBJ_REGRESSION 4 Канал линейной регрессии. Использует временные составляющие 2 координат, ценовые составляющие игнорируются
OBJ_CHANNEL 5 Равноудаленный канал. Использует 3 координаты
OBJ_STDDEVCHANNEL 6 Канал стандартных отклонений. Использует временные составляющие 2 координат, ценовые составляющие игнорируются
OBJ_GANNLINE 7 Линия Ганна. Использует 2 координаты, но ценовая составляющая второй координаты игнорируется. Для установки соотношения между временной и ценовой шкалами (свойство OBJPROP_SCALE) используется функция ObjectSet()
OBJ_GANNFAN 8 Веер Ганна. Использует 2 координаты, но ценовая составляющая второй координаты игнорируется. Для установки соотношения между временной и ценовой шкалами (свойство OBJPROP_SCALE) используется функция ObjectSet()
OBJ_GANNGRID 9 Сетка Ганна. Использует 2 координаты, но ценовая составляющая второй координаты игнорируется. Для установки соотношения между временной и ценовой шкалами (свойство OBJPROP_SCALE) используется функция ObjectSet()
OBJ_FIBO 10 Уровни Фибоначчи. Использует 2 координаты. Для установки количества уровней (свойство OBJPROP_FIBOLEVELS) и значения уровней (свойство OBJPROP_FIRSTLEVEL+n) используется функция ObjectSet()
OBJ_FIBOTIMES 11 Временные зоны Фибоначчи. Использует 2 координаты. Для установки количества уровней (свойство OBJPROP_FIBOLEVELS) и значения уровней (свойство OBJPROP_FIRSTLEVEL+n) используется функция ObjectSet()
OBJ_FIBOFAN 12 Веер Фибоначчи. Использует 2 координаты. Для установки количества уровней (свойство OBJPROP_FIBOLEVELS) и значения уровней (свойство OBJPROP_FIRSTLEVEL+n) используется функция ObjectSet()
OBJ_FIBOARC 13 Дуги Фибоначчи. Использует 2 координаты. Для установки количества уровней (свойство OBJPROP_FIBOLEVELS) и значения уровней (свойство OBJPROP_FIRSTLEVEL+n) используется функция ObjectSet()
OBJ_EXPANSION 14 Расширение Фибоначчи. Использует 3 координаты. Для установки количества уровней (свойство OBJPROP_FIBOLEVELS) и значения уровней (свойство OBJPROP_FIRSTLEVEL+n) используется функция ObjectSet()
OBJ_FIBOCHANNEL 15 Канал Фибоначчи. Использует 3 координаты. Для установки количества уровней (свойство OBJPROP_FIBOLEVELS) и значения уровней (свойство OBJPROP_FIRSTLEVEL+n) используется функция ObjectSet()
OBJ_RECTANGLE 16 Прямоугольник. Использует 2 координаты
OBJ_TRIANGLE 17 Треугольник. Использует 3 координаты
OBJ_ELLIPSE 18 Эллипс. Использует 2 координаты. Для установки соотношения между временной и ценовой шкалами (свойство OBJPROP_SCALE) используется функция ObjectSet()
OBJ_PITCHFORK 19 Вилы Эндрюса. Использует 3 координаты
OBJ_CYCLES 20 Временные ряды (циклические линии). Использует 2 координаты
OBJ_TEXT 21 Текст. Использует 1 координату. Для установки угла выводимого текста (свойство OBJPROP_ANGLE) используется функция ObjectSet(). Для изменения текста используется функция ObjectSetText()
OBJ_ARROW 22 Стрелки (символы). Использует 1 координату. Для установки кода символа (свойство OBJPROP_ARROWCODE) используется функция ObjectSet()
OBJ_LABEL 23 Текстовая метка. Не использует координат. Для установки координат, задаваемых в пикселях относительно угла привязки (свойства OBJPROP_CORNER, OBJPROP_XDISTANCE, OBJPROP_YDISTANCE) используется функция ObjectSet(). Для изменения текста используется функция ObjectSetText()

Свойства объектов

Идентификаторы свойств объекта используются в функциях ObjectGet() и ObjectSet(). Mогут быть любыми из следующих величин:

Константа Значение Тип Описание
OBJPROP_TIME1 0 datetime Получает/устанавливает первую координату времени
OBJPROP_PRICE1 1 double Получает/устанавливает первую координату цены
OBJPROP_TIME2 2 datetime Получает/устанавливает вторую координату времени
OBJPROP_PRICE2 3 double Получает/устанавливает вторую координату цены
OBJPROP_TIME3 4 datetime Получает/устанавливает третью координату времени
OBJPROP_PRICE3 5 double Получает/устанавливает третью координату цены
OBJPROP_COLOR 6 color Получает/устанавливает цвет объекта
OBJPROP_STYLE 7 int Получает/устанавливает стиль линии объекта
OBJPROP_WIDTH 8 int Получает/устанавливает ширину линии объекта
OBJPROP_BACK 9 bool Получает/устанавливает флаг фонового отображения объекта
OBJPROP_RAY 10 bool Получает/устанавливает флаг свойства луч для объектов типа OBJ_TREND и ему подобных
OBJPROP_ELLIPSE 11 bool Получает/устанавливает флаг отображения полного эллипса для объекта OBJ_FIBOARC
OBJPROP_SCALE 12 double Получает/устанавливает значение масштаба объекта
OBJPROP_ANGLE 13 double Получает/устанавливает значение угла в градусах объекта OBJ_TRENDBYANGLE
OBJPROP_ARROWCODE 14 int Получает/устанавливает код стрелки объекта OBJ_ARROW. Может быть одним из символов wingdings или один из предопределенных кодов стрелок
OBJPROP_TIMEFRAMES 15 int Получает/устанавливает свойство отображения объекта на различных периодах. Может быть одним или комбинацией нескольких из констант видимости объекта.
OBJPROP_DEVIATION 16 double Получает/устанавливает размер отклонения для объекта OBJ_STDDEVCHANNEL
OBJPROP_FONTSIZE 100 int Получает/устанавливает размер шрифта для объектов OBJ_TEXT и OBJ_LABEL
OBJPROP_CORNER 101 int Получает/устанавливает номер угла привязки для объекта OBJ_LABEL. Принимает значения 0-3
OBJPROP_XDISTANCE 102 int Получает/устанавливает расстояние X-координаты в пикселях относительно угла привязки для объекта OBJ_LABEL
OBJPROP_YDISTANCE 103 int Получает/устанавливает расстояние Y-координаты в пикселях относительно угла привязки для объекта OBJ_LABEL
OBJPROP_FIBOLEVELS 200 int Получает/устанавливает число уровней объекта Fibonacci. Может быть от 1 до 32
OBJPROP_LEVELCOLOR 201 color Получает/устанавливает цвет линии уровня объекта
OBJPROP_LEVELSTYLE 202 int Получает/устанавливает стиль линии уровня объекта
OBJPROP_LEVELWIDTH 203 int Получает/устанавливает ширину линии уровня объекта
OBJPROP_FIRSTLEVEL+n 210+n int Получает/устанавливает значения уровня объекта Fibonacci с индексом n. Индекс n может быть от 0 до (количество уровней -1), но не более 31

Видимость объектов

Идентификаторы свойств объекта используются в функциях ObjectGet() и ObjectSet(). Mогут быть любыми из следующих величин:

Константа Значение Тип Описание
OBJPROP_TIME1 0 datetime Получает/устанавливает первую координату времени
OBJPROP_PRICE1 1 double Получает/устанавливает первую координату цены
OBJPROP_TIME2 2 datetime Получает/устанавливает вторую координату времени
OBJPROP_PRICE2 3 double Получает/устанавливает вторую координату цены
OBJPROP_TIME3 4 datetime Получает/устанавливает третью координату времени
OBJPROP_PRICE3 5 double Получает/устанавливает третью координату цены
OBJPROP_COLOR 6 color Получает/устанавливает цвет объекта
OBJPROP_STYLE 7 int Получает/устанавливает стиль линии объекта
OBJPROP_WIDTH 8 int Получает/устанавливает ширину линии объекта
OBJPROP_BACK 9 bool Получает/устанавливает флаг фонового отображения объекта
OBJPROP_RAY 10 bool Получает/устанавливает флаг свойства луч для объектов типа OBJ_TREND и ему подобных
OBJPROP_ELLIPSE 11 bool Получает/устанавливает флаг отображения полного эллипса для объекта OBJ_FIBOARC
OBJPROP_SCALE 12 double Получает/устанавливает значение масштаба объекта
OBJPROP_ANGLE 13 double Получает/устанавливает значение угла в градусах объекта OBJ_TRENDBYANGLE
OBJPROP_ARROWCODE 14 int Получает/устанавливает код стрелки объекта OBJ_ARROW. Может быть одним из символов wingdings или один из предопределенных кодов стрелок
OBJPROP_TIMEFRAMES 15 int Получает/устанавливает свойство отображения объекта на различных периодах. Может быть одним или комбинацией нескольких из констант видимости объекта.
OBJPROP_DEVIATION 16 double Получает/устанавливает размер отклонения для объекта OBJ_STDDEVCHANNEL
OBJPROP_FONTSIZE 100 int Получает/устанавливает размер шрифта для объектов OBJ_TEXT и OBJ_LABEL
OBJPROP_CORNER 101 int Получает/устанавливает номер угла привязки для объекта OBJ_LABEL. Принимает значения 0-3
OBJPROP_XDISTANCE 102 int Получает/устанавливает расстояние X-координаты в пикселях относительно угла привязки для объекта OBJ_LABEL
OBJPROP_YDISTANCE 103 int Получает/устанавливает расстояние Y-координаты в пикселях относительно угла привязки для объекта OBJ_LABEL
OBJPROP_FIBOLEVELS 200 int Получает/устанавливает число уровней объекта Fibonacci. Может быть от 1 до 32
OBJPROP_LEVELCOLOR 201 color Получает/устанавливает цвет линии уровня объекта
OBJPROP_LEVELSTYLE 202 int Получает/устанавливает стиль линии уровня объекта
OBJPROP_LEVELWIDTH 203 int Получает/устанавливает ширину линии уровня объекта
OBJPROP_FIRSTLEVEL+n 210+n int Получает/устанавливает значения уровня объекта Fibonacci с индексом n. Индекс n может быть от 0 до (количество уровней -1), но не более 31

Причины деинициализации

Коды причины деинициализации, возвращаемые функцией UninitializeReason(). Mогут иметь любые из следующих значений:

Константа Значение Описание
0 Скрипт самостоятельно завершил свою работу
REASON_REMOVE 1 Программа удалена с графика
REASON_RECOMPILE 2 Программа перекомпилирована
REASON_CHARTCHANGE 3 Символ или период графика был изменен
REASON_CHARTCLOSE 4 График закрыт
REASON_PARAMETERS 5 Входные параметры были изменены пользователем
REASON_ACCOUNT 6 Активирован другой счет

Специальные константы

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

Константа Значение Описание
NULL 0 Указывает пустое состояние строки
EMPTY -1 Указывает пустое состояние параметра
EMPTY_VALUE 0x7FFFFFFF Значение по умолчанию, указатель пустого значения. Используется в пользовательских индикаторах
CLR_NONE 0xFFFFFFFF Указывает отсутствие цвета
WHOLE_ARRAY 0 Используется с функциями массивов. Указывает, что все элементы массива должны быть обработаны

Коды ошибок

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

Пример:

#include <stderror.mqh>
#include <stdlib.mqh>
void SendMyMessage(string text)
{
   int check;
   SendMail("Test", text);
   check=GetLastError();
   if(check!=ERR_NO_ERROR) 
      Print("Сообщение не отправлено. Ошибка: ",ErrorDescription(check));
}

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

Константа Значение Описание
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_TRADE_HEDGE_PROHIBITED 149 Попытка открыть противоположную позицию к уже существующей в случае, если хеджирование запрещено.
ERR_TRADE_PROHIBITED_BY_FIFO 150 Попытка закрыть позицию по инструменту в противоречии с правилом FIFO.

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

Константа Значение Описание
ERR_NO_MQLERROR 4000 Нет ошибки
ERR_WRONG_FUNCTION_POINTER 4001 Неправильный указатель функции
ERR_ARRAY_INDEX_OUT_OF_RANGE 4002 Индекс массива — вне диапазона
ERR_NO_MEMORY_FOR_CALL_STACK 4003 Нет памяти для стека функций
ERR_RECURSIVE_STACK_OVERFLOW 4004 Переполнение стека после рекурсивного вызова
ERR_NOT_ENOUGH_STACK_FOR_PARAM 4005 На стеке нет памяти для передачи параметров
ERR_NO_MEMORY_FOR_PARAM_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_CALLS_NOT_ALLOWED 4020 Вызовы внешних библиотечных функций не разрешены
ERR_NO_MEMORY_FOR_RETURNED_STR 4021 Недостаточно памяти для строки, возвращаемой из функции
ERR_SYSTEM_BUSY 4022 Система занята
ERR_INVALID_FUNCTION_PARAMSCNT 4050 Неправильное количество параметров функции
ERR_INVALID_FUNCTION_PARAMVALUE 4051 Недопустимое значение параметра функции
ERR_STRING_FUNCTION_INTERNAL 4052 Внутренняя ошибка строковой функции
ERR_SOME_ARRAY_ERROR 4053 Ошибка массива
ERR_INCORRECT_SERIESARRAY_USING 4054 Неправильное использование массива-таймсерии
ERR_CUSTOM_INDICATOR_ERROR 4055 Ошибка пользовательского индикатора
ERR_INCOMPATIBLE_ARRAYS 4056 Массивы несовместимы
ERR_GLOBAL_VARIABLES_PROCESSING 4057 Ошибка обработки глобальныех переменных
ERR_GLOBAL_VARIABLE_NOT_FOUND 4058 Глобальная переменная не обнаружена
ERR_FUNC_NOT_ALLOWED_IN_TESTING 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_FILEACCESS 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 Ошибка при работе с объектом