//+------------------------------------------------------------------+ //| MBKAsctrend3times.mq4 | //+------------------------------------------------------------------+ #property copyright "MBKAsctrend3times matt kennel" #property link "http://www.metatrader.org" //---- #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Blue #property indicator_color2 Red // Modified by MBK: now have three different timescales (bar lengths) // to combine for final WPR indicator, with further long-term trend indicator. // try on H1 chart with these parameters. extern int RISK=3; //extern int CountBars=2000; extern int NumberofAlerts=0; extern int WPRLength1=9,WPRLength2=33, WPRLength3=77; extern int LToffset=-5; extern double w1=1.0, w2=3.0, w3=1.0; // relative weights int counter=0; //---- buffers double val1[]; double val2[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string short_name; //---- indicator line IndicatorBuffers(2); SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,233); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,234); SetIndexBuffer(0,val1); SetIndexBuffer(1,val2); //---- return(0); } //+------------------------------------------------------------------+ //| SilverTrend_Signal | //+------------------------------------------------------------------+ int start() { //if (CountBars>=Bars) CountBars=Bars; //SetIndexDrawBegin(0,Bars-CountBars+SSP); //SetIndexDrawBegin(1,Bars-CountBars+SSP); int i1,i2,K; double Range,AvgRange,smin,smax,SsMax,SsMin,price; double wprvalue; static bool uptrend,old; bool flag1, flag2; int i,shift,counted_bars=IndicatorCounted(); //if(Bars<=SSP+1) return(0); //---- initial zero //if(counted_bars<SSP+1) // { // for(i=1;i<=SSP;i++) val2[CountBars-i]=0.0; // } ////---- K=33-RISK; // wprlength = 3+RISK*2; uptrend=false; old=false; double sumweights=w1+w2+w3; w1/=sumweights; w2/=sumweights; w3/=sumweights; int SSP=10; for(shift=Bars-SSP; shift>=0; shift--) { Range=0; AvgRange=0; for(i1=shift; i1<=shift+SSP; i1++) {AvgRange=AvgRange+MathAbs(High[i1]-Low[i1]); } Range=AvgRange/(SSP+1); double wprval1=(100-MathAbs(iWPR(Symbol(),Period(),WPRLength1,shift))); double wprval2=(100-MathAbs(iWPR(Symbol(),Period(),WPRLength2,shift))); double wprval3=(100-MathAbs(iWPR(Symbol(),Period(),WPRLength3,shift))); wprvalue=w1*wprval1 + w2*wprval2 + w3*wprval3; // MathPow(wprval1*wprval2*wprval3,1.0/3.0); double wprlong=wprval3; if ((wprvalue < 33-RISK) && (wprlong < 50-LToffset)) { uptrend=false; } if ((wprvalue > 67+RISK) && (wprlong>=50+LToffset)) { uptrend=true; } if (uptrend!=old && uptrend==true) { val1[shift]=Low[shift]-Range*0.8; // lower range counter=0; if (shift==0 && counter<=NumberofAlerts) { // Alert("MBKAsctrend ",Period()," ",Symbol()," BUY"); counter=counter+1; } } if (uptrend!=old && uptrend==false) { counter=0; val2[shift]=High[shift]+Range*0.8; if (shift==0 && counter<=NumberofAlerts) { // Alert("Silver Trend ",Period()," ",Symbol()," SELL"); counter=counter+1; } } Comment(shift); old=uptrend; } return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Indicator Curves created:
Implements a curve of type DRAW_ARROW
Indicators Used:
Larry William percent range indicator
Custom Indicators Used:
Order Management characteristics:
Other Features: