Эксперт только продает. Что делать?

 
Уважаемые знатоки MQL4, у меня такая проблема возникла: советник почему-то только продает, причем в свойствах эксперта никакого запрета на открытие длинных позиций нет. В чем дело, не подскажете? Заранее спасибо. Кстати, вот код:
 
  extern double Lots = 0.1;
  extern double MA1 = 8;
  extern double MA2 = 13;
  extern double MA3 = 21;
  extern double MA4 = 34;
  extern double MA5 = 55;
 
  int start()
{
    double Ma1, Ma2, Ma3, Ma4, Ma5,
    Ma1_5, Ma2_5, Ma3_5, Ma4_5, Ma5_5;
    int cnt, ticket, total;
 
    Ma1 = iMA(NULL,0,MA1,0,MODE_SMA,PRICE_CLOSE,0);
    Ma2 = iMA(NULL,0,MA2,0,MODE_SMA,PRICE_CLOSE,0);
    Ma3 = iMA(NULL,0,MA3,0,MODE_SMA,PRICE_CLOSE,0);
    Ma4 = iMA(NULL,0,MA4,0,MODE_SMA,PRICE_CLOSE,0);
    Ma5 = iMA(NULL,0,MA5,0,MODE_SMA,PRICE_CLOSE,0);
   
    Ma1_5 = iMA(NULL,0,MA1,0,MODE_SMA,PRICE_CLOSE,5);
    Ma2_5 = iMA(NULL,0,MA2,0,MODE_SMA,PRICE_CLOSE,5);
    Ma3_5 = iMA(NULL,0,MA3,0,MODE_SMA,PRICE_CLOSE,5);
    Ma4_5 = iMA(NULL,0,MA4,0,MODE_SMA,PRICE_CLOSE,5);
    Ma5_5 = iMA(NULL,0,MA5,0,MODE_SMA,PRICE_CLOSE,5);
   
   total=OrdersTotal();
   if(total<1) 
     {        
      if((MA1>MA2&&MA2>MA3&&MA3>MA4&&MA4>MA5)&&(Ma1_5>Ma2_5&&Ma2_5>Ma3_5&&Ma3_5>Ma4_5&&Ma4_5>Ma5_5))
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"ma",0408,0,Green);
         }
      if((MA1<MA2&&MA2<MA3&&MA3<MA4&&MA4<MA5)&&(Ma1_5<Ma2_5&&Ma2_5<Ma3_5&&Ma3_5<Ma4_5&&Ma4_5<Ma5_5))
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"mac",1302,0,Red);
         }
      return(0);
     }
 
   for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
        if(OrderSymbol()==Symbol())
          {
           if(OrderType()==OP_BUY) 
             {
              if((MA1>MA2&&MA2>MA3&&MA3>MA4&&MA4>MA5)==False || Close[0]<iLowest(NULL,0,MODE_LOW,5,0))
                {
                 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); 
                 }
                 return(0); 
              }
              
           else 
            
             if((MA1<MA2&&MA2<MA3&&MA3<MA4&&MA4<MA5==False) || Close[0]>iHighest(NULL,0,MODE_HIGH,5,0))
               {
                OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
                return(0); 
               }
 
             
          }
     
     }
     
   return(0);
}
 
babayan:
Уважаемые знатоки MQL4, у меня такая проблема возникла: советник почему-то только продает, причем в свойствах эксперта никакого запрета на открытие длинных позиций нет. В чем дело, не подскажете? Заранее спасибо. Кстати, вот код

Путаница с именами переменных:

extern double Lots = 0.1;
extern double MA1 = 8;
.
.
Ma1 = iMA(NULL,0,MA1,0,MODE_SMA,PRICE_CLOSE,0);
.
.
if((MA1<MA2&&MA2<MA3&&MA3<MA4&&MA4<MA5)&&(Ma1_5<Ma2_5&&Ma2_5<Ma3_5&&Ma3_5<Ma4_5&&Ma4_5<Ma5_5))

При открытии Вы сравниваете внешние МА1...МА5

 

Вы знаете я не сторонник таких многословных конструкций. Это не совсем правильно:

  1. Не удобно читается
  2. Большая вероятность ошибки

Если хотите, могу проконсультировать. ICQ 315-165.-028