//+----------------------------------------------------------+
//|                     CloseTrades.mq4                      |
//|               Copyright © 2015, David Currey             |
//+----------------------------------------------------------+
extern int StartingEquity = 10000;
extern int ProfitTarget = 1000;
extern int LossTarget = 1000;
extern int MagicNumberStart = 4564581;
extern int MagicNumberEnd = 4564600;
int StopTrading = 0;
int limitbuys;
int res;
int i;
//+--------------------------------------- ------------------+
//| start function                                           |
//+----------------------------------------------------------+
void start()
  {
  CalculateCurrentOrders();
  if (StartingEquity > 0 && StopTrading == 0 &&
  (((AccountEquity() - StartingEquity) >= ProfitTarget) || 
  (StartingEquity - AccountEquity())>= LossTarget))
     {
     for (i = OrdersTotal()-1; i >= 0; i--) 
        {
        if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
        if (OrderMagicNumber() >= MagicNumberStart && OrderMagicNumber() <= MagicNumberEnd)
           {
           if (OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP) res = OrderDelete(OrderTicket());
           if ( OrderType() == OP_BUY)  res = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
           if ( OrderType() == OP_SELL)  res = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red );
           }
        }
     res=OrderSend(Symbol(),OP_BUYLIMIT,1,0.1,1,0,0,"",99999,0,Green);
     StopTrading = 1;
     }     
  }
//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
void CalculateCurrentOrders()
    {
    limitbuys = 0;
    for(i=0;i<OrdersTotal();i++)
       {
       if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
       if (OrderSymbol()==Symbol() && OrderMagicNumber()==99990)
          {
          if(OrderType()==OP_BUYLIMIT) limitbuys++;
          }
       }
    if (limitbuys == 0) StopTrading= 0;
    else StopTrading = 1;   
    }
//+----------------------------------------------------------+
