neue mql4 liefert Millisekunden in Zeitstempeln.... - Seite 4

 
autoabacus:

...
Sehr interessant. Ich danke Ihnen.
 

Ich habe bemerkt, dass mt4 jetzt einen GetMicroSecondCount() hat. Wäre diese Funktion der Funktion GetTickCount in Bezug auf die Genauigkeit überlegen?

Was wäre der Vorteil/Nachteil der Verwendung von GetMicroSecondCount() gegenüber GetTickCount()? Benötigt sie mehr Ressourcen? Ich würde denken, dass die MicroSec-Auflösung eine bessere Funktion als MilliSec wäre. Man kann MicroSec immer in Millisec oder eine niedrigere Auflösung umwandeln, aber man kann nicht Millisec nehmen und MicroSecs oder eine höhere Auflösung erhalten.


Warum schlägt MQ die Funktion GTC gegenüber GMicroC für Millisekunden-Zeitstempel vor? Ich verstehe, dass es früher vielleicht keine GMicroC-Funktion gab, aber jetzt, wo es sie gibt, warum nicht die Dokumentation aktualisieren und GMicroC für eine höhere Zeitstempelauflösung empfehlen?

 
4evermaat:

Ich habe bemerkt, dass mt4 jetzt einen GetMicroSecondCount() hat. Wäre diese Funktion der Funktion GetTickCount in Bezug auf die Genauigkeit überlegen?

Was wäre der Vorteil/Nachteil der Verwendung von GetMicroSecondCount() gegenüber GetTickCount()? Benötigt sie mehr Ressourcen? Ich würde denken, dass die MicroSec-Auflösung eine bessere Funktion als MilliSec wäre. Man kann MicroSec immer in Millisec oder eine niedrigere Auflösung umwandeln, aber man kann nicht Millisec nehmen und MicroSecs oder eine höhere Auflösung erhalten.


Warum schlägt MQ die Funktion GTC gegenüber GMicroC für Millisekunden-Zeitstempel vor? Ich verstehe, dass es früher vielleicht keine GMicroC-Funktion gab, aber jetzt, wo es sie gibt, warum nicht die Dokumentation aktualisieren und GMicroC für eine höhere Zeitstempelauflösung empfehlen?

Sie scheinen sich gerne zu beschweren Sie wollten Millisekunden und jetzt haben Sie Mikrosekunden. Auf jeden Fall ist es besser, wenn TimeCurrent() (und andere vom Server zurückgegebene Zeit) Millisekunden zurückgibt.

Wenn Sie mit Metaquotes sprechen wollen, sollten Sie an den ServiceDesk schreiben, sie antworten sehr selten auf dieses Forum.

 
4evermaat:

Ich habe bemerkt, dass mt4 jetzt einen GetMicroSecondCount() hat. Wäre diese Funktion der Funktion GetTickCount in Bezug auf die Genauigkeit überlegen?

Was wäre der Vorteil/Nachteil der Verwendung von GetMicroSecondCount() gegenüber GetTickCount()? Benötigt sie mehr Ressourcen? Ich würde denken, dass die MicroSec-Auflösung eine bessere Funktion als MilliSec wäre. Man kann MicroSec immer in Millisec oder eine niedrigere Auflösung umwandeln, aber man kann nicht Millisec nehmen und MicroSecs oder eine höhere Auflösung erhalten.


Warum schlägt MQ die Funktion GTC gegenüber GMicroC für Millisekunden-Zeitstempel vor? Ich verstehe, dass es früher vielleicht keine GMicroC-Funktion gab, aber jetzt, wo es sie gibt, warum nicht die Dokumentation aktualisieren und GMicroC für eine höhere Zeitstempelauflösung empfehlen?

Während GetTickCount eine Kernfunktion der Windows-API ist (seit den Anfängen von Windows), erfordert die andere Funktion eine (wenn auch einfache) Implementierung. Sie sind nicht miteinander verwandt.
 
zirkoner:

Sie scheinen sich gerne zu beschweren. Sie haben um Millisekunden gebeten und jetzt haben Sie Mikrosekunden. Auf jeden Fall wäre es besser, wenn TimeCurrent() (und andere vom Server zurückgegebene Zeiten) Millisekunden zurückgeben würden.

Wenn Sie mit Metaquotes sprechen wollen, sollten Sie an den ServiceDesk schreiben, sie antworten sehr selten auf dieses Forum.

Ich beschwere mich nicht, sondern frage mich nur, warum sie (oder irgendjemand) die alte Funktion noch immer empfehlen, obwohl eine neue, präzisere Funktion verfügbar ist. Ich habe dem Service Desk geschrieben.

Ovo:
Während GetTickCount eine Kernfunktion der Windows-API ist (seit den Anfängen von Windows), erforderte die andere Funktion eine (wenn auch einfache) Implementierung. Sie sind nicht miteinander verwandt.

Welche Implementierung verwendet GetMicroSecondCount(), um Mikrosekundengenauigkeit in Zeitstempeln zu erhalten?

 
4evermaat:

Welche Implementierung verwendet GetMicroSecondCount(), um Mikrosekundengenauigkeit in Zeitstempeln zu erhalten?

Ich habe eine klare Vorstellung davon, wie man es codiert, aber ich bin kein MQ-Codierer. Wie auch immer, warum müssen Sie es wissen, wenn es bereits für Sie funktioniert?
 

Um die Systemzeit in Millisekunden ab der Epoche zu erhalten:


#include <WinAPI\windef.mqh>
#import
"kernel32.dll" void GetSystemTimeAsFileTime(FILETIME& t); #import ulong getCurrentEpochMsc(){      FILETIME t;      GetSystemTimeAsFileTime(t);      ulong time = (long)t.dwHighDateTime << 32 | t.dwLowDateTime;      ulong diffTo1970 = 11644473600000;      return (ulong)(time * 0.0001 - diffTo1970 - TimeGMTOffset()*1000); }
 
owneroxxor: Um die Systemzeit als Millisekunden ab Epoche zu erhalten:

Ein Datetime ist Sekunden ab Epoche. In einen Long-Wert umwandeln und mit 1000 multiplizieren. Das alles ist nicht nötig.

 
William Roeder:

Ein Datetime ist Sekunden von der Epoche. In einen Long-Wert umwandeln und mit 1000 multiplizieren, das ist nicht nötig.

Sie berücksichtigen nicht, dass ich in manchen Fällen (wie in meinem) den aktuellen Zeitpunkt (Millisekundengenauigkeit) des Systems wissen muss, um ihn mit einem erteilten Auftrag TimeMsc() zu vergleichen. In diesem Fall ist das, was Sie gesagt haben, nicht gültig.

 
owneroxxor:

Sie berücksichtigen nicht, dass ich in manchen Fällen (wie in meinem) den aktuellen Zeitpunkt (Millisekundengenauigkeit) des Systems wissen muss, um ihn mit einem erteilten Auftrag TimeMsc() zu vergleichen. In diesem Fall ist das, was Sie gesagt haben, nicht gültig.

Verwenden Sie einfach GetTickCount().