Помогите начинающему пожалуйста.Заранее спасибо

 

У меня такая проблема

Хочу подсчитать сколько открыто ордеров по типу OP_BUY и по OP_SELL

Допустим открыто 10 ордеров по OP_BUY и 5 по OP_SELL

Считаю по OP_BUY

int x;
for(pos=0;pos<OrdersTotal();pos++)
{
  if (OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true)
  {
    if (OrderType()==OP_BUY)
    {
      x=pos;
    }
  }
}
int result=MathMax(0,x);
Print (result);

пишет = 9  (правильно т.к. начинает считать с 0 )
Считаю по OP_SELL


int y;
for(pos=0;pos<OrdersTotal();pos++)
{
  if (OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true)
  {
    if (OrderType()==OP_SELL)
    {
      y=pos;
    }
  }
}
int result=MathMax(0,y);
Print (result);
пишет = 14  (т.к. начинает считать с 0 ) а хотелось бы 4, не могу понять в чем дело

Помогите пожалуйста разобраться где ошибка?

P.S. можно ли другим способом подсчитать?

MT ver:4.00 build 220

 

int x,y;
for(pos=0;pos<OrdersTotal();pos++)
{
if (OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderType()==OP_BUY) x++;
if (OrderType()==OP_SELL) y++;

}
}
Print ("Buy - ",x," Sell - ",y);

 

Огромная благодарность вам Roger

Для начинающего, взглянуть на код с другой стороны очен полезно. Mike1101


Причина обращения: