Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 93

 
Renat Fatkhullin:

Das ist die Aufgabe der WinAPI.

Dem stimme ich nicht zu.
WinAPI reagiert nicht auf lokale Zeitkorrekturen, im Gegensatz zu GetMicrosecondCount.


Dateien:
 
Nikolai Semko:

Dem stimme ich nicht zu.
WinAPI reagiert nicht auf lokale Zeitkorrekturen, im Gegensatz zu GetMicrosecondCount.

Das liegt daran, dass die hier angegebene Zeit nicht absolut ist, sondern ein Delta vom Start des Programms:

Die Funktion GetMicrosecondCount() gibt die Anzahl der Mikrosekunden zurück, die seit dem Start des MQL5-Programms vergangen sind.

Da der Zählerwert beim Start der Anwendung feststeht, wird dieses Delta von Datumsänderungen beeinflusst. Die ernsthafte Änderung des Datums auf Ihrem Computer, wenn zeitabhängige Software läuft, ist Sabotage und das Vorgehen russischer Männer mit einer japanischen Kettensäge. Für eine Anekdote reicht das aus.

Die Rechtfertigung "Nun, die Hintergrundzeitkorrektur funktioniert" funktioniert hier nicht - die Korrektur beträgt Millisekunden pro Tag und hat keine Wirkung.

DerMikrosekunden-Timer wird für die präzise Messung kleiner Zeiträume benötigt, nicht für die Zählung vom Beginn der Zeiten an.

 
Nikolai Semko:

Da bin ich anderer Meinung.
WinAPI reagiert im Gegensatz zu GetMicrosecondCount nicht auf lokale Zeitkorrekturen.

und wie sehen Sie die praktische Anwendung von GetMicrosecondCount, dass es die gesamte Arbeit des Programms in der aktuellen Version verdirbt? beschreiben Sie die praktische Anwendung

Zum Beispiel sehe ich weder in C++ noch hier irgendwelche Varianten, außer den von Renat beschriebenen, d.h. die Messung der Code-Ausführungszeit mit Genauigkeit in MCS

d.h. ich verstehe Ihre Hartnäckigkeit nicht, offen gesagt

 
Renat Fatkhullin:

Da der Zählerwert zu Beginn der Anwendung feststeht, wird dieses Delta von der Datumsänderung beeinflusst. Um das Datum auf einem Computer ernsthaft zu ändern, wenn zeitabhängige Software läuft, gibt es Sabotage und die Annäherung von russischen Männern mit einer japanischen Kettensäge. Das reicht für eine Anekdote.

