Индикатор не отрисовывается при первом проходе.

 

Индикатор не рисуется при первом походе. Т.е. вот такой код на графике не оставляет никаких следов.

 

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int count, i;
   count=Bars-IndicatorCounted();
   if(count<=0) count=1;
   for(i=count; i>=1; i--)//нулевой бар не обсчитываем
      {
      
      check_up_revers(i);
      check_down_revers(i);
      
      }
   return(rates_total);
  }

 Но если в цикле for мы i прировняем не к count, а поставим любое числовое значение, например 500, то на последних 500 барах появятся необходимые отметки. Получается, что при первом проходе индикатор ничего не рисует, а на втором - count уже равен 1, т.е. график из "офлайна" остаётся не разрисованным.

В чём может быть моя ошибка? 

 

З.Ы. WindowRedraw() - не помогает. 

 
Зачем использовать архаичные Bars-IndicatorCounted(); в коде нового стиля? rates_total, prev_calculated есть же.
 
evillive:
Зачем использовать архаичные Bars-IndicatorCounted(); в коде нового стиля? rates_total, prev_calculated есть же.
Извините, а как это связано с моим вопросом?
 

Перепишите по новому стилю, узнаете.

Хотя нет, даже по новому стилю тоже самое будет, если оставить способ расчёта count таким же.

Попробуйте так:

  count=rates_total-prev_calculated;
  if(prev_calculated<1) count=rates_total-1; тут, возможно, понадобится вычесть ещё некоторое количество свеч, которое входит в расчёты функций (вроде периода МА, или чего-то наподобие).

 
evillive:

Перепишите по новому стилю, узнаете.

Хотя нет, даже по новому стилю тоже самое будет, если оставить способ расчёта count таким же.

Попробуйте так:

  count=rates_total-prev_calculated;
  if(prev_calculated<1) count=rates_total-1; тут, возможно, понадобится вычесть ещё некоторое количество свеч, которое входит в расчёты функций (вроде периода МА, или чего-то наподобие).

Я возможно как-то не так объяснил, но дело не в count. У меня не рисуются сигналы на 1-2 и более тысяч свечек назад. Если всё оставить как есть, то по мере поступления новых тиков, появляются новые сигналы, но старые на истории не появляются.

Т.е. если цикл for проходит по всему графику один раз (становится rates_total=prev_calculated), то нет отображения создаваемых на графике "исторических" объектов. Если цикл прогнать второй раз по всему графику, то объекты появляются.