Einzelnen Beitrag anzeigen
  #2 (permalink)  
Alt 02.06.13
Hoschie Hoschie ist offline
Mitglied
 
Registriert seit: Jan 2012
Beiträge: 142
Hoschie befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Ca$hDigger Beitrag anzeigen
Hallo,

mit welchem Code kann ich denn die letzten Orderergebnisse die schon geschlossen sind auslesen? Sozusagen EA Zugriff auf die Tradehistory. Will den Gewinn bzw Verlust der letzten x Orders verwenden.

LG

Ca$hDigger
Hoi,

versuch es mal so:

Code:
...
   int nTickets = GetHistoryOrderByCloseTime();
    if (nTickets == 0) int   nInARow = 0;
    else{                   nInARow = 0;
        OrderSelect(nTickets, SELECT_BY_TICKET);
        double  lastProfit = OrderProfit() + OrderSwap() + OrderCommission();
        for (int iPos = 1; iPos < nTickets; iPos++){
            OrderSelect(iPos, SELECT_BY_TICKET);
            double  prevProfit = OrderProfit() + OrderSwap() + OrderCommission();
            if (prevProfit * lastProfit < 0)    break;     
            nInARow++;
        }
    }
    if (lastProfit < 0) string last="Verluste";   
    else 
    {
    Print("Letzter Gewinn",lastProfit);
    last = "Gewinne";
    }
    Print("G/V:",last,"in Zeile:",nInARow);
...
//entscheidende Methode
int GetHistoryOrderByCloseTime( int asc=1){   // Rückwärts
    int nTickets = 0;
    int tickets[100];
        for(int iPos=OrdersHistoryTotal()-1; iPos >= 0; iPos--) if (
        OrderSelect(iPos, SELECT_BY_POS, MODE_HISTORY)  
    &&  OrderMagicNumber()  == Magic            
    &&  OrderSymbol()       == Symbol()               
    
    ){
        int nextTicket = OrderTicket(); datetime nextOCT = OrderCloseTime();
        ArrayResize(tickets, nTickets+1);
        for (int iTicket = nTickets; iTicket > 0; iTicket--){
            int         prevTicket  = tickets[iTicket-1];
            OrderSelect(prevTicket, SELECT_BY_TICKET);
            datetime    prevOCT     = OrderCloseTime();
            if ((prevOCT - nextOCT) * asc <= 0) break;
            tickets[iTicket] = prevTicket;
        }
        nTickets++;     tickets[iTicket] = nextTicket;           
    }
    return(nTickets);
}