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

 
Seien Sie sich bewusst, dass Millisekunden und Nanosekunden so wichtig sind, dass diese Ticks über das Internet übertragen werden (netzgebundene IO). Eine Zeitauflösung von einer Nanosekunde ist wahrscheinlich übertrieben, es sei denn, Sie planen etwas Unanständiges!
 
angevoyageur:
Auch in mql5 gibt es keine solchen Informationen. Aber es gibt Timer-Ereignisse, die mit Millisekunden Präzision verwendet werden können, obwohl ich nicht weiß, ob diese Funktion mit dem neuen mql4 verfügbar sein wird.

Das aktuelle mql4-Äquivalent ist etwa wie unten:

void start(){
    while(true){
        do_something....;
        Sleep(1000); //Sleep for one Second.
        RefreshRates();
    }
}

void start(){
    static bool RunOnce;
    if(RunOnce) return;
    int Begin=GetTickCount();
    while(GetTickCount()<Begin+1000){
        Print("GetTickCount()="+GetTickCount());
        Sleep(1);
    }
    RunOnce=true;
}

Ich habe die GTC getestet und sie scheint um 16_Millisekunden zu springen. Ich habe herausgefunden, dass es sich wahrscheinlich um eine Art Informatik-Beschränkung auf Altsystemen handelt. Wenn jemand erklären möchte, warum das so ist [trotz meines Geschwafels], wäre ich froh. Hummm, ich frage mich, ob mql5 die gleichen Einschränkungen hat? In Ordnung, ein weiterer Test kommt sofort :)

 

Es ist immer eine Mühe wert, herauszufinden, welche Widows-API-Funktion die MQL-Entwickler gekapselt haben.

In diesem Fall ist die Antwort einfach - sie haben GetTickCount verwendet Es heißt:

Die Auflösung der FunktionGetTickCount ist auf die Auflösung des Systemtimers beschränkt, die typischerweise im Bereich von 10 Millisekunden bis 16 Millisekunden liegt.

 

Ich habe vorher gegoogelt und obwohl ich es nicht wirklich verstehe, scheint es, dass GetTickCount() eine Funktion direkt aus dem Windows-Betriebssystem ist. Sie ist nicht dafür gedacht, genau zu sein und sollte nicht für Dinge verwendet werden, die auf die Millisekunde genau sein müssen (auch wenn sie Werte in Millisekunden zurückgibt).

Ich habe Tests mit sleep und get tick count gemacht und es gibt immer Fehler, es ist schwer zu sagen, ob sie durch Sleep oder GTC verursacht werden, aber ich vermute beides

 
Ovo:

Es ist immer eine Mühe wert, herauszufinden, welche Widows-API-Funktion die MQL-Entwickler gekapselt haben.

In diesem Fall ist die Antwort einfach - sie haben GetTickCount verwendet Es heißt:

Die Auflösung der FunktionGetTickCount ist auf die Auflösung des Systemtimers beschränkt, die typischerweise im Bereich von 10 Millisekunden bis 16 Millisekunden liegt.

Dankeschön.
 
ubzen:

Das aktuelle mql4-Äquivalent sieht in etwa so aus

Ich habe die GTC getestet und sie scheint um 16_Millisekunden zu springen. Ich habe herausgefunden, dass es sich wahrscheinlich um eine Art Computer_Science-Beschränkung auf älteren Systemen handelt. Wenn jemand erklären möchte, warum das so ist [trotz meines Geschwafels], wäre ich froh. Hummm, ich frage mich, ob mql5 die gleichen Einschränkungen hat? In Ordnung, ein weiterer Test kommt sofort :)

Die 16-Millisekunden-Beschränkung kommt von einer Hardware-Beschränkung, aber es gibt andere Wege, um eine bessere Präzision des Timers zu erreichen.
mql5 haben die gleiche Einschränkung für GetTickCount(), aber wie ich oben versucht zu erklären, gibt es andere Funktionen, die verwendet werden können (Timer-Events).

 
Ovo:

Es ist immer eine Mühe wert, herauszufinden, welche Widows-API-Funktion die MQL-Entwickler gekapselt haben.

In diesem Fall ist die Antwort einfach - sie haben GetTickCount verwendet Es heißt:

Die Auflösung der FunktionGetTickCount ist auf die Auflösung des Systemtimers beschränkt, die typischerweise im Bereich von 10 Millisekunden bis 16 Millisekunden liegt.


Ja, das steht da, aber es ist schwer zu sagen, was das wirklich bedeutet. Wenn die Auflösung 16 ms beträgt, würde ich Werte von 0,16,32,48... usw. erwarten.

Ich sehe nie etwas zwischen 0 und 16, aber ich sehe jeden Wert über 16.

 
angevoyageur:

16 Millisekunden Begrenzung kommt von einer Hardware-Beschränkung, aber es gibt andere Möglichkeiten, um eine bessere Präzision Timer.
mql5 haben die gleiche Einschränkung für GetTickCount(), aber wie ich versuchte, oben zu erklären, gibt es andere Funktionen, die verwendet werden können (Timer-Events).

Verstanden :)
 
RaptorUK:
Volumen ist ein schlechter Name für das, was eigentlich "Tick count" ... es ist nichts zu tun mit gehandelten Volumen / Lose ... der Grund, warum es um mehr als 1 ändern kann, ist, weil Sie Ticks verpassen können.


Danke für die Information. Ich frage mich, warum ich das nicht früher bemerkt habe. In diesem Fall scheint es eine ziemlich nutzlose (oder irreführende) Information zu sein.

Ich muss wirklich nach echten Level2-Volumendaten von einigen Brokern suchen. Glücklicherweise bietet mein ECN-Broker Level2-Handelsdaten mit echtem Volumen an.

Grund der Beschwerde: