причину пока не нашел?

исправил. неправильно был организован перебор данных в массиве.
выставляет только ордера на покупку.

//+------------------------------------------------------------------+
double vol()
{
double lot=Lot*k;
if(Lot>0)
{
//--- select history for access
HistorySelect(0,TimeCurrent());
//---
int orders=HistoryDealsTotal(); // total history deals
for(i=orders;i<orders;i++)
{
ulong tickets=HistoryDealGetTicket(i);
if(tickets==0)
{
Print("HistoryDealGetTicket failed, no trade history");
break;
}
//--- check symbol
if(HistoryDealGetString(tickets,DEAL_SYMBOL)!=_Symbol)
continue;
//--- check profit
double profit=HistoryDealGetDouble(tickets,DEAL_PROFIT);
if(profit>0.0)
break;
if(profit<0.0)
trade = false;
}
//---
}
//--- return trading volume
return(lot);
}
AM2