Константы, описывающие текущую среду выполнения mql5-программы делятся на группы:
- Состояние клиентского терминала – информация о клиентском терминале;
- Информация о запущенной MQL5-программе – свойства mql5-программы, которые помогают дополнительно управлять ее поведением;
- Информация об инструменте – получение торговой информации об инструменте;
- Информация о счете – информация о текущем торговом счете;
- Статистика тестирования – результаты тестирования эксперта.
Состояние клиентского терминала
Идентификаторы для получения информации о клиентском терминале функциями TerminalInfoInteger() и TerminalInfoString(). В качестве параметра эти функции принимают значения из перечислений ENUM_TERMINAL_INFO_INTEGER и ENUM_TERMINAL_INFO_STRING соответственно.
| Идентификатор | Описание | Тип свойства |
| TERMINAL_BUILD | Номер билда запущенного терминала | int |
| TERMINAL_COMMUNITY_ACCOUNT | Флаг наличия авторизационных данных MQL5.community в терминале | bool |
| TERMINAL_COMMUNITY_CONNECTION | Наличие подключения к MQL5.community | bool |
| TERMINAL_CONNECTED | Наличие подключения к торговому серверу | bool |
| TERMINAL_DLLS_ALLOWED | Разрешение на использование DLL | bool |
| TERMINAL_TRADE_ALLOWED | Разрешение на торговлю | bool |
| TERMINAL_EMAIL_ENABLED | Разрешение на отправку писем с использованием SMTP-сервера и логина, указанных в настройках терминала | bool |
| TERMINAL_FTP_ENABLED | Разрешение на отправку отчетов по FTP на указанный сервер для указанного в настройках терминала торгового счета | bool |
| TERMINAL_NOTIFICATIONS_ENABLED | Разрешение на отправку уведомлений на смартфон | bool |
| TERMINAL_MAXBARS | Максимальное количество баров на графике | int |
| TERMINAL_MQID | Флаг наличия MetaQuotes ID для отправки Push-уведомлений | bool |
| TERMINAL_CODEPAGE | Номер кодовой страницы языка, установленного в клиентском терминале | int |
| TERMINAL_CPU_CORES | Количество процессоров в системе | int |
| TERMINAL_DISK_SPACE | Объем свободной памяти на диске для папки MQL5\Files терминала (агента), в MB | int |
| TERMINAL_MEMORY_PHYSICAL | Размер физической памяти в системе, в MB | int |
| TERMINAL_MEMORY_TOTAL | Размер памяти, доступной процессу терминала (агента), в MB | int |
| TERMINAL_MEMORY_AVAILABLE | Размер свободной памяти процесса терминала (агента)в MB | int |
| TERMINAL_MEMORY_USED | Размер памяти, использованной терминалом (агентом), в MB | int |
| TERMINAL_X64 | Признак «64 битный терминал» | bool |
| TERMINAL_OPENCL_SUPPORT | Версия поддерживаемой OpenCL в виде 0x00010002 = 1.2. «0» означает, что OpenCL не поддерживается | int |
| TERMINAL_SCREEN_DPI | Разрешающая способность вывода информации на экран измеряется в количестве точек на линейный дюйм поверхности (DPI). Знание этого параметра позволяет задавать размеры графических объектов таким образом, чтобы они выглядели одинаково на мониторах с различной разрешающей способностью. | int |
| TERMINAL_PING_LAST | Последнее известное значение пинга до торгового сервера в микросекундах. В одной секунде миллион микросекунд. | int |
| Идентификатор клавиши | Описание |
|
| TERMINAL_KEYSTATE_LEFT | Состояние клавиши «Стрелка влево» | int |
| TERMINAL_KEYSTATE_UP | Состояние клавиши «Стрелка вверх» | int |
| TERMINAL_KEYSTATE_RIGHT | Состояние клавиши «Стрелка вправо» | int |
| TERMINAL_KEYSTATE_DOWN | Состояние клавиши «Стрелка вниз» | int |
| TERMINAL_KEYSTATE_SHIFT | Состояние клавиши «Shift» | int |
| TERMINAL_KEYSTATE_CONTROL | Состояние клавиши «Ctrl» | int |
| TERMINAL_KEYSTATE_MENU | Состояние клавиши «Windows» | int |
| TERMINAL_KEYSTATE_CAPSLOCK | Состояние клавиши «CapsLock» | int |
| TERMINAL_KEYSTATE_NUMLOCK | Состояние клавиши «NumLock» | int |
| TERMINAL_KEYSTATE_SCRLOCK | Состояние клавиши «ScrollLock» | int |
| TERMINAL_KEYSTATE_ENTER | Состояние клавиши «Enter» | int |
| TERMINAL_KEYSTATE_INSERT | Состояние клавиши «Insert» | int |
| TERMINAL_KEYSTATE_DELETE | Состояние клавиши «Delete» | int |
| TERMINAL_KEYSTATE_HOME | Состояние клавиши «Home» | int |
| TERMINAL_KEYSTATE_END | Состояние клавиши «End» | int |
| TERMINAL_KEYSTATE_TAB | Состояние клавиши «Tab» | int |
| TERMINAL_KEYSTATE_PAGEUP | Состояние клавиши «PageUp» | int |
| TERMINAL_KEYSTATE_PAGEDOWN | Состояние клавиши «PageDown» | int |
| TERMINAL_KEYSTATE_ESCAPE | Состояние клавиши «Escape» | int |
Вызов TerminalInfoInteger(TERMINAL_KEYSTATE_XXX) возвращает такой же код состояния клавиши, как и функция GetKeyState() из MSDN.
Пример вычисления коэффициента масштабирования:
//--- создаём кнопку шириной 1.5 дюйма на экране int screen_dpi = TerminalInfoInteger(TERMINAL_SCREEN_DPI); // получим DPI монитора пользователя int base_width = 144; // базовая ширина в экранных точках для стандартных мониторов c DPI=96 int width = (button_width * screen_dpi) / 96; // вычислим ширину кнопки для монитора пользователя (с учётом его DPI) ... //--- вычисление коэффициента масштабирования в процентах int scale_factor=(TerminalInfoInteger(TERMINAL_SCREEN_DPI) * 100) / 96; //--- использование коэффициента масштабирования width=(base_width * scale_factor) / 100;
При таком использовании графический ресурс будет иметь одинаковый на глаз размер на мониторах с различной разрешающей способностью. При этом размеры управляющих элементов (кнопки, окна диалогов и т.д.) будут соответствовать настройкам персонализации.
| Идентификатор | Описание | Тип свойства |
| TERMINAL_COMMUNITY_BALANCE | Баланс пользователя в MQL5.community | double |
Файловые операции можно проводить только в двух каталогах, пути к которым можно получить при запросе свойств TERMINAL_DATA_PATH и TERMINAL_COMMONDATA_PATH.
| Идентификатор | Описание | Тип свойства |
| TERMINAL_LANGUAGE | Язык терминала | string |
| TERMINAL_COMPANY | Имя компании | string |
| TERMINAL_NAME | Имя терминала | string |
| TERMINAL_PATH | Папка, из которой запущен терминал | string |
| TERMINAL_DATA_PATH | Папка, в которой хранятся данные терминала | string |
| TERMINAL_COMMONDATA_PATH | Общая папка всех клиентских терминалов, установленных на компьютере | string |
Для лучшего понимания путей, хранящихся в свойствах параметров TERMINAL_PATH, TERMINAL_DATA_PATH и TERMINAL_COMMONDATA_PATH, рекомендуется выполнить скрипт, которых сообщит эти значения для данной копии терминала, установленного на вашем компьютере.
Пример: скрипт выводит информацию о путях терминала
//+------------------------------------------------------------------+
//| Check_TerminalPaths.mq5 |
//| Copyright 2009, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
Print("TERMINAL_PATH = ",TerminalInfoString(TERMINAL_PATH));
Print("TERMINAL_DATA_PATH = ",TerminalInfoString(TERMINAL_DATA_PATH));
Print("TERMINAL_COMMONDATA_PATH = ",TerminalInfoString(TERMINAL_COMMONDATA_PATH));
} В результате выполнения скрипта в Журнал Экспертов будут выведены сообщения, подобные приведенным на рисунке ниже.

Информация о запущенной MQL5-программе
Константы, для получения информации о выполняющейся mql5-программе, перечислены в ENUM_MQL_INFO_INTEGER и ENUM_MQL_INFO_STRING.
Для функции MQLInfoInteger()
ENUM_MQL_INFO_INTEGER
| Идентификатор | Описание | Тип свойства |
| MQL_MEMORY_LIMIT | Максимально возможный объём динамической памяти для MQL5-программы в MB | int |
| MQL_MEMORY_USED | Размер использованной памяти MQL5-программой в MB | int |
| MQL_PROGRAM_TYPE | Тип mql5-программы | ENUM_PROGRAM_TYPE |
| MQL_DLLS_ALLOWED | Разрешение на использование DLL для данной запущенной программы | bool |
| MQL_TRADE_ALLOWED | Разрешение на торговлю для данной запущенной программы | bool |
| MQL_SIGNALS_ALLOWED | Разрешение на работу с сигналами данной запущенной программы | bool |
| MQL_DEBUG | Признак работы запущенной программы в режиме отладки | bool |
| MQL_PROFILER | Признак работы запущенной программы в режиме профилирования кода | bool |
| MQL_TESTER | Признак работы запущенной программы в тестере | bool |
| MQL_OPTIMIZATION | Признак работы запущенной программы в процессе оптимизации | bool |
| MQL_VISUAL_MODE | Признак работы запущенной программы в визуальном режиме тестирования | bool |
| MQL_FRAME_MODE | Признак работы запущенного эксперта на графике в режиме сбора фреймов результатов оптимизации | bool |
| MQL_LICENSE_TYPE | Тип лицензии модуля EX5. Лицензия относится именно к тому модулю EX5, из которого делается запрос с помощью MQLInfoInteger(MQL_LICENSE_TYPE). | ENUM_LICENSE_TYPE |
Для функции MQLInfoString()
| Идентификатор | Описание | Тип свойства |
| MQL_PROGRAM_NAME | Имя запущенной MQL5-программы | string |
| MQL_PROGRAM_PATH | Путь для данной запущенной программы | string |
Для получения информации о типе выполняемой программы предназначены значения перечисления ENUM_PROGRAM_TYPE.
ENUM_PROGRAM_TYPE
| Идентификатор | Описание |
| PROGRAM_SCRIPT | Скрипт |
| PROGRAM_EXPERT | Эксперт |
| PROGRAM_INDICATOR | Индикатор |
ENUM_LICENSE_TYPE
| Идентификатор | Описание |
| LICENSE_FREE | Бесплатная неограниченная версия |
| LICENSE_DEMO | Демо-версия платного продукта из Маркета. Работает только в тестере стратегий |
| LICENSE_FULL | Купленная лицензионная версия допускает не менее 5 активаций. Продавец может увеличить разрешенное число активаций |
| LICENSE_TIME | Версия с ограниченной по времени лицензией |
Пример:
ENUM_PROGRAM_TYPE mql_program=(ENUM_PROGRAM_TYPE)MQLInfoInteger(MQL_PROGRAM_TYPE);
switch(mql_program)
{
case PROGRAM_SCRIPT:
{
Print(__FILE__+" is script");
break;
}
case PROGRAM_EXPERT:
{
Print(__FILE__+" is Expert Advisor");
break;
}
case PROGRAM_INDICATOR:
{
Print(__FILE__+" is custom indicator");
break;
}
default:Print("MQL5 type value is ",mql_program);
}
Информация об инструменте
Для получения текущей рыночной информации служат функции SymbolInfoInteger(), SymbolInfoDouble() и SymbolInfoString(). В качестве второго параметра этих функций допустимо передавать один из идентификаторов из перечислений ENUM_SYMBOL_INFO_INTEGER, ENUM_SYMBOL_INFO_DOUBLE и ENUM_SYMBOL_INFO_STRING соответственно.
Для функции SymbolInfoInteger()
| Идентификатор | Описание | Тип свойства |
| SYMBOL_CUSTOM | Признак того, что символ является пользовательским, то есть искусственно созданным на основе других символов из Market Watch или/и внешних источников данных | bool |
| SYMBOL_BACKGROUND_COLOR | Цвет фона, которым подсвечивается символ в Market Watch | color |
| SYMBOL_CHART_MODE | Тип цены для построения баров – Bid или Last | ENUM_SYMBOL_CHART_MODE |
| SYMBOL_SELECT | Признак того, что символ выбран в Market Watch | bool |
| SYMBOL_VISIBLE | Признак того, что выбранный символ отображается в Market Watch.
Некоторые символы (как правило, это кросс-курсы, которые необходимы для расчёта маржевых требований и прибыли в валюте депозита) выбираются автоматически, при этом могут не отображаться в Market Watch. Для отображения такие символы должны быть выбраны явно. | bool |
| SYMBOL_SESSION_DEALS | Количество сделок в текущей сессии | long |
| SYMBOL_SESSION_BUY_ORDERS | Общее число ордеров на покупку в текущий момент | long |
| SYMBOL_SESSION_SELL_ORDERS | Общее число ордеров на продажу в текущий момент | long |
| SYMBOL_VOLUME | Volume — объем в последней сделке | long |
| SYMBOL_VOLUMEHIGH | Максимальный Volume за день | long |
| SYMBOL_VOLUMELOW | Минимальный Volume за день | long |
| Время последней котировки | datetime | |
| SYMBOL_DIGITS | Количество знаков после запятой | int |
| SYMBOL_SPREAD | Размер спреда в пунктах | int |
| SYMBOL_SPREAD_FLOAT | Признак плавающего спреда | bool |
| SYMBOL_TICKS_BOOKDEPTH | Максимальное количество показываемых заявок в стакане. Для инструментов, не имеющих очереди заявок, значение равно 0 | int |
| SYMBOL_TRADE_CALC_MODE | Способ вычисления стоимости контракта | ENUM_SYMBOL_CALC_MODE |
| SYMBOL_TRADE_MODE | Тип исполнения ордеров | ENUM_SYMBOL_TRADE_MODE |
| SYMBOL_START_TIME | Дата начала торгов по инструменту (обычно используется для фьючерсов) | datetime |
| SYMBOL_EXPIRATION_TIME | Дата окончания торгов по инструменту (обычно используется для фьючерсов) | datetime |
| SYMBOL_TRADE_STOPS_LEVEL | Минимальный отступ в пунктах от текущей цены закрытия для установки Stop ордеров | int |
| SYMBOL_TRADE_FREEZE_LEVEL | Дистанция заморозки торговых операций (в пунктах) | int |
| SYMBOL_TRADE_EXEMODE | Режим заключения сделок | ENUM_SYMBOL_TRADE_EXECUTION |
| SYMBOL_SWAP_MODE | Модель расчета свопа | ENUM_SYMBOL_SWAP_MODE |
| SYMBOL_SWAP_ROLLOVER3DAYS | День недели для начисления тройного свопа | ENUM_DAY_OF_WEEK |
| SYMBOL_MARGIN_HEDGED_USE_LEG | Режим расчета хеджированной маржи по наибольшей стороне (Buy или Sell) | bool |
| SYMBOL_EXPIRATION_MODE | Флаги разрешенных режимов истечения ордера | int |
| SYMBOL_FILLING_MODE | Флаги разрешенных режимов заливки ордера | int |
| SYMBOL_ORDER_MODE | Флаги разрешенных типов ордера | int |
| SYMBOL_ORDER_GTC_MODE | Срок действия StopLoss и TakeProfit ордеров, если SYMBOL_EXPIRATION_MODE=SYMBOL_EXPIRATION_GTC (Good till cancelled) | ENUM_SYMBOL_ORDER_GTC_MODE |
| SYMBOL_ORDER_CLOSEBY | Разрешение на закрытие позиции с помощью встречной – то есть открытой в противоположном направлении по тому же инструменту. Свойство задается для счетов с хеджинговой системой учета (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) | bool |
| SYMBOL_OPTION_MODE | Тип опциона | ENUM_SYMBOL_OPTION_MODE |
| SYMBOL_OPTION_RIGHT | Право опциона (Call/Put) | ENUM_SYMBOL_OPTION_RIGHT |
Для функции SymbolInfoDouble()
| Идентификатор | Описание | Тип свойства |
| SYMBOL_BID | Bid — лучшее предложение на продажу | double |
| SYMBOL_BIDHIGH | Максимальный Bid за день | double |
| SYMBOL_BIDLOW | Минимальный Bid за день | double |
| SYMBOL_ASK | Ask — лучшее предложение на покупку | double |
| SYMBOL_ASKHIGH | Максимальный Ask за день | double |
| SYMBOL_ASKLOW | Минимальный Ask за день | double |
| SYMBOL_LAST | Цена, по которой совершена последняя сделка | double |
| SYMBOL_LASTHIGH | Максимальный Last за день | double |
| SYMBOL_LASTLOW | Минимальный Last за день | double |
| SYMBOL_OPTION_STRIKE | Цена исполнения опциона. Это цена, по которой покупатель опциона может купить (при опционе Call) или продать (при опционе Put) базовый актив, а продавец опциона соответственно обязан продать или купить соответствующее количество базового актива. | double |
| SYMBOL_POINT | Значение одного пункта | double |
| SYMBOL_TRADE_TICK_VALUE | Значение SYMBOL_TRADE_TICK_VALUE_PROFIT | double |
| SYMBOL_TRADE_TICK_VALUE_PROFIT | Рассчитанная стоимость тика для прибыльной позиции | double |
| SYMBOL_TRADE_TICK_VALUE_LOSS | Рассчитанная стоимость тика для убыточной позиции | double |
| SYMBOL_TRADE_TICK_SIZE | Минимальное изменение цены | double |
| SYMBOL_TRADE_CONTRACT_SIZE | Размер торгового контракта | double |
| SYMBOL_TRADE_ACCRUED_INTEREST | Накопленный купонный доход – часть купонного процентного дохода по облигации, рассчитываемая пропорционально количеству дней, прошедших от даты выпуска купонной облигации или даты выплаты предшествующего купонного дохода | double |
| SYMBOL_TRADE_FACE_VALUE | Номинальная стоимость – начальная стоимость облигации, установленная эмитентом | double |
| SYMBOL_TRADE_LIQUIDITY_RATE | Коэффициент ликвидности – доля от стоимости актива, которую можно использовать в качестве залога. Используется для Collateral-инструментов | double |
| SYMBOL_VOLUME_MIN | Минимальный объем для заключения сделки | double |
| SYMBOL_VOLUME_MAX | Максимальный объем для заключения сделки | double |
| SYMBOL_VOLUME_STEP | Минимальный шаг изменения объема для заключения сделки | double |
| SYMBOL_VOLUME_LIMIT | Максимально допустимый для данного символа совокупный объем открытой позиции и отложенных ордеров в одном направлении (покупка или продажа). Например, при ограничении в 5 лотов можно иметь открытую позицию на покупку объемом 5 лотов и выставить отложенный ордер Sell Limit объемом 5 лотов. Но при этом нельзя выставить отложенный ордер Buy Limit (поскольку совокупный объем в одном направлении превысит ограничение) или выставить Sell Limit объемом более 5 лотов. | double |
| SYMBOL_SWAP_LONG | Значение свопа в покупку | double |
| SYMBOL_SWAP_SHORT | Значение свопа в продажу | double |
| SYMBOL_MARGIN_INITIAL | Начальная (инициирующая) маржа обозначает размер необходимых залоговых средств в маржинальной валюте для открытия позиции объемом в один лот. Используется при проверке средств клиента при входе в рынок. | double |
| SYMBOL_MARGIN_MAINTENANCE | Поддерживающая маржа по инструменту. В случае если задана – указывает размер маржи в маржинальной валюте инструмента, удерживаемой с одного лота. Используется при проверке средств клиента при изменении состояния счета клиента. Если поддерживающая маржа равна 0, то используется начальная маржа. | double |
| SYMBOL_SESSION_VOLUME | Cуммарный объём сделок в текущую сессию | double |
| SYMBOL_SESSION_TURNOVER | Cуммарный оборот в текущую сессию | double |
| SYMBOL_SESSION_INTEREST | Cуммарный объём открытых позиций | double |
| SYMBOL_SESSION_BUY_ORDERS_VOLUME | Общий объём ордеров на покупку в текущий момент | double |
| SYMBOL_SESSION_SELL_ORDERS_VOLUME | Общий объём ордеров на продажу в текущий момент | double |
| SYMBOL_SESSION_OPEN | Цена открытия сессии | double |
| SYMBOL_SESSION_CLOSE | Цена закрытия сессии | double |
| SYMBOL_SESSION_AW | Средневзвешенная цена сессии | double |
| SYMBOL_SESSION_PRICE_SETTLEMENT | Цена поставки на текущую сессию | double |
| SYMBOL_SESSION_PRICE_LIMIT_MIN | Минимально допустимое значение цены на сессию | double |
| SYMBOL_SESSION_PRICE_LIMIT_MAX | Максимально допустимое значение цены на сессию | double |
| SYMBOL_MARGIN_HEDGED | Размер контракта или маржи для одного лота перекрытых позиций (разнонаправленные позиции по одному символу). Существует два способа расчета маржи для перекрытых позиций. Способ расчета определяется брокером. Базовый расчет:
Расчет по наибольшей позиции:
| double |
Для функции SymbolInfoString()
| Идентификатор | Описание | Тип свойства |
| SYMBOL_BASIS | Имя базового актива для производного инструмента | string |
| SYMBOL_CURRENCY_BASE | Базовая валюта инструмента | string |
| SYMBOL_CURRENCY_PROFIT | Валюта прибыли | string |
| SYMBOL_CURRENCY_MARGIN | Валюта в которой вычисляется залоговые средства | string |
| SYMBOL_BANK | Источник текущей котировки | string |
| SYMBOL_DESCRIPTION | Строковое описание символа | string |
| SYMBOL_FORMULA | Формула для построения цены пользовательского символа | string |
| SYMBOL_ISIN | Имя торгового символа в системе международных идентификационных кодов ценных бумаг — ISIN (International Securities Identification Number). Международный идентификационный код ценной бумаги — это 12-разрядный буквенно-цифровой код, однозначно идентифицирующий ценную бумагу. Наличие данного свойства символа определяется на стороне торгового сервера. | string |
| SYMBOL_PAGE | Адрес интернет страницы с информацией по символу. Данный адрес будет отображаться в виде ссылки при просмотре свойств символа в терминале | string |
| SYMBOL_PATH | Путь в дереве символов | string |
Ценовой график по символу может строиться на основе цены Bid или Last. От выбора цены для построения графиков зависит то, как формируются и отображаются бары в терминале. Возможные значения свойства SYMBOL_CHART_MODE приводятся в перечислении ENUM_SYMBOL_CHART_MODE
| Идентификатор | Описание |
| SYMBOL_CHART_MODE_BID | Бары строятся по ценам Bid |
| SYMBOL_CHART_MODE_LAST | Бары строятся по ценам Last |
Для каждого финансового инструмента могут быть указаны несколько режимов срока действия (истечения) отложенных ордеров. Каждому режиму сопоставлен флаг, флаги могут комбинироваться операцией логического ИЛИ (|), например, SYMBOL_EXPIRATION_GTC|SYMBOL_EXPIRATION_SPECIFIED. Чтобы проверить разрешенность конкретного режима для инструмента, необходимо результат логического И (&) сравнить с флагом режима.
Если для символа указан флаг SYMBOL_EXPIRATION_SPECIFIED, то при отправке отложенного ордера можно конкретно указать, до какого момента действует данный отложенный ордер.
| Идентификатор | Значение | Описание |
| SYMBOL_EXPIRATION_GTC | 1 | Ордер действителен неограниченно по времени до явной его отмены |
| SYMBOL_EXPIRATION_DAY | 2 | Ордер действителен до конца дня |
| SYMBOL_EXPIRATION_SPECIFIED | 4 | Срок истечения указывается в ордере |
| SYMBOL_EXPIRATION_SPECIFIED_DAY | 8 | День истечения указывается в ордере |
Пример:
//+------------------------------------------------------------------+
//| проверяет разрешенность указанного режима экспирации |
//+------------------------------------------------------------------+
bool IsExpirationTypeAllowed(string symbol,int exp_type)
{
//--- получим значение свойства, описывающего допустимые режимы истечения срока действия
int expiration=(int)SymbolInfoInteger(symbol,SYMBOL_EXPIRATION_MODE);
//--- вернем true, если режим exp_type разрешен
return((expiration&exp_type)==exp_type);
} Если свойство SYMBOL_EXPIRATION_MODE имеет значение SYMBOL_EXPIRATION_GTC (ордер действителен до отмены), то срок действия отложенных ордеров и установленных уровней StopLoss/TakeProfit дополнительно задается с помощью перечисления ENUM_SYMBOL_ORDER_GTC_MODE.
| Идентификатор | Описание |
| SYMBOL_ORDERS_GTC | Отложенные ордеры и уровни Stop Loss/Take Profit действительны неограниченно по времени до явной отмены |
| SYMBOL_ORDERS_DAILY | Ордеры действуют только внутри одного торгового дня. По его завершении все уровни StopLoss и TakeProfit удаляются, а также удаляются отложенные ордеры |
| SYMBOL_ORDERS_DAILY_EXCLUDING_STOPS | При смене торгового дня удаляются только отложенные ордеры, уровни StopLoss и TakeProfit сохраняются |
При отправке ордера можно указать политику заполнения заявленного в торговом приказе объема. Допустимые варианты исполнения ордера по объему для каждого символа указаны таблице. Для каждого инструмента может быть установлен не один режим, а несколько через комбинацию флагов. Комбинация флагов выражается операцией логического ИЛИ (|), например, SYMBOL_FILLING_FOK|SYMBOL_FILLING_IOC. Чтобы проверить разрешенность конкретного режима для инструмента, необходимо результат логического И (&) сравнить с флагом режима.
| Политика заполнения | Идентификатор | Значение | Описание |
| Все/Ничего | SYMBOL_FILLING_FOK | 1 | Данная политика исполнения означает, что ордер может быть исполнен исключительно в указанном объеме. Если на рынке в данный момент не присутствует достаточного объема финансового инструмента, то ордер не будет исполнен. Необходимый объем может быть составлен из нескольких предложений, доступных в данный момент на рынке. |
| Все/Частично | SYMBOL_FILLING_IOC | 2 | В данном случае трейдер соглашается совершить сделку по максимально доступному на рынке объему в пределах указанного в ордере. В случае невозможности полного исполнения ордер будет исполнен на доступный объем, а неисполненный объем ордера будет отменен. Возможность использования IOC ордеров определяется на торговом сервере. |
| Вернуть | Идентификатор отсутствует |
| Данный режим используется для рыночных (Buy и Sell), лимитных и стоп-лимитных ордеров и только в режимах «Исполнение по рынку» и «Биржевое исполнение». В случае частичного исполнения рыночный или лимитный ордер с остаточным объемом не снимается, а продолжает действовать. |
В режимах исполнения «По запросу» и «Немедленный» для рыночных ордеров всегда используется политика заполнения Все/Ничего, а для лимитных ордеров — режим «Вернуть». В данном случае, при от отсылке ордеров функциями OrderSend или OrderSendAsync тип заполнения для них можно не указывать.
В режимах исполнения «По рынку» и «Биржевой» политика заполнения «Вернуть» всегда разрешена для всех типов ордеров. Разрешенность остальных типов проверяется при помощи свойств SYMBOL_FILLING_FOK и SYMBOL_FILLING_IOC.
Пример:
//+------------------------------------------------------------------+
//| проверяет разрешенность указанного режима заполнения |
//+------------------------------------------------------------------+
bool IsFillingTypeAllowed(string symbol,int fill_type)
{
//--- получим значение свойства, описывающего режим заполнения
int filling=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
//--- вернем true, если режим fill_type разрешен
return((filling&fill_type)==fill_type);
} При отправке торгового запроса функцией OrderSend() для некоторых операций необходимо указать тип ордера из перечисления ENUM_ORDER_TYPE. Не все типы ордеров могут быть разрешены для конкретного финансового инструмента, свойство SYMBOL_ORDER_MODE описывает флаги разрешенных типов ордеров.
| Идентификатор | Значение | Описание |
| SYMBOL_ORDER_MARKET | 1 | Разрешены рыночные ордера (Buy и Sell) |
| SYMBOL_ORDER_LIMIT | 2 | Разрешены лимитные ордера (Buy Limit и Sell Limit) |
| SYMBOL_ORDER_STOP | 4 | Разрешены стоп-ордера (Buy Stop и Sell Stop) |
| SYMBOL_ORDER_STOP_LIMIT | 8 | Разрешены стоп-лимит ордера (Buy Stop Limit и Sell Stop Limit) |
| SYMBOL_ORDER_SL | 16 | Разрешена установка Stop Loss |
| SYMBOL_ORDER_TP | 32 | Разрешена установка Take Profit |
Пример:
//+------------------------------------------------------------------+
//| Функция выводит на печать разрешенные для символа типы ордеров |
//+------------------------------------------------------------------+
void Check_SYMBOL_ORDER_MODE(string symbol)
{
//--- получим значение свойства, описывающего разрешенные типы ордеров
int symbol_order_mode=(int)SymbolInfoInteger(symbol,SYMBOL_ORDER_MODE);
//--- проверка на рыночные ордера (Market Execution)
if((SYMBOL_ORDER_MARKET&symbol_order_mode)==SYMBOL_ORDER_MARKET)
Print(symbol+": Рыночные ордера разрешены (Buy и Sell)");
//--- проверка на ордера типа Limit
if((SYMBOL_ORDER_LIMIT&symbol_order_mode)==SYMBOL_ORDER_LIMIT)
Print(symbol+": Ордера Buy Limit и Sell Limit разрешены");
//--- проверка на ордера типа Stop
if((SYMBOL_ORDER_STOP&symbol_order_mode)==SYMBOL_ORDER_STOP)
Print(symbol+": Ордера Buy Stop и Sell Stop разрешены");
//--- проверка на ордера типа Stop Limit
if((SYMBOL_ORDER_STOP_LIMIT&symbol_order_mode)==SYMBOL_ORDER_STOP_LIMIT)
Print(symbol+": Ордера Buy Stop Limit и Sell Stop Limit разрешены");
//--- проверка на возможность установки ордеров Stop Loss
if((SYMBOL_ORDER_SL&symbol_order_mode)==SYMBOL_ORDER_SL)
Print(symbol+": Ордера Stop Loss разрешены");
//--- проверка на возможность установки ордеров Take Profit
if((SYMBOL_ORDER_TP&symbol_order_mode)==SYMBOL_ORDER_TP)
Print(symbol+": Ордера Take Profit разрешены");
//---
} Для получения информации о способе вычисления величины залоговых средств по инструменту (размера маржинальных требований) предназначено перечисление ENUM_SYMBOL_CALC_MODE.
| Идентификатор | Описание | Формула |
| SYMBOL_CALC_MODE_FOREX | Forex mode – расчет прибыли и маржи для Форекс | Margin: Lots*Contract_Size/Leverage Profit: (close_price-open_price)*Contract_Size*Lots |
| SYMBOL_CALC_MODE_FUTURES | Futures mode – расчет залога и прибыли для фьючерсов | Margin: Lots *InitialMargin*Percentage/100 Profit: (close_price-open_price)*TickPrice/TickSize*Lots |
| SYMBOL_CALC_MODE_CFD | CFD mode – расчет залога и прибыли для CFD | Margin: Lots *ContractSize*MarketPrice*Percentage/100 Profit: (close_price-open_price)*Contract_Size*Lots |
| SYMBOL_CALC_MODE_CFDINDEX | CFD index mode – расчет залога и прибыли для CFD на индексы | Margin: (Lots*ContractSize*MarketPrice)*TickPrice/TickSize Profit: (close_price-open_price)*Contract_Size*Lots |
| SYMBOL_CALC_MODE_CFDLEVERAGE | CFD Leverage mode – расчет залога и прибыли для CFD при торговле с плечом | Margin: (Lots*ContractSize*MarketPrice*Percentage)/Leverage Profit: (close_price-open_price)*Contract_Size*Lots |
| SYMBOL_CALC_MODE_EXCH_STOCKS | Exchange mode – расчет залога и прибыли для торговли ценными бумагами на бирже | Margin: Lots*ContractSize*OpenPrice Profit: (close_price-open_price)*Contract_Size*Lots |
| SYMBOL_CALC_MODE_EXCH_FUTURES | Futures mode – расчет залога и прибыли для торговли фьючерсными контрактами на бирже | Margin: Lots*InitialMargin или Lots*MaintenanceMargin Profit: (close_price-open_price)*Lots*TickPrice/TickSize |
| SYMBOL_CALC_MODE_EXCH_FUTURES_FORTS | FORTS Futures mode – расчет залога и прибыли для торговли фьючерсными контрактами на FORTS. Размер маржи может уменьшаться на величину отклонения MarginDiscount по следующим правилам: 1. Если цена длинной позиции (ордера на покупку) меньше расчетной цены, то MarginDiscount = Lots*((PriceSettle-PriceOrder)*TickPrice/TickSize) 2. Если цена короткой позиций (ордера на продажу) больше расчетной цены, то MarginDiscount = Lots*((PriceOrder-PriceSettle)*TickPrice/TickSize) где:
| Margin: Lots*InitialMargin или Lots*MaintenanceMargin Profit: (close_price-open_price)*Lots*TickPrice/TickSize |
| SYMBOL_CALC_MODE_SERV_COLLATERAL | Collateral mode — инструмент используется в качестве неторгуемого актива на торговом счете. Рыночная стоимость открытой позиции рассчитывается на основании объема, текущей цены рынка, размера контракта и коэффициента ликвидности. Стоимость учитывается в Активах (Assets), которые суммируются с собственными средствами (Equity). Тем самым открытые позиции по такому инструменту увеличивают размер свободных средств (Free Margin) и служат дополнительным обеспечением под открытые позиции по торгуемым инструментам | Margin: нет Profit: нет Рыночная стоимость: Lots*ContractSize*MarketPrice*LiqudityRate |
Существует несколько режимов торговли по финансовым инструментам. Информация о режимах торговли по конкретному инструменту отображена в значениях перечисления ENUM_SYMBOL_TRADE_MODE.
| Идентификатор | Описание |
| SYMBOL_TRADE_MODE_DISABLED | Торговля по символу запрещена |
| SYMBOL_TRADE_MODE_LONGONLY | Разрешены только покупки |
| SYMBOL_TRADE_MODE_SHORTONLY | Разрешены только продажи |
| SYMBOL_TRADE_MODE_CLOSEONLY | Разрешены только операции закрытия позиций |
| SYMBOL_TRADE_MODE_FULL | Нет ограничений на торговые операции |
Возможные режимы заключения сделок по конкретному инструменту определены в перечислении ENUM_SYMBOL_TRADE_EXECUTION.
| Идентификатор | Описание |
| SYMBOL_TRADE_EXECUTION_REQUEST | Торговля по запросу |
| SYMBOL_TRADE_EXECUTION_INSTANT | Торговля по потоковым ценам |
| SYMBOL_TRADE_EXECUTION_MARKET | Исполнение ордеров по рынку |
| SYMBOL_TRADE_EXECUTION_EXCHANGE | Биржевое исполнение |
Способы начисления свопов при переносе позиции указаны в перечислении ENUM_SYMBOL_SWAP_MODE. Способ начисления свопов определяет единицы измерения параметров SYMBOL_SWAP_LONG и SYMBOL_SWAP_SHORT. Например, если свопы начисляются в валюте депозита клиента, в параметрах объем начисляемых свопов указывается именно в валюте депозита клиента.
| Идентификатор | Описание |
| SYMBOL_SWAP_MODE_DISABLED | Нет свопов |
| SYMBOL_SWAP_MODE_POINTS | Свопы начисляются в пунктах |
| SYMBOL_SWAP_MODE_CURRENCY_SYMBOL | Свопы начисляются в деньгах в базовой валюте символа |
| SYMBOL_SWAP_MODE_CURRENCY_MARGIN | Свопы начисляются в деньгах в маржинальной валюте символа |
| SYMBOL_SWAP_MODE_CURRENCY_DEPOSIT | Свопы начисляются в деньгах в валюте депозита клиента |
| SYMBOL_SWAP_MODE_INTEREST_CURRENT | Свопы начисляются в годовых процентах от цены инструмента на момент расчета свопа(банковский режим – 360 дней в году) |
| SYMBOL_SWAP_MODE_INTEREST_OPEN | Свопы начисляются в годовых процентах от цены открытия позиции по символу (банковский режим – 360 дней в году) |
| SYMBOL_SWAP_MODE_REOPEN_CURRENT | Свопы начисляются переоткрытием позиции. В конце торгового дня позиция принудительно закрывается. На следующий день позиция переоткрывается по цене закрытия +/- указанное количество пунктов (в параметрах SYMBOL_SWAP_LONG и SYMBOL_SWAP_SHORT) |
| SYMBOL_SWAP_MODE_REOPEN_BID | Свопы начисляются переоткрытием позиции. В конце торгового дня позиция принудительно закрывается. На следующий день позиция переоткрывается по текущей цене Bid +/- указанное количество пунктов (в параметрах SYMBOL_SWAP_LONG и SYMBOL_SWAP_SHORT) |
Для указания дня недели предназначены значения перечисления ENUM_DAY_OF_WEEK.
| Идентификатор | Описание |
| SUNDAY | Воскресенье |
| MONDAY | Понедельник |
| TUESDAY | Вторник |
| WEDNESDAY | Среда |
| THURSDAY | Четверг |
| FRIDAY | Пятница |
| SATURDAY | Суббота |
Опцион – это контракт, который дает право, но не обязанность купить или продать базовый актив (товар, акцию, фьючерс и т.д.) по фиксированной цене в течении жизни опциона или в определенный момент времени. Для описания свойств опционов предназначены перечисления, которые описывают тип опциона и право, который он представляет.
| Идентификатор | Описание |
| SYMBOL_OPTION_RIGHT_CALL | Опцион, дающий право купить актив по фиксированной цене |
| SYMBOL_OPTION_RIGHT_PUT | Опцион, дающий право продать актив по фиксированной цене |
| Идентификатор | Описание |
| SYMBOL_OPTION_MODE_EUROPEAN | Европейский тип опциона – может быть погашен только в указанную дату (дата истечения срока, дата исполнения, дата погашения) |
| SYMBOL_OPTION_MODE_AMERICAN | Американский тип опциона – может быть погашен в любой день до истечения срока опциона. Для такого типа задаётся период, в течение которого покупатель может исполнить данный опцион |
Информация о счете
Для получения информации о текущем счете предназначены функции AccountInfoInteger(), AccountInfoDouble() и AccountInfoString(). В качестве параметра эти функции принимают значения из соответствующих перечислений ENUM_ACCOUNT_INFO.
Для функции AccountInfoInteger()
| Идентификатор | Описание | Тип свойства |
| ACCOUNT_LOGIN | Номер счета | long |
| ACCOUNT_TRADE_MODE | Тип торгового счета | ENUM_ACCOUNT_TRADE_MODE |
| ACCOUNT_LEVERAGE | Размер предоставленного плеча | long |
| ACCOUNT_LIMIT_ORDERS | Максимально допустимое количество действующих отложенных ордеров | int |
| ACCOUNT_MARGIN_SO_MODE | Режим задания минимально допустимого уровня залоговых средств | ENUM_ACCOUNT_STOPOUT_MODE |
| ACCOUNT_TRADE_ALLOWED | Разрешенность торговли для текущего счета | bool |
| ACCOUNT_TRADE_EXPERT | Разрешенность торговли для эксперта | bool |
| ACCOUNT_MARGIN_MODE | Режим расчета маржи | ENUM_ACCOUNT_MARGIN_MODE |
Для функции AccountInfoDouble()
| Идентификатор | Описание | Тип свойства |
| ACCOUNT_BALANCE | Баланс счета в валюте депозита | double |
| ACCOUNT_CREDIT | Размер предоставленного кредита в валюте депозита | double |
| ACCOUNT_PROFIT | Размер текущей прибыли на счете в валюте депозита | double |
| ACCOUNT_EQUITY | Значение собственных средств на счете в валюте депозита | double |
| ACCOUNT_MARGIN | Размер зарезервированных залоговых средств на счете в валюте депозита | double |
| ACCOUNT_MARGIN_FREE | Размер свободных средств на счете в валюте депозита, доступных для открытия позиции | double |
| ACCOUNT_MARGIN_LEVEL | Уровень залоговых средств на счете в процентах | double |
| ACCOUNT_MARGIN_SO_CALL | Уровень залоговых средств, при котором требуется пополнение счета (Margin Call). В зависимости от установленного ACCOUNT_MARGIN_SO_MODE выражается в процентах либо в валюте депозита | double |
| ACCOUNT_MARGIN_SO_SO | Уровень залоговых средств, при достижении которого происходит принудительное закрытие самой убыточной позиции (Stop Out). В зависимости от установленного ACCOUNT_MARGIN_SO_MODE выражается в процентах либо в валюте депозита | double |
| ACCOUNT_MARGIN_INITIAL | Размер средств, зарезервированных на счёте, для обеспечения гарантийной суммы по всем отложенным ордерам | double |
| ACCOUNT_MARGIN_MAINTENANCE | Размер средств, зарезервированных на счёте, для обеспечения минимальной суммы по всем открытым позициям | double |
| ACCOUNT_ASSETS | Текущий размер активов на счёте | double |
| ACCOUNT_LIABILITIES | Текущий размер обязательств на счёте | double |
| ACCOUNT_COMMISSION_BLOCKED | Текущая сумма заблокированных комиссий по счёту | double |
Для функции AccountInfoString()
| Идентификатор | Описание | Тип свойства |
| ACCOUNT_NAME | Имя клиента | string |
| ACCOUNT_SERVER | Имя торгового сервера | string |
| ACCOUNT_CURRENCY | Валюта депозита | string |
| ACCOUNT_COMPANY | Имя компании, обслуживающей счет | string |
Существует несколько видов счетов, которые могут быть открыты на торговом сервере. Для того чтобы узнать тип счета, на котором работает MQL5-программа, предназначено перечисление ENUM_ACCOUNT_TRADE_MODE.
| Идентификатор | Описание |
| ACCOUNT_TRADE_MODE_DEMO | Демонстрационный торговый счет |
| ACCOUNT_TRADE_MODE_CONTEST | Конкурсный торговый счет |
| ACCOUNT_TRADE_MODE_REAL | Реальный торговый счет |
При нехватке собственных средств для поддержания открытых позиций возникает ситуация принудительного закрытия Stop Out. Минимальный уровень маржи, при котором наступает Stop Out, может задаваться в процентах или в денежном выражении. Узнать какой режим задан для данного счета можно с помощью перечисления ENUM_ACCOUNT_STOPOUT_MODE.
| Идентификатор | Описание |
| ACCOUNT_STOPOUT_MODE_PERCENT | Уровень задается в процентах |
| ACCOUNT_STOPOUT_MODE_MONEY | Уровень задается в деньгах |
| Идентификатор | Описание |
| ACCOUNT_MARGIN_MODE_RETAIL_NETTING | Используется для внебиржевого рынка при учете позиций в режиме «неттинг» (по одному символу может быть только одна позиция). Расчет маржи осуществляется на основе типа инструмента (SYMBOL_TRADE_CALC_MODE). |
| ACCOUNT_MARGIN_MODE_EXCHANGE | Используется для биржевого рынка. Расчет маржи осуществляется на основе дисконтов, указанных в настройках инструментов. Дисконты устанавливаются брокером, однако не могут быть ниже значений, определенных биржей. |
| ACCOUNT_MARGIN_MODE_RETAIL_HEDGING | Используется для внебиржевого рынка при независимом учете позиций («хеджинг», по одному символу может быть несколько позиций). Расчет маржи осуществляется на основе типа инструмента (SYMBOL_TRADE_CALC_MODE) и с учетом размера захеджированной маржи (SYMBOL_MARGIN_HEDGED). |
Пример скрипта, выводящего краткую информацию о счете.
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//--- имя компании
string company=AccountInfoString(ACCOUNT_COMPANY);
//--- имя клиента
string name=AccountInfoString(ACCOUNT_NAME);
//--- номер счета
long login=AccountInfoInteger(ACCOUNT_LOGIN);
//--- имя сервера
string server=AccountInfoString(ACCOUNT_SERVER);
//--- валюта счета
string currency=AccountInfoString(ACCOUNT_CURRENCY);
//--- демо, конкурсный или реальный счет
ENUM_ACCOUNT_TRADE_MODE account_type=(ENUM_ACCOUNT_TRADE_MODE)AccountInfoInteger(ACCOUNT_TRADE_MODE);
//--- теперь превратим значение перечисления в понятный вид
string trade_mode;
switch(account_type)
{
case ACCOUNT_TRADE_MODE_DEMO:
trade_mode="demo";
break;
case ACCOUNT_TRADE_MODE_CONTEST:
trade_mode="конкурсный";
break;
default:
trade_mode="реальный";
break;
}
//--- в процентах или в денежном выражении задается уровень Stop Out
ENUM_ACCOUNT_STOPOUT_MODE stop_out_mode=(ENUM_ACCOUNT_STOPOUT_MODE)AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE);
//--- получим значения уровней, при которых наступает Margin Call и Stop Out
double margin_call=AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL);
double stop_out=AccountInfoDouble(ACCOUNT_MARGIN_SO_SO);
//--- выведем краткую информацию по счету
PrintFormat("Счет клиента '%s' #%d %s открыт в '%s' на сервере '%s'",
name,login,trade_mode,company,server);
PrintFormat("Валюта счета - %s, уровень MarginCall и StopOut задается в %s",
currency,(stop_out_mode==ACCOUNT_STOPOUT_MODE_PERCENT)?"процентах":" в деньгах");
PrintFormat("Уровень MarginCall=%G, уровень StopOut=%G",margin_call,stop_out);
}
Статистика тестирования
После окончания тестирования вычисляются статистические показатели результатов торговли по множеству параметров. Значения показателей можно получить с помощью функции TesterStatistics(), указав идентификатор показателя из перечисления ENUM_STATISTICS.
Хотя при вычислении статистики используются показатели двух типов — int и double — функция возвращает все значения в виде double. Все статистические величины, имеющие тип double, по умолчанию выражаются в валюте депозита, если не сказано иное.
| Идентификатор | Описание статистического показателя | Тип |
| STAT_INITIAL_DEPOSIT | Значение начального депозита | double |
| STAT_WITHDRAWAL | Количество выведенных со счета средств | double |
| STAT_PROFIT | Чистая прибыль по окончании тестирования, сумма STAT_GROSS_PROFIT и STAT_GROSS_LOSS (STAT_GROSS_LOSS всегда меньше или равно нулю) | double |
| STAT_GROSS_PROFIT | Общая прибыль, сумма всех прибыльных (положительных) трейдов. Значение больше или равно нулю | double |
| STAT_GROSS_LOSS | Общий убыток, сумма всех убыточных (отрицательных) трейдов. Значение меньше или равно нулю | double |
| STAT_MAX_PROFITTRADE | Максимальная прибыль – наибольшее значение среди всех прибыльных трейдов. Значение больше или равно нулю | double |
| STAT_MAX_LOSSTRADE | Максимальный убыток – наименьшее значение среди всех убыточных трейдов. Значение меньше или равно нулю | double |
| STAT_CONPROFITMAX | Максимальная прибыль в последовательности прибыльных трейдов. Значение больше или равно нулю | double |
| STAT_CONPROFITMAX_TRADES | Количество трейдов, сформировавших STAT_CONPROFITMAX (максимальная прибыль в последовательности прибыльных трейдов) | int |
| STAT_MAX_CONWINS | Общая прибыль в самой длинной серии прибыльных трейдов | double |
| STAT_MAX_CONPROFIT_TRADES | Количество трейдов в самой длинной серии прибыльных трейдов STAT_MAX_CONWINS | int |
| STAT_CONLOSSMAX | Максимальный убыток в последовательности убыточных трейдов. Значение меньше или равно нулю | double |
| STAT_CONLOSSMAX_TRADES | Количество трейдов, сформировавших STAT_CONLOSSMAX (максимальный убыток в последовательности убыточных трейдов) | int |
| STAT_MAX_CONLOSSES | Общий убыток в самой длинной серии убыточных трейдов | double |
| STAT_MAX_CONLOSS_TRADES | Количество трейдов в самой длинной серии убыточных трейдов STAT_MAX_CONLOSSES | int |
| STAT_BALANCEMIN | Минимальное значение баланса | double |
| STAT_BALANCE_DD | Максимальная просадка баланса в деньгах. В процессе торговли баланс может испытать множество просадок, берется наибольшее значение. | double |
| STAT_BALANCEDD_PERCENT | Просадка баланса в процентах, которая была зафиксирована в момент максимальной просадки баланса в деньгах (STAT_BALANCE_DD). | double |
| STAT_BALANCE_DDREL_PERCENT | Максимальная просадка баланса в процентах. В процессе торговли баланс может испытать множество просадок, для каждой фиксируется относительное значение просадки в процентах. Возвращается наибольшее значение | double |
| STAT_BALANCE_DD_RELATIVE | Просадка баланса в деньгах, которая была зафиксирована в момент максимальной просадки баланса в процентах (STAT_BALANCE_DDREL_PERCENT). | double |
| STAT_EQUITYMIN | Минимальное значение собственных средств | double |
| STAT_EQUITY_DD | Максимальная просадка средств в деньгах. В процессе торговли средства могут испытать множество просадок, берется наибольшее значение. | double |
| STAT_EQUITYDD_PERCENT | Просадка средств в процентах, которая была зафиксирована в момент максимальной просадки средств в деньгах (STAT_EQUITY_DD). | double |
| STAT_EQUITY_DDREL_PERCENT | Максимальная просадка средств в процентах. В процессе торговли средства могут испытать множество просадок, для каждой фиксируется относительное значение просадки в процентах. Возвращается наибольшее значение | double |
| STAT_EQUITY_DD_RELATIVE | Просадка средств в деньгах, которая была зафиксирована в момент максимальной просадки средств в процентах (STAT_EQUITY_DDREL_PERCENT). | double |
| STAT_EXPECTED_PAYOFF | Математическое ожидание выигрыша | double |
| STAT_PROFIT_FACTOR | Прибыльность – отношение STAT_GROSS_PROFIT/STAT_GROSS_LOSS. Если STAT_GROSS_LOSS=0, то прибыльность принимает значение DBL_MAX | double |
| STAT_RECOVERY_FACTOR | Фактор восстановления – отношение STAT_PROFIT/STAT_BALANCE_DD | double |
| STAT_SHARPE_RATIO | Коэффициент Шарпа | double |
| STAT_MIN_MARGINLEVEL | Минимальное достигнутое значение уровня маржи | double |
| STAT_CUSTOM_ONTESTER | Значение рассчитанного пользовательского критерия оптимизации, возвращаемого функцией OnTester() | double |
| STAT_DEALS | Количество совершенных сделок | int |
| STAT_TRADES | Количество трейдов | int |
| STAT_PROFIT_TRADES | Прибыльные трейды | int |
| STAT_LOSS_TRADES | Убыточные трейды | int |
| STAT_SHORT_TRADES | Короткие трейды | int |
| STAT_LONG_TRADES | Длинные трейды | int |
| STAT_PROFIT_SHORTTRADES | Короткие прибыльные трейды | int |
| STAT_PROFIT_LONGTRADES | Длинные прибыльные трейды | int |
| STAT_PROFITTRADES_AVGCON | Средняя длина прибыльной серии трейдов | int |
| STAT_LOSSTRADES_AVGCON | Средняя длина убыточной серии трейдов | int |