Подскажите пожалуйста, как реализовать.

 
MA1_0=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 0);    // Текущее    значение 1-й МА
   MA1_1=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 1);    // Предыдущее значение 1-й МА
   MA2_0=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 0);    // Текущее    значение 2-й МА
   MA2_1=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 1);    // Предыдущее значение 2-й МА

        if(IntersectFlag == false)
        {   
             if(CrossPositionOpen() == 1) //Ф-ция, проверяющая пересечение МА. Пересекло снизу вверх
               {
               IntersectFlag = true;
               Price = Bid; //Запоминаем цену
               ABars = Bars; //Запоминаем кол-во свечей
               }
          //---- buy conditions
             if(CrossPositionOpen() == 2) //Ф-ция, проверяющая пересечение МА. Пересекло сверху вниз
               {
               IntersectFlag = true;
               Price = Bid; //Запоминаем цену
               ABars = Bars; //Запоминаем кол-во свечей
               }          
         }
               
               
        if(IntersectFlag == true)
        {
               if(CrossPositionClose() == 1) //Ф-ция, проверяющая пересечение МА. Пересекло снизу вверх
               {
               IntersectFlag = false;
               for(i=0; i<Bars-ABars; i++)
                  {
                  if(Low[i] >  MA && High[i] >  MA) //Как проверить мувинг аверэйдж???
                     {
                     
                     break;
                     }
                  }
               }
          //---- buy conditions
             if(CrossPositionClose() == 2) //Ф-ция, проверяющая пересечение МА. Пересекло сверху вниз
               {
               IntersectFlag = false;
               for(i=0; i<Bars-ABars; i++)
                  {
                  if(Low[i] <  MA && High[i] >  MA) //Как проверить мувинг аверэйдж????
                     {
                     
                     break;
                     }
                  }
               }    
         }
Дано ТЗ. Классика : длинная и короткая машка. Условие : короткая пересекает длинную, затем пересекает ее снова, в период между пересечениями, если Н свечей находилось выше (или ниже, смотря как пересекает), то через К кол-во пунктов мы входим в рынок. Подскажите пожалуйста, каким образом проверить, что цена была выше/ниже машки в период между пересечениями. 
 

Я бы сделал по другому:

  1. Все действия выполняем справа налево , от нулевого (текущего) бара и вглубь истории.
  2. Ищем номер бара первого пересечения машек.
  3. Ищем номер бара второго пересечения машек.
  4. Между барами проверяем машки, свечи и что там ещё нужно.
  5. Если нашли, что хотели, то ставим ордер через нужное количество пунктов, предварительно проверив, что его (ордера) нет.
 

Все просто... 

Если хай свечи находится выше машки или лоу ниже. 

 

KimIV, тоже интересное решение, попробую! Когда начинал, неоднократно пользовался вашими функциями, спасибо вам =) 

Я, вероятно, немного не правильно сформулировал вопрос... Я то и проверяю хай и лоу свечи, но как именно мне правильно взять определенное значение машки в тот момент, чтобы проверить в этом месте ?

               for(i=0; i<Bars-ABars; i++) //Начинаем проходить свечи от 0 к первому пересечению ?
                  {
                  if(Low[i] >  MA? && High[i] >  MA?) //Как проверить мувинг аверэйдж???
                     {
                     
                     break;
                     }
 
Stingerrr:

но как именно мне правильно взять определенное значение машки в тот момент, чтобы проверить в этом месте ?

Здесь смотрите параметр shift - это номер бара.
 
Получилось, спасибо!
Причина обращения: