Разъясните про rates_total для мультисимвольного индикатора.

 

в индикаторе есть стандартная функция 

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[]

исходя из описания rates_total это количество доступных баров для текущего символа и периода. Соответственно индикатор строится до самого последнего символа (rates_total - последний бар на графике). Допустим мы хотим сделать мультивалютный индикатор и нам надо брать данные с другого символа, а у него может быть общее количество бар совсем другое. И вот когда идет построение индикатора, перебирается все бары от 0 до rates_total на текущем графике. Вопрос: как так получается что строится график правильно? К примеру совсем простая функция.

CopyOpen("EURUSD", PERIOD_CURRENT, 0, Bars("EURUSD", PERIOD_CURRENT), symbolprice[0].open)
CopyOpen("GBPUSD", PERIOD_CURRENT, 0, Bars("GBPUSD", PERIOD_CURRENT), symbolprice[1].open)
for (int i = 0; i < rates_total; i++) 
{
 indicator[0].data[i] = symbolprice[0].open[i];
 indicator[1].data[i] = symbolprice[1].open[i];
} 
 
Для мультивалютного индикатора необходимо сначала провести синхронизацию баров - то есть сравнить чтобы не было пропусков баров, если пропуски есть - это надо решить.