Unterschiede bei POSITION_TIME / POSITION_TIME_UPDATE

Einloggen oder registrieren, um einen Kommentar zu schreiben
Otto Pauser
1873
Otto Pauser  
 datetime PosTimeOpen  = (datetime)PositionGetInteger(POSITION_TIME);
 datetime PosTimeUpdate= (datetime)PositionGetInteger(POSITION_TIME_UPDATE);

Bei Tests auf einem Netting Konto (MT5) sollte sich doch, meines verständnisses nach, die 'PosTimeUpdate' ändern wenn eine zweite Position dazugemischt wird. Tut es aber nicht. Sollte es das nicht!?

Wie erkenne ich ob zwei oder mehrere Positionen im nettingmode zusammengemischt(merged) wurden.

Letztendlich geht es mir darum sowohl im netting- als auch im hedging-mode (im hedging ist es in diesem Fall einfacher, da ändert sich ja nix an der ursprünglichen position) herauszufinden

wann eine Position (im MT4 eine Order) gesetzt, verändert oder gelöscht(ausgefüht) wurde. Ich bewege mich da plattformübergreifend, brauch das aber für den MT5, what else ;)

Dank im Vorraus!

Chris70
597
Chris70  

Mmh... das ist wirklich seltsam; man sollte meinen, genau für sowas wäre POSITION_TIME_UPDATE da...

Zwei Dinge fallen mir dazu ein, die man prüfen könnte:

(1) falls es ein Bug sein sollte: ändert sich PositionGetInteger(POSITION_TIME_UPDATE_MSC) ebenfalls nicht?

(2) falls die Abfrage über OnTick() erfolgen sollte (Stichwort timing): besteht das Problem auch über OnTradeTransaction() ?

Carl Schreiber
Moderator
8692
Carl Schreiber  

Versuch mal HistoryDealGetInteger().

Man könnte die Änderung auch mit OnTradeTransaktion() abfangen.

Dokumentation zu MQL5: Handelsfunktionen / HistoryDealGetInteger
Dokumentation zu MQL5: Handelsfunktionen / HistoryDealGetInteger
  • www.mql5.com
//| Trade function                                                   | //| Geschichte für letzte Tage erfordert und gibt false beim Fehler zurück |
Alain Verleyen
38334
Alain Verleyen  
Otto Pauser :

Bei Tests auf einem Netting Konto (MT5) sollte sich doch, meines verständnisses nach, die 'PosTimeUpdate' ändern wenn eine zweite Position dazugemischt wird. Tut es aber nicht. Sollte es das nicht!?

Wie erkenne ich ob zwei oder mehrere Positionen im nettingmode zusammengemischt(merged) wurden.

Letztendlich geht es mir darum sowohl im netting- als auch im hedging-mode (im hedging ist es in diesem Fall einfacher, da ändert sich ja nix an der ursprünglichen position) herauszufinden

wann eine Position (im MT4 eine Order) gesetzt, verändert oder gelöscht(ausgefüht) wurde. Ich bewege mich da plattformübergreifend, brauch das aber für den MT5, what else ;)

Dank im Vorraus!

Ich spreche kein Deutsch und versuche über das Übersetzungstool zu antworten. Bitte sagen Sie mir, ob die Übersetzung verständlich ist.


Haben Sie die Position ausgewählt, bevor Sie die Funktion PositionGetInteger () verwendet haben? Sie müssen PositionSelect () oder PositionGetTicket () verwenden.

Was ist Ihr Anwendungsfall für ein Netting-Konto, um die Aktualisierungszeit zu kennen?

Otto Pauser
1873
Otto Pauser  
Alain Verleyen:

Ich spreche kein Deutsch und versuche über das Übersetzungstool zu antworten. Bitte sagen Sie mir, ob die Übersetzung verständlich ist.


Haben Sie die Position ausgewählt, bevor Sie die Funktion PositionGetInteger () verwendet haben? Sie müssen PositionSelect () oder PositionGetTicket () verwenden.

Was ist Ihr Anwendungsfall für ein Netting-Konto, um die Aktualisierungszeit zu kennen?

Danke, die Übersetzung ist verständlich.

Der Account ist Netting.

Ich habe alles nachgeprüft und es war wohl ein Fehler in meinem Code. Die Zeiten stimmen.

Aber mit den Preisen stimmt was nicht. PriceOpen verändert sich und PriceCurrent ist gleich CurrentBid.

Das Testprogramm ist im Anhang. Bitte testen. Test EURUSD, 2019.01.02



Dabei sieht man auch die Probleme des Testers im visuellen mode. Das sind Probleme, die den visuellen Test sehr erschweren.

Dateien:
SimpleEA.mq5 9 kb
Alain Verleyen
38334
Alain Verleyen  
Otto Pauser :

Danke, die Übersetzung ist verständlich.

