Поcмотрите пожалуйста, правильно ли я сглаживаю RSI

 
//===================== БЛОК СГЛАЖИВАНИЯ RSI =================================     
 
 double RSI_buffer[30]; 
 int i=0;
 while (i<31)
 {
  RSI_buffer[i] = iRSI(NULL , 0, period_RSI, 0, i);
  i++;
 }
 ArraySetAsSeries(RSI_buffer,true);
 double Ma_RSI_1 = iMAOnArray(RSI_buffer, 0, PersglRSI, 0, MODE_SMA, 1);
 double Ma_RSI_2 = iMAOnArray(RSI_buffer, 0, PersglRSI, 0, MODE_SMA, 2);

Почему у меня значения Ma_RSI_1 и Ma_RSI_2 выведенные Comment'ом на график не соответствует значениям сглаженного RSI на графике при одинаковых параметрах периода RSI.

периода сглаживания и метода сглаживания? В момент, который я наблюдаю сглаженный RSI на графике падает, а расчётное значение растёт(Ma_RSI_1>Ma_RSI_2)


 

Стандартная ошибка в неправильном применении сглаживания в RSI. Загляните в ветку 'Один эксперт у одного брокера на разных терминалах и счетах, результат разный.' - там это рассматривается.

Кстати, исходный код RSI есть в терминале в виде mq4 файла.

 
khorosh >>:

Почему у меня значения Ma_RSI_1 и Ma_RSI_2 выведенные Comment'ом на график не соответствует значениям сглаженного RSI на графике при одинаковых параметрах периода RSI.

периода сглаживания и метода сглаживания? В момент, который я наблюдаю сглаженный RSI на графике падает, а расчётное значение растёт(Ma_RSI_1>Ma_RSI_2)



В коде есть ошибки

Нужно два цикла чтоб еще раз сгладить


   for(int i=0; i<limit; i++)
     {
      RSI_buffer[i] = iRSI(NULL , 0, period_RSI, 0, i);
     }
   for(i=0; i<limit; i++)
    {  
     double Ma_RSI_1 = iMAOnArray(RSI_buffer, 0, PersglRSI, 0, MODE_SMA, i+1);
    }
если это индикатор ...
 
satop >>:

В коде есть ошибки

Нужно два цикла чтоб еще раз сгладить


если это индикатор ...

В Вашем примере сглаживание производится во втором цикле. В первом - создание массива. Нужно ли создавать весь сглаженный массив, если я использую только значения для 1 и 2 баров?

Renat >>:

Стандартная ошибка в неправильном применении сглаживания в RSI. Загляните в ветку 'Один эксперт у одного брокера на разных терминалах и счетах, результат разный.' - там это рассматривается.

Кстати, исходный код RSI есть в терминале в виде mq4 файла.

Спасибо. Ветку прочёл, но где ошибаюсь не понял - не хватает квалификации(я не профессиональный программист). Правильно ли я Вас понял, что стандартная функция

iMAOnArray(...) 

для индикатора RSI неприменима?

 

Значения Вам нужны для 1 и 2 бара

чтобы их получить нужно сгладить заданное Вами количество

PersglRSI

( Период усреднения для вычисления скользящего среднего.)

 
satop >>:

Значения Вам нужны для 1 и 2 бара

чтобы их получить нужно сгладить заданное Вами количество

( Период усреднения для вычисления скользящего среднего.)

Но что мы получим в результате Вашего второго цикла - сглаженное значение RSI для бара с номером = limit. Массива то для хранения значений сглаженного RSI нет? Если создать массив, то такой вариант я рассматривал ранее и тоже результат был отрицательный.

 
 double RSI_buffer[30]; 
 double Ma_RSI[30];
 int i=0;
 int j=0;
 while (i<31)
 {
  RSI_buffer[i] = iRSI(NULL , 0, period_RSI, 0, i);
  i++;
 }
 ArraySetAsSeries(RSI_buffer,true);
 while(j<31)
  {
   Ma_RSI[j] = iMAOnArray(RSI_buffer, 0, PersglRSI, 0, MODE_SMA, j);
   j++;
  }
Вот такой вариант я тоже рассматривал, выводил в Commet) значения Ma_RSI[1] и Ma_RSI[2] и тоже расхождение с графиком сглаженной RSI.
 
Файлы:
rsidd.mq4  3 kb
 

ошибки в алгоритмах, Buf2 показывает неусредненное, и переключение цвета.

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