Как правильно работать в MT5 с OrderSend - страница 4

 
fxsaber:
К сожалению, только через костыль - глобальная переменная терминала.

И через дополнительные костыли, обеспечивающие удаление гл. переменной при аварийном сбое, например.

Поэтому мой вариант с ожиданием сделки в истории надежнее и проще. Но все равно костыльный..

 

Не проверял, но, возможно, после OrderSend ВСЕ советники получают соответствующее событие для OnTradeTransaction.

Тогда все решается без костылей и для нескольких советников на одном символе. 

 
prostotrader:

Хотите, я Вам помогу обойти эти казусы (из личного опыта торговли на реальном счёте роботами МТ5)? 

Добавлено

Абсолютно бесплатно :) 

Хочу! :)
 
prostotrader:
Люди не хотят думать сами, а хотят чтобы за нах это делали другие... к сожалению это так.
Чтобы думать, нужно иметь информацию к размышлению. Как думать, если исходной информации недостаточно?
 
fxsaber:

Люди не только думают, но и делятся своими решениями. Разработчики по этому поводу молчат, к сожалению.

Ни одного примера в Документации на эту тему. И это с основной функцией.

Я поддерживаю. Если бы где-то было написано, что OrderSend() дожидается ответа от сервера и что происходит дальше, не надо было бы придумывать обходных путей проверки.

Есть отличная статья про ордера, сделки и позиции и работу с ними и с их кэшем, где подробно расписано все до деталей. Однако, она абсолютно обходит стороной процессы, которые происходят при самой посылке ордеров.

 
fxsaber:
Мой вариант

prostotrader:

Пользуйтесь.

А что произойдет, если событие OnTrade() сработает до того, как закончится обработка OnTick(). Время иногда имеет значение. Ждать пока дойдет очередь до OnTrade() может быть проблематично. Кроме того, сама функция OrderSend() сконструирована так, чтобы я мог прямо на месте получить информацию о ее результатах. Или нет?
 
Oleg Shenker:
А что произойдет, если событие OnTrade() сработает до того, как закончится обработка OnTick(). Время иногда имеет значение. Ждать пока дойдет очередь до OnTrade() может быть проблематично. Кроме того, сама функция OrderSend() сконструирована так, чтобы я мог прямо на месте получить информацию о ее результатах. Или нет?

OrderSend() абсодютно синхронная функци - если получили билет, то всё исполнилось.

Внизу пример 

 

Добавлено, а здесь логи

https://www.mql5.com/ru/forum/38456/page85#comment_2888263 

ФОРТС. Вопросы по исполнению
ФОРТС. Вопросы по исполнению
  • www.mql5.com
С большими проблемами удалось это сделать (начальник отдела по работе с профессиональными клиентами ДЦ Открытие Евгений Сергеевич,.
Файлы:
TestOrders.mq5  23 kb
 
Andrey Khatimlianskii:
Не исполнилось, а отправилось на сервер МТ5.

Нет. Для биржи - отправилось на Биржу (может и не исполнилось :) ), для ФОРЕКС не знаю

Добавлено

Т.е (Для биржи),если Вы получили тикет в функции OrderSend((), то это означает, что ордер принят Биржей 

Добавлено

См. картинку (были изменения в 1375)

 

 
Andrey Khatimlianskii:

Это частный случай отправки лимитного ордера на биржу. А что с маркет-ордером на форексе?

Я же сказал, что про ФОРЕКС не знаю
 
Andrey Khatimlianskii:

В этой теме — ни разу. Только про МТ5 и синхронность ОрдерСенд.

Значит, не подходит ответ. 

Нет. Для биржи - отправилось на Биржу (может и не исполнилось :) ), для ФОРЕКС не знаю

Добавлено

Т.е (Для биржи),если Вы получили тикет в функции OrderSend((), то это означает, что ордер принят Биржей 

Добавлено

См. картинку (были изменения в 1375)

Причина обращения: