Работа с частями ордера

 

Пытаюсь высчитать общий профит по всем позициям объемом 0,01 лота от каждой открытой позиции большими лотами, но почемуто сумма рассчитывается неверно, как будто в рссчет принмиается весь объем а не часть.

tkb = ExBUY();
for(int cntb = 0; cntb < OrdersTotal(); cntb++)
{
OrderSelect(cntb, SELECT_BY_POS, MODE_TRADES);
if (OrderType() == OP_BUY && OrderMagicNumber() == Magicbuy && OrderTicket() != tkb)
{
ctsummb = ctsummb + ((OrderProfit() + OrderSwap() + OrderCommission())/(OrderLots()*100));
}
}

потом пытаюсь закрыть от каждой позиции понемногу, но закрытие идет всем лотом а не указаным объемом

for(int cntbr = 0; cntbr < OrdersTotal(); cntbr++)
{
OrderSelect(cntbr, SELECT_BY_POS, MODE_TRADES);
if (OrderType() == OP_BUY && OrderMagicNumber() == Magicbuy)
{
RefreshRates();
OrderClose(cntbr,0.01,Ask,3,Red);
}
}

где закралась ошибка?

 
Перезагрузите терминал. Если ошибка останется, распринтуйте выход данных после каждого прохода цикла.
Для закрытия ордера необходимо ставить номер тикета, а не номер позиции в списке.
Причина обращения: