historische Trades auswerten

 

Hallo Leute,

ich bin gerade am irre werden...

Eigentlich eine einfache Aufgabe ... ich will mir die Anzahl und den Gewinn der Trades eines Tages mit der gleichen Magicnummer anzeigen lassen.

Aber!!! ich habe hier 3 Versionen der "if..." Abfrage.

Version 1.   if(entry_type==DEAL_ENTRY_OUT) zeigt mir den Gewinn aller Trades an .... logisch

Version 2.   if(Magicnumber==HistoryDealGetInteger(deal_ticket,DEAL_MAGIC)) zeigt mir die Anzahl der Trades mit der Magicnummer an, aber keinen Gewinn

Version 3.   if((entry_type==DEAL_ENTRY_OUT)&&(Magicnumber==HistoryDealGetInteger(deal_ticket,DEAL_MAGIC))) zeigt mir gar nichts mehr an


Hier das Script:


// Zählen der historischen Trades
   TagTrade=0; Tagesergebnis=0;
   datetime end=TimeCurrent();       // current server time
   datetime start=(end/86400)*86400; // heutiger Tag
   HistorySelect(start,end);
   int deals=HistoryDealsTotal(); //Anzahl aller Deals des heutigen Tages

   if (deals>0)
   {
      for(int i=deals-1; i>=0; i--)
      {
        ulong deal_ticket=HistoryDealGetTicket(i);
        if(deal_ticket>0) // obtain into the cache the deal, and work with it
        {
         HistoryOrderSelect(deal_ticket);
         ENUM_DEAL_ENTRY entry_type=(ENUM_DEAL_ENTRY)HistoryDealGetInteger(deal_ticket,DEAL_ENTRY); //Bestimmen, was für eine Deal-Art
        
         //if(entry_type==DEAL_ENTRY_OUT) //ist es ein Verkauf?
         if(Magicnumber==HistoryDealGetInteger(deal_ticket,DEAL_MAGIC)) //Stimmt die Magicnummer?
         //if((entry_type==DEAL_ENTRY_OUT)&&(Magicnumber==HistoryDealGetInteger(deal_ticket,DEAL_MAGIC)))
        
                  {
                     Tagesergebnis=Tagesergebnis+HistoryDealGetDouble(deal_ticket,DEAL_PROFIT);
                     TagTrade++;
                  }
        }    
       }
    } 


HIIIILLLLLFFFEEEEE!!!!

 

Öffne die MQL5 Referenz, trag in die Suchzeile OnTester ein und studiere das Beispiel, insbesondere diese Funktion:

bool GetTradeResultsToArray(double &pl_results[],double &volume) 
  { 
//--- request the complete trading history 
   if(!HistorySelect(0,TimeCurrent())) 
      return (false); 
   uint total_deals=HistoryDealsTotal(); 
   volume=0; 
//--- set the initial size of the array with a margin - by the number of deals in history 
   ArrayResize(pl_results,total_deals); 
//--- counter of deals that fix the trading result - profit or loss 
   int counter=0; 
   ulong ticket_history_deal=0; 
//--- go through all deals 
   for(uint i=0;i<total_deals;i++) 
     { 
      //--- select a deal  
      if((ticket_history_deal=HistoryDealGetTicket(i))>0) 
        { 
         ENUM_DEAL_ENTRY deal_entry  =(ENUM_DEAL_ENTRY)HistoryDealGetInteger(ticket_history_deal,DEAL_ENTRY); 
         long            deal_type   =HistoryDealGetInteger(ticket_history_deal,DEAL_TYPE); 
         double          deal_profit =HistoryDealGetDouble(ticket_history_deal,DEAL_PROFIT); 
         double          deal_volume =HistoryDealGetDouble(ticket_history_deal,DEAL_VOLUME); 
         //--- we are only interested in trading operations         
         if((deal_type!=DEAL_TYPE_BUY) && (deal_type!=DEAL_TYPE_SELL)) 
            continue; 
         //--- only deals that fix profits/losses 
         if(deal_entry!=DEAL_ENTRY_IN) 
           { 
            //--- write the trading result to the array and increase the counter of deals 
            pl_results[counter]=deal_profit; 
            volume+=deal_volume; 
            counter++; 
           } 
        } 
     } 
//--- set the final size of the array 
   ArrayResize(pl_results,counter); 
   return (true); 
  } 
 
Uwe Koeppe:

Hallo Leute,

ich bin gerade am irre werden...

