//+------------------------------------------------------------------+ //| $ROLLING_RANGE | //| | //| Copyright © 2008, Avery T. Horton, Jr. aka TheRumpledOne | //| | //| PO BOX 43575, TUCSON, AZ 85733 | //| | //| GIFTS AND DONATIONS ACCEPTED | //| | //| therumpldone@gmail.com | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, Avery T. Horton, Jr. aka TRO" #property link "http://www.therumpldone.com/" //---- indicator settings #property indicator_separate_window #property indicator_buffers 0 //#property indicator_minimum 0 //#property indicator_maximum 1 //---- indicator parameters //extern int win = 1; extern int price.x.offset= 0 ;//250 extern int price.y.offset= -160 ;//-160 //---- extern bool show.arrow=true ; extern bool show.value=true ; //extern int myDecimals = 2 ; extern string myFont ="Arial Bold" ; extern int myFontSize =20 ; extern int myArrowSize =40 ; extern int myDigitSize =20 ; extern int xStart =-600 ; extern int xOffSet =100 ; //---- extern string Ind_Name_1 ="$ROLLING_RANGE"; extern string myName ="$ROLLING_RANGE"; extern color myIndColor=DarkGray ; //extern double iParm1 = 0; //extern double iParm2 = 0; extern double iParm3=-100; extern double iParm4=-100; extern double iParm5=-100; extern double iParm6=-100; extern double iParm7=-100; extern double iParm8=-100; extern int iMode =0; //---- extern int myPeriod_1 =5 ; extern int myPeriod_2 =15 ; extern int myPeriod_3 =20 ; extern int myPeriod_4 =30 ; extern int myPeriod_5 =45 ; extern int myPeriod_6 =60 ; //---- extern bool UseValue=false; extern double N_value =-999; extern double NE_value=2; extern double E_value =3; extern double SE_value=1; extern double S_value =-999; //---- extern color N_color =Green; extern color NE_color=Green; extern color E_color =Yellow; extern color SE_color=Red; extern color S_color =Red; //---- buffers string Arrow12="ñ"; // 12 oclock string Arrow2 ="ö"; // 2 oclock string Arrow3 ="ð"; // 3 oclock string Arrow5 ="ø"; // 5 oclock string Arrow6 ="ò"; // 6 oclock //---- string tObjName01 ; string tObjName02 ; string tObjName03 ; string tObjName04 , tObjName05, IndHead ; //---- double open ; double close ; double close1 ; double high ; double high1 ; double low ; double low1 ; double mid ; double mid1 ; double pCount ; //---- int HighDir, LowDir, MidDir, Mid1Dir, CloseDir, ClOpDir ; color HighColor, LowColor, MidColor, Mid1Color, CloseColor ; string PriceDir ; string tPeriod ; double cVal, pVal ; //+------------------------------------------------------------------+ int totalLabels; string labelNames; int corner; int window; string shortName ; int win ; //+------------------------------------------------------------------+ string TimeFrameToString(int tf) { string tfs; switch(tf) { case PERIOD_M1: tfs="M1" ;break; case PERIOD_M5: tfs="M5" ;break; case PERIOD_M15: tfs="M15";break; case PERIOD_M30: tfs="M30";break; case PERIOD_H1: tfs="H1" ;break; case PERIOD_H4: tfs="H4" ;break; case PERIOD_D1: tfs="D1" ;break; case PERIOD_W1: tfs="W1" ;break; case PERIOD_MN1: tfs="MN1"; } return(tfs); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ color fColor( double i) { color rColor ; if(i==1)rColor=NE_color ;else { if(i==0)rColor=E_color ;else { rColor=SE_color; } } //---- return(rColor ); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int fDirection( double i, double j) { int rDir ; if(i > j)rDir=1; else { if(i < j) rDir=-1; else rDir=0; } //---- return(rDir ); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ string fCompass( double i ) { string rCompass ; if(i==1)rCompass=Arrow2 ;else { if(i==0)rCompass=Arrow3 ;else { rCompass=Arrow5; } } //---- return(rCompass ); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() { shortName =MakeUniqueName("CI ",""); labelNames=shortName; IndicatorShortName(shortName); totalLabels =0; //---- return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int deinit() { while(totalLabels>0) { ObjectDelete(StringConcatenate(labelNames,totalLabels)); totalLabels--;} DoDelObj( PERIOD_M1); DoDelObj( PERIOD_M5); DoDelObj( PERIOD_M15 ); DoDelObj( PERIOD_H1); DoDelObj( PERIOD_H4); DoDelObj( PERIOD_D1); DoDelObj( PERIOD_W1); DoDelObj( PERIOD_MN1); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { int xStart2=xStart + xOffSet ; int xStart3=xStart + xOffSet*2 ; int xStart4=xStart + xOffSet*3 ; int xStart5=xStart + xOffSet*4 ; int xStart6=xStart + xOffSet*5 ; int xStart7=xStart + xOffSet*6 ; int xStart8=xStart + xOffSet*7 ; win= WindowFind(shortName); //---- bool sFirst=true ; if(sFirst) { sFirst=false ; ObjectDelete(tObjName04); ObjectsDeleteAll( win, 21); ObjectsDeleteAll( win, 22); ObjectsDeleteAll( win, 23); } /* mladens way of deleting objects for(int i = ObjectsTotal() - 1; i >= 0; i--) { string label = ObjectName(i); if(StringSubstr(label, 0, 15) == "StochDivergence") ObjectDelete(label); } */ if(iParm3 !=-100) { IndHead= myName;} else { IndHead= myName; } // DoHead(IndHead ); DoWork( myPeriod_1); DoShow( myPeriod_1, xStart); DoWork( myPeriod_2); DoShow( myPeriod_2, xStart2); DoWork( myPeriod_3); DoShow( myPeriod_3, xStart3); DoWork( myPeriod_4); DoShow( myPeriod_4, xStart4); DoWork( myPeriod_5); DoShow( myPeriod_5, xStart5); DoWork( myPeriod_6); DoShow( myPeriod_6, xStart6); WindowRedraw(); //---- return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void DoWork( int myPeriodx ) { int myPeriod=1 ; /* if ( Ind_Name_1=="tMid" ) { cVal = (iHigh(NULL, myPeriod, 0 ) + iLow(NULL, myPeriod, 0 ) ) * 0.5 ; pVal = (iHigh(NULL, myPeriod, 1 ) + iLow(NULL, myPeriod, 1 ) ) * 0.5 ; break;} */ while(true) { iParm3=myPeriodx ; if(iParm3==-100) { cVal=iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iMode,0); pVal=iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iMode,1); break; } if(iParm3!=-100 && iParm4==-100 && iParm5==-100 && iParm6==-100 && iParm7==-100) { cVal=iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iMode,0); pVal=iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iMode,1); break; } if(iParm3!=-100 && iParm4!=-100 && iParm5==-100 && iParm6==-100 && iParm7==-100) { cVal=iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iParm4,iMode,0); pVal=iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iParm4,iMode,1); break; } if(iParm3!=-100 && iParm4!=-100 && iParm5!=-100 && iParm6==-100 && iParm7==-100) { cVal=iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iParm4,iParm5,iMode,0); pVal=iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iParm4,iParm5,iMode,1); break; } if(iParm3!=-100 && iParm4!=-100 && iParm5!=-100 && iParm6!=-100 && iParm7==-100) { cVal=iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iParm4,iParm5,iParm6,iMode,0); pVal=iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iParm4,iParm5,iParm6,iMode,1); break; } if(iParm3!=-100 && iParm4!=-100 && iParm5!=-100 && iParm6!=-100 && iParm7!=-100) { cVal=iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iParm4,iParm5,iParm6,iParm7,iMode,0); pVal=iCustom(NULL,myPeriod,Ind_Name_1,iParm3,iParm4,iParm5,iParm6,iParm7,iMode,1); break; } //---- break; } pCount =fDirection( cVal , myPeriodx ); CloseColor=fColor( pCount); PriceDir=fCompass( pCount); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void DoDelObj( int lPeriod ) { tObjName01=labelNames +lPeriod + "XTN950" ; tObjName02=labelNames +lPeriod + "XTN951" ; tObjName03=labelNames +lPeriod + "XTN952" ; //tObjName04 = labelNames + "XIN900" ; tObjName05=labelNames +lPeriod + "XTN955" ; ObjectDelete(tObjName01); ObjectDelete(tObjName02); ObjectDelete(tObjName03); ObjectDelete(tObjName04); ObjectDelete(tObjName05); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void DoShow( int lPeriod , int xInc) { tObjName01=labelNames +lPeriod + "XTN950" ; tObjName02=labelNames +lPeriod + "XTN951" ; tObjName03=labelNames +lPeriod + "XTN952" ; tObjName05=labelNames +lPeriod + "XTN955" ; tPeriod=lPeriod ; // ObjectCreate(tObjName01, OBJ_LABEL, win, 0, 0);//HiLow LABEL ObjectSetText(tObjName01, tPeriod, myFontSize, myFont, CloseColor ); ObjectSet(tObjName01, OBJPROP_CORNER, 0); ObjectSet(tObjName01, OBJPROP_XDISTANCE, xInc+980+price.x.offset); // 760 ObjectSet(tObjName01, OBJPROP_YDISTANCE, 175+price.y.offset); // 160 int sInc=0 ; if(show.arrow) { sInc=50 ; ObjectCreate(tObjName03, OBJ_LABEL, win, 0, 0);//HiLow LABEL ObjectSetText(tObjName03, PriceDir , myArrowSize , "Wingdings" , CloseColor ); ObjectSet(tObjName03, OBJPROP_CORNER, 0); ObjectSet(tObjName03, OBJPROP_XDISTANCE, xInc+980+price.x.offset); // 765 ObjectSet(tObjName03, OBJPROP_YDISTANCE, 210+price.y.offset); } //if(show.arrow) if(show.value) { ObjectCreate(tObjName05, OBJ_LABEL, win, 0, 0);//HiLow LABEL ObjectSetText(tObjName05, DoubleToStr(cVal,0) ,myDigitSize, myFont , CloseColor ); ObjectSet(tObjName05, OBJPROP_CORNER, 0); ObjectSet(tObjName05, OBJPROP_XDISTANCE, xInc+980+price.x.offset); // 765 ObjectSet(tObjName05, OBJPROP_YDISTANCE, sInc+210+price.y.offset); } //if(show.value) } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void DoHead( string dHead ) { tObjName04=labelNames + "XIN900" ; ObjectCreate(tObjName04, OBJ_LABEL, win, 0, 0);//HiLow LABEL ObjectSetText(tObjName04, dHead, myFontSize, myFont, myIndColor ); ObjectSet(tObjName04, OBJPROP_CORNER, 0); ObjectSet(tObjName04, OBJPROP_XDISTANCE, 00+price.x.offset); // 760 ObjectSet(tObjName04, OBJPROP_YDISTANCE, 210+price.y.offset); // 160 } //+------------------------------------------------------------------+ // string next() { totalLabels++; return(totalLabels); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ string MakeUniqueName(string first, string rest) { string result=first+(MathRand()%1001)+rest; while(WindowFind(result)> 0) result=first+(MathRand()%1001)+rest; return(result); } //+------------------------------------------------------------------+
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:
Indicators Used:
Custom Indicators Used:
Ind_Name_1
Order Management characteristics:
Other Features: