ATM_Pure_RSI_Alert





//+------------------------------------------------------------------+
//|                                         ATM_Pure_RSI_Alertv3.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//|  V2 DME 4/29/09  added Sound and Sound File option
//|                  restricted alert or sound playing to one bar duration
//|                  
//|                  Alerts or Sounds once per Tick for one bar when RSI passes into overbought or oversold.
//|  v3 DME 5/4/09   added user option to restrict quantity of alers during one bar.
//|                  Note that if RSI tick by tick goes into oversold and back to non oversold and then
//|                  back into oversold the alert counter gets reset each time so you will hear more alerts
//|                 Show Alert will show text in alert text window and play default standard alert sound
//|                 Play sound will allow user to set a custom wav file however the text alert will not show.
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_separate_window
#property indicator_minimum 13
#property indicator_maximum 87
#property indicator_buffers 3
#property indicator_color1 DimGray
#property indicator_color2 Black
#property indicator_color3 Black
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 1
#property indicator_style1 STYLE_SOLID
#property indicator_style2 STYLE_SOLID
#property indicator_style3 STYLE_SOLID
//---- input parameters
extern int RSIPeriod        = 13;    // 13
extern int ApplyTo          =  0;    //  0
extern int OverBought       = 81;    // 81
extern int OverSold         = 19;    // 19
extern bool Show_Alert      =  TRUE;
extern bool Play_Sound      =  FALSE;
extern string SoundFilename = "alert2.wav";
extern int AlertMaxPerBar   = 8;

int AlertCount;
  
//---- buffers
double RSIBuffer[];
double RSIOBBuffer[];
double RSIOSBuffer[];


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
  
//---- indicator lines
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,RSIBuffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,RSIOBBuffer);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,RSIOSBuffer);
//---- name for DataWindow and indicator subwindow label
   short_name="RSI-Alert("+RSIPeriod+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);
   SetIndexLabel(1,"OverBought");
   SetIndexLabel(2,"OverSold");
//----
   SetIndexDrawBegin(0,RSIPeriod);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Relative Strength Index                                          |
//+------------------------------------------------------------------+
int start()
  {
  
   int    i,counted_bars=IndicatorCounted();
//----
   if(Bars<=RSIPeriod) return(0);
//----
   i=Bars-RSIPeriod-1;
   if(counted_bars>=RSIPeriod) i=Bars-counted_bars-1;
   while(i>=0)
   {
      RSIBuffer[i]=iRSI(NULL,0,RSIPeriod,ApplyTo,i);
      RSIOBBuffer[i]=OverBought;
      RSIOSBuffer[i]=OverSold;
      i--;
   }
   
   if(Show_Alert || Play_Sound)
   {
          
      if(RSIBuffer[1]<OverBought && RSIBuffer[0]>=OverBought && 
         AlertCount < AlertMaxPerBar)
      {   
        if(Show_Alert)   Alert(TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent()),":",Seconds(),"  ",
                                                Symbol()," ATM DC Sell Setting Up");
        if(Play_Sound)   PlaySound(SoundFilename);
        AlertCount ++;
      }  
         
      else if(RSIBuffer[1]>OverSold && RSIBuffer[0]<=OverSold &&
              AlertCount < AlertMaxPerBar)
      {    
        if(Show_Alert)   Alert(TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent()),":",Seconds(),"  ",
                                             Symbol()," ATM DC Buy Setting Up");
        if(Play_Sound)   PlaySound(SoundFilename);
        AlertCount ++;
      } 
      else if( RSIBuffer[0]<OverBought &&  RSIBuffer[0]>OverSold)    AlertCount = 0;
        
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:



Indicator Curves created:

Implements a curve of type DRAW_LINE


Indicators Used:

Relative strength index


Custom Indicators Used:

Order Management characteristics:

Other Features:

It issuies visual alerts to the screen
It plays sound alerts