Какая информация передается в одном ТИКе?

 

Доброго всем дня!

При написания эксперта, столкнулся с проблемой. Эксперт анализирует цены открытия и закрытия последней
сформированной свечи (сдвиг от текущей +1), когда наступает новый час, т.е. значение Minute()=0.
С приходом нового тика, в теле функции Start() происходит проверка Minute()=0, что означает, что тик
относится к новому часу. Теперь с помощью функций iOpen() и iClose(), анализируются цены на временных
интервалах: M5, M15, M30 и М60, в большинстве случаев все работает нормально, но иногда происходит "сбой" на
ОДНОМ из временных интервалах, т.е. массивы iOpen() и iClose() возвращают значения старой по времени 
свечи (сдвиг от текущей +2), такое впечатление, что тик пришел, без этих цен.

Никакой закономерности в пропущенных данных нет, т.е. может отсутствовать значения по периоду М5, или М30, а может М15 и М60.

В связи с этим пара вопросов:
1. Тик передает информацию по всем валютным парам, или для каждой пары должен прийти свой тик?
2. Тик несет в себе информацию по всем временным интервалам?
3. Может ли ДЦ не передать в тике какие-либо значения, а передать их вследующем тике?

 
Откройте окно "Обзор рынка" внимательно посмотрите на него и вопросы отпадут, это и есть тики.
 
Urain >>:
Откройте окно "Обзор рынка" внимательно посмотрите на него и вопросы отпадут, это и есть тики.


По всей видимости вы невнимательно прочли вопрос, или я его неправильно задал?
 
1. Тик передает информацию по всем валютным парам, или для каждой пары должен прийти свой тик? - Для каждой пары свой.
2. Тик несет в себе информацию по всем временным интервалам? - Да, хотя правильнее сказать он не привязан к временным интервалам.
3. Может ли ДЦ не передать в тике какие-либо значения, а передать их вследующем тике? - непонятно, какие например?
 
Roger >>:
В связи с этим пара вопросов:
1. Тик передает информацию по всем валютным парам, или для каждой пары должен прийти свой тик? - Для каждой пары свой.
2. Тик несет в себе информацию по всем временным интервалам? - Да, хотя правильнее сказать он не привязан к временным интервалам.
3. Может ли ДЦ не передать в тике какие-либо значения, а передать их вследующем тике? - непонятно, какие например?

Тик не привязан к временным интервалам (тк тик это изменение цены).

Тик приходит по каждому инструменту в отдельности (иногда это совпадает по времени, иногда нет).

Теоретически ДЦ может всё, так как готовит котировки, а не просто транслирует чьито

(поэтому в договоре оговариваеться что котировки стороннего происхождения к рассмотрению в спорах не принимаються).

Да и вообще с ДЦ спорить сложно, но можно.

 
Zoro >>:

 массивы iOpen() и iClose() возвращают значения старой по времени  свечи (сдвиг от текущей +2), такое впечатление, что тик пришел, без этих цен.

Вы проверяете iTime()?

Терминал мог не успеть пересчитать все таймфреймы...

 

Urain, Roger & avatara, спасибо большое за помощь. 

Буквально за час до сообщения avatara, пришла мысль проверить масив через iTime.


if ((Minute()%5)==0)  {
int tm5=TimeMinute(iTime(currency_name,5,0));
int tm15=TimeMinute(iTime(currency_name,15,0));
int tm30=TimeMinute(iTime(currency_name,30,0));
int tm60=TimeMinute(iTime(currency_name,60,0));
  Print(" mm:ss ",Minute(),":",Seconds()," tm5= ",tm5," tm15= ",tm15," tm30= ",tm30," tm60=",tm60);   }

Проверка подтвердила изложенные мной доводы в первом посте. А именно:  ИНОГДА, после прихода первого тика в новом временном интервале, заполняются не все таймфремы

новыми значениями. А после прихода вторго тика, заполняются все таймфреймы.
Скорее всего avatara прав, когда пишет "Терминал мог не успеть пересчитать все таймфреймы...".

Вывод: придется дополнительно проверять значение временного интервала Minute() со значением  iTime().

Причина обращения: