ПОЖАЛУЙСТА, ПОМОГИТЕ РАЗОБРАТЬСЯ (разработчики откликнитесь)

 

Всем доброго времени суток и с наступающей Пасхой!

Мне требуется помощь. Вот часть кода, где возникает проблема:

где, Per'ы - это пересечение трех средних (зачем именно три? это необходимость)

   EMA_1=iMA(NULL,0,EMA_1,0,MODE_EMA,PRICE_CLOSE,0);        //EMA_1 0 бар
   EMA_1a=iMA(NULL,0,EMA_1,0,MODE_EMA,PRICE_CLOSE,1);       //EMA_1 1 бар (назад)
   EMA_2=iMA(NULL,0,EMA_2,0,MODE_EMA,PRICE_CLOSE,0);        //EMA_2
   EMA_2a=iMA(NULL,0,EMA_2,0,MODE_EMA,PRICE_CLOSE,1);       //EMA_2 1 бар
   EMA_3=iMA(NULL,0,EMA_3,0,MODE_EMA,PRICE_CLOSE,0);        //EMA_3
   EMA_3a=iMA(NULL,0,EMA_3,0,MODE_EMA,PRICE_CLOSE,1);       //EMA_3 1 бар
      
   New_bar=0;                                               //Наличие нового бара обнулено
      if (Time_0!=Time[0])                                  //Если пред. откр. не совпадает с реальным
         {
          New_bar=1;                                        //Появился новый бар
          Time_0=Time[0];
         }
      if (New_bar==1)                                       //Если есть новый бар
         {
         Per_1=((EMA_1+5*Point)>EMA_2) && (EMA_2>EMA_3) && (EMA_1a>=EMA_2a) && (EMA_2a<=EMA_3a);
         Per_2=((EMA_1+5*Point)>EMA_2) && (EMA_2>EMA_3) && (EMA_1a<=EMA_2a) && (EMA_2a>=EMA_3a);
         }
      if (Per_1==true || Per_2==true)                       //Если пересечение есть
         Opn_Buy=true;
      
      if (New_bar==1)                                       //Если есть новый бар
         {
         Per_3=((EMA_1-5*Point)<EMA_2) && (EMA_2<EMA_3) && (EMA_1a<=EMA_2a) && (EMA_2a>=EMA_3a);
         Per_4=((EMA_1-5*Point)<EMA_2) && (EMA_2<EMA_3) && (EMA_1a>=EMA_2a) && (EMA_2a<=EMA_3a);            
         }
      if (Per_1==true || Per_2==true)                       //Есть пересечение есть
         Opn_Sell=true;
Так вот если код находится в таком состоянии, то при тестировании не возникает никаких результатов (пусто во всех вкладках), но если изменить эти строки:

         {
         Per_1=((EMA_1+5*Point)>EMA_2) && (EMA_2>=EMA_3) && (EMA_1a>=EMA_2a) && (EMA_2a<=EMA_3a);
         Per_2=((EMA_1+5*Point)>EMA_2) && (EMA_2>=EMA_3) && (EMA_1a<=EMA_2a) && (EMA_2a>=EMA_3a);
         }

Во вторых сравнениях каждой строки добавлены = (но оно мне здесь не нужно), то тестирование проходит, но опять же возникает проблема: учитываются только лонги

Пожалуйста, помогите разобраться почему так происходит!!! Если здесь есть представители разработчика MetaTrader Software, то это просьба в первую очередь к вам

Или, пожалуйста,  покажите как прописывается пересечение трех средних, так чтобы учесть все варианты пересечения

 
Уже третья тема. И везде ошибки с логикой. Не проще ли разобраться самому.
 
Vinin >>:
Уже третья тема. И везде ошибки с логикой. Не проще ли разобраться самому.

Ну как же... Сложно же в MetaEditor'е открыть соответствующий раздел справки и поковыряться в тестовом скрипте с плохоизучеными функциями... Вот и пишут. WindSW, не обижайтесь, нужно научиться решать такие вопросы "в одно рыло".