Проблемка с циклом, нужен совет

 
Подскажите пожалуйста в чем проблема!
Торговля идет одинаковым советником сразу на нескольких валютах, у каждого советника свой magic номер. И хочу чтобы у каждой открытой позы отслеживалось состояние и двигался стоп. Получилось что трэйлин срабатывает только на 1 валюте, остальные не работают. Я так понял он почему то не хочет перебирать все открытые ордера а работает с первым попавшимся.

    for(cnt=0;cnt<OrdersTotal();cnt++)
    {
    OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
      cmd=OrderType();
 
     if (OrderSymbol()==Symbol())
      {    
      if(cmd==OP_BUY || cmd==OP_SELL)
         {
            if(cmd==OP_BUY) 
             {
             if(TrailingStop>0)  
               {                 
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point*TrailingStop)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,
                                 OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
               }
             }
            else            
            if(TrailingStop>0)  
              {                 
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                 {
                  if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,
                                 OrderTakeProfit(),0,Red);
                     return(0);
                    }
                 }
              }
          } 
        
       }    
     }
 

Возьми за основу код эксперта отсюда: 'Эксперт на основе пересечения скользящих средних.'
И он у тебя будет правильно работать по всем валютам.

 
Вместо множество IF-ов сделай переобразование и объедини все в одном логическом выражение.
 
А для трейлинга отдельный советник? Если да, то убери проверку if (OrderSymbol()==Symbol())
 
Спасибо за советы. Попробовал сделать как у ExpertTrader в советнике, кажется нашел ошибку, еще пока не тестировал. А как убрать if-ы и сделать логическое выражение пока не знаю, еще не настолько владею языком, пока всех советников делаю по примерам уже готовых.
 
nemo писал (а):
Спасибо за советы. Попробовал сделать как у ExpertTrader в советнике, кажется нашел ошибку, еще пока не тестировал. А как убрать if-ы и сделать логическое выражение пока не знаю, еще не настолько владею языком, пока всех советников делаю по примерам уже готовых.
&& - логическое "И"
|| - логическое "ИЛИ"

логические куски заключай в круглые скобки
Причина обращения: