Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
#Multi-MAX-Alerts
//+------------------------------------------------------------------+
//| Multi-MAX-Alerts.mq4 |
//| Hiachiever |
//| http://www.The4xTrader.com |
//+------------------------------------------------------------------+
#property copyright "Hiachiever"
#property link "http://www.The4xTrader.com"
extern string Note1 = " -- Moving Averages --";
extern int MA1.Period = 5;
extern int MA2.Period = 13;
extern int MA3.Period = 34;
extern string MANOTE1 = "METHOD INPUTS:";
extern string MANOTE2 = "0=SMA, 1=EMA, 2=SSMA, 3=LWMA";
extern int MA1.Method = MODE_EMA;
extern int MA2.Method = MODE_EMA;
extern int MA3.Method = MODE_EMA;
extern string MANOTE3 = "PRICE INPUTS:";
extern string MANOTE4 = "0=Close, 1=Open, 2=High, 3=Low";
extern string MANOTE5 = "4=Median, 5=Typical, 6=Weighted";
extern int MA1.Price = PRICE_CLOSE;
extern int MA2.Price = PRICE_CLOSE;
extern int MA3.Price = PRICE_CLOSE;
extern int MA1.Shift = 0;
extern int MA2.Shift = 0;
extern int MA3.Shift = 0;
extern string Note2 = " -- Notes to include in Alerts --";
extern string MA1.Note = ".";
extern string MA2.Note = ".";
extern string MA3.Note = ".";
extern string Note3 = " -- Alert Options --";
extern bool UseMA1Alert = True;
extern bool UseMA2Alert = True;
extern bool UseMA3Alert = True;
extern bool AlertOnBarclose = True;
extern string soundfile = "alert.wav";
extern bool MsgAlerts= true;
extern bool SoundAlerts= true;
extern bool eMailAlerts= false;
double MA1bid = 0;
double MA2bid = 0;
double MA3bid = 0;
datetime MA1.LastTouchUp, MA1.LastTouchDn,MA2.LastTouchUp,MA2.LastTouchDn,MA3.LastTouchUp,MA3.LastTouchDn;
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
string msg;
int BarRef;
double EMA1, EMA2, EMA3;
bool MA1_CrossUp, MA1_CrossDn, MA2_CrossUp, MA2_CrossDn, MA3_CrossUp, MA3_CrossDn;
BarRef = 0;
if (AlertOnBarclose) BarRef = 1;
EMA1 = iMA(NULL, 0, MA1.Period, MA1.Shift, MA1.Method, MA1.Price, BarRef);
EMA2 = iMA(NULL, 0, MA2.Period, MA2.Shift, MA2.Method, MA2.Price, BarRef);
EMA3 = iMA(NULL, 0, MA3.Period, MA3.Shift, MA3.Method, MA3.Price, BarRef);
MA1_CrossUp = (Open[BarRef] < EMA1) && (Close[BarRef] > EMA1);
MA1_CrossDn = (Open[BarRef] > EMA1) && (Close[BarRef] < EMA1);
MA2_CrossUp = (Open[BarRef] < EMA2) && (Close[BarRef] > EMA2);
MA2_CrossDn = (Open[BarRef] > EMA2) && (Close[BarRef] < EMA2);
MA3_CrossUp = (Open[BarRef] < EMA3) && (Close[BarRef] > EMA3);
MA3_CrossDn = (Open[BarRef] > EMA3) && (Close[BarRef] < EMA3);
if(UseMA1Alert && MA1bid !=0)
{
if (MA1.LastTouchUp !=Time[BarRef] && MA1_CrossUp)
{
MA1.LastTouchUp =Time[BarRef];
DoAlerts("Price Crossed up against MA1 - [" + MA1.Period + "]. " +Symbol()+" on time frame "+TF2Str(Period()) + "\nNOTE: " + MA1.Note , "Price Crossed up against MA1 - " + MA1.Period);
}
if (MA1.LastTouchDn !=Time[BarRef] && MA1_CrossDn)
{
MA1.LastTouchDn =Time[BarRef];
DoAlerts("Price Crossed down against MA1 - [" + MA1.Period + "]. " +Symbol()+" on time frame "+TF2Str(Period()) + "\nNOTE: " + MA1.Note , "Price Crossed down against MA1 - " + MA1.Period);
}
}
if(UseMA2Alert && MA2bid !=0)
{
if (MA2.LastTouchUp !=Time[BarRef] && MA2_CrossUp)
{
MA2.LastTouchUp =Time[BarRef];
DoAlerts("Price Crossed up against MA2 - [" + MA2.Period + "]. " +Symbol()+" on time frame "+TF2Str(Period()) + "\nNOTE: " + MA1.Note , "Price Crossed up against MA2 - " + MA2.Period);
}
if (MA2.LastTouchDn !=Time[BarRef] && MA2_CrossDn)
{
MA2.LastTouchDn =Time[BarRef];
DoAlerts("Price Crossed down against MA2 - [" + MA2.Period+ "]. " +Symbol()+" on time frame "+TF2Str(Period()) + "\nNOTE: " + MA1.Note , "Price Crossed down against MA2 - " + MA2.Period);
}
}
if(UseMA3Alert && MA3bid !=0)
{
if (MA3.LastTouchUp !=Time[BarRef] && MA3_CrossUp)
{
MA3.LastTouchUp =Time[BarRef];
DoAlerts("Price Crossed up against MA3 - [" + MA3.Period + "]. " +Symbol()+" on time frame "+TF2Str(Period()) + "\nNOTE: " + MA1.Note , "Price Crossed up against MA3 - " + MA3.Period);
}
if (MA3.LastTouchDn !=Time[BarRef] && MA3_CrossDn)
{
MA3.LastTouchDn =Time[BarRef];
DoAlerts("Price Crossed down against MA3 - [" + MA3.Period + "]. " +Symbol()+" on time frame "+TF2Str(Period()) + "\nNOTE: " + MA1.Note , "Price Crossed down against MA3 - " + MA3.Period);
}
}
MA1bid = Close[BarRef];
MA2bid = Close[BarRef];
MA3bid = Close[BarRef];
return(0);
}
//+------------------------------------------------------------------+
void DoAlerts(string MsgText, string emailsub)
{
if (MsgAlerts) Alert(MsgText);
if (SoundAlerts) PlaySound(soundfile);
if (eMailAlerts) SendMail(emailsub, MsgText);
}
string TF2Str(int period)
{
switch (period)
{
case PERIOD_M1: return("M1");
case PERIOD_M5: return("M5");
case PERIOD_M15: return("M15");
case PERIOD_M30: return("M30");
case PERIOD_H1: return("H1");
case PERIOD_H4: return("H4");
case PERIOD_D1: return("D1");
case PERIOD_W1: return("W1");
case PERIOD_MN1: return("MN");
}
return (Period());
}
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---