Нужна функция наподобие RefreshRates(), которая выполняла бы обновление независимо от каких-либо условий
Ещё раз перечитайте.
Если данные в актуальном состоянии (то есть после последнего
раза не пришло ни одного тика) то зачем их обновлять? Что Вы хотите
получить после принудительного обновления? Данные же те же
самые останутся.
Проблема. Данные истории за время работы эксперта изменяются несколько раз для всех баров, а данные индикаторов обновляются только для 0-го и 1-го баров и в итоге для текущего момента значение индикатора рассчитывается неверно.
Алгоритм создания истории я позаимствовал из PeriodConverter. Оттуда же функцию обновления графика PostMessageA(hwnd,WM_COMMAND,33324,0); из библиотеки WinUser32.mqh. Нужна какая-то функция, которая бы обновляла значения индикаторов для всех баров.
P.S. Пожалуйста, не спрашивайте по какому принципу создается график "валюты" UnrealCur. Это типа ноу-хау, как мне кажется, и об этом я не хочу говорить. Тем более еще не проверено в работе.
Если Вы обновляете данные через PostMessage, то и индикаторы должны считаться заново, для всех баров, без каких-либо дополнительных действий.
RefreshRates() - "Данные могут не обновиться только по той причине, что они соответствуют текущему состоянию клиентского терминала". Для моих целей необходимо обновлять данные в предопределенных переменных и массивах-таймсериях независимо от каких-либо условий.
Подскажите, знатоки mql4, какую-то подобную функцию или может можно с RefreshRates() снять ограничение ?????
Здесь не RefreshRates() надо, а RefreshHistory(), но такой нету.
RefreshRates() - "Данные могут не обновиться только по той причине, что они соответствуют текущему состоянию клиентского терминала". Для моих целей необходимо обновлять данные в предопределенных переменных и массивах-таймсериях независимо от каких-либо условий.
Подскажите, знатоки mql4, какую-то подобную функцию или может можно с RefreshRates() снять ограничение ?????
Здесь не RefreshRates() надо, а RefreshHistory(), но такой нету.
Так через PostMessage и можно отрефрешиться - это и есть RefreshHistory.
отделаться "малой кровью". Хотелось бы с помощью какой-нибудь функции "перезапускать" индикаторы, чтобы они пересчитывали все бары. Кроме того не все встроенные в MT4 индикаторы представлены в samples.
Можно, конечно, исправить RSI, поместить его в Пользовательские индикаторы и вызывать функцией iCustom.
Но вопрос все еще в силе. Хотелось бы отделаться "малой кровью".
markos31181
писал (а):
График действительно обновляется, а вот RSI, например, обновляет
только 0-й и 1-ый бары. Я думаю, что это происходит из-за самого
алгоритма работы индикаторов - при поступлении нового тика
индикаторы пересчитывают только текущий и предыдущий
Тут, похоже, дело в алгоритме работы IndicatorCounted(), предназначенного для оптимизации вычислений. Наверно, Вам нужно, чтобы он проверял новизну истории везде - но какая тут тогда оптимизация вычислений? Значит, при RefreshHistory() он должен "забывать" все обсчитанное и обнуляться.
у меня то же вот время в оффлан_графике остановилось. )
как решил проблему?

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Подскажите, знатоки mql4, какую-то подобную функцию или может можно с RefreshRates() снять ограничение ?????