Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ihor Herasko #:
Даже если ответ от сервера заставит себя долго ждать, то сработает таймаут, советник перестанет ждать ответа и сгенерирует ошибку выполнения торгового приказа.
С другой стороны, MT5 позволяет отправлять ордер асинхронно, не ожидая ответа от сервера. Но это требует более сложного кода советника для отслеживания текущей ситуации.
JRandomTrader #:
Иногда в этом случае торговый приказ всё равно выполняется, хоть советник и получил ошибку, я на такое нарывался и описывал на форуме.
Да, если сбой в сети, то ничего не поделаешь. Я даже не представляю, как в принципе можно обработать ситуацию, при которой сокет падает именно в тот момент, когда сервер уже получил запрос от советника, но не смог отправить ответ об успешном выполнении приказа.
С другой стороны, MT5 позволяет отправлять ордер асинхронно, не ожидая ответа от сервера. Но это требует более сложного кода советника для отслеживания текущей ситуации.
Тут следует уточнить. Ответ от сервера советник все равно ожидает, такой запрос ведь не мгновенно происходит. Другое дело, что не ожидается сам результат выполнения приказа. Советник получает лишь подтверждение от сервера о том, что приказ принят, в чем и приводит к ускорению работы.
С другой стороны, MT5 позволяет отправлять ордер асинхронно, не ожидая ответа от сервера.
но интересует топик-стартера МТ4
Да, если сбой в сети, то ничего не поделаешь. Я даже не представляю, как в принципе можно обработать ситуацию, при которой сокет падает именно в тот момент, когда сервер уже получил запрос от советника, но не смог отправить ответ об успешном выполнении приказа.
Не было там сбоя сети, был сбой/ошибка сервера (у человека на другом провайдере всё произошло так же) https://www.mql5.com/ru/forum/1111/page3308#comment_46120826
Тут следует уточнить. Ответ от сервера советник все равно ожидает, такой запрос ведь не мгновенно происходит. Другое дело, что не ожидается сам результат выполнения приказа. Советник получает лишь подтверждение от сервера о том, что приказ принят, в чем и приводит к ускорению работы.
но интересует топик-стартера МТ4
Я потому и упомянул MT5, что он предоставляет большие возможности по части (скорости) отправки ордеров и, возможно, надо копать в эту сторону.
и тем не менее, возможно на то были у топик-стартера причины интересоваться как лучше в МТ4 всё реализовать, что он и сделал - задал вопрос в разделе о МТ4 про МТ4
Не было там сбоя сети, был сбой/ошибка сервера (у человека на другом провайдере всё произошло так же) https://www.mql5.com/ru/forum/1111/page3308#comment_46120826
Не буду спорить. Для меня эта ситуация не слишком понятна, т. к. не хватает данных для того, чтобы в ней разобраться (например, логи самого сервера вряд ли получится достать).
Как я понимаю, даже не от сервера. При асинхронной - только от самого терминала MT5, и продолжает работу. А уже дальше терминал отправляет приказ серверу. Я потому и упомянул MT5, что он предоставляет большие возможности по части (скорости) отправки ордеров и, возможно, надо копать в эту сторону.
В справке написано:
Возвращает true по факту отправки запроса на торговый сервер.
Даже если ответ от сервера заставит себя долго ждать, то сработает таймаут, советник перестанет ждать ответа и сгенерирует ошибку выполнения торгового приказа.
это если терминал подумал что долго ждал ответа передать сигнал на открытие и решил отменить, запретить сигнал.
тогда потеряется сигнал. жалко.
меня тут на мысль навело.
- я готовлю копировщик сделок для достижения определённых целей.
- может мне по пути добавить функцию, что терминал через ЕА или ЕА через терминал, как там правильно
будет локально запоминать цену сигнала
и если при открытии ордера получит тайм аут. то отправит повторный приказ на открытия
но, если за эти мили / секунды нынешняя цена не прошла заданную дистанцию в сторону прибыли, если в сторону убытка то нет проблем.
так мы не теряем сигналы и качество сигналов из за тайм аута.
- я не знаю как это в коде, но думаю спрошу исполнителя.
как вы думаете, таким образом получиться обойти тайм аут? можно ли написать на это код?
это если терминал подумал что долго ждал ответа передать сигнал на открытие и решил отменить, запретить сигнал.
тогда потеряется сигнал. жалко.
меня тут на мысль навело.
- я готовлю копировщик сделок для достижения определённых целей.
- может мне по пути добавить функцию, что терминал через ЕА или ЕА через терминал, как там правильно
будет локально запоминать цену сигнала
и если при открытии ордера получит тайм аут. то отправит повторный приказ на открытия
но, если за эти мили / секунды нынешняя цена не прошла заданную дистанцию в сторону прибыли, если в сторону убытка то нет проблем.
так мы не теряем сигналы и качество сигналов из за тайм аута.
- я не знаю как это в коде, но думаю спрошу исполнителя.
как вы думаете, таким образом получиться обойти тайм аут? можно ли написать на это код?
по такому же принципу написать код для проскальзывания, если оно превышено, то снова отправлять приказ при возврате к оригинальной цене открытия
Иногда в этом случае торговый приказ всё равно выполняется, хоть советник и получил ошибку, я на такое нарывался и описывал на форуме.
С другой стороны, MT5 позволяет отправлять ордер асинхронно, не ожидая ответа от сервера. Но это требует более сложного кода советника для отслеживания текущей ситуации.
ничего там сложного отправил ордер, пауза что-бы обновилась таблица позиций и дальше смотри что делать нужно
---
нет никаких проблем с ордерами если не использовать newbar
это если терминал подумал что долго ждал ответа передать сигнал на открытие и решил отменить, запретить сигнал.
тогда потеряется сигнал. жалко.
меня тут на мысль навело.
- я готовлю копировщик сделок для достижения определённых целей.
- может мне по пути добавить функцию, что терминал через ЕА или ЕА через терминал, как там правильно
будет локально запоминать цену сигнала
Ну вообще-то это подход, который используется в надежных советниках. Ни один торговый сигнал не должен пропадать до того момента, как появится подтверждение его исполнения. Даже больше: если в процессе работы выяснится какое-то несоответствие между текущим состоянием ордеров и тем состоянием, которое должно быть, произойдет автоматическое приведение этих состояний в соответствие.