Stock Portfolio Organizer
The ultimate porfolio management solution.
WiseTrader Toolbox
#1 Selling Amibroker Plugin featuring:
Reverse Force Index for Amibroker (AFL)
Hi there. Here I do a reverse of the Force index rule. But the main kicker is the trail stop mechanism. So as long as your system is positive, you can kick it up using the trailing mechanism. The trailing stop is from the EMA SMA CROSSOVER found here.
However now the signal is too many.. need to find way to tune down. Any feedback and suggestion is welcome.
Indicator / Formula
_SECTION_BEGIN("Reveerse Force Index"); SetPositionSize(1000,spsShares); Period1=Optimize("Period1",17,1,20,1); Period2=Optimize("Period2",5,2,20,1); L1=Optimize("L1",-310000,-500000,50000,10000); L2=Optimize("L2",-410000,-500000,50000,10000); FI =((Close - Ref(Close, -1)) * V); FastAvgFI=LinearReg(FI,Period1); SlowAvgFI=LinearReg(FI,Period2); FI_Col = IIf( (FI <Ref(FI,-1)), colorRed, colorBrightGreen); FastAvgFI_Col = IIf(FastAvgFI < 0, colorRed, colorBlue); SlowAvgFI_Col = IIf(SlowAvgFI < 0, colorRed, colorBlue); Plot(FI, "Force Index", FI_Col, styleHidden|styleThick); Plot(FastAvgFI, "FastAvgFI", FastAvgFI_Col, styleLine|styleThick); Plot(SlowAvgFI, "SlowAvgFI", SlowAvgFI_Col, styleLine|styleThick); Plot(0,"", colorViolet, styleLine | styleThick ); Buy1=((Cross(0,FastAvgFI))OR (Cross(0,SlowAvgFI)AND FastAvgFI<SlowAvgFI)); //(Cross(SlowAvgFI,L1))AND (FastAvgFI>L2) ; Sell1= (Cross(SlowAvgFI,L1))AND (FastAvgFI>L2); //((Cross(0,FastAvgFI))OR (Cross(0,SlowAvgFI)AND FastAvgFI<SlowAvgFI)); Buy= Buy1; Sell= Sell1; Cover= 0; Short= 0; //Long=Flip(Buy,Sell); //Shrt=Flip(Sell,Buy ); SL=Param("trailing stop %", 0.4, 0.1, 10, 0.1); StopLevel1 = 1 - SL/100; StopLevel2 = 1 + SL/100; trailARRAY =trailARRAYs= Null; trailstop =tstop= 0; trailARRAY =trailARRAYs= Null; trailstop =tstop= 0; for( i = 1; i < BarCount; i++ ) { if( trailstop == 0 AND Buy[ i ] ) { trailstop = High[ i ] * stoplevel1; } else Buy[ i ] = 0; // remove excess buy signals if( trailstop > 0 AND (Low[ i ] < trailstop OR Sell1[i]) ) { Sell[ i ] = 1; SellPrice[ i ] = trailstop; trailstop = 0; } if( trailstop > 0 ) { trailstop = Max( High[ i ] * stoplevel1, trailstop ); trailARRAY[ i ] = trailstop; } if( tstop == 0 AND Short[ i ]) { tstop = Low[ i ]*stoplevel2; } else Short[ i ] = 0; // remove excess buy signals if( tstop > 0 AND (High[i]>tstop OR Buy1[i]) ) { Cover[ i ] = 1; CoverPrice[ i ] = tstop; tstop= 0; } if( tstop> 0 ) { tstop= Min( Low[ i ]*stoplevel2, tstop); trailARRAYs[ i ] = tstop; } } PlotShapes( IIf( Sell, shapeDownArrow, shapeNone ), colorRed, 0, High, Offset = -25 ); PlotShapes( IIf( Buy, shapeUpArrow , shapeNone ), colorBrightGreen, 0, Low, Offset = -25 ); Title = Name() + EncodeColor(colorRed) + " Close " + EncodeColor(colorRed) + " = " + WriteVal(Close) + ", " + EncodeColor(colorRed) + "Force Index = " + EncodeColor(colorRed) + WriteVal(FI); _SECTION_END();
0 comments
Leave Comment
Please login here to leave a comment.
Back