Eineinhalb Minuten Unterschied zwischen der Ortszeit und der neuen Tickerzeit. Was ist zu tun?

 

Ich habe einen kleinen Expert Advisor geschrieben, der die maximale Differenz zwischen lokaler Computerzeit und neuer Tick Time_msc (soeben empfangen) anzeigt.

Grob gesagt misst sie TimeLocal() nur in Millisekunden abzüglich der Zeit des letzten Ticks Tick.teme_msc . Der Tick wird mit SymbolInfoTick empfangen.

Er hat sich nicht sehr darüber lustig gemacht. 24 Zeichen in der Marktübersicht. OnTimer() mit einer Aufrufperiode von 1 Millisekunde. Ich frage alle Symbole mit SymbolInfoTick ab. Wenn eine Zecke neu ist, nehme ich Messungen vor.

Ich habe den Expert Advisor am Abend getestet. Hier sind die Ergebnisse:

Neu gefangene Zecken 46800

Minimale Zeitspanne zwischen lokaler Computerzeit und der Zeit der Zecke -7048 Millisekunden (mit Minuszeichen)

Durchschnittliche Zeit zwischen lokaler Computerzeit und Tick-Zeit -6819 Millisekunden (mit Minus)

Maximale Zeit zwischen lokaler Computerzeit und Tick-Zeit -97082 Millisekunden ( mit Plus )


Wie kann man damit umgehen?

 
pivomoe:

Ich habe einen kleinen Expert Advisor geschrieben, der die maximale Differenz zwischen der lokalen Computerzeit und der Zeit des neuen Ticks time_msc (gerade empfangen) anzeigt.

Grob gesagt misst sie TimeLocal() nur in Millisekunden abzüglich der Zeit des letzten Ticks Tick.teme_msc . Der Tick wird mit SymbolInfoTick empfangen.

Er hat sich nicht sehr darüber lustig gemacht. 24 Zeichen in der Marktübersicht. OnTimer() mit einer Aufrufperiode von 1 Millisekunde. Ich frage alle Symbole mit SymbolInfoTick ab. Wenn eine Zecke neu ist, nehme ich Messungen vor.

Ich habe den Expert Advisor am Abend getestet. Hier sind die Ergebnisse:

Neu gefangene Zecken 46800

Minimale Zeitspanne zwischen lokaler Computerzeit und der Zeit der Zecke -7048 Millisekunden (mit Minuszeichen)

Durchschnittliche Zeit zwischen lokaler Computerzeit und Tick-Zeit -6819 Millisekunden (mit Minus)

Maximale Zeit zwischen lokaler Computerzeit und Tick-Zeit -97082 Millisekunden ( mit Plus )


Wie geht man damit um?

Ich habe mir Ihren Code angeschaut...

Sie machen es ganz und gar nicht richtig.

Sie müssen die liquidesten Instrumente zu Market Watch hinzufügen.

Dann fügen Sie ihre Geldtöpfe hinzu.

Und, wenn OnBookEvent() auslöst, kopieren Sie 1 Tick (die letzte) wird es Zeit und sofort die lokale Zeit und vergleichen.

Und warum müssen Sie die Ortszeit mit der Zeit der Ticks vergleichen?

Wenn Sie wissen wollen, ob es möglich ist, zu handeln, dann ist hier eine Funktion

//+------------------------------------------------------------------+
//| Expert Check Market Time function                                |
//+------------------------------------------------------------------+
bool CheckMarketTime()
{
  MqlDateTime cur_time, sv_time;
  cur_time.year = 0;
  TimeTradeServer(cur_time); //Возвращает расчетное текущее время торгового сервера.
  if(cur_time.year > 0)
  {
    sv_time.year = 0;
    TimeCurrent(sv_time); //Возвращает последнее известное время сервера
    if(sv_time.year > 0)
    {
    //  if((cur_time.day_of_week == int(FirstDay)) ||
    //     (cur_time.day_of_week == int(SecondDay))) return(false); //Проверка на выходные
      if(cur_time.day_of_week == sv_time.day_of_week)
      {
        ulong tr_time = sv_time.hour * 3600 + sv_time.min * 60 + sv_time.sec;
        if(((tr_time >= time_st_mon) && (tr_time < 50370)) ||  //10:00:01 - 13:59:30
           ((tr_time >= time_st_day) && (tr_time < 67470)) ||  //14:05:01 - 19:44:30 
           ((tr_time >= time_st_evn) && (tr_time < 85770)))    //19:05:01 - 23:49:30
        {
          return(true);
        }  
      }  
    } 
  }   
  return(false);
}
 

Zum Thema der Relevanz von Zecken, sehen Sie sich diesen Indikator mit Kommentaren an.

Ping
Ping
  • www.mql5.com
Для торговли важным параметром является актуальность текущей цены. На него влияет множество факторов, самый популярный из которых - сетевой пинг между терминалом и торговым сервером. Но часто из виду упускается другой параметр: так называемый "внутренний пинг терминала" - дополнительный лаг котировок внутри самого терминала (платформы). Даже...
 
prostotrader:

Ich habe mir Ihren Code angesehen...

Sie machen es ganz und gar nicht richtig.

Sie müssen die liquidesten Instrumente zu Market Watch hinzufügen.

Dann addieren Sie die Markttiefen dieser Instrumente.

Und, wenn OnBookEvent() auslöst, kopieren Sie 1 Tick (die letzte) wird es Zeit und sofort nehmen die lokale Zeit und vergleichen.

Und warum müssen Sie überhaupt die Ortszeit mit der Ticks-Zeit vergleichen?

Warum müssen Sie alles über einen Stapel erledigen? Nur um den Code besser aussehen zu lassen? Wenn ich ein Symbol in der Marktübersicht habe, bedeutet das nicht, dass es eine ständige Synchronisation gibt und ich die letzten 4096 Ticks für das Symbol direkt aus dem Cache abrufen kann (d.h. sofort)? In jedem Fall muss Ihre Idee getestet werden. Das Einzige, was ich nicht verstehe, ist, was "copy 1 tick (last)" bedeutet, um den Tick durch Ändern der Tasse zu berechnen?

Und warum müssen Sie überhaupt die Ortszeit mit der Zeckenzeit vergleichen?

Es ist keine gute Idee, Handelsentscheidungen auf der Grundlage der Kurse von gestern zu treffen. Gestern war es aus Sicht des Algorithmus vielleicht eine gute Idee, SBER zu 100 zu kaufen, aber heute muss man es zu 80 verkaufen.

 
pivomoe:

Warum alles durch ein Glas machen? Nur um den Code besser aussehen zu lassen? Wenn ich ein Symbol in der Marktübersicht habe, bedeutet das nicht, dass es eine ständige Synchronisation gibt und ich die letzten 4096 Ticks des Symbols direkt aus dem Cache abrufen kann (d.h. sofort)? In jedem Fall muss Ihre Idee getestet werden. Das Einzige, was ich nicht verstehe, ist, was "copy 1 tick (last)" bedeutet, um den Tick durch Ändern der Tasse zu berechnen?

Und warum müssen Sie überhaupt die Ortszeit mit der Zeckenzeit vergleichen?

Es ist keine gute Idee, Handelsentscheidungen auf der Grundlage der Kurse von gestern zu treffen. Gestern mag der SBER bei 100 aus Sicht des Algorithmus eine gute Idee sein, aber heute sollten Sie ihn bei 80 verkaufen.

Warum stellen Sie eine Frage, wenn Sie selbst alles wissen?

Tun Sie, was Sie für richtig halten.

 
prostotrader:

Warum stellen Sie diese Frage, wenn Sie selbst alles wissen?

Tun Sie, was Sie für richtig halten.

Ich frage in aller Ernsthaftigkeit. Bei der Programmierung in MQL habe ich festgestellt, dass man weder der Hilfe noch den Informationen des Terminals trauen sollte. Es ist nicht mehr als eine Information zum Nachdenken. Es ist möglich, dass der Tick früher (stabiler) Informationen liefert alsSymbolInfoTick.

Hier ist übrigens der Tick, der mit einer Verzögerung von eineinhalb Minuten kam:

Neue MA Maximale Differenz 97082 SBPR-3.19 Ortszeit 2019.03.15 21:05:31.842 Tick-Zeit 2019.03.15 21:03:54.760

In dieser Minute gab es nichts Kriminelles in der Zeckengeschichte. Zwei Ticks in einer Minute.

 
pivomoe:

Ich frage in aller Ernsthaftigkeit. Als ich in MQL programmierte, wurde mir klar, dass man weder der Hilfe noch den Informationen des Terminals trauen sollte. Es ist nicht mehr als eine Information. Es ist möglich, dass der Tick früher (stabiler) Informationen liefert alsSymbolInfoTick.

Hier ist übrigens der Tick, der mit einer Verzögerung von eineinhalb Minuten kam:

Neue MA Maximale Differenz 97082 SBPR-3.19 Ortszeit 2019.03.15 21:05:31.842 Tick-Zeit 2019.03.15 21:03:54.760

In dieser Minute gab es nichts Kriminelles in der Zeckengeschichte. Zwei Ticks in einer Minute.

Sie haben das Thema völlig verfehlt!

Ihre Ortszeit ist dabei völlig egal.

Nur die Zeit des TRADING-Servers ist wichtig!

Es gibt Handelssitzungen, während dieser Zeit können Sie handeln.

Die Handelszeit wird nicht durch Ihre Ortszeit bestimmt,

und die Uhrzeit des Handelsservers.

 
prostotrader:

Sie haben das Thema völlig verfehlt!

Ihre Ortszeit ist Ihnen völlig gleichgültig.

Nur die Zeit des TRADING-Servers zählt!

Es gibt Handelssitzungen, während dieser Zeit können Sie handeln.

Die Handelszeit wird nicht durch Ihre Ortszeit bestimmt,

und die Uhrzeit des Handelsservers.

Ich muss den Punkt schlecht erklärt haben.fxsaber, verstand mich, weil er versteht, wie wichtig es ist, neue Ticks ohne Verzögerungen zu erhalten, und gab einen Link zu seinem Indikator, der das Gleiche tut wie mein Code, aber in grafischer Form. Sie hat keinen Bezug zum Zeitpunkt des Umtauschs.

Ich werde versuchen, es mit meinen Fingern zu erklären.

Um 16:39.59.999 Uhr Ortszeit erhält der Expert Advisor für jedes Symbol den ersten Tick aus der Marktübersicht und speichert ihn.

Um 16:40.00.000 Uhr fragt der Expert Advisor den letzten Tick für jedes Symbol erneut ab. Für einige von ihnen bekommen wir neue Zecken.

Die meisten der neuen Ticks haben eine Zeit ( time_msc ) von etwa 16:39.59.000. Aber einer kam mit einer Zeit von 16:38.30.335.

Es stellte sich heraus, dass es um 16:39.59.999 (lokal) keinen Tick gab, aber plötzlich erschien er eine Millisekunde später und war sogar 16:38:30, obwohl er sich normalerweise nur um eine Sekunde unterscheidet.

Nach solchen Ticks kommt keine gute Idee. Angenommen, wir fordern den letzten Tick des illiquiden Symbols im echten Handel an. Wir erhalten die Zeit des Ticks (time_msc)

die sich um zwei Minuten von der lokalen unterscheidet. Es gibt sofort Annahmen, dass jemand bereits über einen Tick Bescheid weiß, der vor 90, 60 oder 30 Sekunden stattgefunden hat, und unser EA weiß nichts davon, und er kann z.B. durch einen Treffer bei einer Limit-Order bestraft werden.

Dieses Problem muss gelöst werden.

 
pivomoe:

Derfxsaber hat mich verstanden, denn er weiß, wie wichtig es ist, neue Ticks ohne Verzögerung zu erhalten, und hat einen Link zu seinem Indikator angegeben, der etwas Ähnliches wie mein Code macht, aber in grafischer Form. Sie hat keinen Bezug zum Zeitpunkt des Umtauschs.

Ich werde versuchen, es mit meinen Fingern zu erklären.

Um 16:39.59.999 Uhr Ortszeit erhält der Expert Advisor für jedes Symbol den ersten Tick aus der Marktübersicht und speichert ihn.

Um 16:40.00.000 Uhr fragt der Expert Advisor den letzten Tick für jedes Symbol erneut ab. Für einige von ihnen bekommen wir neue Zecken.

Die meisten der neuen Ticks kommen mit einer Zeit ( time_msc ) von etwa 16:39.59.000. Aber einer kam mit einer Zeit von 16:38.30.335.

Es stellte sich heraus, dass es um 16:39.59.999 (lokal) keinen Tick gab, aber plötzlich erschien er eine Millisekunde später und war sogar 16:38:30, obwohl er sich normalerweise nur um eine Sekunde unterscheidet.

Nach solchen Ticks kommt keine gute Idee. Angenommen, wir fordern den letzten Tick des illiquiden Symbols im echten Handel an. Wir erhalten die Zeit des Ticks (time_msc)

die sich um zwei Minuten von der lokalen unterscheidet. Es gibt sofort Annahmen, dass jemand bereits über einen Tick Bescheid weiß, der vor 90, 60 oder 30 Sekunden stattgefunden hat, und unser EA weiß nichts davon, und er kann z.B. durch einen Treffer bei einer Limit-Order bestraft werden.

Dieses Problem muss gelöst werden.

Sie müssen nichts "bekämpfen". Sie sollten verstehen, wie Ticks im Terminal empfangen werden und korrekt

sie richtig verarbeiten!

https://www.mql5.com/ru/code/16210

Лента всех сделок
Лента всех сделок
  • www.mql5.com
Хитрый усреднитель Hello Smart Эксперт усредняет убыточные позиции по определенному алгоритму. ColorJSatl_Digit Сглаженный быстрый цифровой фильтр JSatl с цветовой индикацией направления движения, с отображением последнего значения в виде ценовой метки и с возможностью округлять уровни...
 
prostotrader:

Es gibt keinen Grund, irgendetwas zu "bekämpfen", sondern zu verstehen, wie die Zecken in das Terminal kommen, und sie richtig zu behandeln!

um sie richtig zu behandeln!

Können Sie dieses Wissen endlich weitergeben? Selbst wenn durch Ihre Methode, können Sie eine neue Zecke Ereignis früher zu bekommen, stellt sich heraus, dass Sie mir einen Fisch und nicht eine Angelrute, dh nicht erklären, warum dies der Fall ist.

Woher nehmen Sie die Gewissheit, dass Ihre Methode schneller ist als meine? Habe ich etwas in der Dokumentation übersehen? Vielleicht haben Sie experimentell festgestellt, dass das Terminal neue Ticks eher hergibt, wenn Sie ein Glas abonniert haben?

Ich werde in diesem EA die Umstellung von meiner Art, neue Ticks zu fangen, auf Ihre Art vornehmen.

 
pivomoe:

Können Sie dieses Wissen endlich weitergeben? Selbst wenn Sie mit Ihrer Methode ein neues Tick-Ereignis früher bekommen können, stellt sich heraus, dass Sie mir einen Fisch und keine Angel geben, d.h. Sie erklären nicht, warum dies der Fall ist.

Woher nehmen Sie die Gewissheit, dass Ihre Methode schneller ist als meine? Habe ich etwas in der Dokumentation übersehen? Vielleicht haben Sie experimentell festgestellt, dass das Terminal neue Ticks eher hergibt, wenn Sie ein Glas abonniert haben?

Ich werde in diesem EA den Wechsel von meiner Art, neue Ticks zu fangen, zu Ihrer implementieren.

Hier finden Sie den Quellcode mit Kommentaren.

Sind Sie zu faul, sie durchzusehen? Oder was ist unklar?