Убрать пропуски в котировках в индикаторе
вариант с выбрасываниям бара, если нет по нему котировки:
int i;
int j=-1;
datetime tm;
int bs1, bs2;
i=0;
while(i<=a)
{
j=j+1;
tm=iTime(Symbol(),Period(),j);
bs1=iBarShift(d,Period(),tm,true);
bs2=iBarShift(e,Period(),tm,true);
if (bs1==-1 || bs2==-1) continue;
Buf_0[i]=iClose(d,Period(),bs1);
Buf_1[i]=iClose(e,Period(),bs2);
i++;
}
int j=-1;
datetime tm;
int bs1, bs2;
i=0;
while(i<=a)
{
j=j+1;
tm=iTime(Symbol(),Period(),j);
bs1=iBarShift(d,Period(),tm,true);
bs2=iBarShift(e,Period(),tm,true);
if (bs1==-1 || bs2==-1) continue;
Buf_0[i]=iClose(d,Period(),bs1);
Buf_1[i]=iClose(e,Period(),bs2);
i++;
}

Почему это происходит. Потому что есть пропуски в котировках.
Как эти пропуски убрать?
Вот так заганяются данные в буфера.
i=0;
while(i<=a)
{
Buf_0[i]=iClose("#UKOIL",PERIOD_CURRENT,i);
Buf_1[i]=iClose("#USOIL",PERIOD_CURRENT,i);
i++;
}
Как это можно сделать?
Может как-то использовать iTime?
Есть еще такой вариант - если котировка отсутствует, заполнять ее предыдущим значением.