Price Data Components
Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
StepRSI_v2 with Alert
//+------------------------------------------------------------------+
//| StepRSI_v2.mq4 |
//| Copyright © 2005, TrendLaboratory Ltd. |
//| E-mail: igorad2004@list.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, TrendLaboratory Ltd."
#property link "E-mail: igorad2004@list.ru"
#property indicator_separate_window
#property indicator_minimum 20
#property indicator_maximum 80
#property indicator_buffers 5
#property indicator_color1 Orange
#property indicator_color2 SkyBlue
#property indicator_color3 Magenta
#property indicator_color4 Green
#property indicator_color5 Red
//---- input parameters
extern int PeriodRSI=15;
extern int StepSizeFast=5;
extern int StepSizeSlow=10;
extern bool EMAIL_ON = false;
//extern int HighLow=0;
//---- indicator buffers
double Line1Buffer[];
double Line2Buffer[];
double Line3Buffer[];
double ArrowUp[];
double ArrowDn[];
bool firsttime=true;
bool aBuyalert=false;
bool aSellalert=false;
datetime starttime;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- indicator line
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1);
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);
SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1);
SetIndexStyle(3,DRAW_ARROW,EMPTY,2);
SetIndexStyle(4,DRAW_ARROW,EMPTY,2);
SetIndexBuffer(0,Line1Buffer);
SetIndexBuffer(1,Line2Buffer);
SetIndexBuffer(2,Line3Buffer);
SetIndexBuffer(3,ArrowUp);
SetIndexBuffer(4,ArrowDn);
SetIndexArrow(3,233);
SetIndexArrow(4,234);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
//---- name for DataWindow and indicator subwindow label
short_name="StepRSI("+PeriodRSI+","+StepSizeFast+","+StepSizeSlow+")";
IndicatorShortName(short_name);
SetIndexLabel(0,"RSI");
SetIndexLabel(1,"StepRSI fast");
SetIndexLabel(2,"StepRSI slow");
//----
SetIndexDrawBegin(0,1);
SetIndexDrawBegin(1,1);
SetIndexDrawBegin(2,1);
//----
if(firsttime)
{
starttime=CurTime();
firsttime=false;
}
return(0);
}
//+------------------------------------------------------------------+
//| StepRSI_v2 |
//+------------------------------------------------------------------+
int start()
{
int shift,ftrend,strend;
double fmin0,fmax0,fmin1,fmax1,smin0,smax0,smin1,smax1,RSI0;
int isCrossed;
for(shift=Bars-1;shift>=0;shift--)
{
RSI0=iRSI(NULL,0,PeriodRSI,PRICE_CLOSE,shift);
fmax0=RSI0+2*StepSizeFast;
fmin0=RSI0-2*StepSizeFast;
if (RSI0>fmax1) ftrend=1;
if (RSI0<fmin1) ftrend=-1;
if(ftrend>0 && fmin0<fmin1) fmin0=fmin1;
if(ftrend<0 && fmax0>fmax1) fmax0=fmax1;
smax0=RSI0+2*StepSizeSlow;
smin0=RSI0-2*StepSizeSlow;
if (RSI0>smax1) strend=1;
if (RSI0<smin1) strend=-1;
if(strend>0 && smin0<smin1) smin0=smin1;
if(strend<0 && smax0>smax1) smax0=smax1;
Line1Buffer[shift]=RSI0;
if (ftrend>0) Line2Buffer[shift]=fmin0+StepSizeFast;
if (ftrend<0) Line2Buffer[shift]=fmax0-StepSizeFast;
if (strend>0) Line3Buffer[shift]=smin0+StepSizeSlow;
if (strend<0) Line3Buffer[shift]=smax0-StepSizeSlow;
fmin1=fmin0;
fmax1=fmax0;
smin1=smin0;
smax1=smax0;
} //end for(shift=Bars-1;shift>=0;shift--)
/*-------*/
/* ALERT */
/*-------*/
for(shift=Bars-1;shift>=0;shift--)
{
isCrossed=Crossed(Line2Buffer[shift],Line3Buffer[shift]);
ArrowUp[shift]=EMPTY_VALUE;
ArrowDn[shift]=EMPTY_VALUE;
if(isCrossed==1)
{
ArrowUp[shift]=MathMin(MathMin(Line1Buffer[shift],Line2Buffer[shift]),Line3Buffer[shift])-10;
ArrowDn[shift]=EMPTY_VALUE;
/*
if(Time[shift]>starttime)
{
if(!aBuyalert)
{
PlaySound("StepRSI cable.wav");
if(EMAIL_ON)
SendMail("StepRSI with Alert: BUY signal alert",
", Ask price: " + DoubleToStr(Ask,4) + ", Bid price: " + DoubleToStr(Bid,4) + ", Date: " + TimeToStr(CurTime())
+ " Symbol: " + Symbol() + " Period: " + Period());
aBuyalert=true;
aSellalert=false;
}
}//end if(CurTime()>starttime)
*/
}
if(isCrossed==2)
{
ArrowDn[shift]=MathMax(MathMax(Line1Buffer[shift],Line2Buffer[shift]),Line3Buffer[shift])+10;
ArrowUp[shift]=EMPTY_VALUE;
/*
if(Time[shift]>starttime)
{
if(!aSellalert)
{
PlaySound("StepRSI cable.wav");
if(EMAIL_ON)
SendMail("StepRSI with Alert: SELL signal alert",
", Ask price: " + DoubleToStr(Ask,4) + ", Bid price: " + DoubleToStr(Bid,4) + ", Date: " + TimeToStr(CurTime())
+ " Symbol: " + Symbol() + " Period: " + Period());
aSellalert=true;
aBuyalert=false;
}
}//end if(CurTime()>starttime)
*/
}//end if(isCrossed==2)
} //end for(shift=Bars-1;shift>=0;shift--)
return(0);
}
//***************************************************************************************//
int Crossed(double line1 , double line2)
{
static int last_direction = 0;
static int current_direction = 0;
/*
static bool first_time = true;
if(first_time == true)
{
first_time = false;
return (0);
}
*/
if(line1>line2)current_direction = 1;
if(line1<line2)current_direction = 2;
if(current_direction != last_direction) //changed
{
last_direction = current_direction;
return (last_direction);
}
else return (0); //not changed
}
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---