нужен совет

 
void start() {
if (prevTimeBar!=Time[0]) OpenPositions();
prevTimeBar=Time[0];
}

Как я понимаю происходит старт по времени сформировавшегося бара.Вопрос такой:как произвести повторный старт (секунд через 5) на этом же баре? Т.е. произвести перепроверку этого бара.
 
Функция Старт запускается в момент поступления тика.
Повторный старт провести нельзя, т.к. нет ничего такого, что может запустить Старт, за исключением тика, неподвластного программисту. Ни через 5 сек, ни через 1 сек.

Надо писать код таким образом, чтоб необходимая инфомация проверялась при каждом запуске ф-ии Старт.
При этом тики не обязаны ходить кратно началу бара, а ходят произвольно. Поэтому не обязательно, что на каждом баре будет пойман момент открытия бара.

При необходимости факт образования очередного бара можно отслеживать, сравнивая значения времени.
Например, для минуток.
Сначала вычислить и запомнить номер текущей минуты (бара) = 12345678 / 60.
Потом на каждом тике производить проверку.
(для вычислений можно использовать CurTime( ), MathFloor( double x), MathCeil( double x) и др.)
 
Спасибо за ответ . Я это спрсил к тому что бы защититься от индикатора который перерисовывает историю( или иначе подстраховаться перепроверить бар).
Причина обращения: