Nachlaufende OI (offener Anteil)

 

Warum in terminaler Änderung der offenen Zinsen:
SymbolInfoDouble(Symbol(),SYMBOL_SESSION_INTEREST)
lebt sein Leben relativ zum Band?
void OnBookEvent(const string& symbol)

Soweit ich den Futures-Markt verstehe, dürfen Transaktionen im Band nicht zu einer Veränderung des OI führen. Aber warum ändert sich der OI von selbst, ohne dass es zu Transaktionen kommt?
Das haben wir schon einmal gesehen:
https://www.mql5.com/ru/forum/165157/page2#comment_3989978

OI im Terminal wird mit welcher Periodizität aktualisiert, wovon hängt es ab?
Wie synchronisiere ich OI-Änderungen mit Trades im Feed? Ich möchte einen vollständigen Feed mit OI erhalten.

Открытый Интерес на истории
Открытый Интерес на истории
  • 2016.12.30
  • www.mql5.com
Здравствуйте, уважаемая администрация...
 
kleiner Expert Advisor, der Ereignisse im Log markiert:
1. neuer Tick
2. neuer Deal im Feed
3. OI-Änderung (mit 1ms Genauigkeit)
zeigt, dass OI-Änderungen von selbst passieren, ohne Ticks und ohne Deals im 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;
}
Dateien:
 
Alena Lysenkova:
Ein kleiner EA, der Ereignisse im Log markiert:
1. neuer Tick
2. neuer Deal im Feed
3. OI-Änderung (mit 1ms Genauigkeit)
Es zeigt, dass OI-Änderungen von selbst passieren, ohne Ticks und ohne Deals im Feed.

Haben Sie den Code selbst geschrieben?

 
Alena Lysenkova:

Warum in terminaler Änderung der offenen Zinsen:
SymbolInfoDouble(Symbol(),SYMBOL_SESSION_INTEREST)
lebt sein Leben relativ zum Band?
void OnBookEvent(const string& symbol)

So ist es konzipiert.

Eine Synchronisierung ist kaum möglich, da es nicht genügend Informationen gibt.

 
Alena Lysenkova:

Warum in terminaler Änderung der offenen Zinsen:
SymbolInfoDouble(Symbol(),SYMBOL_SESSION_INTEREST)
lebt sein Leben relativ zum Band?
void OnBookEvent(const string& symbol)

Soweit ich den Futures-Markt verstehe, dürfen Transaktionen im Band nicht zu einer Veränderung des OI führen. Aber warum ändert sich der OI von selbst, ohne dass es zu Transaktionen kommt?
Das haben wir schon einmal gesehen:
https://www.mql5.com/ru/forum/165157/page2#comment_3989978

OI im Terminal wird mit welcher Periodizität aktualisiert, wovon hängt es ab?
Wie synchronisiere ich OI-Änderungen mit Trades im Feed? Ich möchte einen vollwertigen Feed mit OI haben.

Wenn Sie ein vollständiges Auftragsprotokoll wünschen, stellen Sie eine Verbindung über die Plaza her. Es ist unwahrscheinlich, dass MT5 für Aktienströme umgestaltet wird.

Eine andere Frage ist, ob Sie diese vollständige Information benötigen.

 

@Andrey Khatimlianskii @Dmitriy Skub

Vielleicht gibt es keine Synchronisierung im Terminal, aber mit dem Code, der

präsentiert, gibt es etwas zu besprechen?

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

@Andrey Khatimlianskii @Dmitriy Skub

Vielleicht gibt es keine Synchronisierung im Terminal, aber mit dem Code, der

präsentiert, gibt es etwas zu besprechen?

Michael, ich habe mir den Code nicht angesehen))
 
prostotrader:

@Andrey Khatimlianskii @Dmitriy Skub

Vielleicht gibt es keine Synchronisierung im Terminal, aber mit dem Code, der

Ist es überhaupt möglich, etwas zu sagen?

Was genau an diesem Kodex finden Sie nicht zufriedenstellend?

 
Alena Lysenkova:

Was genau ist an dem Code falsch?

Alles von...

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

Sie brauchen überhaupt keinen Timer.

Es ist ein Meisterwerk.

if(ticks<20) return;

und so weiter...

 
prostotrader:

Alles von.

Ein Timer ist überhaupt nicht nötig.

Es ist ein Meisterwerk.

und so weiter...

Es ist sehr professionell, in dem Code herumzustochern, den man in ein paar Minuten auf den Knien gebaut hat, um den Kern der Sache zu zeigen.

Der Timer wird dort benötigt, lesen Sie das Thema sorgfältig

 
Alena Lysenkova:

Es ist sehr professionell, in einem Code herumzustochern, den man selbst in ein paar Minuten erstellt hat, um das Wesentliche des Problems zu zeigen.

Es braucht einen Timer, lesen Sie den Thread sorgfältig.

Der Timer wird NICHT benötigt.

OnBookEvent wird nicht nur ausgelöst, wenn eine Transaktion stattfindet.

und Sie MÜSSEN das Symbol in dieser Funktion filtern

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

Diese Funktion "füllt" alles, was in der Marktübersicht steht.

Warum "nackte Knie" posten?

Hinzugefügt

"Sehr professionell", um den Job zu übernehmen

100.00 USD
Нужен софт для отслеживания ленты сделок по каждому тику с указанием изменения ОИ (аналог Time&Sales в платформе Volfix)
Und nicht zu wissen, wie man es macht.