Der Account ist Netting.

Ich habe alles nachgeprüft und es war wohl ein Fehler in meinem Code. Die Zeiten stimmen.

Aber mit den Preisen stimmt was nicht. PriceOpen verändert sich und PriceCurrent ist gleich CurrentBid.

Das Testprogramm ist im Anhang. Bitte testen. Test EURUSD, 2019.01.02

Es ist alles normal.

PriceOpen ändert sich, sobald das Terminal mit dem zusätzlichen Deal aktualisiert wurde. Der Open Price ist dann der Netting Price von 2 Deals, dann 3 Deals.

Deal 1 ist 0,1 bei 1,1467, Deal 2 ist 0,1 bei 1,14664, was dazu führt, dass der Durchschnittspreis des Eröffnungskurses 1,14667 = (1,1467 * 0,1 + 1,14664 * 0,1) / 0,2 beträgt

Deal 3 ist 0.1 bei 1.14656, der durchschnittliche Preis ist 1.14663 = (1.14667 * 0.2 + 1.14656 * 0.1) /0.3

Der aktuelle Preis ist der Schlusskurs, der für einen KAUF der Geldkurs ist (ähnlich wie bei OrderClosePrice mit mql4).


Dabei sieht man auch die Probleme des Testers im visuellen mode. Das sind Probleme, die den visuellen Test sehr erschweren.

Ich sehe nichts, was ist das Problem mit dem Visual Tester?
Otto Pauser
1873
Otto Pauser  
Alain Verleyen:

Es ist alles normal.

Ja stimmt, ich bin von falschen Annahmen ausgegangen.


Alain Verleyen:

Ich sehe nichts, was ist das Problem mit dem Visual Tester?


ich verwende derzeit build 2214.

Bitte das Testprogramm mit Ctrl+F5 (oder Button) aus dem Editor heraus starten.

Den Tester auf ganz schnell einstellen. Schieberegler ganz nach rechts.

Den Test nochmal starten.

Bei mir wird die Funktion DebugBreak() nicht richtig ausgeführt. Der Debugger hält wilkürlich auf Zeile 109 an, weitere DebugBreak() werden nicht ausgeführt!

Das ist nicht das einzige Problem, aber durch die defekten Haltepunkte kann ich das weitere Problem nicht erklären.

Dateien:
SimpleEA.mq5 9 kb
Alain Verleyen
38334
Alain Verleyen  
Otto Pauser :
Ja stimmt, ich bin von falschen Annahmen ausgegangen.



ich verwende derzeit build 2214.

Bitte das Testprogramm mit Ctrl+F5 (oder Button) aus dem Editor heraus starten.

Den Tester auf ganz schnell einstellen. Schieberegler ganz nach rechts.

Den Test nochmal starten.

Bei mir wird die Funktion DebugBreak() nicht richtig ausgeführt. Der Debugger hält wilkürlich auf Zeile 109 an, weitere DebugBreak() werden nicht ausgeführt!

Das ist nicht das einzige Problem, aber durch die defekten Haltepunkte kann ich das weitere Problem nicht erklären.

Ich verstehe das Problem, auf das Sie stoßen, nicht wirklich.

Ich würde Ihnen empfehlen, keine Beta-Version zu verwenden, wenn Sie kein Beta-Tester sein möchten. 2214 ist eine Beta, letzte Veröffentlichung ist 2190.

Otto Pauser
1873
Otto Pauser  
Alain Verleyen:

Ich verstehe das Problem, auf das Sie stoßen, nicht wirklich.

Ich würde Ihnen empfehlen, keine Beta-Version zu verwenden, wenn Sie kein Beta-Tester sein möchten. 2214 ist eine Beta, letzte Veröffentlichung ist 2190.

Hab wohl auf den falschen Knopf gedrückt ;)

Der Debugger hat aber wirklich große Probleme die beseitigt gehören.

Alain Verleyen
38334
Alain Verleyen  
Otto Pauser :

Hab wohl auf den falschen Knopf gedrückt ;)

Der Debugger hat aber wirklich große Probleme die beseitigt gehören.

Sie sollten zu Build 2190 zurückkehren. Sie müssen lediglich Terminal64.exe und MetaEditor64.exe kopieren und keine Verbindung zum Metaquotes-Server herstellen, um ein automatisches Update auf die Betaversion zu vermeiden.
Otto Pauser
1873
Otto Pauser  
Alain Verleyen:
Sie sollten zu Build 2190 zurückkehren. Sie müssen lediglich Terminal64.exe und MetaEditor64.exe kopieren und keine Verbindung zum Metaquotes-Server herstellen, um ein automatisches Update auf die Betaversion zu vermeiden.
Es wird wohl die Verbindung zum Metaquotes-Servergewesen sein. Danke!
123
Einloggen oder registrieren, um einen Kommentar zu schreiben