Absolute Strength ProBulider
Forums › ProRealTime forum Italiano › Supporto ProBuilder › Absolute Strength ProBulider
- This topic has 0 replies, 1 voice, and was last updated 8 years ago by Max.
Viewing 1 post (of 1 total)
-
-
08/04/2016 at 8:59 AM #1119812<b>Qui di seguito una domanda inviata a ProRealTime :</b>1AbsoluteStrength_v1.mq4123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196#property indicator_separate_window#property indicator_buffers 4#property indicator_color1 Blue#property indicator_width1 3#property indicator_color2 Red#property indicator_width2 3#property indicator_color3 DeepSkyBlue#property indicator_width3 1#property indicator_color4 Red#property indicator_width4 1//---- input parametersextern int Mode =0; // 0-RSI method; 1-Stoch methodextern int Length= 9; // Periodextern int Smooth= 1; // Period of smoothingextern int Signal= 4; // Period of Signal Lineextern int Price=0; // Price mode : 0-Close,1-Open,2-High,3-Low,4-Median,5-Typical,6-Weightedextern int ModeMA= 3; // Mode of Moving Averageextern int Mode_Histo =3;//---- buffersdouble Bulls[];double Bears[];double AvgBulls[];double AvgBears[];double SmthBulls[];double SmthBears[];double SigBulls[];double SigBears[];//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init(){//---- indicatorsIndicatorBuffers(8);SetIndexStyle(0,DRAW_HISTOGRAM,EMPTY,3);SetIndexBuffer(0,SmthBulls);SetIndexStyle(1,DRAW_HISTOGRAM,EMPTY,3);SetIndexBuffer(1,SmthBears);//SetIndexStyle(2,DRAW_LINE,EMPTY,1);SetIndexBuffer(2,SigBulls);SetIndexStyle(3,DRAW_LINE,EMPTY,1);SetIndexBuffer(3,SigBears);//SetIndexBuffer(4,Bulls);SetIndexBuffer(5,Bears);SetIndexBuffer(6,AvgBulls);SetIndexBuffer(7,AvgBears);//---- name for DataWindow and indicator subwindow labelstring short_name="AbsoluteStrengthHistogram("+Mode+","+Length+","+Smooth+","+Signal+",,"+ModeMA+")";IndicatorShortName(short_name);SetIndexLabel(0,"Bulls");SetIndexLabel(1,"Bears");SetIndexLabel(2,"Bulls");SetIndexLabel(3,"Bears");//SetIndexDrawBegin(0,Length+Smooth+Signal);SetIndexDrawBegin(1,Length+Smooth+Signal);SetIndexDrawBegin(2,Length+Smooth+Signal);SetIndexDrawBegin(3,Length+Smooth+Signal);//SetIndexEmptyValue(0,0.0);SetIndexEmptyValue(1,0.0);SetIndexEmptyValue(2,0.0);SetIndexEmptyValue(3,0.0);SetIndexEmptyValue(4,0.0);SetIndexEmptyValue(5,0.0);SetIndexEmptyValue(6,0.0);SetIndexEmptyValue(7,0.0);//----return(0);}//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+int start(){int shift, limit, counted_bars=IndicatorCounted();double Price1, Price2, smax, smin;//----if(counted_bars < 0)return(-1);if(counted_bars ==0)limit=Bars-Length+Smooth+Signal-1;if(counted_bars < 1)for(int i=1;i<Length+Smooth+Signal;i++){Bulls[Bars-i]=0;Bears[Bars-i]=0;AvgBulls[Bars-i]=0;AvgBears[Bars-i]=0;SmthBulls[Bars-i]=0;SmthBears[Bars-i]=0;SigBulls[Bars-i]=0;SigBears[Bars-i]=0;}if(counted_bars>0) limit=Bars-counted_bars;limit--;//----for( shift=limit; shift>=0; shift--){Price1=iMA(NULL,0,1,0,0,Price,shift);Price2=iMA(NULL,0,1,0,0,Price,shift+1);//----if (Mode==0){Bulls[shift]=0.5*(MathAbs(Price1-Price2)+(Price1-Price2));Bears[shift]=0.5*(MathAbs(Price1-Price2)-(Price1-Price2));}if (Mode==1){smax=High[Highest(NULL,0,MODE_HIGH,Length,shift)];smin=Low[Lowest(NULL,0,MODE_LOW,Length,shift)];Bulls[shift]=Price1 - smin;Bears[shift]=smax - Price1;}}for( shift=limit; shift>=0; shift--){AvgBulls[shift]=iMAOnArray(Bulls,0,Length,0,ModeMA,shift);AvgBears[shift]=iMAOnArray(Bears,0,Length,0,ModeMA,shift);}for( shift=limit; shift>=0; shift--){SmthBulls[shift]=iMAOnArray(AvgBulls,0,Smooth,0,ModeMA,shift);SmthBears[shift]=iMAOnArray(AvgBears,0,Smooth,0,ModeMA,shift);}if(Mode_Histo==1){for( shift=limit; shift>=0; shift--){if(SmthBulls[shift]-SmthBears[shift]>0){SetIndexStyle(0,DRAW_HISTOGRAM,EMPTY,5);SetIndexStyle(1,DRAW_LINE,EMPTY,2);SmthBears[shift]= SmthBears[shift]/Point;SmthBulls[shift]= SmthBulls[shift]/Point;}else{SetIndexStyle(1,DRAW_HISTOGRAM,EMPTY,5);SetIndexStyle(0,DRAW_LINE,EMPTY,2);SmthBears[shift]= SmthBears[shift]/Point;SmthBulls[shift]= SmthBulls[shift]/Point;}} //end for( shift=limit; shift>=0; shift--)} // end if(Mode_Histo == 1)elseif(Mode_Histo==2){for( shift=limit; shift>=0; shift--){if(SmthBulls[shift]-SmthBears[shift]>0){SmthBears[shift]=-SmthBears[shift]/Point;SmthBulls[shift]= SmthBulls[shift]/Point;}else{SmthBulls[shift]=-SmthBulls[shift]/Point;SmthBears[shift]= SmthBears[shift]/Point;}} //end for( shift=limit; shift>=0; shift--)} //end if(Mode_Histo == 2)elseif(Mode_Histo==3){for( shift=limit; shift>=0; shift--){SigBulls[shift]= SmthBulls[shift];SigBears[shift]= SmthBears[shift];if(SmthBulls[shift]-SmthBears[shift]>0)SmthBears[shift]=0;elseSmthBulls[shift]=0;} //end for( shift=limit; shift>=0; shift--)} //end if(Mode_Histo == 3)elseif(Mode_Histo==4){for( shift=limit; shift>=0; shift--){if(SmthBulls[shift]-SmthBears[shift]>0){SigBears[shift]= SmthBears[shift];SmthBears[shift]=0;}else{SigBulls[shift]= SmthBulls[shift];SmthBulls[shift]=0;}} //end for( shift=limit; shift>=0; shift--)} //end if(Mode_Histo == 4)//----return(0);}//+------------------------------------------------------------------+123<b>E un esempio di risposta :</b>1234567891011121314151617181920212223242526272829// Bulls and Bears lines need to be set as histogramsOnce period = 9Once smoothing = 1Once signalPeriod = 4Once length = period + smoothing + signalPeriodavg = Average[length](CustomClose)previousAvg = avg[1]bulls = (Abs(avg - previousAvg) + (avg - previousAvg))/2bears = (Abs(avg - previousAvg) - (avg - previousAvg))/2avgBulls = Average[period](bulls)avgBears = Average[period](bears)smoothBulls = Average[smoothing](avgBulls)smoothBears = Average[smoothing](avgBears)sigBulls = smoothBullssigBears = smoothBearsIf (smoothBulls - smoothBears) > 0 thensmoothBears = 0ElsesmoothBulls = 0EndifReturn smoothBulls coloured (0,200,0) as "Bulls", smoothBears coloured (200,0,0) as "Bears", sigBulls coloured (0,200,0) as "Bulls sig", sigBears coloured (200,0,0) as "Bears sig"
-
AuthorPosts
Viewing 1 post (of 1 total)
Find exclusive trading pro-tools on
Similar topics: