Ö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); }
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?
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
Ö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
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.
- www.mql5.com
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
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
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!!!!