//вставляем это в главную функцию
if((SummPos(1)+SummPos(0))>0) {CloseAllPos(1);CloseAllPos(0);}
//и добавляем все функции ниже (вне функции)
//суммирует результат позиций по типу
int SummPos(int type)
{//подробное описание: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=100
int i;double summ;
for( i=1; i<=OrdersTotal(); i++)
{
if(OrderSelect(i-1,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==1&& OrderMagicNumber()==MG){summ=summ+OrderProfit();}
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==0&& OrderMagicNumber()==MG){summ=summ+OrderProfit();}
}
}
return(summ);
}
//Закрываем все позиции по типу
int CloseAllPos(int type)
{//Описание функции: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=72
int buy=1; int sell=1;
int i,b=0;int ordertiket;
if(type==1)
{
while(buy==1)
{
buy=0;
for( i=0;i<OrdersTotal();i++)
{
if(true==OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderType()==OP_BUY && OrderSymbol()==Symbol() ){buy=1; OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);}
}else{buy=0;}
}
if(buy==0){return(0);}
}
}
if(type==0)
{
while(sell==1)
{
sell=0;
for( i=0;i<OrdersTotal();i++)
{
if(true==OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() ){sell=1;OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); }
}else{sell=0;}
}
if(sell==0){return(0);}
}
}
return(0);
}