fxsaber: War am Computer, hat keine Berechnungen gemacht. Die CPU wurde nicht mit irgendetwas belastet.
19 ms und 48 ms für die Ausführung von SymbolInfoTick. Es gab mehrere Dutzend Fälle, in denen die Dauer Hunderte von Mikrosekunden betrug. Aber ich habe sie nicht zitiert.
Offenbar müssen wir, um es zu reproduzieren, die Kampfberater 24 Stunden lang laufen lassen und dann nur noch beobachten. Meiner Meinung nach ist es unrealistisch, herauszufinden, was solche Verzögerungen auslöst.
Es kann vorkommen, dass der Computer Aktualisierungen herunterlädt oder einige Serviceaufgaben ausführt. Auch Netzspannungsschwankungen können es beeinträchtigen. Auf diese Weise kann man zu programmierbaren Netzwerkkarten gelangen, bei denen die gesamte Bot-Logik auf Hardware-Ebene geschrieben wird :) aber auch dort wird es Verzögerungen aufgrund von Fluktuationen des Quantenfeldes geben
Maxim Dmitrievsky: Manchmal pumpt der Computer auch Updates oder führt Serviceaufgaben aus. Auch Schwankungen der Netzspannung können sie beeinflussen. Auf diese Weise kann man zu programmierbaren Netzwerkkarten gelangen, bei denen die gesamte Bot-Logik fest verdrahtet ist :) aber auch dort wird es aufgrund von Quantenfeldfluktuationen Verzögerungen geben
Die Entwickler haben ihr Möglichstes getan. Außerdem hat die Branche einen Code zur Verfügung gestellt, der zeigt, wie die Zecke der Market Watch hinterherhinkt und umgekehrt. Die Reihenfolge, in der die Zecken ankommen, ist gestört und wahrscheinlich noch etwas anderes. Alles in allem wird ein böser gültiger Code veröffentlicht, um andere Situationen zu reproduzieren.
SymbolInfoTick sendet die vom Server des Brokers empfangenen Daten. Was der Server sendet, ist das, was Sie bekommen.
WirdSymbolInfoTick() im blockierenden Modus oder im nicht blockierenden Modus ausgeführt?
Zum Beispiel, es ist in den Körper der while-Schleife und es gibt keine Verbindung oder Markt ist geschlossen für Wochenende, dann wird es durch Anhalten der Schleife blockiert werden oder es wird asynchron ausgeführt werden?
wie die Marktbeobachtung der Marktbeobachtung hinterherhinkt und vice versa.
D.h. SymbolInfoTick fängt einen neuen Tick ab und wir erhalten einen anderen Ask und Bid durch das Polling des Market Watch (ohne auf ein Market Watch Change Event zu warten)? Vor einem Jahr oder so war das noch nicht möglich. SymbolInfoTick und CopyTick und vintage führen immer zum gleichen Tick. Wenn Sie Ticks durch verschiedene OnXXX-Funktionen erhalten, werden Sie natürlich etwas durch eine Funktion und etwas durch eine andere erhalten...
d.h. SymbolInfoTick fängt einen neuen Tick auf und wir erhalten einen anderen Ask und Bid durch das Polling des Cups (ohne auf das Cup Change Event zu warten) ?
Wie ich dachte, testen Sie OnBookEvent und OnTick, nicht MarketBookGet und SymbolInfoTick. Wenn Sie nach diesem Schema testen würden, würde alles übereinstimmen:
While(1)
{
Sleep(1)
Запрос тика через SymbolInfoTick
Запрос тика через стакан MarketBookGet
Проверка на совпадение.
}
p.s. Lesen Sie Ihre Beiträge unten. Sie verstehen es auch. Warum brauchen Sie OnBookEvent und OnTick überhaupt ? In meinem Beispiel dauert Sleep(1) 1-2 Millisekunden, Request und Tick mit SymbloInfoTick dauert weniger als eine Mikrosekunde. Der Prozessor befindet sich bereits in 99,9 % der Zeit im Ruhezustand, wenn es keine Ticks gibt. Was ist der Vorteil der Verwendung von OnBookEvent und OnTick?
Wie ich dachte, testen Sie OnBookEvent und OnTick, nicht MarketBookGet und SymbolInfoTick. Wenn Sie nach diesem Schema testen würden, würde alles übereinstimmen:
p.s. Lesen Sie Ihre Beiträge unten. Sie verstehen es auch. Warum brauchen Sie OnBookEvent und OnTick überhaupt ? In meinem Beispiel dauert Sleep(1) 1-2 Millisekunden, Request und Tick mit SymbloInfoTick dauert weniger als eine Mikrosekunde. Der Prozessor befindet sich bereits in 99,9 % der Zeit im Ruhezustand, wenn es keine Ticks gibt. Was ist der Vorteil der Verwendung von OnBookEvent und OnTick?
Ohne einen Hauch von Diplomatie reden Sie nur Unsinn. Sleep(1) ist eine Zehntel Millisekunde. Ich sehe nur eine Theorie.
Die Benutzer von OnTick wollen eine frische Zecke sehen und nicht diejenige, die schon vor einiger Zeit im Terminal angekommen ist. Sie können SymbolInfoTick direkt nach MarketBookGet in den Quellcode einfügen.
Die Entwickler haben zwei Probleme mit ihrem Schweigen voll und ganz zugegeben.
Ohne einen Hauch von Diplomatie reden Sie nur Unsinn. Sleep(1) ist ein Dutzend Millisekunden lang. Ich sehe nur eine Theorie.
Die Benutzer wollen in OnTick einen frischen Tick sehen und nicht einen Tick, der schon vor einiger Zeit im Terminal angekommen ist. Sie können SymbolInfoTick direkt nach MarketBookGet in den Quellcode einfügen.
Die Entwickler haben durch ihr Schweigen zwei Probleme vollständig anerkannt.
Nicht immer und nicht jede Zehntelmillisekunde. Überprüft mit einem einfachen Skript
2020.11.0413:14:31.590 TestSleep (EURUSD,H1) total 17058138 microseconds (1.706 ms per iteration)
OnTick-Benutzer sehen immer die frischeste Zecke.
OnBookEvent-Benutzer sehen immer den neuesten Tick.
Wenn Sie jedoch die mit OnTick und OnBookEvent empfangenen Ticks vergleichen wollen, werden Sie enttäuscht sein, da die Ereignisse nicht parallel, sondern nacheinander verarbeitet werden. Das wollte der Benutzer pivomoe Ihnen sagen
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
Markiert identische Ticks, die in verschiedenen On-Funktionen durch entsprechende Methoden empfangen werden. Die Verzögerung kann bis zu zehn Millisekunden betragen, wenn sie auf sechs statt auf einer Karte ausgeführt wird.
Wenn Sie jedoch die in OnTick empfangenen Ticks mit den in OnBookEvent empfangenen vergleichen wollen, werden Sie enttäuscht sein, da die Ereignisse nicht parallel, sondern nacheinander verarbeitet werden. Was Benutzer pivomoe Ihnen zu sagen versuchte
Wenn ein fast leeres OnBookEvent/OnTick 20 Millisekunden später ausgelöst wird als das entsprechende fast leere OnTick/OnBookEvent, ist das OK?
ZS Wenn Sie schon auf das Thema achten, hier gibt es einen weiteren Reproduktionscode. In Market Watch kommen die Ticks mit einer früheren Zeit als die Market Watch Zeit davor herein.
Wenn ein fast leeres OnBookEvent/OnTick 20 Millisekunden später ausgelöst wird als das entsprechende fast leere OnTick/OnBookEvent, ist das OK?
Die EA-Warteschlange ist eine sperrbare Ressource. Wenn ein Ereignis in die Warteschlange geschrieben wird, wartet der Expert Advisor (es sei denn, der Expert Advisor verarbeitet gerade ein Ereignis)
Ereignisse für den Expert Advisor kommen aus der Ereigniswarteschlange des entsprechenden Charts, die wiederum aus dem Verarbeitungszyklus des entsprechenden Symbols stammt. Und diese Verarbeitungsschleife verteilt nicht nur Ereignisse auf ihre eigenen Diagramme, sondern erledigt auch eine Menge anderer Dinge.
Ich habe Ihnen bereits gesagt, dass Windows kein Echtzeitbetriebssystem ist.
War am Computer, hat keine Berechnungen gemacht. Die CPU wurde nicht mit irgendetwas belastet.
19 ms und 48 ms für die Ausführung von SymbolInfoTick. Es gab mehrere Dutzend Fälle, in denen die Dauer Hunderte von Mikrosekunden betrug. Aber ich habe sie nicht zitiert.
Offenbar müssen wir, um es zu reproduzieren, die Kampfberater 24 Stunden lang laufen lassen und dann nur noch beobachten. Meiner Meinung nach ist es unrealistisch, herauszufinden, was solche Verzögerungen auslöst.
Manchmal pumpt der Computer auch Updates oder führt Serviceaufgaben aus. Auch Schwankungen der Netzspannung können sie beeinflussen. Auf diese Weise kann man zu programmierbaren Netzwerkkarten gelangen, bei denen die gesamte Bot-Logik fest verdrahtet ist :) aber auch dort wird es aufgrund von Quantenfeldfluktuationen Verzögerungen geben
Die Entwickler haben ihr Möglichstes getan. Außerdem hat die Branche einen Code zur Verfügung gestellt, der zeigt, wie die Zecke der Market Watch hinterherhinkt und umgekehrt. Die Reihenfolge, in der die Zecken ankommen, ist gestört und wahrscheinlich noch etwas anderes. Alles in allem wird ein böser gültiger Code veröffentlicht, um andere Situationen zu reproduzieren.
SymbolInfoTick sendet die vom Server des Brokers empfangenen Daten. Was der Server sendet, ist das, was Sie bekommen.
WirdSymbolInfoTick() im blockierenden Modus oder im nicht blockierenden Modus ausgeführt?
Zum Beispiel, es ist in den Körper der while-Schleife und es gibt keine Verbindung oder Markt ist geschlossen für Wochenende,
dann wird es durch Anhalten der Schleife blockiert werden oder es wird asynchron ausgeführt werden?
wie die Marktbeobachtung der Marktbeobachtung hinterherhinkt und vice versa.
D.h. SymbolInfoTick fängt einen neuen Tick ab und wir erhalten einen anderen Ask und Bid durch das Polling des Market Watch (ohne auf ein Market Watch Change Event zu warten)? Vor einem Jahr oder so war das noch nicht möglich. SymbolInfoTick und CopyTick und vintage führen immer zum gleichen Tick. Wenn Sie Ticks durch verschiedene OnXXX-Funktionen erhalten, werden Sie natürlich etwas durch eine Funktion und etwas durch eine andere erhalten...
d.h. SymbolInfoTick fängt einen neuen Tick auf und wir erhalten einen anderen Ask und Bid durch das Polling des Cups (ohne auf das Cup Change Event zu warten) ?
Hier.
Hier.
Wie ich dachte, testen Sie OnBookEvent und OnTick, nicht MarketBookGet und SymbolInfoTick. Wenn Sie nach diesem Schema testen würden, würde alles übereinstimmen:
p.s. Lesen Sie Ihre Beiträge unten. Sie verstehen es auch. Warum brauchen Sie OnBookEvent und OnTick überhaupt ? In meinem Beispiel dauert Sleep(1) 1-2 Millisekunden, Request und Tick mit SymbloInfoTick dauert weniger als eine Mikrosekunde. Der Prozessor befindet sich bereits in 99,9 % der Zeit im Ruhezustand, wenn es keine Ticks gibt. Was ist der Vorteil der Verwendung von OnBookEvent und OnTick?
Wie ich dachte, testen Sie OnBookEvent und OnTick, nicht MarketBookGet und SymbolInfoTick. Wenn Sie nach diesem Schema testen würden, würde alles übereinstimmen:
p.s. Lesen Sie Ihre Beiträge unten. Sie verstehen es auch. Warum brauchen Sie OnBookEvent und OnTick überhaupt ? In meinem Beispiel dauert Sleep(1) 1-2 Millisekunden, Request und Tick mit SymbloInfoTick dauert weniger als eine Mikrosekunde. Der Prozessor befindet sich bereits in 99,9 % der Zeit im Ruhezustand, wenn es keine Ticks gibt. Was ist der Vorteil der Verwendung von OnBookEvent und OnTick?
Ohne einen Hauch von Diplomatie reden Sie nur Unsinn. Sleep(1) ist eine Zehntel Millisekunde. Ich sehe nur eine Theorie.
Die Benutzer von OnTick wollen eine frische Zecke sehen und nicht diejenige, die schon vor einiger Zeit im Terminal angekommen ist. Sie können SymbolInfoTick direkt nach MarketBookGet in den Quellcode einfügen.
Die Entwickler haben zwei Probleme mit ihrem Schweigen voll und ganz zugegeben.
Ohne einen Hauch von Diplomatie reden Sie nur Unsinn. Sleep(1) ist ein Dutzend Millisekunden lang. Ich sehe nur eine Theorie.
Die Benutzer wollen in OnTick einen frischen Tick sehen und nicht einen Tick, der schon vor einiger Zeit im Terminal angekommen ist. Sie können SymbolInfoTick direkt nach MarketBookGet in den Quellcode einfügen.
Die Entwickler haben durch ihr Schweigen zwei Probleme vollständig anerkannt.
Nicht immer und nicht jede Zehntelmillisekunde. Überprüft mit einem einfachen Skript
Hier ist mein Protokoll
OnTick-Benutzer sehen immer die frischeste Zecke.
OnBookEvent-Benutzer sehen immer den neuesten Tick.
Wenn Sie jedoch die mit OnTick und OnBookEvent empfangenen Ticks vergleichen wollen, werden Sie enttäuscht sein, da die Ereignisse nicht parallel, sondern nacheinander verarbeitet werden. Das wollte der Benutzer pivomoe Ihnen sagen
Nicht immer und nicht überall eine Zehntelmillisekunde. Überprüft mit einem einfachen Skript
Hier ist mein Protokoll.
Und hier ist mein Protokoll.
Ergebnis.
OnTick-Benutzer sehen immer die frischeste Zecke.
OnBookEvent-Benutzer sehen immer den neuesten Tick.
Das Ergebnis der Ausführung des EA auf einem einzelnen Chart von einem Rechner aus, der in keiner Weise ausgelastet ist.
Markiert identische Ticks, die in verschiedenen On-Funktionen durch entsprechende Methoden empfangen werden. Die Verzögerung kann bis zu zehn Millisekunden betragen, wenn sie auf sechs statt auf einer Karte ausgeführt wird.
Wenn Sie jedoch die in OnTick empfangenen Ticks mit den in OnBookEvent empfangenen vergleichen wollen, werden Sie enttäuscht sein, da die Ereignisse nicht parallel, sondern nacheinander verarbeitet werden. Was Benutzer pivomoe Ihnen zu sagen versuchte
Wenn ein fast leeres OnBookEvent/OnTick 20 Millisekunden später ausgelöst wird als das entsprechende fast leere OnTick/OnBookEvent, ist das OK?
ZS Wenn Sie schon auf das Thema achten, hier gibt es einen weiteren Reproduktionscode. In Market Watch kommen die Ticks mit einer früheren Zeit als die Market Watch Zeit davor herein.
Wenn ein fast leeres OnBookEvent/OnTick 20 Millisekunden später ausgelöst wird als das entsprechende fast leere OnTick/OnBookEvent, ist das OK?
Die EA-Warteschlange ist eine sperrbare Ressource. Wenn ein Ereignis in die Warteschlange geschrieben wird, wartet der Expert Advisor (es sei denn, der Expert Advisor verarbeitet gerade ein Ereignis)
Ereignisse für den Expert Advisor kommen aus der Ereigniswarteschlange des entsprechenden Charts, die wiederum aus dem Verarbeitungszyklus des entsprechenden Symbols stammt. Und diese Verarbeitungsschleife verteilt nicht nur Ereignisse auf ihre eigenen Diagramme, sondern erledigt auch eine Menge anderer Dinge.
Ich habe Ihnen bereits gesagt, dass Windows kein Echtzeitbetriebssystem ist.