Как организовать на MQL запрещение торговли на определенном баре.

 
Точнее говоря мне нужно сделать так, чтобы при срабатывании s/l на текущем баре(на котором сработал s/l) программа не совершала сделок(притом условие на совершение сделок будет выполнятся, но мне не нужно чтобы сделки совершались после s/l), а начинала совершать их со следующего бара при выполнени условий!
 
projectX писал (а):
Точнее говоря мне нужно сделать так, чтобы при срабатывании s/l на текущем баре(на котором сработал s/l) программа не совершала сделок(притом условие на совершение сделок будет выполнятся, но мне не нужно чтобы сделки совершались после s/l), а начинала совершать их со следующего бара при выполнени условий!
После определения, что сработал стоплосс, дождитесь формирования очередного бара..
   static int prevtime = 0;
   if (Time[0] == prevtime) return(0); // Убедимся, что сформировался новый бар
   
   prevtime = Time[0];Print ("Time : ",prevtime); // Запомнить время текущего бара
 
перебираем историю сделок, если находим ордер закрывшийся по сл (в комментарии должно быть [sl] или OrderClosePrice()==OrderStopLoss) и время закрытия ордера OrderCloseTime()>=Time[0], то ставим запрет на открытие.
 
а если в условии на совершение сделки просто добавить например вот так
 if(a>b && d<f && OrderClosePrice()=!OrderStopLoss && 
    OrderCloseTime()=!Time[0])
      
        { 
//Ask-TrailingStop*Point,Ask+TakeProfit*Point стоплос  работает 
//при =1000
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,5,sloss,takep,
                          "sample",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); 
        }
а сам стоп лосс устанавливается фунцией:
for(cnt=0;cnt<total;cnt++)
     {             
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);               
      if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
            // should it be closed?
         
              if(Low[0]<Low[1])
                {
                 OrderClose(OrderTicket(),OrderLots(),Bid,5,Violet); 
// close position
                 return(0); // exit
                }
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point*TrailingStop)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),
                                 Bid-Point*TrailingStop,
                                 OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
Причина обращения: