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