OI (interés abierto) rezagado

 

¿Por qué en el cambio de terminal del interés abierto:
SymbolInfoDouble(Symbol(),SYMBOL_SESSION_INTEREST)
vive su vida relativa a la cinta?
void OnBookEvent(const string& symbol)

Por lo que entiendo en el mercado de futuros, las transacciones en la cinta no pueden hacer que la OI cambie. Pero, ¿por qué la OI cambia por sí misma sin ninguna transacción?
Esto ya se ha visto antes:
https://www.mql5.com/ru/forum/165157/page2#comment_3989978

OI en el terminal se actualiza con qué periodicidad, de qué depende?
¿Cómo puedo sincronizar los cambios de OI con las operaciones en el feed? Quiero obtener una alimentación completa con OI.

Открытый Интерес на истории
Открытый Интерес на истории
  • 2016.12.30
  • www.mql5.com
Здравствуйте, уважаемая администрация...
 
pequeño Asesor Experto que marca eventos en el registro:
1. nuevo tick
2. nueva operación en el feed
3. cambio de OI (con precisión de 1ms)
muestra que los cambios de OI ocurren por sí mismos sin ticks y sin operaciones en el feed.
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;
}
Archivos adjuntos:
 
Alena Lysenkova:
pequeño Asesor Experto que marca eventos en el registro:
1. nuevo tick
2. nueva operación en el feed
3. cambio de OI (con precisión de 1ms)
muestra que los cambios de OI se producen por sí mismos sin ticks y sin operaciones en el feed.

¿Escribiste el código tú mismo?

 
Alena Lysenkova:

¿Por qué en el cambio de terminal del interés abierto:
SymbolInfoDouble(Symbol(),SYMBOL_SESSION_INTEREST)
vive su vida relativa a la cinta?
void OnBookEvent(const string& symbol)

Así es como está diseñado.

Difícilmente se puede sincronizar, no hay suficiente información.

 
Alena Lysenkova:

¿Por qué en el cambio de terminal del interés abierto:
SymbolInfoDouble(Symbol(),SYMBOL_SESSION_INTEREST)
vive su vida relativa a la cinta?
void OnBookEvent(const string& symbol)

Por lo que entiendo en el mercado de futuros, las transacciones en la cinta no pueden hacer que la OI cambie. Pero, ¿por qué la OI cambia por sí misma sin ninguna transacción?
Esto ya se ha visto antes:
https://www.mql5.com/ru/forum/165157/page2#comment_3989978

OI en el terminal se actualiza con qué periodicidad, de qué depende?
¿Cómo puedo sincronizar los cambios de OI con las operaciones en el feed? Quiero tener una alimentación completa con OI.

Si quieres un registro de pedidos completo, conéctate a través de la Plaza. Es poco probable que MT5 se rediseñe para los flujos de valores.

Otra cuestión es si necesita esa información completa.

 

@Andrey Khatimlianskii @Dmitriy Skub

Tal vez no haya sincronización en el terminal, pero con el código que

presentado, ¿hay algo de lo que hablar?

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

@Andrey Khatimlianskii @Dmitriy Skub

Tal vez no haya sincronización en el terminal, pero con el código que

presentado, ¿hay algo de lo que hablar?

Michael, no he mirado el código))
 
prostotrader:

@Andrey Khatimlianskii @Dmitriy Skub

Tal vez no haya sincronización en el terminal, pero con el código que

¿Es posible hablar de cualquier cosa?

¿Qué es exactamente lo que encuentra insatisfactorio en este código?

 
Alena Lysenkova:

¿Qué es exactamente lo que falla en el código?

Todo, desde...

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

No necesitas un temporizador en absoluto.

Es una obra maestra.

if(ticks<20) return;

y así sucesivamente...

 
prostotrader:

Todo desde.

No hay necesidad de un temporizador en absoluto.

Es una obra maestra.

y así sucesivamente...

Es muy profesional hurgar en el código que has construido de rodillas en un par de minutos para mostrar la esencia del asunto.

El temporizador es necesario allí, leer el tema cuidadosamente

 
Alena Lysenkova:

Es muy profesional hurgar en el código que has construido por tu cuenta en un par de minutos para mostrar lo esencial.

Necesita un temporizador, lee atentamente el hilo.

El temporizador NO es necesario.

OnBookEvent no se activa sólo cuando se produce una transacción.

y DEBE filtrar el símbolo en esta función

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

Esta función "rellena" todo lo que hay en la revisión del mercado.

¿Por qué publicar "rodillas desnudas"?

Añadido

"Muy profesional" para aceptar el trabajo

100.00 USD
Нужен софт для отслеживания ленты сделок по каждому тику с указанием изменения ОИ (аналог Time&Sales в платформе Volfix)
Y sin saber cómo hacerlo.