- Главное событие экспертов: OnTick
- Основные принципы и понятия: ордер, сделка, позиция
- Типы торговых операций
- Типы ордеров
- Режимы исполнения ордеров по цене и объемам
- Сроки действия отложенных ордеров
- Расчет залога для будущего ордера: OrderCalcMargin
- Оценка прибыли торговой операции: OrderCalcProfit
- Структура торгового запроса MqlTradeRequest
- Структура проверки запроса MqlTradeCheckResult
- Проверка корректности запроса: OrderCheck
- Результат отправки запроса: структура MqlTradeResult
- Отправка торгового запроса: OrderSend и OrderSendAsync
- Совершение покупки или продажи
- Модификация уровней Stop Loss и/или Take Profit позиции
- Трейлинг стоп
- Полное и частичное закрытие позиции
- Полное и частичное закрытие встречных позиций (хедж)
- Установка отложенного ордера
- Модификация отложенного ордера
- Удаление отложенного ордера
- Получение списка действующих ордеров
- Свойства ордеров (действующих и в истории)
- Функции для чтения свойств действующих ордеров
- Отбор ордеров по свойствам
- Получение списка позиций
- Свойства позиций
- Функции для чтения свойств позиций
- Свойства сделок
- Выборка ордеров и сделок из истории
- Функции для чтения свойств ордеров из истории
- Функции для чтения свойств сделок из истории
- Типы торговых транзакций
- Событие OnTradeTransaction
- Синхронные и асинхронные запросы
- Событие OnTrade
- Контроль за изменениями торгового окружения
- Особенности создания мультисимвольных экспертов
- Ограничения и преимущества экспертов
- Создание заготовки эксперта в Мастере MQL
Результат отправки запроса: структура MqlTradeResult
В ответ на торговый запрос, выполняемый функциями OrderSend или OrderSendAsync, которые мы рассмотрим в следующем разделе, сервер возвращает результаты обработки запроса. Для этой цели используется специальная предопределенная структура MqlTradeResult.
struct MqlTradeResult
|
В следующей таблице приводится описание её полей.
Поле |
Описание |
---|---|
retcode |
Код возврата торгового сервера |
deal |
Тикет сделки, если она совершена (при торговой операции TRADE_ACTION_DEAL) |
order |
Тикет ордера, если он выставлен (при торговой операции TRADE_ACTION_PENDING) |
volume |
Объем сделки, подтверждённый брокером (зависит от режимов исполнения ордера) |
price |
Цена в сделке, подтверждённая брокером (зависит от поля deviation в торговом запросе, режима исполнения и торговой операции) |
bid |
Текущая рыночная цена спроса |
ask |
Текущая рыночная цена предложения |
comment |
Комментарий брокера к операции (по умолчанию заполняется расшифровкой кода возврата торгового сервера) |
request_id |
Идентификатор запроса, проставляемый терминалом при отсылке на торговый сервер |
retcode_external |
Код ошибки, которую вернула внешняя торговая система |
Как мы увидим далее, при проведении торговых операций переменная типа MqlTradeResult передается вторым параметром по ссылке в функции OrderSend или OrderSendAsync, и в ней возвращается результат.
При отправке торгового запроса на сервер терминал устанавливает идентификатор request_id в уникальное значение. Это нужно для анализа последующих торговых событий, что наиболее востребовано, если применяется асинхронная функция OrderSendAsync. Этот идентификатор позволяет связать отправленный запрос с результатом его обработки, передаваемым в обработчик события OnTradeTransaction.
Наличие и виды ошибок в поле retcode_external зависят от брокера и внешней торговой системы, в которую выводятся торговые операции.
Анализировать результаты запросов требуется по-разному, в зависимости от сути торговых операций и способа их отправки. Мы займемся этим в последующих разделах, посвященных конкретным действиям: совершению покупок и продаж по рынку, установке и удалению отложенных ордеров, модификации и закрытию позиций.