I found this piece of code from another indicator and I dont know if this may help.
Thanks again for taking the time to read this.
extern bool Alerts.OnCurrent = false;
if (Alerts.OnCurrent) int whichBar=0;
else whichBar=1;
if (trend[whichBar]!=trend[whichBar+1])
if (trend[whichBar]==1) doAlert("Check for Short"+" "+ Period()/mes+hr);
else doAlert("Check for Long"+ " "+ Period()/mes+hr);
}
return(0);
}
Please guys somebody give me a hand =(
I really need this indicator.
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
Hi Guys,
1- Can somebody add the code to have the option for alert on current(pop up message only once per current candle) and close candle(only once per close candle)??
Thank very much in advance
//+------------------------------------------------------------------+ //| ATR Trailing Stop.mq4 | //| | //| | //+------------------------------------------------------------------+ #property copyright "Copyright Team Aphid" #property link "" //---- indicator settings #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Purple #property indicator_color2 Purple #property indicator_width2 1 #property indicator_width1 1 //---- indicator parameters extern int BackPeriod =700; extern int ATRPeriod =2; extern double Factor=1.5; extern bool TypicalPrice=false; //---- indicator buffers double ind_buffer1[]; double ind_buffer2[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- drawing settings SetIndexStyle(0,DRAW_LINE,EMPTY,1); SetIndexDrawBegin(0,ATRPeriod); SetIndexBuffer(0,ind_buffer1); SetIndexStyle(1,DRAW_LINE,EMPTY,1); SetIndexDrawBegin(1,ATRPeriod); SetIndexBuffer(1,ind_buffer2); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2); //---- name for DataWindow and indicator subwindow label IndicatorShortName("ATR Trailing Stop("+ATRPeriod+" * "+Factor+")"); SetIndexLabel(0,"Support"); SetIndexLabel(1,"Resistance"); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| Moving Averages Convergence/Divergence | //+------------------------------------------------------------------+ int start() { int limit; int counted_bars=IndicatorCounted(); double PrevUp, PrevDn; double CurrUp, CurrDn; double PriceLvl; double LvlUp=0; double LvlDn=1000; int Dir=1; int InitDir; //---- check for possible errors if(counted_bars<0) return(-1); //---- last counted bar will be recounted if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; //---- fill in buffervalues InitDir=0; for(int i=BackPeriod; i>=0; i--) { if (TypicalPrice) PriceLvl=(High[i] + Low[i] + Close[i])/3; else PriceLvl=Close[i]; //---- if(InitDir==0) { CurrUp=Close[i] - (iATR(NULL,0,ATRPeriod,i) * Factor); PrevUp=Close[i-1] - (iATR(NULL,0,ATRPeriod,i-1) * Factor); CurrDn=Close[i] + (iATR(NULL,0,ATRPeriod,i) * Factor); PrevDn=Close[i-1] + (iATR(NULL,0,ATRPeriod,i-1) * Factor); //---- if (CurrUp > PrevUp) Dir=1; LvlUp=CurrUp; if (CurrDn < PrevDn) Dir=-1; LvlDn=CurrDn; InitDir=1; } CurrUp=PriceLvl - (iATR(NULL,0,ATRPeriod,i) * Factor); CurrDn=PriceLvl + (iATR(NULL,0,ATRPeriod,i) * Factor); //---- if (Dir==1) { if (CurrUp > LvlUp) { ind_buffer1[i]=CurrUp; LvlUp=CurrUp; } else { ind_buffer1[i]=LvlUp; } ind_buffer2[i]=EMPTY_VALUE; if (Low[i] < ind_buffer1[i]) { Dir=-1; LvlDn=1000; } } if (Dir==-1) { if (CurrDn < LvlDn) { ind_buffer2[i]=CurrDn; LvlDn=CurrDn; } else { ind_buffer2[i]=LvlDn; } ind_buffer1[i]=EMPTY_VALUE; if (High[i] > ind_buffer2[i]) { Dir=1; LvlUp=0; } } } //---- return(0); } //+------------------------------------------------------------------+