Einzelnen Beitrag anzeigen
  #7 (permalink)  
Alt 30.12.16
traderdoc traderdoc ist offline
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von akuh Beitrag anzeigen
Hey

Erstmal Vielen Dank für die Antworten. Ich hab es mittlerweile folgendermassen gelöst:
Code:
int LastOrderType()
{
    datetime TicketTime = 0;
   
    for (int ix = 0; ix < OrdersHistoryTotal(); ix++)
    {
        if(OrderSelect(ix, SELECT_BY_POS, MODE_HISTORY) 
            && OrderMagicNumber() == Magic 
            && OrderSymbol() == Symbol())
        {
            if (OrderCloseTime() > TicketTime)
            {
                TicketTime = OrderCloseTime();  //For testing
                TicketN = OrderTicket();        //For testing
                LastOT = OrderType();
            }   
        }
        else
            Print("OrderSelect returned the error of ",GetLastError());
    }
    Print("Last closed order: ",TicketN,"  ",TicketTime,"  ",LastOT);   //For testing
    return(LastOT); // Buy==0, Sell==1, Others==2 through 5
}// End Last Order Type
Dann kann ich bei meiner Buy Condition einfach &&OrderType()==OP_SELL angeben.
Sorry, aber dieser Code durchläuft auch alle! historischen Orders. Warum?
Wenn eine Order nicht der OrderMagicNumber() und dem OrderSymbol() entspricht, wird jedesmal die Fehlermeldung geprintet. Da wird sich aber die Log-Datei freuen. Die wird dann richtig dick und fett und knabbert unaufhörlich an der Plattenkapazität. Weg damit!
Und ob die letzte geschlossene Order eine Buy- oder Sell-Order ist, weiss ich auch nicht genau. Das könnte evtl. auch eine der evtl. gelöschten PendingOrders sein.
Also man sollte schon sicherheitshalber nach den OrderType() == OP_BUY || OrderType() == OP_SELL
fragen.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.