Запаздывание OI (открытый интерес)

 

Почему в терминале изменение открытого интереса:
SymbolInfoDouble(Symbol(),SYMBOL_SESSION_INTEREST)
живет своей жизнью относительно ленты?
void OnBookEvent(const string& symbol)

Насколько я понимаю срочный рынок, сделки в ленте могут не приводить к изменению OI. Но почему OI меняется сам по себе без сделок?
Это уже было замечено ранее:
https://www.mql5.com/ru/forum/165157/page2#comment_3989978

С какой периодичностью обновляется OI в терминале, от чего зависит?
Как синхронизировать изменение OI со сделками в ленте? Хочу получить полноценную ленту с OI.

Открытый Интерес на истории
Открытый Интерес на истории
  • 2016.12.30
  • www.mql5.com
Здравствуйте, уважаемая администрация...
 
небольшой советник который отмечает в журнале события:
1. новый тик
2. новая сделка в ленте
3. изменение OI (с точностью до 1мс)
по нему видно что изменения OI происходят сами по себе без тиков и без сделок в ленте.
long bool_event_time_last = 0;

int OnInit() {
   EventSetMillisecondTimer(1);
   MarketBookAdd(_Symbol);
   
   MqlTick tick[];
   CopyTicks(_Symbol,tick,COPY_TICKS_ALL,0,1);
   bool_event_time_last = tick[0].time_msc;

   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason) {
   EventKillTimer();
}

void OnTick() {
   Print("1. tick");
}

void OnTimer() {
   static double open_last = SymbolInfoDouble(Symbol(),SYMBOL_SESSION_INTEREST);
   double open_current = SymbolInfoDouble(Symbol(),SYMBOL_SESSION_INTEREST);
   if(NormalizeDouble(open_current,0) != NormalizeDouble(open_last,0)) {
      open_last = open_current;
      Print("3. oi change");
   }
}

void OnBookEvent (const string& symbol) {
   MqlTick tick[];
   int ticks = CopyTicks(_Symbol,tick,COPY_TICKS_ALL,0,100);
   if(ticks<20) return;
   for(int i=ticks-1;i>=0;i--) {
      if(tick[i].time_msc <= bool_event_time_last) break;
      if((int)tick[0].flags<32) continue;
      Print("2. book deal");
   }
   bool_event_time_last = tick[ticks-1].time_msc;
}
Файлы:
 
Alena Lysenkova:
небольшой советник который отмечает в журнале события:
1. новый тик
2. новая сделка в ленте
3. изменение OI (с точностью до 1мс)
по нему видно что изменения OI происходят сами по себе без тиков и без сделок в ленте.

Вы сами писали код?

 
Alena Lysenkova:

Почему в терминале изменение открытого интереса:
SymbolInfoDouble(Symbol(),SYMBOL_SESSION_INTEREST)
живет своей жизнью относительно ленты?
void OnBookEvent(const string& symbol)

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

Синхронизировать вряд ли удастся, нет достаточно информации.

 
Alena Lysenkova:

Почему в терминале изменение открытого интереса:
SymbolInfoDouble(Symbol(),SYMBOL_SESSION_INTEREST)
живет своей жизнью относительно ленты?
void OnBookEvent(const string& symbol)

Насколько я понимаю срочный рынок, сделки в ленте могут не приводить к изменению OI. Но почему OI меняется сам по себе без сделок?
Это уже было замечено ранее:
https://www.mql5.com/ru/forum/165157/page2#comment_3989978

С какой периодичностью обновляется OI в терминале, от чего зависит?
Как синхронизировать изменение OI со сделками в ленте? Хочу получить полноценную ленту с OI.

Если хотите полный ордерлог, подключайтесь через Плазу. МТ5 вряд ли для биржевых потоков будут переделывать.

Другой вопрос, нужна ли Вам эта полная инфа.

 

@Andrey Khatimlianskii @Dmitriy Skub

Возможно в терминале и нет синхронизации, но с тем кодом, что

представлен, разве можно вообще о чем-то говорить?

Andrey Khatimlianskii
Andrey Khatimlianskii
  • www.mql5.com
Профиль трейдера
 
prostotrader:

@Andrey Khatimlianskii @Dmitriy Skub

Возможно в терминале и нет синхронизации, но с тем кодом, что

представлен, разве можно вообще о чем-то говорить?

Михаил, а я код не смотрел))
 
prostotrader:

@Andrey Khatimlianskii @Dmitriy Skub

Возможно в терминале и нет синхронизации, но с тем кодом, что

представлен, разве можно вообще о чем-то говорить?

что конкретно вас не устраивает в коде?

 
Alena Lysenkova:

что конкретно вас не устраивает в коде?

Да все, начиная с 

CopyTicks(_Symbol,tick,COPY_TICKS_ALL,0,1);

Таймер вообще не нужен.

Это вообще "шедевр" 

if(ticks<20) return;

и так далее...

 
prostotrader:

Да все, начиная с 

Таймер вообще не нужен.

Это вообще "шедевр" 

и так далее...

Очень профессионально докалупываться до кода собранного на коленке за пару минут с целью показать суть вопроса. я его не публиковать собиралась.

Таймер там нужен, читайте внимательно тему

 
Alena Lysenkova:

Очень профессионально докалупываться до кода собранного на коленке за пару минут с целью показать суть вопроса. я его не публиковать собиралась.

Таймер там нужен, читайте внимательно тему

Таймер НЕ нужен.

OnBookEvent срабатывает не только, если произошла сделка.

и ОБЯЗАТЕЛЬНО нужно в этой фунеции фильтровать символ

void OnBookEvent (const string& symbol)
{
  if(symbol == Symbol())
  {
    
.. 
  }
}

Так как в эту функцию "валится" все, что есть в обзоре рынка

Зачем выкладывать "голые коленки"?

Добавлено

"Очень профессионально" брать работу

100.00 USD
Нужен софт для отслеживания ленты сделок по каждому тику с указанием изменения ОИ (аналог Time&Sales в платформе Volfix)
И не знать как ее сделать.
Причина обращения: