Indikatoren: Ping

 

Ping:

Ein Echtzeit-Indikator, der den Lag von Kursen innerhalb des Terminals anzeigt.

Zwei Varianten der Visualisierung des Indikators

Autor: fxsaber

 

Bitte teilen Sie Indikator-Statistiken auf VPS mit minimalen Netzwerk-Ping.


Ich habe Spikes von bis zu einer halben Sekunde auf dem Indikator auf der lokalen Maschine, die ich nicht zu gehen.


Ich habe nicht überwacht EAs für eine lange Zeit, aber zehn Millisekunden ist üblich.


Im Allgemeinen, ein Löffel Teer in einem Fass MT5(MT4 ist nicht besser).


ZЫ Diejenigen, die über Pending Orders (Limit Orders an der Börse zum Beispiel) handeln, sind von dieser Krankheit viel weniger betroffen als der Markthandel (insbesondere Scalping).

 

Börsensymbol Si-12.17 MetaQuotes-Demo


Die Verzögerung erreichte zwei Sekunden bei einem Netzwerk-Ping < 0,1 Sekunden. Wahrscheinlich liegt das an der nachträglichen Vermischung von Kurs- und Handelsströmen. Kurz gesagt, schlecht.

 

Und aus irgendeinem Grund ist der mittlere sehr klein.

Das ist die Sekunde, in der es herauskam.


 
Maxim Dmitrievsky:

Und der Durchschnitt ist aus irgendeinem Grund sehr klein

Er ist eigentlich nicht klein ~5 ms. Das ist ein Stein für die Null-Ping-Betroffenen.

Hier ist ein Ausbruch in einer Sekunde.

Vor dem Hintergrund solcher Ausbrüche ist der Durchschnitt natürlich nicht zu bemerken.


Die Geschichte des Problems ist, dass es einige Verwirrungen beim Handel auf MT4 ECN, wo meine eigenen Limits beeinflussen die Preisgestaltung und der Stapel ist sichtbar. Die Tick-Historie kann im MT4 nicht eingesehen werden, aber zum Glück gibt es den MT5 mit den gleichen Daten. Deshalb habe ich dummerweise mehrere Stunden das Terminal selbst mit allen Stacks während des aktiven Handels auf Video aufgenommen. Ich begann, das Video, MT5+ZoomPrice und die Ergebnisse des MQL4-Skripts auf Redaktionen und Besonderheiten der Ausführung zu analysieren.


Als Ergebnis fand ich heraus, dass MT4 einigen Unsinn anzeigt - entweder waren diese Preise nicht in der Historie vorhanden (MT5+ZoomPrice und Brille im Video), oder sie waren vorhanden, aber einige von ihnen wurden übersehen, und einige von ihnen dauerten viel länger als in der Historie. Am Ende habe ich festgestellt, dass MT4 selbst langsamer wird. In der MT5-Historie war alles perfekt. Aber es kamen Zweifel auf, der Indikator bestätigte sie.


Jetzt ist mir klar, dass ich der Relevanz der aktuellen Kurse im MT5 nicht ganz trauen kann. Anwendungen von Drittanbietern (Vintage, auf Video aufgezeichnet) zeigen Echtzeitkurse viel genauer als MT4 und anscheinend auch MT5. Ich weiß noch nicht, wie sie zu vergleichen, um zu bestätigen, da ich nicht ziehen können Daten direkt von Drittanbieter-Einsätze über MQL. Aber das erhaltene Ergebnis ist genug, um ein wirklich ernstes Problem der Plattform Verzögerung zu sehen. Und alle Aussagen über hohe Geschwindigkeit einfach zusammenbrechen, wenn Sie eine solche Situation zu beobachten.


Ja, OrderSendAsync ist schnell, aber vor dem Senden, müssen Sie auf aktuelle Preise zu orientieren, und sie verlangsamen.

 
fxsaber:


Ja, OrderSendAsync ist schnell, aber vor dem Senden muss man sich an den aktuellen Kursen orientieren, und die verlangsamen sich.


Vielleicht ist es sinnvoll, alle unnötigen Paare aus der Marktübersicht zu entfernen, obwohl ich nicht glaube, dass sich dadurch etwas wesentlich ändern wird

Ich erinnere mich, dass ein Broker mir das empfohlen hat :)))

 
Maxim Dmitrievsky:

Vielleicht ist es sinnvoll, alle unnötigen Paare aus der Marktübersicht zu entfernen, obwohl ich nicht glaube, dass sich dadurch etwas wesentlich ändert

Ich habe nur gehandelte Paare und 5000 Balken pro Chart belassen. Jetzt können wir mit Sicherheit sagen, dass Expert Advisors, die auf Indikatoren (Standard oder iCustom) basieren, langsam sind, denn die Tatsache der Verzögerungsspitzen bei Indikatoren ist bewiesen. Daher ist es ratsam, auf iCustom zu verzichten und es über OOP in einen Expert Advisor einzubauen.


Und in der Tat wurde ursprünglich behauptet, dass Indikatoren in Expert Advisors einen Engpass darstellen, da alle Indikatoren im Gegensatz zu Expert Advisors in einem Thread ausgeführt werden. Verzögerungen in Expert Advisors erfordern eine separate Studie. Die Funktion zum Abrufen von Lags ist in der Beschreibung enthalten, so dass es nicht schwierig ist.

 

Zur Selbstüberprüfung gibt es eine solche Zeile im Code (unkommentiert):

Print(TickToString(Tick) + TOSTRING(Ping));


Sie gibt den empfangenen frischen Tick und seinen Ping aus. Nehmen wir ein Beispiel für ein solches Protokoll

2017.11.16 20:08:19.602 Ping (EURUSD,M1)         time = 2017.11.16 20:07:58.215 bid = 1.17711 ask = 1.17714 last = 0.0 volume = 0 TICK_FLAG_ASK
2017.11.16 20:08:19.602 Ping (EURUSD,M1)        Ping = 2.425000000000182
2017.11.16 20:08:23.142 Ping (EURUSD,M1)         time = 2017.11.16 20:08:01.212 bid = 1.17712 ask = 1.17714 last = 0.0 volume = 0 TICK_FLAG_BID
2017.11.16 20:08:23.142 Ping (EURUSD,M1)        Ping = 541.3899999999999
2017.11.16 20:08:23.603 Ping (EURUSD,M1)         time = 2017.11.16 20:08:02.215 bid = 1.17711 ask = 1.17714 last = 0.0 volume = 0 TICK_FLAG_BID
2017.11.16 20:08:23.603 Ping (EURUSD,M1)        Ping = 543.261

Die Zeitspalte des Terminals, als der Tick empfangen wurde, istgelb markiert (das Terminal selbst schreibt, nicht der Indikator). Und rot ist die Zeit eines neuen Ticks.

Sie können sehen, dass der Unterschied zwischen den benachbarten roten Datensätzen um ~540 ms größer ist als der Unterschied zwischen den benachbarten gelben Datensätzen. Dies ist ein Live-Beispiel für die Verzögerungen des Terminals, wenn Sie den vermeintlich aktuellen Preis sehen, der aber seit einer halben Sekunde nicht mehr existiert.

 
Wenn Sie die folgende Zeile auskommentieren
  if (SymbolInfoTick(_Symbol, Tick, Ping))// &&
// (!IsIndicator || (Count++ > 1))) // SymbolInfoTick in Indikatoren erfordert "Aufwärmen" in Form von mehreren ersten Calculate-Events


auskommentieren, erhalten Sie unmittelbar nach dem Start folgendes Ergebnis

2017.11.17 12:00:55.879 Ping (EURUSD,M1)         time = 2017.11.17 12:00:32.418 bid = 1.17925 ask = 1.17928 last = 0.0 volume = 0 TICK_FLAG_BID
2017.11.17 12:00:55.879 Ping (EURUSD,M1)        Ping = 0.0
2017.11.17 12:00:56.399 Ping (EURUSD,M1)         time = 2017.11.17 12:00:35.720 bid = 1.17923 ask = 1.17925 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK
2017.11.17 12:00:56.399 Ping (EURUSD,M1)        Ping = 2781.549

Fast drei Sekunden "Verzögerung"! Der Grund dafür ist einfach: Beim Starten eines Indikators wird der erste OnCalculate-Aufruf erzwungen und der alte Tick genommen. Dies ist dasselbe wie das Drücken von "Aktualisieren" auf dem Chart.

Es gibt keinen Fehler in diesem Verhalten der Indikatoren, Sie müssen sich nur bewusst sein, was der erste OnCalculate-Aufruf ist. Bei Expert Advisors gibt es keinen erzwungenen Aufruf von OnTick, so dass hier alles eindeutig ist.

 

Es scheint mir, dass wir die Verzögerung des Angebots durch den Broker selbst, diese berüchtigten "Filter", nicht ausschließen sollten, und die Geschichte ist bereits ungefiltert gegeben

Aber wir werden es nie wissen, ohne die Kommentare der Entwickler oder im Besitz der Server-Teil.

Andererseits habe ich 2 EAs in verschiedenen Terminalfenstern desselben Symbols laufen lassen und die Werte über RAM verglichen, die Abweichungen waren auch anständig, mehr als mehrere Spreads bei starken Schwankungen. Ich weiß nicht, wie man ein solches Phänomen zu interpretieren.

 
Maxim Dmitrievsky:

Es scheint mir, dass wir die Kursverzögerung durch den Broker selbst, diese sehr berüchtigten "Filter", nicht ausschließen sollten, und die Geschichte ist bereits ungefiltert gegeben

Börsensymbole auf MetaQuotes-Demo mit einer 15-minütigen Verzögerung haben definitiv keinen Filter.

Andererseits habe ich 2 EAs in verschiedene Terminalfenster eines Symbols gesetzt, und die Werte durch RAM verglichen, die Abweichungen waren auch anständig, mehr als mehrere Spreads bei starken Schwankungen. Ich weiß nicht, wie ich ein solches Phänomen interpretieren soll.

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Stimmt es, dass es bei manchen Brokern nachlaufende Kurse gibt?

fxsaber, 2017.11.17 11:20 pm.

In MT4/5 muss man mit dem Konzept der Kursrelevanz vorsichtig sein.

Zwei Terminals auf demselben Rechner, die mit demselben Konto verbunden sind, werden über einen ziemlich großen Bereich unsynchronisiert sein.

Dies muss von den Entwicklern behandelt werden, da jede MT5-Geschwindigkeitscharakteristik recht vernünftig, um es gelinde auszudrücken, verzerrt werden kann.