- Главное событие экспертов: OnTick
- Основные принципы и понятия: ордер, сделка, позиция
- Типы торговых операций
- Типы ордеров
- Режимы исполнения ордеров по цене и объемам
- Сроки действия отложенных ордеров
- Расчет залога для будущего ордера: OrderCalcMargin
- Оценка прибыли торговой операции: OrderCalcProfit
- Структура торгового запроса MqlTradeRequest
- Структура проверки запроса MqlTradeCheckResult
- Проверка корректности запроса: OrderCheck
- Результат отправки запроса: структура MqlTradeResult
- Отправка торгового запроса: OrderSend и OrderSendAsync
- Совершение покупки или продажи
- Модификация уровней Stop Loss и/или Take Profit позиции
- Трейлинг стоп
- Полное и частичное закрытие позиции
- Полное и частичное закрытие встречных позиций (хедж)
- Установка отложенного ордера
- Модификация отложенного ордера
- Удаление отложенного ордера
- Получение списка действующих ордеров
- Свойства ордеров (действующих и в истории)
- Функции для чтения свойств действующих ордеров
- Отбор ордеров по свойствам
- Получение списка позиций
- Свойства позиций
- Функции для чтения свойств позиций
- Свойства сделок
- Выборка ордеров и сделок из истории
- Функции для чтения свойств ордеров из истории
- Функции для чтения свойств сделок из истории
- Типы торговых транзакций
- Событие OnTradeTransaction
- Синхронные и асинхронные запросы
- Событие OnTrade
- Контроль за изменениями торгового окружения
- Особенности создания мультисимвольных экспертов
- Ограничения и преимущества экспертов
- Создание заготовки эксперта в Мастере MQL
Структура проверки запроса MqlTradeCheckResult
Прежде чем отправить торговому серверу запрос на торговую операцию, рекомендуется проверить, что он заполнен без формальных ошибок. Проверка осуществляется функцией OrderCheck, которой передается сам проверяемый запрос в структуре MqlTradeRequest и приемная переменная типа структуры MqlTradeCheckResult, куда и будет записан результат проверки.
Помимо корректности запроса структура позволит оценить состояние счета после выполнения торговой операции, в частности, баланс, средства и маржу.
struct MqlTradeCheckResult
|
В следующей таблице приводится описание полей.
Поле |
Описание |
---|---|
retcode |
Предполагаемый код возврата |
balance |
Значение баланса, которое будет после выполнения торговой операции |
equity |
Значение собственных средств, которое будет после выполнения торговой операции |
profit |
Значение плавающей прибыли, которое будет после выполнения торговой операции |
margin |
Общий размер заблокированной маржи после торговой операции |
margin_free |
Размер свободных собственных средств, которые останутся после выполнения торговой операции |
margin_level |
Уровень маржи, который установится после выполнения торговой операции |
comment |
Комментарий к коду ответа, описание ошибки |
В структуре, заполненной вызовом OrderCheck, поле retcode будет содержать код результата из числа тех, что платформа поддерживает для обработки реальных торговых запросов и проставляет в аналогичное поле retcode структуры MqlTradeResult после вызова торговых функций OrderSend и OrderSendAsync.
Константы с кодами возврата представлены в документации MQL5. Для их более наглядного вывода в журнал при отладке экспертов было определено прикладное перечисление TRADE_RETCODE в файле TradeRetcode.mqh. В нем все элементы имеют идентификаторы, совпадающие со встроенными константами, но без общего префикса "TRADE_RETCODE_". Например,
enum TRADE_RETCODE
|
Таким образом, использование TRCSTR(r.retcode), где r — структура, предоставит минимальное описание числового кода.
Пример применения макроса и анализа структуры мы рассмотрим в следующем разделе про функцию OrderCheck.