Нужна функция наподобие RefreshRates(), которая выполняла бы обновление независимо от каких-либо условий

 
RefreshRates() - "Данные могут не обновиться только по той причине, что они соответствуют текущему состоянию клиентского терминала". Для моих целей необходимо обновлять данные в предопределенных переменных и массивах-таймсериях независимо от каких-либо условий.
Подскажите, знатоки mql4, какую-то подобную функцию или может можно с RefreshRates() снять ограничение ?????
 

Ещё раз перечитайте.

Если данные в актуальном состоянии (то есть после последнего раза не пришло ни одного тика) то зачем их обновлять? Что Вы хотите получить после принудительного обновления? Данные же те же самые останутся.

 
В ходе работы эксперт создает исторические данные разных таймфреймов несуществующей валюты, назовем ее, "UnrealCur". После создания эксперт должен анализировать график созданной истории: (!) получать значения индикаторов для только что созданного графика.

Проблема. Данные истории за время работы эксперта изменяются несколько раз для всех баров, а данные индикаторов обновляются только для 0-го и 1-го баров и в итоге для текущего момента значение индикатора рассчитывается неверно.

Алгоритм создания истории я позаимствовал из PeriodConverter. Оттуда же функцию обновления графика PostMessageA(hwnd,WM_COMMAND,33324,0); из библиотеки WinUser32.mqh. Нужна какая-то функция, которая бы обновляла значения индикаторов для всех баров.

P.S. Пожалуйста, не спрашивайте по какому принципу создается график "валюты" UnrealCur. Это типа ноу-хау, как мне кажется, и об этом я не хочу говорить. Тем более еще не проверено в работе.
 

Если Вы обновляете данные через PostMessage, то и индикаторы должны считаться заново, для всех баров, без каких-либо дополнительных действий.

 
markos31181:
RefreshRates() - "Данные могут не обновиться только по той причине, что они соответствуют текущему состоянию клиентского терминала". Для моих целей необходимо обновлять данные в предопределенных переменных и массивах-таймсериях независимо от каких-либо условий.
Подскажите, знатоки mql4, какую-то подобную функцию или может можно с RefreshRates() снять ограничение ?????

Здесь не  RefreshRates() надо, а RefreshHistory(), но такой нету.
 
Integer писал (а):
markos31181:
RefreshRates() - "Данные могут не обновиться только по той причине, что они соответствуют текущему состоянию клиентского терминала". Для моих целей необходимо обновлять данные в предопределенных переменных и массивах-таймсериях независимо от каких-либо условий.
Подскажите, знатоки mql4, какую-то подобную функцию или может можно с RefreshRates() снять ограничение ?????

Здесь не RefreshRates() надо, а RefreshHistory(), но такой нету.

Так через PostMessage и можно отрефрешиться - это и есть RefreshHistory.
 
График действительно обновляется, а вот RSI, например, обновляет только 0-й и 1-ый бары. Я думаю, что это происходит из-за самого алгоритма работы индикаторов - при поступлении нового тика индикаторы пересчитывают только текущий и предыдущий бары.  Можно, конечно, исправить RSI, поместить его в Пользовательские индикаторы и вызывать функцией iCustom.  Но хотелось бы 
отделаться "малой кровью". Хотелось бы с помощью какой-нибудь функции "перезапускать" индикаторы,  чтобы они пересчитывали все бары. Кроме того не все встроенные в MT4 индикаторы представлены в samples.
 
markos31181:
 Можно, конечно, исправить RSI, поместить его в Пользовательские индикаторы и вызывать функцией iCustom.  
Сейчас попробовал так сделать. Получилось.
Но вопрос все еще в силе. Хотелось бы отделаться "малой кровью".
 

markos31181 писал (а):
График действительно обновляется, а вот RSI, например, обновляет только 0-й и 1-ый бары. Я думаю, что это происходит из-за самого алгоритма работы индикаторов - при поступлении нового тика индикаторы пересчитывают только текущий и предыдущий


Тут, похоже, дело в алгоритме работы IndicatorCounted(), предназначенного для оптимизации вычислений. Наверно, Вам нужно, чтобы он проверял новизну истории везде - но какая тут тогда оптимизация вычислений? Значит, при RefreshHistory() он должен "забывать" все обсчитанное и обнуляться.
 

у меня то же вот время в оффлан_графике остановилось. )

как решил проблему?

Причина обращения: