MA Cross Alert Once Indicator For MT4
Table Of Contents:
- MA Cross Alert Once Indicator For MT4
- Installing the MA Cross Alert Once Indicator For MT4
- Parameters of the MA Cross Alert Once Indicator For MT4
- Buffers of the MA Cross Alert Once Indicator For MT4
- 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.
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); }