Почему значение индикатора на 1 баре выведенное Comment'ом не совпадает со значением на графике этого индикатора?

 

Есть такой неплохой трендовый индикатор "(T_S_R)-Signal Line". Стал его проверять и столкнулся с тем, что если подвожу курсор, к моменту времени соответствующему первому бару, то вижу во всплывающем окошке значение, которое не совпадает со значением выводимом тестовым экспертом с помощью оператора Comment(). Может кто-нибудь сможет мне пояснить в чём дело?

Индикатор и тестовый эксперт прилагаю.

//+------------------------------------------------------------------+
//|                                                      testTSR.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
  double Trend1  = iCustom(NULL, 0 , "(T_S_R)-Signal Line", 34, 0, 3, 2 , 1); 
  Comment("Trend1=", Trend1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
Файлы:
 

Переделайте индикатор так, чтобы не использовалась функция IndicatorCounted(). Ну и сразу же увидите... перерисовку, которая скрывается тем, что обсчитанные бары не пересчитываются (не обновляются).

Ещё перерисовку можно увидеть так:

1. Поставить индикатор на чарт и подождать несколько баров.

2. Сделать скриншот или записать значения индикатора на последних нескольких барах.

3. Снять индикатор с чарта и снова поставить. Сравнить новые значения с записанными.

 

Подозревать индикатор в перерисовке я начинаю, если вижу в коде:

1. Использование функции IndicatorCounted();

2. Цикл прямого прохода for (x=0; x<e; x++)

 
KimIV писал (а) >>

Переделайте индикатор так, чтобы не использовалась функция IndicatorCounted(). Ну и сразу же увидите... перерисовку, которая скрывается тем, что обсчитанные бары не пересчитываются (не обновляются).

Ещё перерисовку можно увидеть так:

1. Поставить индикатор на чарт и подождать несколько баров.

2. Сделать скриншот или записать значения индикатора на последних нескольких барах.

3. Снять индикатор с чарта и снова поставить. Сравнить новые значения с записанными.

Устранил использование IndicatorCounted(). Однако расхождение значений осталось.

 
?
 

Проверил у себя. Вот результат.

Проверьте у себя:

1. Параметры индикатора на графике:

2. Параметры индикатора в советнике:

 
KimIV писал (а) >>

Подозревать индикатор в перерисовке я начинаю, если вижу в коде:

1. Использование функции IndicatorCounted();

2. Цикл прямого прохода for (x=0; x<e; x++)

Игорь, можно ли это перефразировать так:

Индикатор с фиксированным limit и проходом for (x=limit; x>=0; x--) почти наверняка не переписывается?

 
granit77 писал (а) >>

Игорь, можно ли это перефразировать так:

Индикатор с фиксированным limit и проходом for (x=limit; x>=0; x--) почти наверняка не переписывается?

Если строго подходить к вопросу, то нет.

Предложенная Вами перефразировка не будет ни необходимым, ни достаточным условием. Потому что даже обратным проходом по фиксированному количеству баров можно написать перерисовывающийся индикатор.

 
KimIV писал (а) >>

Проверил у себя. Вот результат.

Проверьте у себя:

1. Параметры индикатора на графике:

2. Параметры индикатора в советнике:

Спасибо большое. Так и есть - перепутал местами цену и метод!

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