Диапазон баров обычной ЕМА на которых надо выполнять расчет равен примерно 10-15 умножить на период сглаживания. Здесь коэффициенты сглаживания не как у ЕМА рассчитываются, здесь период 14 соответствует периоду 27, значит еще умножить на 2, получается 20-30. Значит для RSI(14) надо обсчитать 300-400 баров.
Долго мучился в 2013 году с RSI , у меня такой алгоритм получился - идентичен MT4
1. Распределяем цены закрытия по U (рост) D (падение), при этом незаполненный параметр равен 0.
2. Считаем среднее значение U и D за период RSI.
3. Рассчитываем EMA за период RSI для усредненных значений U и D из второго пункта. При этом первое значение равно значению из 2 пункта, а не за весь период графика.
Можно и вызывать индикатор, но не менять параметры в iCustom, а передавать их через глобальные переменные. Тогда будет загружен только один индикатор, но надо будет сделать, чтобы он пересчитывался при смене параметров.
Но при запуске все равно надо будет пройти по истории, а потом досчитывать по одному бару. Учитывая что иногда бывают небольшие перебои с соединением, надо как-то обеспечить контроль непрерывности расчетов... поэтому, лучше индикатор.
Еще вариант - в одном индикаторе заделать расчет кучи rsi (без использования лишних буферов).
Точно, не обратил внимания. Тогда история нужна.
Вот уже ближе к теме. Мне нужно вызывать индикатор с разным периодом. Как этот период посчитать ?
Все-таки есть в индикаторе это экспоненциальное сглаживание. Вот эти строки:
Диапазон баров обычной ЕМА на которых надо выполнять расчет равен примерно 10-15 умножить на период сглаживания. Здесь коэффициенты сглаживания не как у ЕМА рассчитываются, здесь период 14 соответствует периоду 27, значит еще умножить на 2, получается 20-30. Значит для RSI(14) надо обсчитать 300-400 баров.
Долго мучился в 2013 году с RSI , у меня такой алгоритм получился - идентичен MT4
1. Распределяем цены закрытия по U (рост) D (падение), при этом незаполненный параметр равен 0.
2. Считаем среднее значение U и D за период RSI.
3. Рассчитываем EMA за период RSI для усредненных значений U и D из второго пункта. При этом первое значение равно значению из 2 пункта, а не за весь период графика.
4. Делим значение из третьего пункта U на D.
5. 100-100/(1+"значение из 4 пункта")
Вот уже ближе к теме. Мне нужно вызывать индикатор с разным периодом. Как этот период посчитать ?
Рассчитывать в советнике по формуле из стандартной поставки (RSI.mq4), начиная с 300-го бара в истории (заканчивая текущим).
Или попробовать сделать экономный индикатор, и загружать/выгружать его с нужными параметрами.
Или просчитать все РСИ на истории со всеми периодами, записать в файл, а потом читать нужные значения.
Все-таки есть в индикаторе это экспоненциальное сглаживание. Вот эти строки:
...
Или попробовать сделать экономный индикатор, и загружать/выгружать его с нужными параметрами.
...
да не работает же IndicatorRelease() в тестере.
с файлами возится не комильфо в данном случае.
остается вариант расчета индикатора с нужными параметрами в советнике.
да не работает же IndicatorRelease() в тестере.
с файлами возится не комильфо в данном случае.
остается вариант расчета индикатора с нужными параметрами в советнике.
можно было сделать без цикла FOR
Yes!
Но при запуске все равно надо будет пройти по истории, а потом досчитывать по одному бару. Учитывая что иногда бывают небольшие перебои с соединением, надо как-то обеспечить контроль непрерывности расчетов... поэтому, лучше индикатор.
Еще вариант - в одном индикаторе заделать расчет кучи rsi (без использования лишних буферов).