Ich habe die Zeitsynchronisation im Internet absichtlich auf dem animierten Gif gezeigt. Diese Art der Synchronisierung erfolgt standardmäßig automatisch und geschieht recht häufig und planmäßig, ohne dass jemand daran beteiligt ist.
Und es gibt keine Garantie dafür, dass diese Synchronisierung zum Zeitpunkt der Messung stattfinden kann.
Ich mache mir keine Sorgen um mich selbst, denn ich weiß bereits um diese Besonderheit von GetMicrosecondCount() und dass diese Funktion langsamer ist als GetTickCount.
Aber andere, die diesen Zweig nicht lesen, sondern die Hilfe zu dieser Funktion sogar sehr sorgfältig lesen, können in Schwierigkeiten geraten, wenn sie GetMicrosecondCount() in der realen EA-Logik verwenden, denn während des Testens wird alles in Ordnung sein, aber während des realen Handels zum Zeitpunkt der geplanten Zeitsynchronisation oder der Umstellung auf die Sommerzeit kann es zu OY kommen, insbesondere wenn die Zeit abnimmt und ein Überlauf wie ulong auftritt.
Und übrigens, diese neue für mich undokumentierte Information, machte erhebliche Anpassungen an der Logik der Multitimer-Klasse, die jetzt erstellt wird und die den Betrieb von mehreren Timern gleichzeitig organisiert. Bei der Arbeit dieser Klasse wurde die Mikrosekundenfunktion mit aller Kraft eingesetzt. Aber jetzt verstehe ich, dass ich die Genauigkeit von 15625 µs opfern muss, auch um die Geschwindigkeit zu erhöhen.
Faber ist ein Pliz. Er ist nicht böse, er ist nur aufdringlich, aber er ist gut.
Scheiße, ich bin auch kurz davor, gesperrt zu werden :((

 
Renat Fatkhullin:

Der Grund dafür ist, dass die angezeigte Zeit nicht absolut ist, sondern ein Delta vom Beginn des Programms an:

Da der Zählerwert beim Start der Anwendung fest ist, wird dieses Delta von Datumsänderungen beeinflusst. Die ernsthafte Änderung des Datums auf dem Computer, wenn zeitabhängige Software läuft, ist Sabotage und die Annäherung von russischen Männern mit einer japanischen Kettensäge. Für eine Anekdote reicht das aus.

Die Rechtfertigung "Nun, die Hintergrundzeitkorrektur funktioniert ja" gilt hier nicht - die Korrektur beträgt Millisekunden pro Tag und hat keine Wirkung.

Der Mikrosekunden-Timer wird für die präzise Messung kleiner Zeiträume benötigt, nicht für die Zählung vom Beginn der Zeit an.

Ist es also sinnvoll, das Terminal regelmäßig zurückzusetzen?

 
Nikolai Semko:

Ich habe die Zeitsynchronisierung über das Internet in der animierten Grafik besonders hervorgehoben. Diese Synchronisierung erfolgt standardmäßig automatisch für alle und geschieht nach einem Zeitplan, ohne dass jemand daran beteiligt ist, und das ziemlich oft.

Ich habe ausdrücklich und klar geschrieben, dass die tägliche Korrektur um Millisekunden automatisch erfolgt.

Und ja, Sie werden von einer reinen WinAPI-Funktion (entweder GetTickCount oder QueryPerformanceCounter) genauso überwältigt sein, wenn Sie der Kettensäge einen Schrott unterjubeln, indem Sie das Datum auch nur um Sekunden ändern. Es gibt überhaupt keinen Schutz, den Sie angeblich haben wollen. Aus dem Finger gesaugt als Problem und angeblich als Lösung.

Es ist also alles wahr - das ist die WinAPI und das ist die Realität.

 
Aleksey Vyazmikin:

Ist es also sinnvoll, das Terminal regelmäßig neu zu starten?

Nein.
 
Renat Fatkhullin:
Nein.

Mein Candlestick-Schlusszeitzähler fängt an, in einer Woche um 5 Sekunden zu rauschen, ich dachte, es hätte etwas mit der Software zu tun.

Sie hilft beim Neustart und bei der Synchronisierung der Zeit mit dem betreffenden Dienst.

Vor nicht allzu langer Zeit habe ich die Batterie der Mutter gewechselt.

 
Aleksey Vyazmikin:

Mein Candlestick-Schlusszeitzähler fängt an, in einer Woche um 5 Sekunden zu rauschen, ich dachte, es hätte etwas mit der Software zu tun.

Sie hilft beim Neustart und bei der Synchronisierung der Zeit mit dem betreffenden Dienst.

Ich habe die Batterie meiner Mutter vor nicht allzu langer Zeit gewechselt.

Richten Sie den Windows-eigenen Zeitdienst so ein, dass er jede Nacht (oder öfter) mit pool.ntp.org synchronisiert wird, und die tägliche Korrektur erfolgt in Millisekunden.
 
Renat Fatkhullin:
Richten Sie einen internen Windows-Zeitdienst ein, der täglich nachts (oder öfter) mit pool.ntp.org synchronisiert, und die tägliche Korrektur erfolgt in Millisekunden.

Konfiguriert, aber es hilft nicht - ich verstehe den Grund nicht. Aber mein Server ist ntp2.stratum2.ru

Grund der Beschwerde: