Zitat:
Zitat von akuh
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