Подсчет видимых баров

 

Привет! Столкнулся с проблемой: нужно посчитать все видимые бары при минимальном масштабе графика.

Сделал так:

Минимизировал график

ChartSetInteger(0,CHART_SCALE,0);

Потом добавил функцию подсчета баров

int ChartVisibleBars() 
  { 
   long result=-1; 
   ResetLastError(); 
   if(!ChartGetInteger(0,CHART_VISIBLE_BARS,0,result)) 
     { 
      Print(__FUNCTION__+", Error Code = ",GetLastError()); 
     } 
   return((int)result); 
  }

В итоге получил вот что


Где я допустил ошибку? Почему неправильно получается?

 
Maksim Neimerik:

Привет! Столкнулся с проблемой: нужно посчитать все видимые бары при минимальном масштабе графика.

Сделал так:

Минимизировал график

Потом добавил функцию подсчета баров

В итоге получил вот что


Где я допустил ошибку? Почему неправильно получается?

//
 _CHART_WIDTH_IN_BARS=(int)ChartGetInteger(0,CHART_WIDTH_IN_BARS,0);
 _CHART_FIRST_VISIBLE_BAR=(int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
// Расчёт видимых баров
  BarsCount = _CHART_WIDTH_IN_BARS+1;
  FirstBar = _CHART_FIRST_VISIBLE_BAR;
  LastBar = FirstBar-BarsCount+1;
  if(LastBar < 0) {
    LastBar = 0;
    BarsCount = FirstBar+1;
  }

 for(int u=LastBar; u<LastBar+BarsCount; u++) {
 
long chartBars=-1;
int visibleBars;
ChartGetInteger(0,CHART_VISIBLE_BARS,0,chartBars);
visibleBars=1+(int)(chartBars);//количество видимых баров
 
Vitaly Muzichenko:

Большое спасибо! Мне походу и CHART_FIRST_VISIBLE_BAR хватит!

 
Maksim Neimerik:

Большое спасибо! Мне походу и CHART_FIRST_VISIBLE_BAR хватит!

Этот код вам покажет нумерацию баров при прокрутке графика(если нужно), он универсален