Новый тик приходит только с изменеим цены. То есть - наличие новой
цены автоматически означает наличие нового времени. Хотя с
другой стороны, помню скриншоты одного из дилера (с МТ4), у которого не было пропусков минутных свечей, и пропуски заполнялись
барами H=O=C=L .
Возвращает true, если были обновлены ценовые данные, то есть пока эксперт работал пришёл новый тик по данному инструменту. Или несколько тиков - тогда вполне возможно что текущая цена будет та же, что и при старте эксперта.
Прошло несколько тиков от начала выполнения функции старт, в связи с этим возможна ситуация - на момент вызова RefresheRates() цена опять таже, что и на момент запуска функции старт, но время другое. В этом случае будет true, или false?
true
stringo:
Значит обновление данных проходит только по текущему инструменту.
Так понимаю.Возвращает true, если были обновлены ценовые данные, то есть пока эксперт работал пришёл новый тик по данному инструменту. Или несколько тиков - тогда вполне возможно что текущая цена будет та же, что и при старте эксперта.
Вопрос:
А как тогда правильно обновить данные по другим инструментам по которым работает советник ?
Такой кусок кода понимаю не поможет обновить данные по разным валютам, только по текущей ?
RefreshRates();
double bid_EUR =MarketInfo("EURUSD",MODE_BID);
double ask_JPY =MarketInfo("USDJPY",MODE_ASK);
mazzz:
RefreshRates();
double bid_EUR =MarketInfo("EURUSD",MODE_BID);
double ask_JPY =MarketInfo("USDJPY",MODE_ASK);
Для MarketInfo не нужно вызывать RefreshRates, так как MarketInfo всегда выдает
последнюю рыночную информацию.
RefreshRates();
double bid_EUR =MarketInfo("EURUSD",MODE_BID);
double ask_JPY =MarketInfo("USDJPY",MODE_ASK);
Renat:
Мне кажется тут есть разница. RefreshRates(), насколько я понимаю обращается
к серверу и выдает свежую информацию.mazzz:
RefreshRates();
double bid_EUR =MarketInfo("EURUSD",MODE_BID);
double ask_JPY =MarketInfo("USDJPY",MODE_ASK);
Для MarketInfo не нужно вызывать RefreshRates, так как MarketInfo всегда выдает
последнюю рыночную информацию.RefreshRates();
double bid_EUR =MarketInfo("EURUSD",MODE_BID);
double ask_JPY =MarketInfo("USDJPY",MODE_ASK);
А MarketInfo берет информацию уже существующую в терминале.
Или я чего то не понимаю ? В чем тогда разница между этими функциями ?
mazzz:
Мне кажется тут есть разница. RefreshRates(), насколько я понимаю обращается к серверу и выдает свежую информацию.
Неправильно. RefreshRates не обращается к серверу.Каждый скрипт имеет у себя локальную копию части рыночной информации, которая обновляется при входе в start() или вызове RefreshRates(). Эта локальная копия информации нужна для того, чтобы у скрипта была точно закрепленные данные (чтобы вдруг не получилось, что Ask != Ask).
MarketInfo() позволяет обращаться напрямую к постоянно обновляемым данным в Market Watch и получать всегда последнюю информацию.
Renat:
Каждый скрипт имеет у себя локальную копию части рыночной информации, которая обновляется при входе в start() или вызове RefreshRates(). Эта локальная копия информации нужна для того, чтобы у скрипта была точно закрепленные данные (чтобы вдруг не получилось, что Ask != Ask).
MarketInfo() позволяет обращаться напрямую к постоянно обновляемым данным в Market Watch и получать всегда последнюю информацию.
Можно пояснить, что такое Market Watch ? Подозреваю имеется ввиду обращение
к серверу ?mazzz:
Мне кажется тут есть разница. RefreshRates(), насколько я понимаю обращается к серверу и выдает свежую информацию.
Неправильно. RefreshRates не обращается к серверу.Каждый скрипт имеет у себя локальную копию части рыночной информации, которая обновляется при входе в start() или вызове RefreshRates(). Эта локальная копия информации нужна для того, чтобы у скрипта была точно закрепленные данные (чтобы вдруг не получилось, что Ask != Ask).
MarketInfo() позволяет обращаться напрямую к постоянно обновляемым данным в Market Watch и получать всегда последнюю информацию.
Потому информация MarketInfo() имеет большую актуальность по синхронизации с сервером. Правильно я понимаю ?
Благодарю за информативные ответы.
Никто к серверу не обращается. Терминал всегда имеет полное
рыночное окружение (только исторические данные могут подгружаться
в режиме on demand).
Попробуем по другому:
На возникающий вопрос "не понятно, а зачем кеш?" я порекомендую подумать поглубже самостоятельно.
Попробуем по другому:
- в терминале постоянно в режиме реального времени обновляется
вся рыночная информация
- каждый скрипт имеет свой КЕШ для часто используемых данных (Bid, Ask и тд)
На возникающий вопрос "не понятно, а зачем кеш?" я порекомендую подумать поглубже самостоятельно.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
RefreshRates() возвращает true если новая цена. Если цена таже, но она с новым временем. Будет true или false?