Script : close oldest 5 buy orders
Modify my GetHistoryOrderByCloseTime and you'd get
int GetOpenOrdersByOpenTime(int& tickets[], int dsc=1){ #define ASCENDING -1 /* https://forum.mql4.com/46182 zzuegg says history ordering "is not reliable * (as said in the doc)" [not in doc] dabbler says "the order of entries is * mysterious (by actual test)" */ int nOrders = 0; datetime OCTs[]; for(int iPos=OrdersTotal()-1; iPos >= 0; iPos--) if ( OrderSelect(iPos, SELECT_BY_POS) // Only orders w/ && OrderMagicNumber() == Magic.Number // my magic number && OrderSymbol() == chart.symbol // and my pair. ){ int nextTkt = OrderTicket(); datetime nextOCT = OrderOpenTime(); nOrders++; ArrayResize(tickets,nOrders); ArrayResize(OCTs,nOrders); for (int iOrders=nOrders - 1; iOrders > 0; iOrders--){ // Insertn sort. datetime prevOCT = OCTs[iOrders-1]; if ((prevOCT - nextOCT) * dsc >= 0) break; int prevTkt = tickets[iOrders-1]; tickets[iOrders] = prevTkt; OCTs[iOrders] = prevOCT; } tickets[iOrders] = nextTkt; OCTs[iOrders] = nextOCT; // Insert. } return(nOrders); } : int tickets[], nTickets = GetOpenOrderByOpenTime(tickets, ASCENDING); if (nTickets > 5) nTickets = 5; // Only want first five. for(int iTicket = 0; iTicket < nTickets; iTicket++) if ( OrderSelect(tickets[iTicket], SELECT_BY_TICKET) ){ if (!OrderClose(...)) Alert(...);
hi, what about closing by descending or ascending lot sizes?
and if you have two x 0.1 lot trades, it closes them both?
I am not sure what to pull?
Hi all,
the following script closes all buy orders,
can someone help by modifying it to close .. the "oldest 5" only, instead of all orders.
thanks