Eigentlich eine einfache Aufgabe ... ich will mir die Anzahl und den Gewinn der Trades eines Tages mit der gleichen Magicnummer anzeigen lassen.

Aber!!! ich habe hier 3 Versionen der "if..." Abfrage.

Version 1.   if(entry_type==DEAL_ENTRY_OUT) zeigt mir den Gewinn aller Trades an .... logisch

Version 2.   if(Magicnumber==HistoryDealGetInteger(deal_ticket,DEAL_MAGIC)) zeigt mir die Anzahl der Trades mit der Magicnummer an, aber keinen Gewinn

Version 3.   if((entry_type==DEAL_ENTRY_OUT)&&(Magicnumber==HistoryDealGetInteger(deal_ticket,DEAL_MAGIC))) zeigt mir gar nichts mehr an


Hier das Script:


// Zählen der historischen Trades
   TagTrade=0; Tagesergebnis=0;
   datetime end=TimeCurrent();       // current server time
   datetime start=(end/86400)*86400; // heutiger Tag
   HistorySelect(start,end);
   int deals=HistoryDealsTotal(); //Anzahl aller Deals des heutigen Tages

   if (deals>0)
   {
      for(int i=deals-1; i>=0; i--)
      {
        ulong deal_ticket=HistoryDealGetTicket(i);
        if(deal_ticket>0) // obtain into the cache the deal, and work with it
        {
         HistoryOrderSelect(deal_ticket);
         ENUM_DEAL_ENTRY entry_type=(ENUM_DEAL_ENTRY)HistoryDealGetInteger(deal_ticket,DEAL_ENTRY); //Bestimmen, was für eine Deal-Art
        
         //if(entry_type==DEAL_ENTRY_OUT) //ist es ein Verkauf?
         if(Magicnumber==HistoryDealGetInteger(deal_ticket,DEAL_MAGIC)) //Stimmt die Magicnummer?
         //if((entry_type==DEAL_ENTRY_OUT)&&(Magicnumber==HistoryDealGetInteger(deal_ticket,DEAL_MAGIC)))
        
                  {
                     Tagesergebnis=Tagesergebnis+HistoryDealGetDouble(deal_ticket,DEAL_PROFIT);
                     TagTrade++;
                  }
        }    
       }
    } 


HIIIILLLLLFFFEEEEE!!!!

Willst du das direkt in mt5 auswerten oder nach excel bringen?

 
amando:

Willst du das direkt in mt5 auswerten oder nach excel bringen?

Soll einfach nur ein paar Zeilen später angezeigt werden. Kein Export oder Auswertung nach Excel.

Es scheint, daß die "Deals", die mit der Magicnummer selektiert werden, keinen Profit enthalten. Wenn man sich die Kontohistorie vom MT5 ansieht, kann man ja nach Deals oder Positionen selektieren. Nur die mit Positionen enthalten die Magicnummer. Aber ich habe keine Möglichkeit gefunden die historischen Trades nach Position zu selektieren. Scheint nur Deals zu gehen...


Gruß Uwe

 
Carl Schreiber:

Öffne die MQL5 Referenz, trag in die Suchzeile OnTester ein und studiere das Beispiel, insbesondere diese Funktion:

habe ich.... aber es kommt keine Abfrage der Magicnummer vor. Sowie ich die ins Spiel bringe, klappts nicht mehr.


Gruß Uwe

 
Wenn du die position manuell schliesst ist im deal keine magic number enthalten
 
Uwe Koeppe:

habe ich.... aber es kommt keine Abfrage der Magicnummer vor. Sowie ich die ins Spiel bringe, klappts nicht mehr.


Gruß Uwe

Wenn Du nach deals history suchst findest Du zB das hier: https://www.mql5.com/en/code/24608

Über die Ticketnummer findest Du zusammengehörigen Ein- und Ausstiege.

Export Deals History V1
Export Deals History V1
  • www.mql5.com
The script exports history of deals (ordered by close time) from MT5 retail hedging account selected between two dates. The resulting file is CSV that can be opened/imported with any spreadsheet software. To export the entire trading history, keep  Start date  and  End date  at their default values. The CSV file is located at: Terminal > File >...
 

Problem gelöst!

Es lag daran, daß ich mit #include <MT4Orders.mqh> gearbeitet habe.

Jetzt habe ich es auf #include<Trade\Trade.mqh> umgestellt. Arbeite also nicht mehr mit MT4-Orders sondern mit MT5-Orders und da funktioniert es problemlos.

Danke nochmal für Eure Mühe und Hinweise...


Gruß Uwe