Komission von offenen Trades ablesen

 

Mit folgenden Code kann man ja offene Trades lesen, deren Gewinnverlust, Swap usw aber die Komission kann man komischerweise nicht dran ablesen, waere ja auch zu einfach gewesen wenn Metaquotes das noch mit dazu gebaut haette, also meine Frage ist ganz einfach wie bekomme ich es hin auch die Komission vom Trade zu lesen.

for(int i=PositionsTotal()-1; i>=0; i--)
   {
       ulong OrderTicket=PositionGetTicket(i); 
       //---
       OrderSymbol=PositionGetString(POSITION_SYMBOL);
       if(OrderSymbol != Symbol())continue;
       //---
       ENUM_POSITION_TYPE OrderType=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
       double OrderOpenPrice=PositionGetDouble(POSITION_PRICE_OPEN);
       double OrderClosePrice=PositionGetDouble(POSITION_PRICE_CURRENT);
       datetime OrderOpenTime=(datetime)PositionGetInteger(POSITION_TIME);
       double OrderLots=PositionGetDouble(POSITION_VOLUME);
       int    DIGITS=(int)SymbolInfoInteger(OrderSymbol,SYMBOL_DIGITS);
       double POINT=(double)SymbolInfoDouble(OrderSymbol,SYMBOL_POINT); 
       double OrderStopLoss=PositionGetDouble(POSITION_SL);
       double OrderTakeProfit=PositionGetDouble(POSITION_TP);
       double OrderProfit=PositionGetDouble(POSITION_PROFIT);
       double OrderSwap=PositionGetDouble(POSITION_SWAP);
       int Magicnummer=int(PositionGetInteger(POSITION_MAGIC));
       //Tja jetzt noch die Komission vom Trade hier ablesen zu koennen waere ja zu einfach gewesen das dunktioniert natuerlich wieder nicht, wie kann man die Komission lesen?
       //---

       if(OrderOpenTime>0 && OrderTicket>0 && Magicnummer==Magicnumber)
         { 
           if(OrderType==POSITION_TYPE_BUY)
           {
             BuytradesOpen++;
             ProfitBuyTrades+=OrderProfit;
             ProfitBuyTrades+=OrderSwap;
           }
           if(OrderType==POSITION_TYPE_SELL)
           {
             SelltradesOpen++;
             ProfitSellTrades+=OrderProfit;
             ProfitSellTrades+=OrderSwap;
           }
         }
   }
 

Du hast es noch nicht verstanden, Position (=ge- oder verkauft) und Order (=pending order, noch kein Geld bewegt) beziehen sich auf aktuell offene "Positionen" auf dem Konto.

Die Werte historischer Positionen finden sich hier, über diese Funktion (en, siehe linke Seite): HistoryDealGetDouble(): (Erst den Zeitraum bestimmen dann durch die Liste gehen:

   HistorySelect(0,TimeCurrent()); // alles
   int d = HistoryDealsTotal();
   while(d-->0) {
   ...
   }
Dokumentation zu MQL5: Konstanten, Enumerationen und Strukturen / Handelskonstanten / Eigenschaften der Deals
Dokumentation zu MQL5: Konstanten, Enumerationen und Strukturen / Handelskonstanten / Eigenschaften der Deals
  • www.mql5.com
Eigenschaften der Deals - Handelskonstanten - Konstanten, Enumerationen und Strukturen - Nachschlagewerk MQL5 - Nachschlagewerk über die Sprache des algothitmischen/automatischen Handels für MetaTrader 5
 
Carl Schreiber #:

Du hast es noch nicht verstanden, Position (=ge- oder verkauft) und Order (=pending order, noch kein Geld bewegt) beziehen sich auf aktuell offene "Positionen" auf dem Konto.

Die Werte historischer Positionen finden sich hier, über diese Funktion (en, siehe linke Seite): HistoryDealGetDouble(): (Erst den Zeitraum bestimmen dann durch die Liste gehen:

Man muss auch nicht alles neu diskutieren.


https://www.mql5.com/de/forum/366243

Kommission aus der Spezifikation auslesen
Kommission aus der Spezifikation auslesen
  • 2021.04.01
  • www.mql5.com
Hallo Leute, ich hatte das Thema schon vor geraumer Zeit mal angesprochen. In der Zwischenzeit sind so viele Updates vom MT5 rausgekommen...
 

Ist auch nicht einfach zu verstehen, das ist einfach alles zu kompliziert von denen aufgebaut worden und nirgendswo findet man guten Support, im Vergleich zu Webdevelopment wo man fuer jede Sache hundert Beispiele findet, ist es bei MQL codeing jedesmal das gleiche man wir dhin und her geschickt und findet wieder nichts. Wenn ihr mir erlaubt euch ein Tipp zu geben fuer die Moderatoren, statt immer Hinweise auf irgendwelche Beitrage zu geben wo man wieder keine fertigen Funktionen finden kann, waere es einfacher fuer euch als Moderatoren eine Sammlung an fertigen Funktionen irgendwo zu verlinken wo sich jeder bediehnen kann.

Hier jetzt mal von mir ein Beispielscript wie man die Lotsize, Profit und Komission des letzten geschlossenen Trades findet kann, die berechnete Kommission fuer den offenen Trade wird man dann wahrscheinlich auch in der Deal History finden indem man prueft ob DEAL_ENTRY = 0 ist weil so wie ich das jetzt verstehe hat DEAL_ENTRY den Wert 0 fuer geoeffnete laufende Trades und den Wert 1 fuer geschlossene Trades. Korrigiert mich wenn ich falsch liege.

     double profit=0;double lotsize1=0;double komission=0;
      long lastticket=0;
      datetime from_date=TimeCurrent()-(3600*24*25);       // anfangszeitpunkt
      datetime to_date=TimeCurrent();                      // endzeitpunkt
      //---
       if(HistorySelect(from_date,to_date))
       {
          for(int i = HistoryDealsTotal(); i >= 0; i--)
          {
              //---
              ulong deal_ticket = HistoryDealGetTicket(i);
              datetime close_time = (datetime)HistoryDealGetInteger(deal_ticket,DEAL_TIME);
              long Position_ID_OrderTicket_original = HistoryDealGetInteger(deal_ticket,DEAL_POSITION_ID); //das ist wie orderticket von mt4 die wird immer groeser die zahl
              long deal_entry = HistoryDealGetInteger(deal_ticket,DEAL_ENTRY); //hier steht eine 1 wenn der trade schon geschlossen ist
              long OrderMagicnumber = HistoryDealGetInteger(deal_ticket,DEAL_MAGIC);
              double OrderProfit=HistoryDealGetDouble(deal_ticket,DEAL_PROFIT);
              double OrderLotsize=HistoryDealGetDouble(deal_ticket,DEAL_VOLUME);
              double OrderKomission=HistoryDealGetDouble(deal_ticket,DEAL_COMMISSION);
              //Print(OrderMagicnumber,"  ",Position_ID_OrderTicket_original,"  ",OrderProfit,"  ",OrderLotsize,"  deal_entry ",deal_entry,"closetime ",close_time);
              if(OrderMagicnumber==Magicnumber && deal_entry==1 && Position_ID_OrderTicket_original > lastticket)
              {
                //ticketnummervonmn=Position_ID_OrderTicket_original;
                lastticket=Position_ID_OrderTicket_original;
                profit=OrderProfit;lotsize1=OrderLotsize;
                komission=OrderKomission;
              }
              //---
          }
       }
       Print("last trade lot ",lotsize1,"  ",profit," komission ",komission);

Seht ihr so einfach kann man sich weier helfen statt herum zu diskutieren und hin und her zu schicken. Wenn man die Komission fuer ein Trade wissen will bevor man den Trade ueberhaupt oeffnet dann hat man wahrscheinlich Pech gehabt weil das nirgendswo abgelesen werden kann ausser vielleicht auf der Webseite vom Broker.

 
Eine Liste mit allen Funktionen, wo sich jeder bedienen kann... Moment mal!
Und schau mal im englischen Forenteil unter "How to start with MQL5"
 
Tobias Johannes Zimmer #:
Eine Liste mit allen Funktionen, wo sich jeder bedienen kann... Moment mal!
Und schau mal im englischen Forenteil unter "How to start with MQL5"

Hauptsache etwas gesagt steht ja alles in der Dokumentation deswegen fragen auch alle Leute immer nach den gleichen Sachen weil die es nirgendwo finden und die Leute schicken die dann nach der Dokumentation weil dort hat natuerlich niemand als erstes nachgeschaut. Wenn ihr schon eure Zeit hier in Foren verbringt dann helft den Leuten wenigstens auch richtig.

 
Email Account #:

Hauptsache etwas gesagt steht ja alles in der Dokumentation deswegen fragen auch alle Leute immer nach den gleichen Sachen weil die es nirgendwo finden und die Leute schicken die dann nach der Dokumentation weil dort hat natuerlich niemand als erstes nachgeschaut. Wenn ihr schon eure Zeit hier in Foren verbringt dann helft den Leuten wenigstens auch richtig.


Nun bist du auch nicht schlauer als vorher.
Kommission vorher auslesen ging schon länger nicht.
Eine einfache Suche nach Kommission im forum hatte dies verhindert 😉
 
Email Account #:

Hauptsache etwas gesagt steht ja alles in der Dokumentation deswegen fragen auch alle Leute immer nach den gleichen Sachen weil die es nirgendwo finden und die Leute schicken die dann nach der Dokumentation weil dort hat natuerlich niemand als erstes nachgeschaut. Wenn ihr schon eure Zeit hier in Foren verbringt dann helft den Leuten wenigstens auch richtig.


Du weißt noch nicht, wie man Sachen in der Dokumentation richtig nachschaut. Wüsstest Du außerdem, wie man die Sufu richtig einsetzt, hätte sich das Problem auch von selbst erledigt.

Ich habe Dir genau das verlinkt, wonach Du gefragt hast; Du motzt trotzdem rum.

Du sagst, man solle es doch bitte beantworten, damit der Nächste, der es sucht auch das Thema wieder findet. Die selbe Logik funktioniert dann schon nicht mehr, wenn der Nächste die Sufu nicht verwendet. So wie Du. Diese Fragen wurden schon was weiß ich wie oft beantwortet. Jetzt bist Du der Nächste und findest Nichts weil Du es nicht richtig suchst.

Wenn man versucht, Dir das Handwerkszeug zu verpassen, motzt Du trotzdem rum und stellst Dich quer.
 
Christian #:

Nun bist du auch nicht schlauer als vorher.
Kommission vorher auslesen ging schon länger nicht.
Eine einfache Suche nach Kommission im forum hatte dies verhindert 😉
Er weiß ja nicht mal was das heißt "suche nach Kommission im Forum". Dass es bei der Suche die Rubriken Forum, Artikel, CodeBase und Dokumentation gibt.
Außerdem findet man ja im englischen Forum mehr Antworten einfach weil dort mehr Publikum ist.
 
Tobias Johannes Zimmer #:

Du weißt noch nicht, wie man Sachen in der Dokumentation richtig nachschaut. Wüsstest Du außerdem, wie man die Sufu richtig einsetzt, hätte sich das Problem auch von selbst erledigt.

Ich habe Dir genau das verlinkt, wonach Du gefragt hast; Du motzt trotzdem rum.

Du sagst, man solle es doch bitte beantworten, damit der Nächste, der es sucht auch das Thema wieder findet. Die selbe Logik funktioniert dann schon nicht mehr, wenn der Nächste die Sufu nicht verwendet. So wie Du. Diese Fragen wurden schon was weiß ich wie oft beantwortet. Jetzt bist Du der Nächste und findest Nichts weil Du es nicht richtig suchst.

Wenn man versucht, Dir das Handwerkszeug zu verpassen, motzt Du trotzdem rum und stellst Dich quer.

Du solltest mal lernen entweder richtig hilfreiche Antworten zu geben oder ganz sein lassen es brauch niemand hier im Internet ein Moechtegern Lehrer. Das ist hier nicht reallife und niemand ist perfekt, ihr verhaltet euch alle wie bemitleidenswerte roboter

 
Email Account #:

Du solltest mal lernen entweder richtig hilfreiche Antworten zu geben oder ganz sein lassen es brauch niemand hier im Internet ein Moechtegern Lehrer. Das ist hier nicht reallife und niemand ist perfekt, ihr verhaltet euch alle wie bemitleidenswerte roboter

Hi,

wie der Christian schon gepostet hatte. Ich habe hier den Frage nach einem Befehl für das Auslesen der Kommission schon früher mal gestellt.

https://www.mql5.com/de/forum/366243

Leider gibt es einen solchen Befehl bis heute nicht. Da mein EA auf der Grundlage der anderen Parameter (Kapital, Volantilität, Risiko u.s.w.) meine Lotgröße bestimmt, habe ich ein Input-Feld eingebaut, wo ich die Kommission, die ich aus der Marktübersicht und da aus der Spezifikation händisch auslese, eintrage.

Ist zwar nicht sehr elegant, aber anders geht es nicht. Ich hatte mich damals auch an das russische Forum mit meiner Frage gewandt, in der Hoffnung, so näher an die MQL-Programmierer zu kommen. Leider hat man mich da nur als "verirrten Ausländer" betitelt.

Zusammenfassung: Es gibt keinen Befehl und damit Ende der Geschichte ... leider. Wenn du die Kommission nach meinem Schema als festen Parameter in deinem EA hinterlegst, kannst du damit alle Berechnungen anstellen und die Kommission deiner offenen Position hinzufügen.

Gruß Uwe

Kommission aus der Spezifikation auslesen
Kommission aus der Spezifikation auslesen
  • 2021.04.01
  • www.mql5.com
Hallo Leute, ich hatte das Thema schon vor geraumer Zeit mal angesprochen. In der Zwischenzeit sind so viele Updates vom MT5 rausgekommen...
Grund der Beschwerde: