Hallo.
Noch mal zusammen fassend:
for ist der Befehl und Start der (verhassten
) for Schleife
(i=OrdersTotal() deklariert i als OrdersTotal in der Schleife, weil OT() im EA allgemein ja schon mit int deklariert wurde
-1 daneben bedeutet, dass er von 0 offenen Orders ausgehn, also quasi von 0 offenen Orders zu zählen anfangen soll. Was für uns 0 (keine Orders offen) bedeutet, ist für ihn -1.
i>=0 solange mehr als -1 Orders offen sind, soll er mit den Zeilen darunter Buy und Sell Orders selektieren, und schließen, wenn die Bedingungen erfüllt sind. Da für ihn irgendwie 0 bedeutet, dass eine Order offen ist, wäre, wenn er beim zählen auf -1 kommt, gar keine Order offen.
i-- nach jedem Durchzählen soll der Startwert um 1 verringert werden. Also er zählt 1x durch. 2 Orders offen. Findet den Buy und schließt ihn. Startet die Schleife von vorne, fängt jetzt aber von 0 Orders an zu zählen.
1 Sell ist noch offen, für ihn also OrdersTotal()=0 (für uns wärs OT()=1, für uns wäre also eine Order offen). :wonder:
Er schließt den Sell, damit ist für ihn eigentlich OT()= -1. Für uns wärens OT()=0. Verringert den Startwert auf -1. Er zählt noch mal, findet keine Order mehr und beendet daher die Schleife.
Wenns nen anderen Weg gibt, sagts mir bitte, ich seh nämlich immer noch nicht durch.
Code:
//Close Buy
if(OrderSelect(Ticket,SELECT_BY_TICKET)){
if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MagicNumber&&OrderSymbol()==Symbol()){
if((ORPR<CML)||(ORPR>CMP)||(CAA=true&&TC>CA))OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,DarkBlue);}}
//Close Sell
if(OrderSelect(Ticket,SELECT_BY_TICKET)){
if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MagicNumber&&OrderSymbol()==Symbol()){
if((ORPR<CML)||(ORPR>CMP)||(CAA=true&&TC>CA))OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,FireBrick);}}