Cutoff





//+------------------------------------------------------------------+
//| CutOff.mq4
//+------------------------------------------------------------------+

#property copyright "Copyright K Lam 2009"
#property link      "http://www.FxKillU.net/"
#property show_confirm

// extern string Name_Expert = "Close All Trades";

//+------------------------------------------------------------------+
//| cal the point range                                                                  |
//+------------------------------------------------------------------+
double GetSlippage() { return((Ask-Bid)/Point); }

//+------------------------------------------------------------------+
//| script "close Profit last to 0 order"
//+------------------------------------------------------------------+

int start()
  {
   bool   result;
   double price;
   int    cmd,error;
   int    cnt;
   
   //close profit frist
   for(cnt=OrdersTotal(); cnt > 0; cnt--) {//while(OrdersTotal()!=0) // very slow 
      if(OrderSelect(cnt-1,SELECT_BY_POS,MODE_TRADES)) {
         if (OrderProfit()>0) 
         while(true) {
           cmd=OrderType();
           if (cmd==OP_BUY || cmd==OP_SELL) {
               RefreshRates();
               if(cmd==OP_BUY) price=Bid;
               if(cmd==OP_SELL) price=Ask;// not the chart price!!
               
               result=OrderClose(OrderTicket(),OrderLots(),price,GetSlippage(),CLR_NONE);
               if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
               else error=0;
               if(error==129 || error==135) RefreshRates();
               else break;
               }
      
                 //---- delete first pending order
           if(cmd!=OP_BUY && cmd!=OP_SELL)
               {
               result=OrderDelete(OrderTicket());
               break;
               }
      }//while
   } else Print( "Error when order select ", GetLastError());
}

   //close profit frist
   for(cnt=OrdersTotal(); cnt > 0; cnt--) {//while(OrdersTotal()!=0) // very slow 
      if(OrderSelect(cnt-1,SELECT_BY_POS,MODE_TRADES)) {
         while(true) {
           cmd=OrderType();
           //if (OrderProfit()>0) 
           if (cmd==OP_BUY || cmd==OP_SELL) {
               RefreshRates();
               if(cmd==OP_BUY) price=Bid;
               if(cmd==OP_SELL) price=Ask;// not the chart price!!
               
               result=OrderClose(OrderTicket(),OrderLots(),price,GetSlippage(),CLR_NONE);
               if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
               else error=0;
               if(error==129 || error==135) RefreshRates();
               else break;
               }
      
                 //---- delete first pending order
           if(cmd!=OP_BUY && cmd!=OP_SELL)
               {
               result=OrderDelete(OrderTicket());
               break;
               }
      }//while
   } else Print( "Error when order select ", GetLastError());
}

   Print("CutOff All Order at ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS)," Now Total Order =",OrdersTotal());
   return(0);
  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:



Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:
Checks for the total of open orders

It Closes Orders by itself

Other Features: