any body can help me fix my EA

 
i newbe i get some EA from my friend, but the problem when close all the openorder not closeall but delay closeall.i am realy desperate about this problem plz help me
Files:
zorro.mq4  11 kb
 
//+-------------------------------------------------------------------------------------------+
//| KoPiPaid V-2-1.mq4 |
//| Copyright © 2008, KoPiPaid Trading Team ea@kopipaid.com |
//| http://www.kopipaid.com |
//+-------------------------------------------------------------------------------------------+
#property copyright "Copyright © 2008, KoPiPaid Trading Team ea@kopipaid.com"
#property link "http://www.kopipaid.com


//--------------------------------------**************
extern double TakeProfit = 20;
extern double Lots = 0.1;
extern double InitialStop = 0;
extern double TrailingStop = 0;
extern int MaxTrades = 10;
extern int Pips = 20;
extern int SecureProfit = 10;
extern int AccountProtection = 1;
extern int OrderstoProtect = 3;
extern int ReverseCondition = 0;


extern int mm = 0;
extern int risk = 20;
extern int AccountisNormal = 0;
//----
int OpenOrders = 0, cnt = 0;
int slippage = 5;
double sl = 0, tp = 0;
double BuyPrice = 0, SellPrice = 0;
double lotsi = 0, mylotsi = 0;
int mode = 0, myOrderType = 0;
bool ContinueOpening = True;
double LastPrice = 0;
int PreviousOpenOrders = 0;
double Profit = 0;

int LastTicket = 0, LastType = 0;

//-----------------------------------------------> this problem plz pix the closeall system

double LastClosePrice = 0, LastLots = 0;

//----------------------------------------------->

double Pivot = 0;
double PipValue = 0;
string text = "", text2 = "";
int Current;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
if(AccountisNormal == 1)
if(mm != 0)
lotsi = MathCeil(AccountBalance()*risk/10000);
else
lotsi=Lots;
else
// then is mini
if(mm != 0)
lotsi = MathCeil(AccountBalance()*risk / 10000) / 10;
else
lotsi = Lots;
//----
if(lotsi > 100)
lotsi = 100;
OpenOrders = 0;
//----
for(cnt = 0; cnt < OrdersTotal(); cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
//----
if(OrderSymbol() == Symbol())
OpenOrders++;

}



if(OpenOrders < 4)
if(NoTradeTime ==true)
{
if (TimeCurrent() >= NoTradeTimeFrom)
if (TimeCurrent() <= NoTradeTimeTo)

return(0);



}


//----
if(Symbol() == "EURUSD")
PipValue = EURUSDPipValue;
//----
if(Symbol() == "GBPUSD")
PipValue = GBPUSDPipValue;
//----
if(PipValue == 0)
{
PipValue = 5;
}
//----
if(PreviousOpenOrders > OpenOrders)
for(cnt = OrdersTotal(); cnt >= 0; cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
mode = OrderType();
//----
if(OrderSymbol() == Symbol())
{
if(mode == OP_BUY)
OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), slippage, Blue); //----->can the closeall system not delaytime
//----
if(mode == OP_SELL)
OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), slippage, Red);
return(0);
}
}
PreviousOpenOrders = OpenOrders;
//----
if(OpenOrders >= MaxTrades)
ContinueOpening = False;
else
ContinueOpening = True;
//----
if(LastPrice == 0)
for(cnt = 0; cnt < OrdersTotal(); cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
mode = OrderType();
//----
if(OrderSymbol() == Symbol())
{
LastPrice = OrderOpenPrice();
//----
if(mode == OP_BUY)
myOrderType = 2;
//----
if(mode == OP_SELL)
myOrderType = 1;
}
}


