//+------------------------------------------------------------------+
//|                                  Cleanup order-based objects.mq4 |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
int start()   {
//+------------------------------------------------------------------+

// Build string of ticket numbers......
  string orders = "";
  int total = OrdersTotal();
  for (int i=total-1; i>=0; i--)  {
    OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
    orders = orders + NumberToStr(OrderTicket(),"'#'T12");
  }

  total = OrdersHistoryTotal();
  for (i=total-1; i>=0; i--)  {
    OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
    orders = orders + NumberToStr(OrderTicket(),"'#'T12");
  }

// Delete all objects whose initial characters are #<ticket_number>......
  int cnt = 0;
  total = ObjectsTotal();
  for (i=total-1; i>=0; i--)  {
    string name  = ObjectName(i);
    int    space = StringFind(name," ");
    if (space<0)  continue;
    if (StringFind(orders,StringSubstr(name,0,space)) >= 0)  {
      int ticket = StrToNumber(StringSubstr(name,0,space));
      if (ticket>0)
        cnt += ObjectDelete(name);
  } }  
  MessageBox(NumberToStr(cnt,"T5' objects deleted'")," Cleanup complete");
  return(0);
}
//+------------------------------------------------------------------+
#include <hanover --- extensible functions b600 (np).mqh>
