Помогите сделать Alert

[Удален]  
Есть мультитаймфреймный индикатор, использующий три TF на выбор. Сигналы генерируются при пересичении линий индикатора,  
Если кому не сложно, помогите сделать Alert на сигналы, но с условием оповищения на каждый TF, т.е. если вколючен один TF из трех, и в совокупности, т.е. если включены два TF из трех, или все три.

Вот часть кода на генирацию сигналов (весь код выкладывать не хочу, т.к. покупал его)

    if(u1>u2){trend1="Trend UP";color1=Lime;}
    if(u1<u2){trend1="Trend Down";color1=Red;} 
    
    if(u3>u4){trend2="Trend UP";color2=Lime;}
    if(u3<u4){trend2="Trend Down";color2=Red;} 
    
    if(u5>u6){trend3="Trend UP";color3=Lime;}
    if(u5<u6){trend3="Trend Down";color3=Red;}  
           
 
Yoda_2 >>:
   bool NeedAlert = false;
   string AlertMessage;

   if(u1>u2){trend1="Trend UP";color1=Lime;AlertMessage = "Trend 1 UP"; NeedAlert = true;}
   if(u1<u2){trend1="Trend Down";color1=Red;AlertMessage = "Trend 1 Down"; NeedAlert = true;}

   if(u3>u4){trend2="Trend UP";color2=Lime;AlertMessage = "Trend 2 UP"; NeedAlert = true;}
   if(u3<u4){trend2="Trend Down";color2=Red;AlertMessage = "Trend 2 Down"; NeedAlert = true;}

   if(u5>u6){trend3="Trend UP";color3=Lime;AlertMessage = "Trend 3 UP"; NeedAlert = true;}
   if(u5<u6){trend3="Trend Down";color3=Red;AlertMessage = "Trend 3 Down"; NeedAlert = true;}
   
   if (NeedAlert)
   {
      Alert(AlertMessage);
   }
[Удален]  
Большое спасибо. Но чета не отображается включить\выключить в окне настроек.
 
Yoda_2 >>:
Большое спасибо. Но чета не отображается включить\выключить в окне настроек.
// Шапка вверху

extern bool UseAlert = true;

//...


{
   //...
   bool NeedAlert = false;
   string AlertMessage;

   if(u1>u2){trend1="Trend UP";color1=Lime;AlertMessage = "Trend 1 UP"; NeedAlert = true;}
   if(u1<u2){trend1="Trend Down";color1=Red;AlertMessage = "Trend 1 Down"; NeedAlert = true;}

   if(u3>u4){trend2="Trend UP";color2=Lime;AlertMessage = "Trend 2 UP"; NeedAlert = true;}
   if(u3<u4){trend2="Trend Down";color2=Red;AlertMessage = "Trend 2 Down"; NeedAlert = true;}

   if(u5>u6){trend3="Trend UP";color3=Lime;AlertMessage = "Trend 3 UP"; NeedAlert = true;}
   if(u5<u6){trend3="Trend Down";color3=Red;AlertMessage = "Trend 3 Down"; NeedAlert = true;}
   
   if (NeedAlert && UseAlert)
   {
      Alert(AlertMessage);
   }
}
[Удален]  
Немного  не так надо. Надо чтобы в насторойках было выведено включить/выключить на каждый TF, т.е. чтобы если включен один, то выдовало только на него, а если два или три, то общий. Еще символ можно добавить.
 
Yoda_2 >>:
Немного не так надо. Надо чтобы в насторойках было выведено включить/выключить на каждый TF, т.е. чтобы если включен один, то выдовало только на него, а если два или три, то общий. Еще символ можно добавить.

Сорри, уже многа букаф, ломает.

[Удален]  
Сделал сам, только немогу сделать чтоб не спамил, сигнал идет без перерыва. Как сделать чтоб этого небыло?
 
Yoda_2 >>:
Сделал сам, только немогу сделать чтоб не спамил, сигнал идет без перерыва. Как сделать чтоб этого небыло?

Например так. Будет спамить максимум один раз за бар.

// вне функций
datetime LastAlertTime = 0;

// там где надо алерт
{
   //...
   if (LastAlertTime < Time[0])
   {
      LastAlertTime = Time[0];
      Alert(AlertText);
   }
}
[Удален]  
Вот как я сделал, чета не пойму куда ваш код вставить. А можно сделать, чтоб сообщал только при появлинии сигнала?
Шапка
\\--
extern bool General = false;
extern bool Alert_1 = false;
extern bool Alert_2 = false;
extern bool Alert_3 = false;

//--Alerts                                                           

   if (General)
   {
	    {
		     if((u1>u2) && (u3>u4) && (u5>u6))
		       {
			        Alert("MAGIC (", Symbol(), ", ", Period(), ")  - General LONG!!!");
		       }
	    }
	    {
           if((u1<u2) && (u3<u4) && (u5<u6))
		       {
			        Alert("MAGIC (", Symbol(), ", ", Period(), ")  -  General SHORT!!!");
		       }
	    }
	 }
	//--
   if (Alert_1)
   {
	    {
		     if(u1>u2)
		       {
			        Alert("MAGIC (", Symbol(), ", ", tf1, ")  -  LONG!!!");
		       }
	    }
	    {
           if(u1<u2)
		       {
			        Alert("MAGIC (", Symbol(), ", ", tf1, ")  -  SHORT!!!");
		       }
	    }
	 }
	//--
   if (Alert_2)
   {
	    {
		     if(u3>u4)
		       {
			        Alert("MAGIC (", Symbol(), ", ", tf2, ")  -  LONG!!!");
		       }
	    }
	    {
           if(u3<u4)
		       {
			        Alert("MAGIC (", Symbol(), ", ", tf2, ")  -  SHORT!!!");
		       }
	    }
	 }
   //--
   if (Alert_3)
   {
	    {
		     if(u5>u6)
		       {
			        Alert("MAGIC (", Symbol(), ", ", tf3, ")  -  LONG!!!");
		       }
	    }
	    {
           if(u5<u6)
		       {
			        Alert("MAGIC (", Symbol(), ", ", tf3, ")  -  SHORT!!!");
		       }
	    }
	 }
   //--           
[Удален]  
Вот еще сделал, но чета ошибки выдает, поправте, кому не трудно
   if (Alert_1)
   {
    //---- Статические переменные, в которых хранятся
    //---- время последнего бара и направление последнего сигнала
    static int PrevSignal = 0, PrevTime = 0;
 
    //---- Если баром для анализа выбран не 0-й, нам нет смысла проверять сигнал
    //---- несколько раз. Если не начался новый бар, выходим.
    if(SIGNAL_BAR > 0 && Time[0] <= PrevTime ) 
        return(0);
    //---- Отмечаем, что этот бар проверен
    PrevTime = Time[0];
	 //---- Если предыдущий сигнал был СЕЛЛ или это первый запуск (PrevSignal=0)
	  if(PrevSignal <= 0)
	    {
	  //---- Проверяем, не пересеклись ли линии на прошлом баре
		  if(u1>u2[SIGNAL_BAR] > 0)
		   {
	  //---- Если пересеклись, отмечаем что последний сигнал - бай
		    PrevSignal = 1;
	  //---- и выводим информацию
			 Alert("MAGIC (", Symbol(), ", ", tf1, ")  -  LONG!!!");
		   }
	    }
	       if(PrevSignal >= 0)
	       {
           if(u1<u2[SIGNAL_BAR] > 0)
		       {
		           PrevSignal = -1;
			        Alert("MAGIC (", Symbol(), ", ", tf1, ")  -  SHORT!!!");
		       }
	       }
	  }
	//--