//----
if(OpenOrders < 1)
{
myOrderType = 3;
//----






//----
if(ReverseCondition == 1)
if(myOrderType == 1)
myOrderType = 2;
else
if(myOrderType == 2)
myOrderType=1;
}
// if we have opened positions we take care of them
for(cnt = OrdersTotal(); cnt >= 0; cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
//----
if(OrderSymbol() == Symbol())
{
if(OrderType() == OP_SELL)
if(TrailingStop > 0)
if(OrderOpenPrice() - Ask >= (TrailingStop + Pips)*Point)
if(OrderStopLoss() > (Ask + Point*TrailingStop))
{
OrderModify(OrderTicket(), OrderOpenPrice(),
Ask + Point*TrailingStop, OrderClosePrice() -
TakeProfit*Point - TrailingStop*Point, 800, Purple);
return(0);
}
if(OrderType() == OP_BUY)
if(TrailingStop > 0)
if(Bid - OrderOpenPrice() >= (TrailingStop + Pips)*Point)
if(OrderStopLoss() < (Bid - Point*TrailingStop))
{
OrderModify(OrderTicket(), OrderOpenPrice(),
Bid - Point*TrailingStop, OrderClosePrice() +
TakeProfit*Point + TrailingStop*Point, 800, Yellow);
return(0);
}
}
}
Profit = 0;
LastTicket = 0;
LastType = 0;
LastClosePrice = 0;
LastLots = 0;
//----
for(cnt = 0; cnt < OrdersTotal(); cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
//----
if(OrderSymbol() == Symbol())
{
LastTicket = OrderTicket();
//----
if(OrderType() == OP_BUY)
LastType = OP_BUY;
//----
if(OrderType() == OP_SELL)
LastType = OP_SELL;
LastClosePrice = OrderClosePrice();
LastLots = OrderLots();
//----
if(LastType == OP_BUY)
{
if(OrderClosePrice() < OrderOpenPrice())
Profit = Profit - (OrderOpenPrice() - OrderClosePrice())*OrderLots() /
Point;
//----
if(OrderClosePrice() > OrderOpenPrice())
Profit = Profit + (OrderClosePrice() - OrderOpenPrice())*OrderLots() /
Point;
}
//----
if(LastType==OP_SELL)
{
if(OrderClosePrice() > OrderOpenPrice())
Profit = Profit - (OrderClosePrice() - OrderOpenPrice())*OrderLots() /
Point;
//----
if(OrderClosePrice() < OrderOpenPrice())
Profit = Profit + (OrderOpenPrice() - OrderClosePrice())*OrderLots() /
Point;
}
}
}
Profit = Profit*PipValue;
text2 = "Profit: $" + DoubleToStr(Profit,2) + " +/-";
//----
if(OpenOrders >= (MaxTrades - OrderstoProtect) && AccountProtection == 1)
if(Profit >= SecureProfit)
{
OrderClose(LastTicket, LastLots, LastClosePrice, slippage, Yellow);
ContinueOpening = False;
return(0);
}
//----
int Dollar;
if(!IsTesting())
{ if(Dollar==AccountBalance())
if(myOrderType == 3)
text="Mau Beli Apa Ya?";
else
text=" ";
Comment("Harga Terakhir=", LastPrice, " Op Sebelumnya=", PreviousOpenOrders,
"\nBeli lagi=", ContinueOpening, " OrderType=", myOrderType, "\n",
text2, "\nLots=", lotsi, "\n","Saldoe$=",Dollar, text);
}
//----
if(myOrderType == 1 && ContinueOpening)
{
if((Bid - LastPrice) >= Pips*Point || OpenOrders < 1)
{
SellPrice = Bid;
LastPrice = 0;
//----
if(TakeProfit == 0)
tp = 0;
else
tp = SellPrice - TakeProfit*Point;
//----
if(InitialStop == 0)
sl = 0;
else
sl = SellPrice + InitialStop*Point;
//----
if(OpenOrders != 0)
{
mylotsi = lotsi;
//----
for(cnt = 1; cnt <= OpenOrders; cnt++)
if(MaxTrades > 12)
mylotsi = NormalizeDouble(mylotsi*1.5, 1);
else
mylotsi = NormalizeDouble(mylotsi*2, 1);
}
else
mylotsi=lotsi;
//----
if(mylotsi > 100)
mylotsi = 100;
OrderSend(Symbol(), OP_SELL, mylotsi, SellPrice, slippage, sl, tp, NULL, 0, 0,
Red);
return(0);
}
}
if(myOrderType == 2 && ContinueOpening)
{
if((LastPrice-Ask) >= Pips*Point || OpenOrders < 1)
{
BuyPrice = Ask;
LastPrice = 0;
//----
if(TakeProfit == 0)
tp = 0;
else
tp = BuyPrice + TakeProfit*Point;
//----
if(InitialStop==0)
sl = 0;
else
sl = BuyPrice - InitialStop*Point;
//----
if(OpenOrders != 0)
{
mylotsi = lotsi;
for(cnt = 1; cnt <= OpenOrders; cnt++)
if(MaxTrades > 12)
mylotsi = NormalizeDouble(mylotsi*1.5, 1);
else
mylotsi = NormalizeDouble(mylotsi*2, 1);
}
else
mylotsi = lotsi;
//----
if(mylotsi > 100)
mylotsi = 100;
OrderSend(Symbol(), OP_BUY, mylotsi, BuyPrice, slippage, sl, tp, NULL, 0, 0,
Blue);
return(0);
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
Reason: