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