//+------------------------------------------------------------------+ //| 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: