Если получили реквот (138), то обновите рыночное окружение через RefreshRates(), возьмите последние рыночные цены (bid или ask) и попробуйте провести операцию снова.
Если Вы не обновите рыночное окружение и попытаетесь снова со старой ценой провести операцию, то можете (и с большой гарантией) получить снова реквот. Правило обновления рыночного окружения и использование новой цены является обязательным после любого (успешного и неуспешного) вызова торговых функций.
Загляните в раздел "Справочник MQL4 - Торговые функции - Ошибки исполнения" стандартной документации по MQL4. Она есть в MetaEditor'е и на сайте "MQL4: Ошибки исполнения"
Там описаны ошибки и способ реакции на них.
Если Вы не обновите рыночное окружение и попытаетесь снова со старой ценой провести операцию, то можете (и с большой гарантией) получить снова реквот. Правило обновления рыночного окружения и использование новой цены является обязательным после любого (успешного и неуспешного) вызова торговых функций.
Загляните в раздел "Справочник MQL4 - Торговые функции - Ошибки исполнения" стандартной документации по MQL4. Она есть в MetaEditor'е и на сайте "MQL4: Ошибки исполнения"
Там описаны ошибки и способ реакции на них.
Я обязательно обновляю рыночное окружение перед запросом
3. обновляем рыночное окружение и видим что цена не изменилась с момента последнего запроса
Вопрос остается открытым: есть ли смысл посылать повторный запрос при обновленном окружении и цене не изменившейся со времени последнего запроса если получена №138
3. обновляем рыночное окружение и видим что цена не изменилась с момента последнего запроса
Вопрос остается открытым: есть ли смысл посылать повторный запрос при обновленном окружении и цене не изменившейся со времени последнего запроса если получена №138
Видимо, Вы не читали описания по указанной ссылке.
Там четко и однозначно указана Ваша ситуация и что надо делать.
Там четко и однозначно указана Ваша ситуация и что надо делать.
ERR_REQUOTE 138 Запрошенная цена устарела (прошло более 5 тиков), либо перепутаны bid и ask. Можно без задержки обновить данные при помощи функции RefreshRates и повторить попытку. Если ошибка не исчезает, необходимо прекратить все попытки торговых операций и изменить логику программы.
1. Бид и Аск точно в порядке.
2. Данные обновляю.
Я задаю вопрос с точки зрения программирования экспертов: будет ли вообще логически правильным посылать повторный запрос при обновленной но неизменной цене? Ведь скорее всего ошибка пришла из-за устаревания цены (5 тиков) или непопадания в допустимое отклонение брокера....
Получается что если цена не изменилась то смысла посылать запрос нет, нужно только дождаться изменения цены а потом уж посылать запрос?
Ну как еще можно понять вот эти слова:
Где тут непонятности? Где тут исключения?
Обновил, взял цену и провел операцию снова. И больше никаких условий.
Если получили реквот (138), то обновите рыночное окружение через RefreshRates(), возьмите последние рыночные цены (bid или ask) и попробуйте провести операцию снова.
Где тут непонятности? Где тут исключения?
Обновил, взял цену и провел операцию снова. И больше никаких условий.
Как раз здесь ВСЕ понятно :)
Я поэтому и спрашивал разработчиков - они ведь знают тонкости своего клиент-серверного взаимодействия... А целью была оптимизация рабочего времени эксперта... Ведь ПОВТОРИТЬ запрос можно, но если практически 100% что вернется опять реквот то можно отбросить эти запросы чтобы эксперт занялся другой полезной работой :))))
Я поэтому и спрашивал разработчиков - они ведь знают тонкости своего клиент-серверного взаимодействия... А целью была оптимизация рабочего времени эксперта... Ведь ПОВТОРИТЬ запрос можно, но если практически 100% что вернется опять реквот то можно отбросить эти запросы чтобы эксперт занялся другой полезной работой :))))
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Более подробно:
1. эксперт пытается открыть ордер
2. ему приходит ответ №138.
3. обновляем рыночное окружение и види что цена не изменилась с момента последнего запроса
4. можно ли пытаться открыться по этой цене или в этом нет смысла и все равно будет приходить №138?
Я так понимаю что №138 может вернуться по трем причинам:
а) Запрос попал на сервер более чем через 5 сек после отправки
б) запрашиваемая цена не находится в 5 последних тиках
в) допустимое максимальное отклонение установленное у брокера превышено
Я точно знаю что мои запросы попадают на сервер быстрее чем за 5 сек, значит остается два пункта...
Теперь если реквот вернулся из-за пункта б) и цены не было в последних 5-ти тиках то посылать повторный запрос по той же цене вообще не имеет смысла....
Если же было превышено отклонение, то есть шанс что на сервер пришел ноый тик который умещается в отклонение с моей старой ценой....
Уважаемые разработчики я правильно рассуждаю? Есть ли смысл в повторных запросах при неизменной цене?