Особенности языка mql5, тонкости и приёмы работы - страница 5

 
Dmitry Fedoseev:

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

Если сейчас вставить решение перед СБ, то она станет синхронизированной.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Особенности языка mql5, тонкости и приёмы работы

fxsaber, 2017.02.25 16:02

для придания всем OrderSend синхронизированности с торговым окружением и обхода подводных камней достаточно приведенный исходник оформить в виде mqh-файла и в своих программах делать соответствующий #include.

 
Dmitry Fedoseev:

Дела на много проще. Перед отправкой ордера запоминал длину истории, а после отправки ждал, когда длина истории увеличится. Таймаут надо ввести, что бы вдруг не застряло на вечно. 

fxsaber:

Таймаут есть. В Вашем варианте, к сожалению, могут быть проблемы, если несколько OrderSend отрабатывают вместе (из разных советников).

А ORDER_MAGIC не поможет в этой ситуации? Чтоб только историю своего советника проверять?
 
Vasiliy Pushkaryov:
А ORDER_MAGIC не поможет в этой ситуации? Чтоб только историю своего советника проверять?
Поможет
 
Vasiliy Pushkaryov:
А ORDER_MAGIC не поможет в этой ситуации? Чтоб только историю своего советника проверять?
С этим могут быть проблемы

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Особенности языка mql5, тонкости и приёмы работы

fxsaber, 2017.02.25 17:29

Так же, не синхронизирована не только история, но и SL/TP открытых позиций/ордеров и т.д.

Для маркетов может история увеличиться сначала только на ордер, а спустя мгновение - на сделку.

К тому же, ORDER_MAGIC - это уже запрос истории. Т.е. просто дожидаться увеличения истории, как было предложено ранее, нельзя.

Мне не совсем понятно, зачем придумывать какие-то способы, когда рабочим (в виде ожидания) может быть только один, исходя из логики того, что нужно ждать.

На каждый TRADE_ACTION нужно ждать что-то свое. Вот только это конкретное и ждем. Другое ждать - нет никакого смысла. Нет второго решения, от слова совсем.

 
fxsaber:
С этим могут быть проблемы

К тому же, ORDER_MAGIC - это уже запрос истории. Т.е. просто дожидаться увеличения истории, как было предложено ранее, нельзя.

Мне не совсем понятно, зачем придумывать какие-то способы, когда рабочим (в виде ожидания) может быть только один, исходя из логики того, что нужно ждать.

На каждый TRADE_ACTION нужно ждать что-то свое. Вот только это конкретное и ждем. Другое ждать - нет никакого смысла. Нет второго решения, от слова совсем.

Интересный вы такой товарищ. Если все не расписать подробно, не догадаетесь. Ждать увеличения истории с учетом магика.  
 
Dmitry Fedoseev:
Ждать увеличения истории с учетом магика.  
А если modify?
 
fxsaber:
А если modify?
Зачем после него ждать?
 
Dmitry Fedoseev:
Зачем после него ждать?
При модификации отложки после успешного OrderSend можно нарваться на это
(ENUM_ORDER_STATE)::OrderGetInteger(ORDER_STATE) == ORDER_STATE_REQUEST_MODIFY

помимо того, что SL/TP не сразу обновляются, как и с модификацией позиции.

 

ЗЫ Узнать нюансы возможно только в случае стресс-тестов многих торговых серверов. Без этого торговля на реале - авось. 

 
Всегда можно на что-то нарваться
 
Dmitry Fedoseev:
Всегда можно на что-то нарваться
Предложенное решение пока больше ни на что не нарывалось. Поэтому лучше предложить не смог.
Причина обращения: