5 EA на одном мт4 или на 5и мт4? - страница 2

 

Ihor Herasko #:

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

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

С другой стороны, MT5 позволяет отправлять ордер асинхронно, не ожидая ответа от сервера. Но это требует более сложного кода советника для отслеживания текущей ситуации.
 

JRandomTrader #:
Иногда в этом случае торговый приказ всё равно выполняется, хоть советник и получил ошибку, я на такое нарывался и описывал на форуме.

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

С другой стороны, MT5 позволяет отправлять ордер асинхронно, не ожидая ответа от сервера. Но это требует более сложного кода советника для отслеживания текущей ситуации.

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

 
JRandomTrader #:
С другой стороны, MT5 позволяет отправлять ордер асинхронно, не ожидая ответа от сервера. 

но интересует топик-стартера МТ4 

 
Ihor Herasko #:

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

Не было там сбоя сети, был сбой/ошибка сервера (у человека на другом провайдере всё произошло так же) https://www.mql5.com/ru/forum/1111/page3308#comment_46120826

Ihor Herasko #:

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

Как я понимаю, даже не от сервера. При асинхронной - только от самого терминала MT5, и продолжает работу. А уже дальше терминал отправляет приказ серверу.
Oleksandr Volotko #:

но интересует топик-стартера МТ4 

Я потому и упомянул MT5, что он предоставляет большие возможности по части (скорости) отправки ордеров и, возможно, надо копать в эту сторону.
Ошибки, баги, вопросы - В терминале на графике не отображаются линии открытых позиций.
Ошибки, баги, вопросы - В терминале на графике не отображаются линии открытых позиций.
  • 2023.03.31
  • www.mql5.com
В MT4 на Айфоне на графике не отображаются линии открытых позиций. Просьба к разработчикам добавить колонку прибыли в пунктах в терминале и тестере в визуальном режиме и прибыль с учетом уже начисленных комиссий на открытые позиции
 
JRandomTrader #:

Я потому и упомянул MT5, что он предоставляет большие возможности по части (скорости) отправки ордеров и, возможно, надо копать в эту сторону.

и тем не менее, возможно на то были у топик-стартера причины интересоваться как лучше в МТ4 всё реализовать, что он и сделал - задал вопрос в разделе о МТ4 про МТ4

 
JRandomTrader #:

Не было там сбоя сети, был сбой/ошибка сервера (у человека на другом провайдере всё произошло так же) https://www.mql5.com/ru/forum/1111/page3308#comment_46120826

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

Как я понимаю, даже не от сервера. При асинхронной - только от самого терминала MT5, и продолжает работу. А уже дальше терминал отправляет приказ серверу. Я потому и упомянул MT5, что он предоставляет большие возможности по части (скорости) отправки ордеров и, возможно, надо копать в эту сторону.

В справке написано:

OrderSendAsync

Возвращает true по факту отправки запроса на торговый сервер.

Я понимаю эту фразу не просто как передачу данных терминалу, а именно как то, что запрос отправлен на сервер и от него получено подтверждение. Но вполне возможно, что это просто неудачное описание и все происходит именно так, как Вы описали. Во всяком случае мне не удалось зафиксировать никаких пауз при выполнении OrderSendAsync().
 
Ihor Herasko #:


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

это если терминал подумал что долго ждал ответа передать сигнал на открытие и решил отменить, запретить сигнал.

тогда потеряется сигнал. жалко.

меня тут на мысль навело.
- я готовлю копировщик сделок для достижения определённых целей.
- может мне по пути добавить функцию, что терминал через ЕА или ЕА через терминал, как там правильно
будет локально запоминать цену сигнала
и если при открытии ордера получит тайм аут. то отправит повторный приказ на открытия
но, если за эти мили / секунды нынешняя цена не прошла заданную дистанцию в сторону прибыли, если в сторону убытка то нет проблем.

так мы не теряем сигналы и качество сигналов из за тайм аута.
- я не знаю как это в коде, но думаю спрошу исполнителя.

как вы думаете, таким образом получиться обойти тайм аут? можно ли написать на это код?

 
Dmytr Npwmnysz״ #:

это если терминал подумал что долго ждал ответа передать сигнал на открытие и решил отменить, запретить сигнал.

тогда потеряется сигнал. жалко.

меня тут на мысль навело.
- я готовлю копировщик сделок для достижения определённых целей.
- может мне по пути добавить функцию, что терминал через ЕА или ЕА через терминал, как там правильно
будет локально запоминать цену сигнала
и если при открытии ордера получит тайм аут. то отправит повторный приказ на открытия
но, если за эти мили / секунды нынешняя цена не прошла заданную дистанцию в сторону прибыли, если в сторону убытка то нет проблем.

так мы не теряем сигналы и качество сигналов из за тайм аута.
- я не знаю как это в коде, но думаю спрошу исполнителя.

как вы думаете, таким образом получиться обойти тайм аут? можно ли написать на это код?

по такому же принципу написать код для проскальзывания, если оно превышено, то снова отправлять приказ при возврате к оригинальной цене открытия

 
JRandomTrader #:
Иногда в этом случае торговый приказ всё равно выполняется, хоть советник и получил ошибку, я на такое нарывался и описывал на форуме.

С другой стороны, MT5 позволяет отправлять ордер асинхронно, не ожидая ответа от сервера. Но это требует более сложного кода советника для отслеживания текущей ситуации.

ничего там сложного отправил ордер, пауза что-бы обновилась таблица позиций и дальше смотри что делать нужно

---

нет никаких проблем с ордерами если не использовать newbar

 
Dmytr Npwmnysz״ #:

это если терминал подумал что долго ждал ответа передать сигнал на открытие и решил отменить, запретить сигнал.

тогда потеряется сигнал. жалко.

меня тут на мысль навело.
- я готовлю копировщик сделок для достижения определённых целей.
- может мне по пути добавить функцию, что терминал через ЕА или ЕА через терминал, как там правильно
будет локально запоминать цену сигнала

Ну вообще-то это подход, который используется в надежных советниках. Ни один торговый сигнал не должен пропадать до того момента, как появится подтверждение его исполнения. Даже больше: если в процессе работы выяснится какое-то несоответствие между текущим состоянием ордеров и тем состоянием, которое должно быть, произойдет автоматическое приведение этих состояний в соответствие.

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