sxTed wrote:
#property copyright "Copyright © 2008, sxTed"
#property link "sxted@talktalk.net"
#include <stdlib.mqh>
extern double CloseOrdersWhenEquityLessThan = 0.0;
double Price[2];
int giSlippage;
int init() {
return(0);
}
int deinit() {
return(0);
}
int start() {
int iOrders=OrdersTotal(), i;
if(AccountEquity() < CloseOrdersWhenEquityLessThan && iOrders > 0) {
for(i=iOrders-1; i>=0; i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {
if((OrderType()<=OP_SELL) && GetMarketInfo()) {
if(!OrderClose(OrderTicket(),OrderLots(),Price[1-OrderType()],giSlippage)) Print(OrderError());
}
else if(OrderType()>OP_SELL) {
if(!OrderDelete(OrderTicket())) Print(OrderError());
}
}
}
Alert("Equity low - all open orders closed and pending orders cancelled");
}
return(0);
}
string OrderError() {
int iError=GetLastError();
return(StringConcatenate("Order:",OrderTicket()," GetLastError()=",iError," ",ErrorDescription(iError)));
}
bool GetMarketInfo() {
RefreshRates();
Price[0]=MarketInfo(OrderSymbol(),MODE_ASK);
Price[1]=MarketInfo(OrderSymbol(),MODE_BID);
double dPoint=MarketInfo(OrderSymbol(),MODE_POINT);
if(dPoint==0) return(false);
giSlippage=(Price[0]-Price[1])/dPoint;
return(Price[0]>0.0 && Price[1]>0.0);
}
he74, please try the above expert.