Помогите найти ошибку в коде, не закрываются ордера!

 

Есть собственно код:

for(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордеров
{
if(OrderSelect(i-1, SELECT_BY_POS,MODE_TRADES)==true)
{
   if (OrderType() ==OP_BUY)
   {
    if (maxProf>OrderTakeProfit()) maxProf=OrderTakeProfit();
    if (Up<OrderOpenPrice()) OrderDelete(OrderTicket());  
   }
   if (OrderType() ==OP_SELL)
   {
   if (minProf<OrderTakeProfit()) minProf=OrderTakeProfit();
   if (Down>OrderOpenPrice()) OrderDelete(OrderTicket());
   }
}
}

Суть в том, что переменная Up и Down соответственно верхняя и нижняя границы каналов и выполняется проверка в выделеных фрагментах выполняется проверка что если для указанного ордера выполняется условие (цена верхней границы канала ниже цены открытия ордера, то даный ордер закрывается).

Но тест показывает что этого не происходит. Подскажите, что не так???

 Зарание благодарен за помощь! 


 

 

рыночные ордера и OrderDelete - две вещи несовместны.

RTFM

 
Блин, я завтыкал...это ж получается что OrderClose() нужно использовать. Но не подскажите как правильно сделать, для OrderClose() вижу несколько параметров нужно указывать, а в моем случае не подскажите какие именно?
 
pr0fess0r64:
Блин, я завтыкал...это ж получается что OrderClose() нужно использовать. Но не подскажите как правильно сделать, для OrderClose() вижу несколько параметров нужно указывать, а в моем случае не подскажите какие именно?
   Для начала гляньте... прежде чем...
Файлы:
Причина обращения: