Download Price Level Alert – Line Break Alert MT4 Indicator

price-0There are times that the market waits for important events or just lacks liquidity during the Asian session. It is pretty boring sitting in front of the screen and waiting for a support/resistance breakout to open a position. Price level alert indicator is just for times likes that. You can set the levels and this indicator will warn you when those levels are broken. You can modify audio alert as well.

Price Level Alert – Line Break Alert MT4 Indicator – This is very useful indicator, when you wait to price reach some level, where you want to open trade, this indicator will alert you. When you set-up your price level indicator will draw green line at that level…

Just insert price in Value for Price1 – see image above.

 

[php]</pre>
//+——————————————————————+
//| JC – Line Break Alert.mq4 |
//| Juan Carlos Christensen. |
//| http://www.eumefinancial.com |
//+——————————————————————+
#property copyright “Juan Carlos Christensen.”
#property link “http://www.eumefinancial.com”

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_width1 2
#property indicator_width2 2

//—- input parameters
extern double Price1 = 2.0000;
extern double Price2 = 2.0000;
extern string Modes = “0- Line; 1- Channel”;
extern int Mode = 0;
extern bool UseSoundAlert = True;
extern string SoundFile = “alert.wav”;
extern int PlaySoundNTimes = 1;
extern bool UseAlertPopUp = True;
extern bool UseTickMode = True;
extern bool UseSendMail = False;
extern bool DeactivateOnAlert = True;

double PRICE1[];
double PRICE2[];
bool DidBreakout = False;
//+——————————————————————+
//| Custom indicator initialization function |
//+——————————————————————+
int init()
{
//—- indicators
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,PRICE1);

SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,PRICE2);

return(0);
}
//+——————————————————————+
//| Custom indicator deinitialization function |
//+——————————————————————+
int deinit()
{
//—-
//ObjectDelete(“Price1”);
//ObjectDelete(“Price2”);
//—-
return(0);
}
//+——————————————————————+
//| Custom indicator iteration function |
//+——————————————————————+
int start()
{
//—-

switch(Mode)
{
case 0:
CrossingPrice1Only();
break;
case 1:
ChannelBreakOut();
break;
default:
CrossingPrice1Only();
}

//—-
return(0);
}
//+——————————————————————+

void CrossingPrice1Only()
{
int counted_bars =IndicatorCounted();
int pos =Bars-counted_bars;

double LastPrice;
double CurrentPrice;
int x;

while(pos>=0)
{
PRICE1[pos]= Price1;

pos–;
}

if(UseTickMode)
{
LastPrice = iClose(NULL, 0, 1);
CurrentPrice = iClose(NULL, 0, 0);
}
else if(UseTickMode == False)
{
LastPrice = iOpen(NULL, 0, 1);
CurrentPrice = iOpen(NULL, 0, 0);
}

//int counter = 0;

//while(!ObjectCreate(“Price1_” + counter, OBJ_HLINE, 0, 0, Price1) && counter < 100)
//{
// counter++;
//}

//ObjectSet(“Price1”, OBJPROP_COLOR, Green);

if(((LastPrice < Price1) && (CurrentPrice >= Price1)) || ((LastPrice > Price1) && (CurrentPrice <= Price1)) && !DidBreakout)
{
if(DeactivateOnAlert)
{
DidBreakout = True;
}

if(UseSoundAlert)
{
for(x=0;x<=PlaySoundNTimes;x++)
{
PlaySound(SoundFile);
}
}

if(UseAlertPopUp)
{
Alert(“Price Crossing Alert Line at “, Price1, “!”);
}

if(UseSendMail)
{
SendMail(“Price Crossing Alert Line at ” + Price1 + “!”, “This is an email from the JC – Line Break Alert indicator. Price is crossing your alert line at ” + Price1 + “!”);
}
}
}

//+——————————————————————+

void ChannelBreakOut()
{
int counted_bars = IndicatorCounted();
int pos = Bars-counted_bars;

double LastPrice;
double CurrentPrice;
int x;

while(pos>=0)
{
PRICE1[pos]= Price1;
PRICE2[pos]= Price2;

pos–;
}

if(UseTickMode)
{
LastPrice = iClose(NULL, 0, 1);
CurrentPrice = iClose(NULL, 0, 0);
}
else if(UseTickMode == False)
{
LastPrice = iOpen(NULL, 0, 1);
CurrentPrice = iOpen(NULL, 0, 0);
}

//int counter = 0;

//while(!ObjectCreate(“Price1_” + counter, OBJ_HLINE, 0, 0, Price1) && counter < 100)
//{
// counter++;
//}

//while((!ObjectCreate(“Price2_” + counter, OBJ_HLINE, 0, 0, Price2)) && counter < 100)
//{
// counter++;
//}

//ObjectSet(“Price1”, OBJPROP_COLOR, Green);
//ObjectSet(“Price2”, OBJPROP_COLOR, Red);

if((LastPrice < Price1) && (CurrentPrice >= Price1) && !DidBreakout)
{
if(DeactivateOnAlert)
{
DidBreakout = True;
}

if(UseSoundAlert)
{
for(x=0;x<=PlaySoundNTimes;x++)
{
PlaySound(SoundFile);
}
}

if(UseAlertPopUp)
{
Alert(“Channel Breaking Up at “, Price1, “!”);
}

if(UseSendMail)
{
SendMail(“Channel Breaking Up at ” + Price1 + “!”, “This is an email from the JC – Line Break Alert indicator. Price broke up your channel alert line at ” + Price1 + “!”);
}
}

if((LastPrice > Price2) && (CurrentPrice <= Price2) && !DidBreakout)
{
if(DeactivateOnAlert)
{
DidBreakout = True;
}

if(UseSoundAlert)
{
for(x=0;x<=PlaySoundNTimes;x++)
{
PlaySound(SoundFile);
}
}

if(UseAlertPopUp)
{
Alert(“Channel Breaking Down at “, Price2, “!”);
}

if(UseSendMail)
{
SendMail(“Channel Breaking Down at ” + Price2 + “!”, “This is an email from the JC – Line Break Alert indicator. Price broke down your channel alert line at ” + Price2 + “!”);
}
}
}

//+——————————————————————+
<pre>[/php]

Click Here to Download

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *