Помогите пожалуйста с Советником (Скользящие и пересечение)

 

Всем привет,уважаемые программисты и форумчане.

Нужна ваша помощь с советником.

Дело в том ,что я не нашел программного кода на пересечение МА ,а нашел только SLowMA>FastMA(как то так).

Мне надо ,чтобы при пересечении FastMA и SlowМА открывался ордер именно в точке пересечения.

Заранее спасибо ,жду ответов 

 
//---
      if (SlowMA <= BigMA)//Пропуск на продажи
      {
      if(PriceMA<=SlowMA&&SS==false&&SlowMA<=BigMA) //Sell Order 
       {
        Ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Spread,Bid+(Spread+StopLoss)*Point,Bid-(TakeProfit+Spread)*Point);
        if(Ticket>0)
                   {SS=true;//Блокировка входов
                   Alert("Открыт ордер Sell",Ticket); 
                   Alert("Блокировщик входов Sell работает успешно,наслаждайтесь!");         
       }
       }
       }//Выход из продаж
      if(SlowMA >= BigMA)//Пропуск на покупки
      {
      if(PriceMA>=SlowMA&&SB==false&&SlowMA>=BigMA) //Buy Order
       {
       Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Spread,Bid-(Spread+StopLoss)*Point,Bid+(TakeProfit-Spread)*Point); 
       if (Ticket > 0)
        {
         Alert("Открыт ордер Buy",Ticket);
         SB=true;//Блокировка входов
         if(SB==true)
                {
                Alert("Блокировка лишних входов Buy работает успешно,наслаждайтесь!");
                }
        }  
        }
Программный код на данное время,работает не так,как хотелось бы
 
На форуме альпарей почитай курс MQL4 от Programmer, там есть. Или тут, тот-же курс.
 
AlexeyVik:
На форуме альпарей почитай курс MQL4 от Programmer, там есть. Или тут, тот-же курс.

Спасибо,вроде то,что надо!

Попробую переварить информацию,еще раз спасибо:) 

 

Кто наткнется на такую же проблему 

Вроде это решение проблемы(как я понял)

Код:
int Crossed (double line1 , double line2)
{
   static int last_direction = 0;
   static int current_dirction = 0;

   if(line1>line2)current_dirction = 1; //up
   if(line1<line2)current_dirction = 2; //down

   if(current_dirction != last_direction) //changed
   {
      last_direction = current_dirction;
      return (last_direction);
   }

   else
   {
      return (0);
   }

}

Как я уже говорил, идея эксперта заключается в слежении за двумя средними и их пересечениями. Для достижения этой цели мы создаем функцию Crossed.
Функция Crossed принимает на вход две переменные типа double и возвращает переменную типа integer. 
Первый параметр - это тек. значение первой линии (в нашем случае - быстрой EMA). 
Второй параметр - это тек. значение второй линии (в нашем случае - медленной EMA).
При каждом вызове функция сохраняет информацию о взаиморасположении этих линий в статических переменных 
(cтатические переменные хранятся в постоянной области памяти программы, их значения не теряются при выходе из функции). 
При этом функция сравнивает тек. взаиморасположение линий с их взаиморасположением при предыдущем вызове.
- Функция возвращает 0, если взаиморасположение линий не изменилось. 
- Функция возвращает 1, если взаиморасположение линий изменилось, и первая линия оказалась над второй.
- Функция возвращает 2, если взаиморасположение линий изменилось, и первая линия оказалась под второй.