Что обновляет функция RefreshRates() - страница 10

 
Просто кэш поддерживается в актуальном состоянии, только если данные нужны (запрашиваются из советника или есть открытый чарт)
 
Aleksey Mavrin:

Что за кизяк? Народное бурятское блюдо?)

зачем выдумывать, какой кэш две минуты. Всё просто - если вам надо к тф обращаться каждые 5 минут, достаточно две минуты. Если каждую минуту, тогда 20-30 секунд и т.п

Нет. Если каждую минуту, то и дополнительное обращение к таймсериям не нужно - они и так актуальны.

 
Roman:

А не задумывался почему надо обращаться к данным с определённой частотой?

Ренат часто упоминал, что данные кэшируются, прежде чем отдать их пользователю.
То есть как я понял, вызывая любую функцию для данных, мы запрашиваем сохранённые данные из кэша, а не с сервера.

Роман, тут в теме всё говорится про тайм-серии, не сложилось разве что они и есть кэш? Их можно нарисовать на график, можно отдать в эксперт по запросу. Разные слова суть одна.

 
Artyom Trishkin:

Нет. Если каждую минуту, то и дополнительное обращение к таймсериям не нужно - они и так актуальны.

Да, вы правы.  Сказано было утрировано. Не пробовал, но думаю даже если к минутке (не открытой) обращаться раз в 3-5 минут, она всё равно будет актуализирована.

 
Aleksey Mavrin:

Да, вы правы.  Сказано было утрировано. Не пробовал, но думаю даже если к минутке (не открытой) обращаться раз в 3-5 минут, она всё равно будет актуализирована.

Не реже одного раза в две минуты. Раз в 3-5 минут - это реже. Я обычно устанавливаю обращение к таймсерии через 90 секунд. Обращаться можно посредством любой функции, вызывающей процесс синхронизации. Но обязательно нужно помнить - в индикаторах нельзя запрашивать синхронизацию у таймсерии, которая совпадает с текущим символом графика и его периодом - это может привести к клинчу. Об этом и в справке написано. Т.е., в актуальном состоянии в индикаторах нужно поддерживать только "неродные" символы/периоды путём обращения к ним посредством функций, вызывающих процесс синхронизации. iTime() например.

 
Artyom Trishkin:

Но обязательно нужно помнить - в индикаторах нельзя запрашивать синхронизацию у таймсерии, которая совпадает с текущим символом графика и его периодом - это может привести к клинчу. Об этом и в справке написано. 

Уточните, что имеете в виду под синхронизацией? В MQL4 синхронизация возможна только путем обращения к i-функциям. Исходя из сказанного Вами получается, что нельзя использовать:

iTime(NULL, PERIOD_CURRENT, 1)

Но ведь такое обращение используется сплошь и рядом.

 
Ihor Herasko:

Уточните, что имеете в виду под синхронизацией? В MQL4 синхронизация возможна только путем обращения к i-функциям. Исходя из сказанного Вами получается, что нельзя использовать:

Но ведь такое обращение используется сплошь и рядом.

Я говорю про mql5 и только про индикаторы. В индикаторах в mql5 для текущего символа/периода графика есть готовые данные в OnCalculate() - сами знаете же. Для остальных символов/периодов - получение данных посредством функций. И это работает кроссплатформенно. Насчёт клинча в mql4 я не в курсе - год наверное не открывал четвёрку. Но одинаковые конструкции работают одинаково и в mql5, и в mql4. Поэтому можно использовать рекомендации для mql5 и для четвёрки без "последствий".

 
Artyom Trishkin:

Я говорю про mql5

Тема на форуме MQL4

 
Ihor Herasko:

Тема на форуме MQL4

Artyom Trishkin:

Я говорю про mql5 и только про индикаторы. В индикаторах в mql5 для текущего символа/периода графика есть готовые данные в OnCalculate() - сами знаете же. Для остальных символов/периодов - получение данных посредством функций. И это работает кроссплатформенно. Насчёт клинча в mql4 я не в курсе - год наверное не открывал четвёрку. Но одинаковые конструкции работают одинаково и в mql5, и в mql4. Поэтому можно использовать рекомендации для mql5 и для четвёрки без "последствий".

 
Alexey Viktorov:

Принцип синхронизации данных в MQL4 (где официально синхронизации вообще нет) и MQL5 разный. Про какие одинаковые конструкции речь?