podsumuje poprzednie posty
zawsze, podkreslam zawsze przy zamykaniu wielu pozycji trzeba stosowac petle ujemna. przyklad ponizej
Kod: Zaznacz cały
#import "stdlib.ex4"
string ErrorDescription(int error_code);
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start() {
for(int i=OrdersTotal()-1;i>=0;i--) {
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES))
if(OrderSymbol()==Symbol())
if(OrderType()==OP_BUY)
if(OrderClose(OrderTicket(),OrderLots(),Bid,0,Orange)) {
Print("Order #"+OrderTicket()+" successfully closed at price ",Bid);
PlaySound("ok");
}
else Print("Blad zamkniecia pozycji. ",ErrorDescription(GetLastError()));
}
return(0);
}
jesli chcesz decydowac o kolejnosci zamykania /najstarsza, najbardziej zyskowna .../ musisz interesujace Cie dane przypisac do tablicy i na niej operowac. w tym przypadku moze byc petla dodatnia. przyklad ponizej
Kod: Zaznacz cały
double CenyOtwarcia[];
for (i = 0; i < OrdersTotal(); i++) {
OrderSelect(i,SELECT_BY_POS);
CenyOtwarcia[i] = OrderOpenPrice();
}
jak wrzucisz interesujace Cie dane do tablicy to mozesz pokombinowac. polecam nauczyc sie operowania na tablicach. tablicami zredukowalem skrypty z kilkudziesieciu do kilkunastu linijek kodu.
http://book.mql4.com/variables/arrays
http://docs.mql4.com/array