Номер бара по времени - страница 2

 
Загрузил 178 билд, но функция всегда возвращает -1 на таком коде:

//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
double drop_price=PriceOnDropped();
datetime drop_time=TimeOnDropped();
//---- может быть неопределенным (нуль)
if(drop_time>0)
{
ObjectCreate("Уровень цены", OBJ_HLINE, 0, 0, drop_price);
ObjectCreate("Значение времени", OBJ_VLINE, 0, drop_time, 0);
}

int shift=iBarShift("",0,drop_time);
int ret=MessageBox("Смещение " + TimeToStr(drop_time) + " равно " + shift, "Инфо");

//----
return(0);
}
//+------------------------------------------------------------------+
 

int shift=iBarShift("",0,drop_time);

к сожалению в хелпе ошибка. нужно писать
int shift=iBarShift(NULL,0,drop_time);
как для функций вызова технических индикаторов. сегодня поправим
 
Спасибо, все в порядке теперь.
 
если есть пропущенные бары, то номер бара по времени окажется неправильным.
надежнее всего будет перебор в цикле.
 
если есть пропущенные бары, то номер бара по времени окажется неправильным.
надежнее всего будет перебор в цикле.

используется двоичный поиск, а не формула (time1-time2)/period_seconds. так что, номер бара окажется правильным. при отсутствующем соответсвующем баре в режиме точного поиска будет возвращён не номер ближайшего бара, а -1
Причина обращения: