OrderClose() closing incorrect order

 

Hi guys,

I have a function, namely:

void CloseOrders()
 { 
  for(int d=OrdersTotal()-1; d>=0; d--) 
   {
    if(!OrderSelect(d,SELECT_BY_POS,MODE_TRADES)) continue;  
     if(OrderMagicNumber()==(MagicNumber1 || MagicNumber2 || MagicNumber3)    
      && OrderSymbol()==Symbol()                
       && OrderType()==(OP_BUY || OP_SELL) 
    RefreshRates();
     if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),10))          
      Print("Order Close failed, order number: ",OrderTicket()," Error: ",GetLastError());        
   }
 }

 The EA places 4 orders, each issued with a unique magic number (MagicNumber1, MagicNumber2, MagicNumber3 and MagicNumber4). I only want the EA to close MagicNumber1, MagicNumber2, MagicNumber3 orders, and NOT the MagicNumber4 order, however, it is closing all 4. Any ideas what could be causing this?

 Thanks! 

 

Yeah, the code is total bogus :D

Try this: 


 

void CloseOrders() { 
  for(int d=OrdersTotal()-1; d>=0; d--) {
    if(!OrderSelect(d,SELECT_BY_POS,MODE_TRADES)) continue;  
    if((OrderMagicNumber()==MagicNumber1 || OrderMagicNumber()==MagicNumber2 || OrderMagicNumber()==MagicNumber3)
      && OrderSymbol()==Symbol()                
      && (OrderType()==OP_BUY || OrderType()==OP_SELL)) { 
        RefreshRates();
        if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),10))          
          Print("Order Close failed, order number: ",OrderTicket()," Error: ",GetLastError());        
    }
  }
}
 
  
     if((OrderMagicNumber()==MagicNumber1 || OrderMagicNumber()==MagicNumber2 || OrderMagicNumber()==MagicNumber3)    
      && OrderSymbol()==Symbol()                
       && (OrderType()==OP_BUY || OrderType()==OP_SELL)) 
Try that
 
2cent:

Yeah, the code is total bogus :D

Try this: 


 

 

 

Hahah! I love the word "bogus". Will give this a try. Thanks!
 
GumRai:
Try that
Thank you. I know I have tried this. Let's see if it works! 
 
2cent:

Yeah, the code is total bogus :D

Try this: 


 

 

 

It seems my code was sheer bogus indeed. thanks for the help! Your code works. :) 
Reason: