neue mql4 liefert Millisekunden in Zeitstempeln....

 

Derzeit kann mql4 nur die Zeit für eingehende Ticks auf die nächste Sekunde genau angeben. Wir verwenden die folgende Funktion:

MarketInfo(Symbol(), MODE_TIME)

1) Gibt es eine andere Funktion, die einen Zeitstempel im Millisekundenbereich liefern kann oder die verwendet werden kann, um Millisekunden für Tickdaten zu bestimmen, die auf der Plattform eingehen?

2) Wird das neue mql4, das mql5-Funktionen kombiniert, in der Lage sein, Millisekunden- (oder Sub-Sekunden-) Zeitstempel für eingehende Ticks anzufordern oder zu erhalten?

Wie soll die mt4- (und mt5-) Plattform also zwischen Ticks unterscheiden, die zur "gleichen Zeit" eintreffen?

 
4evermaat:

Derzeit kann mql4 nur die Zeit für eingehende Ticks auf die nächste Sekunde genau angeben. Wir verwenden die folgende Funktion:

MarketInfo(Symbol(), MODE_TIME)

1) Gibt es eine andere Funktion, die einen Zeitstempel im Millisekundenbereich liefern kann oder die verwendet werden kann, um Millisekunden für Tickdaten zu bestimmen, die auf der Plattform eingehen?

2) Wird das neue mql4, das mql5-Funktionen kombiniert, in der Lage sein, Millisekunden- (oder Sub-Sekunden-) Zeitstempel für eingehende Ticks anzufordern oder zu erhalten?

Wie soll die mt4- (und mt5-) Plattform also zwischen Ticks, die zur "gleichen Zeit" eintreffen, unterscheiden?

1) GetTickCount(), sollte live funktionieren. Sinnlos bei historischen Daten.

2) Auch mt5_data wird nicht in Millisekunden gespeichert. Live jedoch kein Problem.

3) Ich verstehe nicht, worauf Sie hinauswollen. Wenn es die gleiche Zeit in Millisekunden ist, dann würde es nichts bringen, Millisekunden zu haben. Wenn es unterschiedliche Zeiten in Millisekunden sind, dann könnte GetTickCount() helfen. Hilfe in dem Sinne, dass Ihr Code den aktuellen Tick innerhalb von weniger als einer Millisekunde verarbeitet. Wie wichtig das ist, hängt davon ab, was Sie zu erreichen versuchen... denke ich.

 

Sie haben mindestens zwei Möglichkeiten.

1. Unterscheiden Sie die Ticks mit GetTickCount() von MQL, das eine Genauigkeit von 16 ms hat.

2. Zugriff auf die PC-Zeit mit GetLocalTime() von Kernell32.dll mit Nanosekunden-Präzision (dies funktioniert nicht mit Emulatoren unter Linux, sie geben immer noch die 16 ms-Präzision zurück).

 

4evermaat: Ich denke, Ticks werden durch das Volumen unterschieden. Jedes Mal, wenn ein neuer Tick vom Broker gesendet wird, erhöht sich das Volumen um eins. Wenn Sie z.B. einen M1-Chart betrachten, ist das Volumen für einen bestimmten Balken, wie viele Ticks in dieser Minute gesendet wurden.

Gestern habe ich versucht, eine Funktion zu erstellen, die die Zeit mit Millisekunden aufzeichnet. Sie verwendete TimeCurrent() und GetTickCount(). Mathematisch gesehen, war es richtig, aber GetTickCount() ist nicht genau genug. Ich fand heraus, dass das Runden von Ereigniszeiten auf die letzte Sekunde (d.h. nur mit TimeCurrent() ) kleinere Fehler als meine Funktion hatte... :/

Ich werde es an einem anderen Tag noch einmal versuchen, aber soweit ich sehen kann, kann man sich nicht auf GetTickCount() verlassen, wenn man eine Genauigkeit innerhalb einer Sekunde benötigt.

Vielleicht können C++-Experten auf genauere Äquivalente von GetTickCount() zugreifen...?

 
Ovo:

Sie haben mindestens zwei Möglichkeiten.

1. Unterscheiden Sie die Ticks mit GetTickCount() von MQL, das eine Genauigkeit von 16 ms hat.

2. Greifen Sie auf die PC-Zeit zu, indem Sie GetLocalTime() von Kernell32.dll mit Nanosekunden-Präzision verwenden (dies funktioniert nicht mit Emulatoren unter Linux, sie geben immer noch die 16 ms-Präzision zurück).


1) Nach meinen Tests glaube ich nicht, dass GetTickCount() eine Genauigkeit von 16ms hat. Es stimmt, 16ms ist der kleine Wert, den ich erhalte (abgesehen von 0), aber ich glaube nicht, dass Werte über 16ms auf die nächsten 16ms genau sind :/.

2) Ah, das ist eine tolle Idee. Ich werde das mal ausprobieren.

 
alladir:


1) Nach meinen Tests glaube ich nicht, dass GetTickCount() eine Genauigkeit von 16ms hat. Es stimmt, 16ms ist der kleine Wert, den ich erhalte (abgesehen von 0), aber ich glaube nicht, dass Werte über 16ms auf die nächsten 16ms genau sind :/

2) Ah, das ist eine tolle Idee. Ich werde das mal versuchen.


Tut mir leid, ich verwechsle oft Genauigkeit mit Präzision, ich bin mir nicht einmal jetzt sicher, was was ist.
 
Ovo:

Tut mir leid, ich verwechsle oft Genauigkeit mit Präzision, ich bin mir nicht einmal mehr sicher, was was ist.

Ich auch nicht, ich weiß nur, dass ich eine Formel habe, die mathematisch funktionieren sollte, aber im wirklichen Leben nicht funktioniert... also gebe ich GetTickCount() die Schuld :)
 
alladir:

4evermaat: Ich denke, Ticks werden durch das Volumen unterschieden. Jedes Mal, wenn ein neuer Tick vom Broker gesendet wird, erhöht sich das Volumen um eins. Wenn Sie z. B. einen M1-Chart betrachten, ist das Volumen für einen bestimmten Balken die Anzahl der Ticks, die in dieser Minute gesendet wurden.


Ich habe das schon oft gesehen, aber sind Sie sich da sicher? Ich habe dies einige Male bei meinem ECN-Broker überprüft, und das Volumen steigt bei jedem Tick ganz anders an, es sind wahrscheinlich die tatsächlich gehandelten Lots, die durch diesen Broker fließen. Wenn ich zum Beispiel 10 Lots verkaufe, sind die Lots beim nächsten Tick +10, nicht +1.

 

Das Volumen steigt um 10, wenn man 10 Lots handelt?!? Das habe ich noch nicht erlebt. Ich lasse einen Tick-Collector laufen, der jeden Tick aufzeichnet. Manchmal steigt das Volumen um 2 oder 3, aber ich vermute, dass es sich dabei um sehr schnelle Ticks handelt, die entweder vom Broker nicht gesendet wurden oder eintrafen, während die Startfunktion meines Tick-Collectors noch lief.

Ja, ich denke, Volumen = Ticks nur von googeln, aber es scheint zu passen mit den Daten, die ich sehe

 
szgy74:

Ich habe das schon oft gesehen, aber sind Sie sich da sicher? Ich habe dies einige Male bei meinem ECN-Broker überprüft, und das Volumen steigt bei jedem Tick ganz anders an, wahrscheinlich sind es die tatsächlich gehandelten Lots, die durch diesen Broker fließen. Wenn ich zum Beispiel 10 Lots verkaufe, sind die Lots beim nächsten Tick +10, nicht +1.

Volumen ist ein schlechter Name für das, was eigentlich "Tick count" ist ... es hat nichts mit gehandeltem Volumen/Lots zu tun ... der Grund, warum es sich um mehr als 1 ändern kann, ist, dass man Ticks verpassen kann.
 
4evermaat:

Derzeit kann mql4 nur die Zeit für eingehende Ticks auf die nächste Sekunde genau angeben. Wir verwenden die folgende Funktion:

MarketInfo(Symbol(), MODE_TIME)

1) Gibt es eine andere Funktion, die einen Zeitstempel im Millisekundenbereich liefern kann oder die verwendet werden kann, um Millisekunden für Tickdaten zu bestimmen, die auf der Plattform eingehen?

2) Wird das neue mql4, das mql5-Funktionen kombiniert, in der Lage sein, Millisekunden- (oder Sub-Sekunden-) Zeitstempel für eingehende Ticks anzufordern oder zu erhalten?

Wie soll die mt4- (und mt5-) Plattform also zwischen Ticks unterscheiden, die zur "gleichen Zeit" eintreffen?

Auch in mql5 gibt es solche Informationen nicht. Aber es gibt Timer-Ereignisse, die mit Millisekunden Genauigkeit verwendet werden können, obwohl ich nicht weiß, ob diese Funktion mit dem neuen mql4 verfügbar sein wird.
Grund der Beschwerde: