Смена ТФ - проблема - страница 7

 
Vasyl Nosal:

Гениально.

А переключить на пару где нет истории а потом переключить на другой ТФ не пробовал? 

Угу, признаю косяк. В коде указано, что делать, если Close[i] > Close[i+1], и что делать, если Close[i] < Close[i+1]. Но не указано, что делать, если Close[i] == Close[i+1]. На вот этих-то барах эти одиночные стрелки и выпадают.

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 nStartBar = rates_total - MathMax(prev_calculated, 2);

   for(int i = nStartBar; i >= 0; i--)
   {
      if(Close[i] >= Close[i+1])
      {
         up_arr[i] = Low[i] - arrow_indent * _Point; //up arrow
         down_arr[i] = 0;
      }
         
      if(Close[i] < Close[i+1])
      {
         up_arr[i] = 0;
         down_arr[i] = High[i] + arrow_indent * _Point; //down arrow
      }
   }

   return(rates_total);
}
 
Karputov Vladimir:

Знаете, давайте поступим так: возьмите код 1.43 из этого сообщения и закомментируйте строки:

и посмотрите на результат при прокручивании графика в глубь истории и чтобы при этом история подгружалась. 

Ну, сделал. Понимая, впрочем, бессмысленность этого действия. :) Результат ожидаемый - индикатор работает без сбоев.
 
Vasyl Nosal:

Гениально.

А переключить на пару где нет истории а потом переключить на другой ТФ не пробовал? 

Что значит "где нет истории"?
 
Sergei Vladimirov:

Угу, признаю косяк. В коде указано, что делать, если Close[i] > Close[i+1], и что делать, если Close[i] < Close[i+1]. Но не указано, что делать, если Close[i] == Close[i+1]. На вот этих-то барах эти одиночные стрелки и выпадают.

Так гуд.
 
Alexey Viktorov:
Что значит "где нет истории"?
Там где график валютной пары не открывался или открывался очень давно.
 
Sergei Vladimirov:

Что ЭТО?

 


Это для  того чтобы аутов небыло если что.
 
Vasyl Nosal:
Это для  того чтобы аутов небыло если что.
Это кто такие? ))
 
Sergei Vladimirov:
Это кто такие? ))
Array out of range
 
Vasyl Nosal:
Array out of range
А зачем такой большой запас брать - аж 20 баров? На глазок, что ли? )) В общем случае нельзя выходить за индекс [rates_total-1], а конкретно в этом коде - за [rates_total-2], поскольку в теле цикла есть обращение предыдущему бару. Вот, с бара [rates_total-2] и нужно начинать расчёт.
 
Sergei Vladimirov:
А зачем такой большой запас брать - аж 20 баров? На глазок, что ли? )) В общем случае нельзя выходить за индекс [rates_total-1], а конкретно в этом коде - за [rates_total-2], поскольку в теле цикла есть обращение предыдущему бару. Вот, с бара [rates_total-2] и нужно начинать расчёт.

Я понимаю. Дальше будет сколько баров всего считать и сколько пересчитывать.

Вдгур кто то введёт больше чем есть баров. Будет аут.

Да, на глаз. 

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