Подскажите почему не закрываются ордера

 
      
int cbd()
{
double oct=0, a = allprofit()*10;
int j=-1;

for(int i=OrdersTotal()-1;i>=0;i--){
 if(a > profit*lot) {
  if(OrderType() != OP_BUY || OrderType() != OP_SELL) continue;
   { 
   if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue;  
   if(OrderSymbol()!=Symbol())continue;
   { 
   if (oct>OrderProfit()) { oct=OrderProfit(); j=i;}           
   if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES)) 
      {
      if(OrderType() == OP_BUY)
      {
        OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE);
      }
     else if (OrderType() == OP_SELL)
      { 
      OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);
      }
      }}}}}
 return(0);
 }      

 

А ошибок никаких?

И зачем два раза OrderSelect?

 

Ошибок нет.

Второй select для того чтобы

выбирать по наименьшему profit'у 

 
liza:

Ошибок нет.

Второй select для того чтобы

выбирать по наименьшему profit'у 

Возможно это условие  if(a > profit*lot)  всегда ложно
 

Выводила на Print(allprofit(), "   ",profit*lot); 

Не всегда оно ложно 

 
Похоже, что выражение всегда continue.
if(OrderType() != OP_BUY || OrderType() != OP_SELL) continue;
 
Нет, у меня приутствуют ордера по рынку
 
liza:
Нет, у меня приутствуют ордера по рынку

А Вы Print() поставьте после условия.

 

if(OrderType() != OP_BUY || OrderType() != OP_SELL) continue;
Print("Отлично, идем дальше");
 

Сделайте, так

if(OrderType() == OP_BUY || OrderType() == OP_SELL) {  
   ... остальной код
}
 

Не работает!

Просто бред како1-то!!! 

 
liza:

Не работает!

Просто бред како1-то!!! 

int cbd()
{
double oct=0, a = allprofit()*10;
int j=-1;

for(int i=OrdersTotal()-1;i>=0;i--){
 if(a > profit*lot) {
  if(OrderType() != OP_BUY || OrderType() != OP_SELL) continue; <-- А с какими ордерами Вы работаете в этом месте, 
                                                                    если Вы выбор ордера делаете ниже ?
   { <-- Это к чему относится ? Просто интересно зачем ?
   if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue<-- Это первый выбор, а до этого с какими ордерами Вы работали ?
   if(OrderSymbol()!=Symbol())continue;
   { <-- А Это к чему относится ? Просто интересно зачем ?
   if (oct>OrderProfit()) { oct=OrderProfit(); j=i;}           
   if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES)) <-- Чему будет равно j, если условие выше не сработает ?
      {
      if(OrderType() == OP_BUY)
      {
        OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE);
      }
     else if (OrderType() == OP_SELL)
      { 
      OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);
      }
      }}}}}
 return(0);
 }      
Причина обращения: