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?
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
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