//+------------------------------------------------------------------+ //| Qualitative Quantitative Estimation Indicator for Metatrader 4 | //| Copyright © 2006Roman Ignatov | //|QQEm1_mtf mailto:roman.ignatov@gmail.com | //+------------------------------------------------------------------+ //mod2007fxtsd ki #property copyright "Copyright © 200 Roman Ignatov" #property link "mailto:roman.ignatov@gmail.com" #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 DarkViolet #property indicator_style1 STYLE_SOLID #property indicator_width1 2 #property indicator_color2 Teal #property indicator_style2 4 extern int SF = 5; extern int SF_Mode = 1; extern int RSI_Period = 14; extern int RSI_Price = 0; extern double DARFACTOR = 4.236; extern int TimeFrame = 0; extern string note_TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN|0-CurrentTF"; extern string notes__ = "RSI(14);RsiMa(SF);WildersPeriod(rsi*2-1);MaAtrRsi(WP)"; extern string SF_Rsi_MaMode = "SMA0 EMA1 SMMA2 LWMA3"; extern string SF_Rsi_Price = "0C 1O 2H 3L 4Md 5Tp 6WghC : Md(HL/2)4,Tp(HLC/3)5,Wgh(HLCC/4)6"; string IndicatorFileName; //int RSI_Period = 14; int Wilders_Period; int StartBar; double TrLevelSlow[]; double AtrRsi[]; double MaAtrRsi[]; double Rsi[]; double RsiMa[]; int init() { Wilders_Period = RSI_Period * 2 - 1; if (Wilders_Period < SF) StartBar = SF; else StartBar = Wilders_Period; IndicatorBuffers(6); SetIndexBuffer(0, RsiMa); SetIndexStyle(0, DRAW_LINE); SetIndexDrawBegin(0, StartBar); SetIndexStyle(1, DRAW_LINE); SetIndexBuffer(1, TrLevelSlow); SetIndexDrawBegin(1, StartBar); SetIndexBuffer(2, AtrRsi); SetIndexBuffer(3, MaAtrRsi); SetIndexBuffer(4, Rsi); switch(TimeFrame) { case 1: string TimeFrameStr = "M1" ; break; case 5 : TimeFrameStr = "M5" ; break; case 15 : TimeFrameStr = "M15"; break; case 30 : TimeFrameStr = "M30"; break; case 60 : TimeFrameStr = "H1" ; break; case 240 : TimeFrameStr = "H4" ; break; case 1440 : TimeFrameStr = "D1" ; break; case 10080 : TimeFrameStr = "W1" ; break; case 43200 : TimeFrameStr = "MN1"; break; default : TimeFrameStr = "TF0"; } TimeFrame= MathMax(TimeFrame, Period()); string ShortName; ShortName = "QQEm ( "+SF+","+RSI_Period+" ) ["+TimeFrameStr+"] "; IndicatorShortName (ShortName); IndicatorFileName = WindowExpertName(); SetIndexLabel(0, "RsiMa "+ShortName+""); SetIndexLabel(1, "TrLevelSlow "+ShortName+""); return(0); } int start() { int counted_bars=IndicatorCounted(); int i,limit; if (counted_bars<0) return(-1); if (counted_bars>0) counted_bars--; limit=Bars-counted_bars; if (TimeFrame != Period()) { datetime TimeArray[]; limit = MathMax(limit,TimeFrame/Period()); ArrayCopySeries(TimeArray ,MODE_TIME ,NULL,TimeFrame); for(i=0,int y=0; i<limit; i++) { if(Time[i]<TimeArray[y]) y++; RsiMa [i] =iCustom(NULL,TimeFrame,IndicatorFileName,SF,SF_Mode,RSI_Period,RSI_Price,DARFACTOR,0,y); TrLevelSlow[i]=iCustom(NULL,TimeFrame,IndicatorFileName,SF,SF_Mode,RSI_Period,RSI_Price,DARFACTOR,1,y); } return(0); } int counted; double rsi0, rsi1, dar, tr, dv; if(Bars <= StartBar) return (0); counted = IndicatorCounted(); if(counted < 1) for(i = Bars - StartBar; i < Bars; i++) { TrLevelSlow[i] = 0.0; AtrRsi[i] = 0.0; MaAtrRsi[i] = 0.0; Rsi[i] = 0.0; RsiMa[i] = 0.0; } counted = Bars - counted - 1; for (i = counted; i >= 0; i--) Rsi[i] = iRSI(NULL, 0, RSI_Period, RSI_Price, i); for (i = counted; i >= 0; i--) { RsiMa[i] = iMAOnArray(Rsi, 0, SF, 0, SF_Mode, i); AtrRsi[i] = MathAbs(RsiMa[i + 1] - RsiMa[i]); } for (i = counted; i >= 0; i--) MaAtrRsi[i] = iMAOnArray(AtrRsi, 0, Wilders_Period, 0, SF_Mode, i); i = counted + 1; tr = TrLevelSlow[i]; rsi1 = iMAOnArray(Rsi, 0, SF, 0, SF_Mode, i); while (i > 0) { i--; rsi0 = iMAOnArray(Rsi, 0, SF, 0, SF_Mode, i); dar = iMAOnArray(MaAtrRsi, 0, Wilders_Period, 0, SF_Mode, i) * DARFACTOR; dv = tr; if (rsi0 < tr) { tr = rsi0 + dar; if (rsi1 < dv) if (tr > dv) tr = dv; } else if (rsi0 > tr) { tr = rsi0 - dar; if (rsi1 > dv) if (tr < dv) tr = dv; } TrLevelSlow[i] = tr; rsi1 = rsi0; } return(0); }
Sample
Analysis
Market Information Used:
Series array that contains open time of each bar
Indicator Curves created:
Implements a curve of type DRAW_LINE
Indicators Used:
Relative strength index
Moving average indicator
Custom Indicators Used:
IndicatorFileName
Order Management characteristics:
Other Features: