Вопрос по проверке начала нового бара (+)

 
добрый день.
правильно ли я понимаю, что описанная на сайте проверка

Variable: prevtime(0);
...
If prevtime = Time Then exit;
prevtime = Time;

фактически включает эксперт не в начале бара, а просто с заданной периодичностью?

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

я щас пишу

if TimeMinute( CurTime ) - BarTime = Period then Begin
...
BarTime = TimeMinute( CurTime );
end;

, еще не тестил, но должно жить.

ЗЫ: Когда и какими компаниями планируется начало полноценного использования 4го клиента?

спасибо.
 
Наверное не так.

Функция start() вызывается с приходом каждого тика по символу.
Массив Time содержит время соответствующее барам.
Следующий фрагмент кода будет на каждом тике сравнивать время последнего бара с временем последнего бара на предыдущем тике. Если время бара изменилось, значит сформирован новый бар.
int prevDate = 0;
int start()
{
   if (prevDate != Time[0])
   {
      NewBar();
      prevDate = Time[0];
   }

   /* Вычисления на каждом тике */
   .........
}

void NewBar()
{
   /* Вычисления на новом баре */
   ...................
}


Эксперты на разных чартах мешать друг другу недолжны.
Каждый из них запускается по своему тику (т.е. в разное время).
Если один эксперт уйдет в спячку (Sleep(...)), остальные все равно должны работать.