MA Cross Alert Once Indicator For MT4

MA Cross Alert Once Indicator For MT4

The MA Cross Alert Once Indicator For MT4 is a brilliant indicator in that it signals to you the various crossover moments made by the Moving Averages. This is a classical way to trade using Moving Averages within the trading markets whereby your faster Moving Average is your signal line so whenever it crosses over the "slower" moving average from the upside it marks a buy with an upward arrow and whenever the faster Movin Average cross over the slower Moving Average from the upside then it marks sell opportunity which is demarcated by downward arrow. The MA Cross Alert Once Indicator For MT4 comes various alert notification settings that ranges from pop-up alerts right through to having the capabilities for you to receive email alerts.

FREE MA Cross Alert Once Indicator

Download the FREE MA Cross Alert Once Indicator for MT4.

To receive my email 100% sure: 
Put my email on your whitelist!

 

Partially Automated Trading Besides Your Day Job

Alerts In Real-Time When Divergences Occur

My Recommended MT4/MT5 Broker

 

Installing the MA Cross Alert Once Indicator For MT4

After you downloaded the indicator via the form above you need to unzip the zip-file. Then you need to copy the file MA_Cross_Alert_Once_b.mq4 into the folder MQL4\Indicators of your MT4 installation. After that please restart MT4 and then you will be able to see the indicator in the list of indicators.

Parameters of the MA Cross Alert Once Indicator For MT4

The MA Cross Alert Once Indicator For MT4 has 16 parameters to configure.

input bool Cross_Alert = true;  // Alert
input bool Sound_Only = false;  // Sound Only
input bool Cross_PN = false;    // Push Notification
input bool Cross_Email = false; // Email
input int Slow_MA_Period = 7; // Slow Period
input int Slow_MA_Shift = 0;  // Slow Shift
input ENUM_MA_METHOD Slow_MA_Method = 0;    // Slow Method
input ENUM_APPLIED_PRICE Slow_MA_Price = 0; // Slow Price
input int Fast_MA_Period = 1; // Fast Period
input int Fast_MA_Shift = 0;  // Fast Shift
input ENUM_MA_METHOD Fast_MA_Method = 0;    // Fast Method
input ENUM_APPLIED_PRICE Fast_MA_Price = 0; // Farst Price
input string Key;
input string Price = "Close Price : Open Price : High Price : Low Price";
input string Price_= "Median Price (high+low)/2 : Typical Price (high+low+close)/3";
input string Price__ = "Weighted Price (high+low+close+close)/4";

Buffers of the MA Cross Alert Once Indicator For MT4

The MA Cross Alert Once Indicator For MT4 provides 2 buffers.

SetIndexBuffer(0, CrossUp);
SetIndexBuffer(1, CrossDown);

Main Parts Of The Code

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
  int limit, i;
   double Fast_MA_Bar_0, Slow_MA_Bar_0, Fast_MA_Bar_1, Slow_MA_Bar_1; 
  
   int counted_bars=IndicatorCounted();
//---- check for possible errors
   if(counted_bars lt 0) return(-1);
//---- last counted bar will be recounted
   if(counted_bars gt 0) counted_bars--;

   limit=Bars-counted_bars;
   
   for(i = 0; i  lt = limit; i++) 
   {
     
      Fast_MA_Bar_0 =  iMA(NULL, 0, Fast_MA_Period, Fast_MA_Shift, Fast_MA_Method, Fast_MA_Price, i+1);
      Fast_MA_Bar_1 = iMA(NULL, 0, Fast_MA_Period, Fast_MA_Shift, Fast_MA_Method, Fast_MA_Price, i+2);

      Slow_MA_Bar_0 =  iMA(NULL, 0, Slow_MA_Period, Slow_MA_Shift, Slow_MA_Method, Slow_MA_Price, i+1);
      Slow_MA_Bar_1 = iMA(NULL, 0, Slow_MA_Period, Slow_MA_Shift, Slow_MA_Method, Slow_MA_Price, i+2);
      
      static datetime PrevSignal = 0, PrevTime = 0;
 
	   if(ALERT_BAR  gt  0 && Time[0]  lt = PrevTime)
	   { 
	     return(0);
	   }  

	   PrevTime = Time[0];
	   

	   if(PrevSignal  lt = 0)
	   {     
		  if((Fast_MA_Bar_1  lt  Slow_MA_Bar_1) &&  (Fast_MA_Bar_0  gt  Slow_MA_Bar_0)) // For Examples see: https://book.mql4.com/samples/indicators  if( M_1  lt  S_1 && M_0  gt  S_0 ) 
		  {
		    CrossUp[i=1] = Low[i=1] - iATR(NULL,0,20,i)/2;
			        
			 PrevSignal = 1;
			 
			 if(Sound_Only)
		    {
		      PlaySound("Alert.wav");
		    }              
			 if(Cross_Alert && Sound_Only == false)
			 {
			   Alert("BUY cross: ",Symbol(), " ", TM , " - ",IntegerToString(SMP)," ",MA," ",IntegerToString(SMS),"
",DoubleToStr(Ask,Digits),"
",TimeToStr(TimeCurrent(),TIME_SECONDS),"  ",TimeToStr(TimeCurrent(),TIME_DATE),"
",AccountCompany());
			 }
          if(Cross_Email) 
          {
            SendMail ("Buy cross -" + Symbol() + "-" + TM + "-" + AccountCompany(),
                  "Buy Cross Alert" + "
" +
                  "--------------------" + "
" +
                  "Symbol : " + " " + Symbol() + " 
" +
                  "Period : " + " " + TM + " 
" +
                  "Slow MA : " + IntegerToString(SMP)+" "+MA+" "+IntegerToString(SMS)+ " 
" +
                  "Fast MA : " + IntegerToString(FMP)+" "+MA+" "+IntegerToString(FMS)+ " 
" +
                  "Ask Price : " + DoubleToStr(Ask,Digits)+ " 
" +
                  "Time and Date : " + TimeToStr(TimeCurrent(), TIME_SECONDS)+ "  " + TimeToStr(TimeCurrent(), TIME_DATE) + " 
" +        
                  "Broker : " + " " + AccountCompany() + "
" +
                  "Account # : " + " " + IntegerToString(AccountNumber()));  
          }
          
          if(Cross_PN) 
          {
            SendNotification("BUY: " + Symbol() + " " + TM + "  lt " + IntegerToString(SMP) + " " + MA + " " + IntegerToString(SMS) + " gt  " + DoubleToStr(Ask,Digits) + " " + "
"+
                                      TimeToStr(TimeCurrent(),TIME_SECONDS)+"  "+TimeToStr(TimeCurrent(),TIME_DATE)+"  " + AccountCompany()); 
          }                            
	     }
      }
	   
	   if(PrevSignal  gt = 0)
	   {    
		  if((Fast_MA_Bar_1  gt  Slow_MA_Bar_1) && (Fast_MA_Bar_0  lt  Slow_MA_Bar_0)) // For Examples see: https://book.mql4.com/samples/indicators ( if( M_1  gt  S_1 && M_0  lt  S_0 ) 
		  {
	       CrossDown[i=1] = High[i=1] + iATR(NULL,0,20,i)/2;
         
		    PrevSignal = -1;
		    
		    if(Sound_Only)
		    {
		      PlaySound("Alert.wav");
		    }         
			 if(Cross_Alert && Sound_Only == false)
			 {
			   Alert("SELL cross: ",Symbol(), " ", TM , " - ",IntegerToString(SMP)," ",MA," ",IntegerToString(SMS),"
",DoubleToStr(Bid,Digits) + "
",TimeToStr(TimeCurrent(),TIME_SECONDS),"  ",TimeToStr(TimeCurrent(),TIME_DATE),"
",AccountCompany());
			 }
          if(Cross_Email) 
          {
            SendMail ("Sell cross -" + Symbol() + "-" + TM + "-"+ "-" + AccountCompany(),
                  "Sell Cross ALert" + "
" +
                  "--------------------" + "
" +
                  "Symbol : " + " " + Symbol() + " 
" +
                  "Period : " + " " + TM + " 
" +
                  "Slow MA : " + IntegerToString(SMP)+" "+MA+" "+IntegerToString(SMS)+ "-" + "
" +
                  "Fast MA : " + IntegerToString(FMP)+" "+MA+" "+IntegerToString(FMS)+ " 
" +
                  "Bid Price : " + DoubleToStr(Bid,Digits)+ "
" +
                  "Time and Date : " + TimeToStr(TimeCurrent(), TIME_SECONDS)+ "  " + TimeToStr(TimeCurrent(), TIME_DATE) + " 
" +        
                  "Broker : " + " " + AccountCompany() + "
" +
                  "Account # : " + " " + IntegerToString(AccountNumber()));  
          }
          if(Cross_PN) 
          {
            SendNotification("SELL: " + Symbol() + " " + TM + "  lt " + IntegerToString(SMP) + " " + MA + " " + IntegerToString(SMS) + " gt  " + DoubleToStr(Bid,Digits) + " " + "
" +  
                                       TimeToStr(TimeCurrent(),TIME_SECONDS)+"  "+TimeToStr(TimeCurrent(),TIME_DATE)+"  " + AccountCompany()); 
			 }    
        }
	   }     
   }
  
   return(rates_total);
}

 

About Me

I'm Mike Semlitsch the owner of PerfectTrendSystem.com. My trading career started in 2007. Since 2013 I have helped thousands of traders to take their trading to the next level. Many of them are now constantly profitable traders. 

The following performance was achieved by me while trading live in front of hundreds of my clients:

Connect With Me:  

Results From 5 Months!
This service starts soon! Be the first who get's notified when it begins!

This FREE Indicator Can Transform
Your Trading!

FREE Indicator + Telegram Group


Request the Ultimate Double Top/Bottom Indicator which is used by 10,000+ traders.