Как открыть новую позицию на томе же баре, на котором старая позиция закрыта?

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

//Trading Begin-------------------------------------------------+
   
   double   Lots     =NormalizeDouble(AccountFreeMargin()*Risk*AccountLeverage()/100000,1);
   double   Spread   =Ask-Bid;
   int      Slippage =Spread/Point;
   int      cnt, ticket, total; 
 
   total=OrdersTotal();
   for(cnt=0;cnt<total;cnt++)
   {              
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);              
      if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())  
      {
//Closing LONG position-----------------------------------------+
         if(OrderType()==OP_BUY)   
         {
            if(sell==1)
            {
               OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet); 
               return(0); // exit
            }
         }
//Closing SHORT position----------------------------------------+         
         else
         {
            if(buy==1)
            {
               OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Violet); 
               return(0); // exit
            }              
         }
      }
   }
   
   total=OrdersTotal();
   if(total<1) // no opened orders identified 
   {
//Sending OPEN LONG order---------------------------------------+ 
      if(buy==1)
      {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"",16384,0,Green);
         if(ticket>0)
         {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
            Print("BUY order opened : ",OrderOpenPrice()); //MODE_TRADES
         }
         else Print("Error opening BUY order : ",GetLastError()); 
         return(0); 
      }
//Sending OPEN SHORT order---------------------------------------+ 
      if(sell==1)       
      {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"",16384,0,Red);
         if(ticket>0)
         {                                    
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
            Print("SELL order opened : ",OrderOpenPrice()); //,MODE_TRADES
         }
         else Print("Error opening SELL order : ",GetLastError()); 
         return(0); 
      }
      return(0);
   }



Заметьте что сначала код закрывает текущую позицию, потом проверяет открытые позиции и, если OrdersTotal()<1, то тут же открывается новая позиция. Только почему-то новая позиция не открывается на том же баре. Она либо совсем не открывается либо открывается с задержкой при получении нового торгового сигнала. Кто-нибудь может объяснить почему мой код не может открыть новую позицию на том же баре, на котором старая позиция закрыта?

 
Кто-нибудь может объяснить почему мой код не может открыть новую позицию на том же баре, на котором старая позиция закрыта?

Потому что после ОрдерКлоус всегда стоит ретурн ;)
               OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet); 
               return(0); // exit
 
Ага! Каким-то я невнимательным стал после того как мне 40 стукнуло (и прямо по голове). Пора о ревматизьме волноваться и на погоду ругаться, а не о форексе думать :0)