Всё равно не работает, не выводит Alert...!!!

 
Люди добрые, )) помогите с этим маленьким помошником. По примерам, которые описаны в статьях, написал )) экспертик который должен выводить Alert при пересечении 2 MA. Не работает и всё... МА пересекаются а Alert всё равно не выводит. В чем дело? так как у меня большого опыта в программировании нету, ничего в этом коде не вижу, что бы ло бы не так, а веть наверняка что то не ТАК... ))
//--------------------------------------------------------------------
// Signal.mq4
//--------------------------------------------------------------------
extern int Period_MA1=13;             // Период расчётной МА
extern int Period_MA2=34;
//--------------------------------------------------------------------
int start()                          
  {
   double MA1_0, MA2_0, MA1_1, MA2_1;                           
//--------------------------------------------------------------------
   
   MA1_0=iMA(NULL,0,Period_MA1,0,MODE_SMA,PRICE_CLOSE,0);
   MA2_0=iMA(NULL,0,Period_MA2,0,MODE_SMA,PRICE_CLOSE,0);
   MA1_1=iMA(NULL,0,Period_MA1,0,MODE_SMA,PRICE_CLOSE,1);
   MA2_1=iMA(NULL,0,Period_MA2,0,MODE_SMA,PRICE_CLOSE,1);
   
//--------------------------------------------------------------------
   if (MA1_0 == MA2_0 && MA1_1 >= MA2_1)   
     {
           Alert("Покупка пары (" ,Symbol(), ").");// Сообщение 
     }
//--------------------------------------------------------------------
   if (MA1_0 == MA2_0 && MA1_1 <= MA2_1)   
     {
          Alert("Продажа пары (" ,Symbol(), ").");// Сообщение 
     }
//--------------------------------------------------------------------
   return;                            // Выход из start()
  }
//--------------------------------------------------------------------
 
Попробуйте так.
//--------------------------------------------------------------------
// Signal.mq4
//--------------------------------------------------------------------
extern int Period_MA1=13;             // Период расчётной МА
extern int Period_MA2=34;
//--------------------------------------------------------------------
int start()                          
  {
   double MA1_0, MA2_0, MA1_1, MA2_1;                           
//--------------------------------------------------------------------
   
   MA1_0=iMA(NULL,0,Period_MA1,0,MODE_SMA,PRICE_CLOSE,0);
   MA2_0=iMA(NULL,0,Period_MA2,0,MODE_SMA,PRICE_CLOSE,0);
   MA1_1=iMA(NULL,0,Period_MA1,0,MODE_SMA,PRICE_CLOSE,1);
   MA2_1=iMA(NULL,0,Period_MA2,0,MODE_SMA,PRICE_CLOSE,1);
   
//--------------------------------------------------------------------
   if (MA1_0 <= MA2_0 && MA1_1 >= MA2_1)   
     {
           Alert("Покупка пары (" ,Symbol(), ").");// Сообщение 
     }
//--------------------------------------------------------------------
   if (MA1_0 >= MA2_0 && MA1_1 <= MA2_1)   
     {
          Alert("Продажа пары (" ,Symbol(), ").");// Сообщение 
     }
//--------------------------------------------------------------------
   return;                            // Выход из start()
  }
//--------------------------------------------------------------------

 
Ок, Спасибо, буду пробовать.
Только вот ввел ваши изменения прокомпилировал, и тут понеслись эти Алерты выскакивать, до тех пора, пока не синхронизировал периоды МА котрые в советники с периодами МА на графике, и вроде прекратилось. ( может так и должно быть, не знаю) Вообщем бум ждать пересечений. еще раз спасибо.
 
НЕА, один фиг не выводит алерт и всё тут! Вообщем поместил его на минутки, настроил, вышел из терминала захожу через полчаса, вижу что МА 13 пересекла МА 34 буквально баров 5 назад И Алерт не вывел... Может я что не так понимаю.
Вопрос : Он должен выводить Алерт в моей ситуации, или только он будет выводить Алерт при включенном терминале?
 
zax писал (а):   ..он будет выводить Алерт при включенном терминале?
"Экспертик" - программа, написанная на языке программирования mql4. Терминал исполняет эту программу. При выключенном терминале Вашу программу выполнять некому.
 
ок, это я понял. А нельзя написать так что бы я включил терминал и мне выводил Алерт где пересеклись МА (даже если это произошло несколько баров назад), на каком инструменте? потому что как то у меня были подобные эксперты, которые просто подавали сигналы на разные условия, при включении терминала, мне сразу они выскакивали... вот.
 
zax писал (а): у меня были подобные эксперты, которые просто подавали сигналы на разные условия, при включении терминала, мне сразу они выскакивали. ..
Это зависит от задания условия. В коде, который Вы используете описан сам момент пересечения, а не постоянное превышение одной МА над другой. То есть, сигнал дискретный и на следующем баре исчезает. В индикаторе можно  вместо Алерта прописать запись пересечение в буфер или предусмотреть постановку объектов,  тогда после перерыва  в работе терминала вы увидите сигнал пересечения постфактум.  В эксперте это впрямую не предусмотрено, надо как-то изгаляться.  А зачем, если Вам нужны только сигналы? Пишите индикатор, вставляйте в него стрелки,  звуковые  сигналы, посылку СМС и пр., и пр.
 
granit77: А зачем, если Вам нужны только сигналы? Пишите индикатор, вставляйте в него стрелки, звуковые сигналы, посылку СМС и пр., и пр.
Да я тоже думал об этом, а как допустим вставить в тотже МА мой код? так что бы он так же подавал Алерт.
granit77: В индикаторе можно вместо Алерта прописать запись пересечение в буфер или предусмотреть постановку объектов, тогда после перерыва в работе терминала вы увидите сигнал пересечения постфактум.
или как это реализовать? Если не сложно поясните... Заранее спасибо.
 
zax: ..как это реализовать? Если не сложно поясните..
Все пояснения наилучшим образом изложены в учебнике Сергея Ковалева. https://book.mql4.com/ru Не сочтите за отписку, мне пришлось бы начинать от Адама, а в учебнике мало того, что последовательно изложены все понятия, но и приведены примеры, которые очень близки к Вашему.
 
Хорошо, спасибо. Будем изучать.
 
zax:
Да я тоже думал об этом, а как допустим вставить в тотже МА мой код? так что бы он так же подавал Алерт.
Звуковые сигналы в индикаторах