Где ошибка? Помогите пожалуйста.

 
int MAGIC = 201; // 
double MinLot=0.01; //Самый маленький лот, с которого начинает торговлю любой процесс 
int LotDigit = 2; // возможных знаков после запятой

int TimeBegin = 1;
int TP=220;//Профит

int Ticket[1000];
double lots;
int nBuystop, nSellstop;
double tBuy, tSell;

int CountAllOrders(int dir, int SysID)
{
	int total=OrdersTotal(), i, c=0; if (total<=0) return (0);
	for(i=0;i<total;i++) { OrderSelect(i, SELECT_BY_POS);	if ((OrderType()==dir) && (OrderMagicNumber()==SysID)) {c=c+1;}	}
	return (c);
}

int CreatTicketArray(int dir, int SysID)
{
	int total=OrdersTotal(), i, c=1; if (total<=0) return (0);
	for(i=0;i<total;i++) { OrderSelect(i, SELECT_BY_POS); if ((OrderType()==dir) && (OrderMagicNumber()==SysID)) { Ticket[c] = OrderTicket(); c++; } }
	return (c-1);
}

int init()  
{   
}

int deinit()  {  	return(0);  }

void start()
{
	
	Process(); 
	
	// экспертом рассчитывается ТП для всех открытых Бай ордеров = ТП в параметрах, 
	// чтобы при закрытии всех Бай ордеров – общий ТП равнялся TP. 
	Trailing(MAGIC, Green, Red);
}

void Process()
{
	int i, total;
	datetime time;
	
	//В 00:00 удаляем старые отложки  
	nBuystop = CountAllOrders(OP_SELLLIMIT, MAGIC);
	nSellstop = CountAllOrders(OP_BUYLIMIT, MAGIC);
	i = TimeHour(TimeCurrent());
	if (i>=0 && i<=TimeBegin-1)
	{
		total = CreatTicketArray(OP_SELLLIMIT, MAGIC); for (i=1; i<=total; i++) OrderDelete(Ticket[i], Green);
		total = CreatTicketArray(OP_BUYLIMIT, MAGIC); for (i=1; i<=total; i++) OrderDelete(Ticket[i], Green);
		tBuy = 0; tSell = 0;
return;
	}

	
 
// если уже TimeBegin то 
	lots = AccountFreeMargin()*0.1*0.00001; //начальный лот
	lots = NormalizeDouble(lots, LotDigit); //округлили до знаков минимального лота
	if (MinLot>lots) lots = MinLot;// если текущйи баланс меньше минимального

	time = StrToTime((TimeBegin-1)+":00");//нашли свечку для Low и High
	i = iBarShift(NULL, 0, time);
	
	// выставляются отложенные ордера СеллЛимит над свечой и БайЛимит под свечой (TimeBegin-1) на H+1 и L-2 пунктах
	if (nSelllimit<=0 && tSell<=0) 
	{
if (Ask>=(High[i]+5*Point))
			tSell = OrderSend(Symbol(), OP_SELL, lots, Ask, 2, 0, High[i]+Point*TP, "SellMR", MAGIC, 0, CLR_NONE);
else
			tSell = OrderSend(Symbol(), OP_SELLLIMIT, lots, High[i]+5*Point, 2, 0, High[i]+Point*TP, "SellMR", MAGIC, 0, CLR_NONE);
//		Sleep (3000);//подождали 3 сек
	}
	if (nBuylimit<=0 && tBuy<=0)	
	{
if (Bid<=(Low[i]-1*Point))
			tBuy = OrderSend(Symbol(), OP_BUY, lots, Bid, 2, 0, Low[i]-Point*TP, "BuyMR", MAGIC, 0, CLR_NONE);
else
			tBuy = OrderSend(Symbol(), OP_BUYLIMIT, lots, Low[i]-1*Point, 2, 0, Low[i]-Point*TP, "BuyMR", MAGIC, 0, CLR_NONE);
//		Sleep (3000);//подождали 3 сек
	}
}

void Trailing(int SysID, color ClrBuy, color ClrSell)
{
	int i, total = OrdersTotal();	if (total<=0) return;
	double Profit, price, nTP=0.0; 
	int pos, pp;
	double m, m2, avgLevel, lots, lot1, newPrice, dSLPre;

	total = CreatTicketArray(OP_BUY, SysID); Profit=0.0;
	if (total>0) //Заглушка для OP_BUY
	{//1. Подсчитали прибыль по всем ордерам открытым в направлении dir
for (i=1; i<=total; i++)  { OrderSelect(Ticket[i], SELECT_BY_TICKET); Profit = Profit+(Bid-OrderOpenPrice())*OrderLots();	}
//Находим середину всех сделок (точка, когда все + и - позы дают прибыль=0)
		m=0.0; m2=0.0; avgLevel=0.0;
OrderSelect(Ticket[1], SELECT_BY_TICKET); avgLevel=OrderOpenPrice(); m = OrderLots(); 
for (i=2; i<=total; i++)
{	OrderSelect(Ticket[i], SELECT_BY_TICKET); m2 = OrderLots();	avgLevel = avgLevel-(m2*(avgLevel-OrderOpenPrice()))/(m2+m);	m = m+m2;}

if (total>1) 
for (i=1; i<=total; i++)
{	
OrderSelect(Ticket[i], SELECT_BY_TICKET);
//				if (OrderTakeProfit()<avgLevel) 
OrderModify(Ticket[i],0, OrderStopLoss(), avgLevel+Point*(TP/total), 0, ClrBuy);
}
	}

	total = CreatTicketArray(OP_SELL, SysID); Profit=0.0;
	if (total>0) //Заглушка
	{//1. Подсчитали прибыль по всем ордерам открытым в направлении dir
for (i=1; i<=total; i++) { OrderSelect(Ticket[i], SELECT_BY_TICKET); Profit = Profit + (OrderOpenPrice()-Ask)*OrderLots();	}
//Находим середину всех сделок (точка, когда все + и - позы дают прибыль=0)
		m=0.0; m2=0.0; avgLevel=0.0;
OrderSelect(Ticket[1], SELECT_BY_TICKET); avgLevel=OrderOpenPrice(); m = OrderLots(); 
for (i=2; i<=total; i++)
{	OrderSelect(Ticket[i], SELECT_BY_TICKET); m2 = OrderLots();	avgLevel = avgLevel+(m2*(OrderOpenPrice()-avgLevel))/(m2+m); m = m+m2;	}

if (total>1) 
for (i=1; i<=total; i++)
{	
OrderSelect(Ticket[i], SELECT_BY_TICKET);
//				if (OrderTakeProfit()>avgLevel) 
OrderModify(Ticket[i],0, OrderStopLoss(), avgLevel-Point*(TP/total), 0, ClrSell);
}
	}
	return;
}
//+------------------------------------------------------------------+
Файлы:
1.mq4  6 kb
Причина обращения: