Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
1) Если закрываем ордер таким образом:
OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
и получаем ошибку исполнения 135 или 138, необходимо обновить данные при помощи функции RefreshRates () и повторить попытку.
Если закрываем ордер таким образом:
OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,Red);
и получаем ошибку исполнения 135 или 138, повторяем попытку без обновления RefreshRates (). Цены Bid и Ask кэшируются, а MarketInfo(OrderSymbol(),MODE_BID) нет ? Права я или нет ?
2) Значения MarketInfo(OrderSymbol(),MODE_BID) и MarketInfo(OrderSymbol(),MODE_ASK) требуют дополнительного округления с использованием NormalizeDouble(...) ?
Спасибо за ответ.
Если я использую для открытия
double ask = MarketInfo( Symbol(), MODE_ASK );
, то при Рефреше переменная ask обновится?
Конечно нет.
Ренат, а как поступать? Я не совсем понимаю....
А что тут сложного? Я вот тоже не могу понять - почему Вы не понимаете?
Многократно повторено - обновляются закешированные графики + предопределенные (тоже закешированные) переменные Bid/Ask. И ничего более.
Если обновляются Ask и Bid ( кстати, по всем инструментам? ), значит ли это что обновляются значения MarketInfo( Symbol(), MODE_ASK ) и MarketInfo( Symbol(), MODE_BID ) ?
MarketInfo - это _функция_, которая выдаст текущее точные незакешированные данные из окна MarketWatch.
Помните ситуацию, которая случилась пару дней назад ( в ветке 159 билда обсуждали ), когда при установке ордера инвалид стоп получился? Можно ли избежать подобного поставив перед проверками RefreshRates() для "освежения" цены?
Еще раз повторю - если Ваш эксперт тратит время (а закешированные данные замораживаются!), а потом как ни в чем не бывало пытается (секунд через 3, 5, 10) использовать старые данные, то кто тут виноват? Похоже что программист, который вообще упустил из виду то, что после задержки _рыночная_ситуация_поменялась_ и требуется _переоценка_. То есть, надо бы вызвать RefreshRates и подумать - надо ли дальше пытаться совершить сделку?
Кеширование состояние текущего графика и рыночных цен при входе в эксперта является "остановкой времени" для эксперта. Это сделано для того, чтобы эксперт работал с зафиксированным срезом состояния рынка, а не постоянно изменяющейся моделью, когда может сработать такое условие: Ask != Ask.
Именно для обновления состояния рынка используется Refresh.
RefreshRates();
OrderSend(Symbol_for_work,OP_SELL,v,Bid,5,stop_loss_level,tp_level,"SELL",MagicNumber_sell,0);
При установке проскальзывания в 5 пунктов для EURUSD ещё НИ РАЗУ не удалось отловить ситуацию когда бы ордер не смог открыться. Честно говоря я даже не делаю проверки открылся ли ордер или нет на текущем старте эксперта. Эта проверка выполняется стандартно в следующий старт эксперта через полчаса. Правда я экстримом на новостях не занимаюсь. Возможно у Вас в этом проблема? В работе по быстрому рынку? Тогда просто поставьте проскальзывание побольше, если Вам требуется войти во чтобы то ни стало именно сейчас, а не часом раньше или часом позже когда новостей не было (или уже не будет).
Если закрываем ордер таким образом:
OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,Red);
и получаем ошибку исполнения 135 или 138, повторяем попытку без обновления RefreshRates (). Цены Bid и Ask кэшируются, а MarketInfo(OrderSymbol(),MODE_BID) нет ? Права я или нет ?
Вы цитировали, если не ошибаюсь, мой разговор с Ренатом =)
И он однозначно ответил - MarketInfo всегда даёт свежую информацию.
Но с тех пор у меня в коде нормализуется все, что касается торговли. И ни каких проблем ;)
Правильность используемой Вами конструкции не вызывает никаких сомнений, она описана в документации.
Полагаю, использование альтернативного варианта MarketInfo( Symbol(), MODE_ASK ) и MarketInfo( Symbol(), MODE_BID ) может дать небольшой выигрыш по времени.
Последнее слово за разработчиками, только они знают все нюансы. Прошу, жду, но нет мне ответа ...
Я его писал специально для вас ;)