//+------------------------------------------------------------------+ //| Qualitative Quantitative Estimation Indicator with Alerts | //| Copyright © 2006 Roman Ignatov | //| mailto:roman.ignatov@gmail.com | //| | //| V1. Completed by Roman Ignatov 2006 (roman.ignatov@gmail.com) | //| V2. Completed by Tim Hyder 2008 | //| a) Complete Code rewrite | //| b) Added Audio, Visual and eMail alerts | //| | //| Copyright © 2008, Tim Hyder aka Hiachiever | //| | //| PO BOX 768, Hillarys, Western Australia, Australia, 6923 | //| | //| GIFTS AND DONATIONS ACCEPTED | //| All my indicators should be considered donationware. That is | //| you are free to use them for your personal use, and are | //| under no obligation to pay for them. However, if you do find | //| this or any of my other indicators help you with your trading | //| then any Gift or Donation as a show of appreciation is | //| gratefully accepted. | //| | //| Gifts or Donations also keep me motivated in producing more | //| great free indicators. :-) | //| | //| PayPal - hiachiever@gmail.com | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008 Tim Hyder" #property link "mailto:hiachiever@gmail.com" //---- #define vers "09.Feb.2008" #define major 1 #define minor 0 //---- #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 DodgerBlue #property indicator_style1 STYLE_SOLID #property indicator_width1 2 #property indicator_color2 Yellow #property indicator_style2 STYLE_DOT #property indicator_level1 50 #property indicator_levelcolor Aqua #property indicator_levelstyle STYLE_DOT //---- extern string NOTESETTINGS=" --- INDICATOR SETTINGS ---"; extern int SF=5; extern string NOTEALERTS=" --- Alerts ---"; extern int AlertLevel=50; extern bool MsgAlerts=true; extern bool SoundAlerts=true; extern string SoundAlertFile="alert.wav"; extern bool eMailAlerts=false; //---- int RSI_Period=14; int Wilders_Period; int StartBar,LastAlertBar; datetime LastAlertTime; double TrLevelSlow[]; double AtrRsi[]; double MaAtrRsi[]; double Rsi[]; double RsiMa[]; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() { Wilders_Period=RSI_Period*2-1; if(Wilders_Period0) counted_bars--; int limit=Bars-counted_bars; if(counted_bars==0) limit-=1+1; //---- for(i=limit; i>=0; i--) Rsi[i]=iRSI(NULL,0,RSI_Period,PRICE_CLOSE,i); for(i=limit; i>=0; i--) { RsiMa[i]=iMAOnArray(Rsi,0,SF,0,MODE_EMA,i); AtrRsi[i]=MathAbs(RsiMa[i+1]-RsiMa[i]); } for(i=limit; i>=0; i--) MaAtrRsi[i]=iMAOnArray(AtrRsi,0,Wilders_Period,0,MODE_EMA,i); //---- i=limit-1; tr=TrLevelSlow[i]; rsi1=iMAOnArray(Rsi,0,SF,0,MODE_EMA,i); while(i>0) { i--; rsi0=iMAOnArray(Rsi,0,SF,0,MODE_EMA,i); dar=iMAOnArray(MaAtrRsi,0,Wilders_Period,0,MODE_EMA,i)*4.236; dv=tr; if(rsi0dv) tr=dv; } else if(rsi0>tr) { tr=rsi0-dar; if(rsi1>dv) if(trAlertLevel) || (RsiMa[i+1]>AlertLevel && RsiMa[i]AlertLevel && RsiMa[i]LastAlertBar) { LastAlertBar=Bars; DoAlerts(Msg,Subj); } } //---- return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void DoAlerts(string msgText,string eMailSub) { if(MsgAlerts) Alert(msgText); if(SoundAlerts) PlaySound(SoundAlertFile); 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()); } //+------------------------------------------------------------------+