Add sound alert when the indicators appear?

 
i need help for adding sound alert code. I want the system alert me when the arrow indicator appears? can anyone help me?
 
 

yes thx, for your quick reply..

i already see the article and i still confuse about the loop condition of this codes..

i just want to add PlaySound Function when the loop conditions meet requirement to show the dot indicator.

In my reading : the loop start at line 58 (loop begin???) but for what requirement condition?


//+------------------------------------------------------------------+
//| AltrTrend_Signal_v2_2.mq4 |
//| Ramdass - Conversion only |
//+------------------------------------------------------------------+
#property copyright "Author - OlegVS, GOODMAN"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Crimson

//---- input parameters
extern int K = 30;
extern double Kstop = 0.5;
extern int Kperiod = 150;
extern int PerADX = 14;
extern int CountBars = 350;

//---- buffers
double val1[];
double val2[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- indicator line
IndicatorBuffers(2);
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,108);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,108);
SetIndexBuffer(0,val1);
SetIndexBuffer(1,val2);
if(CountBars>=Bars)
CountBars=Bars;
SetIndexDrawBegin(0, Bars - CountBars + PerADX);
SetIndexDrawBegin(1, Bars - CountBars + PerADX);
//----
return(0);
}
//+------------------------------------------------------------------+
//| AltrTrend_Signal_v2_2 |
//+------------------------------------------------------------------+
int start()
{
int i, shift, counted_bars = IndicatorCounted();
int i1, i2;
double Range, AvgRange, smin, smax, SsMax, SsMin, SSP, price;
bool uptrend, old;
//----
if(Bars <= PerADX + 1)
return(0);
//---- initial zero
if(counted_bars < PerADX + 1) //Loops begin????//
{
for(i = 1; i <= PerADX; i++)
val1[CountBars - i] = 0.0;
for(i = 1; i <= PerADX; i++)
val2[CountBars-i] = 0.0;
}
//----
for(shift = CountBars - PerADX; shift >= 0; shift--)
{
SSP = MathCeil(Kperiod / iADX(NULL, 0, PerADX, PRICE_CLOSE, MODE_MAIN, 1));
Range = 0;
AvgRange = 0;
for(i1 = shift; i1 <= shift + SSP; i1++)
{
AvgRange = AvgRange + MathAbs(High[i1] - Low[i1]);
}
Range = AvgRange / (SSP + 1);
//----
SsMax = High[shift];
SsMin = Low[shift];
for(i2 = shift; i2 <= shift + SSP - 1; i2++)
{
price = High[i2];
if(SsMax < price)
SsMax = price;
price = Low[i2];
if(SsMin >= price)
SsMin = price;
}
//----
smin = SsMin + (SsMax - SsMin)*K / 100;
smax = SsMax - (SsMax - SsMin)*K / 100;
val1[shift] = 0;
val2[shift] = 0;
if(Close[shift] < smin)
{
uptrend = false;
}
if(Close[shift] > smax)
{
uptrend = true;
}
if(uptrend != old && uptrend == true)
{
val1[shift] = Low[shift] - Range*Kstop;
}
if(uptrend != old && uptrend == false)
{
val2[shift] = High[shift] + Range*Kstop;
}
old = uptrend;

}
return(0);
}
//+------------------------------------------------------------------+
Reason: