MA Cross Alert Once Indicator For MT4

MA Cross Alert Once Indicator For MT4

Table Of Contents:

  1. MA Cross Alert Once Indicator For MT4
  2. Installing the MA Cross Alert Once Indicator For MT4
  3. Parameters of the MA Cross Alert Once Indicator For MT4
  4. Buffers of the MA Cross Alert Once Indicator For MT4
  5. Main Parts Of The Code

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.