İş tamamlandı
İş Gereklilikleri
Hi guys, I have been looking for this indicator online, but have not found anything suitable. Perhaps someone could help me, at least tell me how much this request would likely cost.
I would like an indicator that provides a simple alert if the RSI of a previous candle went below a particular level (or higher than a particular level). I would like to be able to customise the levels.
I would like the indicator to only use the previous candle close because the indicators already out there provide hundreds of spam alerts as it is based on current tick data.
The indicator would need to work on all timeframes.
Someone sent me some modified code of another indicator, but I am still getting plenty of spam alerts. Any help would be appreciated:
//+------------------------------------------------------------------+
//| RSI-Alert.mq4 |
//| Copyright © 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 3
#property indicator_color1 DodgerBlue
#property indicator_color2 LightGray
#property indicator_color3 LightGray
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 1
#property indicator_style1 STYLE_SOLID
#property indicator_style2 STYLE_DOT
#property indicator_style3 STYLE_DOT
//---- input parameters
extern int RSIPeriod=14;
extern int ApplyTo=0;
extern bool AlertMode=true;
extern int OverBought=70;
extern int OverSold=30;
//---- 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,period,PRICE_CLOSE,1);
RSIOBBuffer[i]=OverBought;
RSIOSBuffer[i]=OverSold;
i--;
}
if(AlertMode)
{
if(RSIBuffer[1]<OverBought && RSIBuffer[0]>=OverBought)
Alert("RSI "+RSIPeriod+ ", Sell @ Level "+OverBought+" - "+Symbol()+" M"+Period()+" @ "+DoubleToStr(Bid,Digits)+"");
else if(RSIBuffer[1]>OverSold && RSIBuffer[0]<=OverSold)
Alert("RSI "+RSIPeriod+ ", Buy @ Level "+OverSold+" - "+Symbol()+" M"+Period()+" @ "+DoubleToStr(Bid,Digits)+"");
}
//----
return(0);
}
//+------------------------------------------------------------------+