В ответ на торговый запрос, выполняемый функциями 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 зависят от брокера и внешней торговой системы, в которую выводятся торговые операции.
Анализировать результаты запросов требуется по-разному, в зависимости от сути торговых операций и способа их отправки. Мы займемся этим в последующих разделах, посвященных конкретным действиям: совершению покупок и продаж по рынку, установке и удалению отложенных ордеров, модификации и закрытию позиций.