Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добрый день!
У меня аналогичный вопрос ко всем и , в первую очередь, к fxsaber.
На первый взгляд, вопрос примитивный, но никак не могу найти на него ответ.
Вот здесь https://www.mql5.com/ru/forum/6343/page939 мне сказали "Попробуй поискать, fxsaber когда-то бился над этой проблемой. Что получилось я не знаю, не интересовался." поэтому решил спросить Вас.
Вопрос такой. Открываю позицию и хочу вывести на печать содержание MqlTradeResult вот так:
retcode, order и volume выводятся, а deal и price всегда нули.
Подскажите, пожалуйста, что делаю не так и как получить доступ (для начала хотя бы вывести через Print) к содержимому структуры result?
Может так?
Открываю позицию и хочу вывести на печать содержание MqlTradeResult вот так:
retcode, order и volume выводятся, а deal и price всегда нули.
Подскажите, пожалуйста, что делаю не так и как получить доступ (для начала хотя бы вывести через Print) к содержимому структуры result?
Нули и прописаны в result.
Может так?
Нули и прописаны в result.
Я вижу открытый ордер, получаю result.retcode 10009, а result.price = 0 ?
Объясните, пожалуйста, в чем смысл result, если он не содержит результат?
Объясните, пожалуйста, в чем смысл result, если он не содержит результат?
Это особенность MT5, когда результат - только ордер (тикет и без цены), но не сделка. У Вас есть несколько путей
Это особенность MT5, когда результат - только ордер (тикет и без цены), но не сделка. У Вас есть несколько путей
В MQL4 не было структуры result и мы, получив ticket, выбирали соответствующий ордер и запрашивали необходимые данные. В MQL5 есть структура result, в которой присутствуют многие необходимые данные, и было бы нелогично этим не воспользоваться.
1. Прежде чем задавать вопрос на форуме, я пытался "Разобраться самостоятельно, как все устроено." и что я вижу - в структуре result:
выводится result.deal, т.е. предполагается, что это имеет смысл и он не всегда представлен нулём в структуре result. Можно привести и другие примеры, которые указывают на то, что result.price, как и result.deal можно получить из MqlTradeResul, что я и пытался сделать.присутствует double price; // Deal price, confirmed by broker.
В примере кода от разработчика
Нигде не видел информации, что "Это особенность MT5, когда результат - только ордер (тикет и без цены), но не сделка". Будьте добры, скажите, на основании какой информации Вы пришли к такому выводу.
2. Если Вам известны какие-то "уже готовые более высокоуровневые (низкий уровень скрыт) наработки,", которые позволяют получить параметры позиции сразу после её открытия (появления кода 10009), без предварительного выбора по ticket, пожалуйста, приведите пример или дайте на него ссылку.
Спасибо.
В MQL4 не было структуры result и мы, получив ticket, выбирали соответствующий ордер и запрашивали необходимые данные. В MQL5 есть структура result, в которой присутствуют многие необходимые данные, и было бы нелогично этим не воспользоваться.
1. Прежде чем задавать вопрос на форуме, я пытался "Разобраться самостоятельно, как все устроено." и что я вижу - в структуре result:
выводится result.deal, т.е. предполагается, что это имеет смысл и он не свегда представлен нулём в структуре result. Можно привести и другие примеры, которые указывают на то, что result.price, как и result.deal можно получить из MqlTradeResul, что я и пытался сделать.присутствует double price; // Deal price, confirmed by broker.
В примере кода от разработчика
Нигде не видел информации, что "Это особенность MT5, когда результат - только ордер (тикет и без цены), но не сделка". Будьте добры, скажите, на основании какой информации Вы пришли к такому выводу.
2. Если Вам известны какие-то "уже готовые более высокоуровневые (низкий уровень скрыт) наработки,", которые позволяют получить параметры позиции сразу после её открытия (появления кода 10009), без предварительного выбора по ticket, пожалуйта, приведите пример или дайте на него ссылку.
В результате торгового запроса имеется либо отказ, либо маркет-оредр. Это не сделка, и не позиция, порождённая сделкой.
В результате торгового запроса имеется либо отказ, либо маркет-оредр. Это не сделка, и не позиция, порождённая сделкой.
- как Вы думаете, после какого шага, из перечисленных Вами, появляется Структура результата торгового запроса (MqlTradeResult)?
- Согласно описанию MQL5:
"Структура результата торгового запроса (MqlTradeResult)
В ответ на торговый запрос постановки ордера в торговую систему, торговый сервер возвращает данные, содержащие информацию о результате обработки торгового запроса в виде специальной предопределенной структуры MqlTradeResult." , а "10009 TRADE_RETCODE_DONE Заявка выполнена"
Т.о. код возврата торгового сервера 10009 означает, что запрос OrderSend был успешно выполнен т.е., если я запрашиваю данные из MqlTradeResult, после получения кода 10009, то как объяснить, что result.price = 0 ?
Спасибо - скажите, пожалуйста:
- после какого шага, из перечисленных Вами, появляется Структура результата торгового запроса (MqlTradeResult)?
- Согласно описанию MQL5:
"Структура результата торгового запроса (MqlTradeResult)
В ответ на торговый запрос постановки ордера в торговую систему, торговый сервер возвращает данные, содержащие информацию о результате обработки торгового запроса в виде специальной предопределенной структуры MqlTradeResult." , а "10009 TRADE_RETCODE_DONE Заявка выполнена"
Т.о. код возврата торгового сервера 10009 означает, что запрос OrderSend был успешно выполнен т.е., если я запрашиваю данные из MqlTradeResult, после получения кода 10009, то как объяснить, что result.price = 0 ?
10009 TRADE_RETCODE_DONE - вы же сами и описали - заявка выполнена. Это просто факт успешной постановки ордера на сервер в очередь на исполнение.
Далее, если данная заявка будет исполнена (ведь она может быть и отклонена сервером), то появляется сделка - вот в результате сделки появится позиция с ценой открытия.
Почитайте об
OnTradeTransaction
Вызывается в экспертах при наступлении события TradeTransaction. Функция предназначена для обработки результатов выполнения торгового запроса.
void OnTradeTransaction()
const MqlTradeTransaction& trans, // структура торговой транзакции
const MqlTradeRequest& request, // структура запроса
const MqlTradeResult& result // структура ответа
);
Нигде не видел информации, что "Это особенность MT5, когда результат - только ордер (тикет и без цены), но не сделка". Будьте добры, скажите, на основании какой информации Вы пришли к такому выводу.
Собственный опыт.
2. Если Вам известны какие-то "уже готовые более высокоуровневые (низкий уровень скрыт) наработки,", которые позволяют получить параметры позиции сразу после её открытия (появления кода 10009), без предварительного выбора по ticket, пожалуйста, приведите пример или дайте на него ссылку.
Есть и другой вариант, но он "продвинутый".