- Структура даты
- Структура входных параметров индикатора
- Структура исторических данных
- Структура стакана цен
- Структура торгового запроса
- Структура результата проверки торгового запроса
- Структура результата торгового запроса
- Структура торговой транзакции
- Структура для получения текущих цен
- Структуры экономического календаря
Структура результата торгового запроса (MqlTradeResult)
В ответ на торговый запрос постановки ордера в торговую систему, торговый сервер возвращает данные, содержащие информацию о результате обработки торгового запроса в виде специальной предопределенной структуры MqlTradeResult.
struct MqlTradeResult
|
Описание полей
Поле |
Описание |
---|---|
retcode |
Код возврата торгового сервера |
deal |
Тикет сделки, если она совершена. Сообщается при торговой операции TRADE_ACTION_DEAL |
order |
Тикет ордера, если он выставлен. Сообщается при торговой операции TRADE_ACTION_PENDING |
volume |
Объем сделки, подтверждённый брокером. Зависит от типа ордера по исполнению |
price |
Цена в сделке, подтверждённая брокером. Зависит от поля deviation в торговом запросе и/или от типа торговой операции |
bid |
Текущая рыночная цена предложения (цены реквоты) |
ask |
Текущая рыночная цена спроса (цены реквоты) |
comment |
Комментарий брокера к операции (по умолчанию заполняется расшифровкой кода возврата торгового сервера) |
request_id |
Идентификатор запроса, проставляемый терминалом при отсылке на торговый сервер |
retcode_external |
Код ошибки, которую вернула внешняя торговая система. Проставление и виды этих ошибок зависят от брокера и внешней торговой системы, в которую выводятся торговые операции |
Результат торговой операции возвращается в переменную типа MqlTradeResult, которая передается вторым параметром в функцию OrderSend() для проведения торговых операций.
Терминал записывает идентификатор запроса в поле request_id при его отправке на торговый сервер функциями OrdersSend() и OrderSendAsync(). От торгового сервера терминал получает сообщения о совершенных торговых транзакциях и передает их на обработку в функцию OnTradeTransaction(), которая содержит в качестве параметров:
- описание самой торговой транзакции в структуре MqlTradeTransaction;
- описание торгового запроса, отправленного из функции OrderSend() или OrdersSendAsync(). Идентификатор запроса отправляется терминалом на торговый сервер, а сам запрос и его request_id сохраняются в памяти терминала;
- результат исполнения торгового запроса в виде структуры MqlTradeResult, в котором поле request_id содержит идентификатор этого самого запроса.
Функция OnTradeTransaction() получает три входных параметра, но последние два параметра имеет смысл анализировать только для торговых транзакций, имеющих тип TRADE_TRANSACTION_REQUEST. Во всех остальных случаях данные о торговом запросе и результате его выполнения не заполняются. Пример анализа параметров приведен в разделе Структура торговой транзакции.
Установка терминалом идентификатора request_id для торгового запроса при его отправке на сервер в первую очередь предназначена для работы с асинхронной функцией OrderSendAsync(). Этот идентификатор позволяет связать выполненное действие (вызов функций OrderSend или OrderSendAsync) с результатом этого действия, передаваемым в OnTradeTransaction().
Пример:
//+------------------------------------------------------------------+
|