Bug in Order hisotry

Einloggen oder registrieren, um einen Kommentar zu schreiben
amando
2889
amando  

Hallo,


ist euch schon mal aufgefallen, das beim Auslesender Order History der Order Open Price nicht immer stimmt?

Order_Price=HistoryOrderGetDouble(order_ticket,ORDER_PRICE_OPEN);

und zwar, wenn eine Order abgeschlossen ist, sprich wenn kein Deal mehr möglich ist, dann gibt die History den richtigen Wert zurück.


Wenn aber noch eine Position dazu offen ist, dann kommt immer der Wert 0. Obwohl die Order ja einen Open Price haben muss.

bei 

tp=HistoryOrderGetDouble(order_ticket,ORDER_TP);
sl=HistoryOrderGetDouble(order_ticket,ORDER_SL);

funktioniert das ohne probleme, auch wenn die Position noch offen ist ;-)

Christian
3190
Christian  

Da steht was in der Doku.

Es arbeitet ein Cache dazwischen. Der muss aktualisiert werden .


Christian
3190
Christian  
https://www.mql5.com/de/articles/211
Orders, Positions und Abschlüsse in MetaTrader 5
Orders, Positions und Abschlüsse in MetaTrader 5
  • www.mql5.com
Jeder Händler verfolgt als ultimatives Ziel mit den Mitteln von Handels-Operationen in Finanzmärkten Gewinne zu machen. Dieser Beitrag beschreibt die Begriffe und Vorgänge der MetaTrader 5 Handels-Plattform, deren Kenntnis zum angemessenen Verständnis der Funktionsweise von Handelsfunktionen der MQL5 Sprache notwendig ist Orders — sind die...
Carl Schreiber
Moderator
9882
Carl Schreiber  
amando:

Hallo,


ist euch schon mal aufgefallen, das beim Auslesender Order History der Order Open Price nicht immer stimmt?

und zwar, wenn eine Order abgeschlossen ist, sprich wenn kein Deal mehr möglich ist, dann gibt die History den richtigen Wert zurück.


Wenn aber noch eine Position dazu offen ist, dann kommt immer der Wert 0. Obwohl die Order ja einen Open Price haben muss.

bei 

funktioniert das ohne probleme, auch wenn die Position noch offen ist ;-)

Offene Positionen 'stecken' in einem anderen Pool als die historischen also die geschlossenen. Siehe , wie Cristian sagte, in der Doku!

Es gibt die Funktionen:  HistorsDealsTotal(), HistoryOrdersTotal(), OrdersTotal() und PositionsTotal() für die offenen Positionen.

Einfach mal wieder F1 benutzen ;)

amando
2889
amando  

Das ist mir schon klar, die history deals stimmen auch, es ist jedoch nicht verständlich, das in der order history bei allen Parametern der richtige Wert kommt, nur beim Open Price 0 steht.

es geht ja noch einfacher, man kann ja auch den Position Open Price nehmen, der sollte eigentlich mit dem Order Open gleich sein.

Christian
3190
Christian  
amando:

Das ist mir schon klar, die history deals stimmen auch, es ist jedoch nicht verständlich, das in der order history bei allen Parametern der richtige Wert kommt, nur beim Open Price 0 steht.

es geht ja noch einfacher, man kann ja auch den Position Open Price nehmen, der sollte eigentlich mit dem Order Open gleich sein.

Hm.... Möglich das es ein Bug sei.

Kann aber auch gewolltes Verhalten sein. Gibt ja oft Gründe warum Entwickler es manchmal anders machen wie erwartet.


Stell das doch mal im RU Forum ein , und schau auf die Antwort.


Ich guck mal eben selber etwas , hab grad Zeit ...Entwicklungsmaschine wird neu installiert. Nach einem RAM-Upgrade ging nichts mehr ...hachja ...2 Tage :-)

Christian
3190
Christian  

Versuche mal die 2. Varante der Funktion.

Und schau mal ob ein TRUE zurück kommt.


bool  HistoryOrderGetDouble(
   ulong                       ticket_number,     // Ticket
   ENUM_ORDER_PROPERTY_DOUBLE  property_id,       // Identifikator der Eigenschaft
   double&                     double_var         // hier nehmen wir den Wert der Eigenschaft auf 
   );
Christian
3190
Christian  

Noch ein Tipp für dich amando....

Wenn man ein vermeintlichen Bug findet schreibt man eine Test-Version die den reproduzierbar macht.

Für den der ihn findet ist es in dem Moment ja viel leichter als für alle anderen .

Ein Skript reicht meist aus. Du wirst merken das sich viel mehr User dann damit beschäftigen weil sie nicht erst die Test Funktion schreiben müssen.


Immer auch aus Entwickler Sicht sowas sehen .

Alle großen Repos gehen so vor.


Stell dir mal ein Bugfixer vor :

100 Nachrichten am Tag mit " Bug ...da ...100 falsch ...sollte 101 sein"

Und für jeden Bug muss er erst ein mal eine TestFunktion schreiben um das nachvollziehen zu können.


In der modernen Software Entwicklung stellen die User einen wichtigen Part dar. Bugs finden :-) ...

Und eine gewisse Verantwortung dieses Problem so effizient wie möglich an die entsprechenden Stellen zu bringen.

Ich schweife ab :-) ....ende

Einloggen oder registrieren, um einen Kommentar zu schreiben