Stock Portfolio Organizer
The ultimate porfolio management solution.
WiseTrader Toolbox
#1 Selling Amibroker Plugin featuring:
RSI TRENDLINE for Amibroker (AFL)
The formula is a modification of another one, calculating trendlines.
Here it is designed to draw trendlines on an indicator, e.g. RSI.
The most reliable signals occur when the trendline is close to crossing the central line (50).
Short-term price reversals tend to be associated with the third lower indicator top or third higher indicator bottom, ( → arrows ) touching a trendline started 2 significant turning points earlier.
They signal a price reversal, before other indicators confirm it, so it is a good tool for catching possible tops and bottoms.
In the parameters window you can modify the period of lookback to find a significant top or bottom [Trend Per],
RSI period [RSI Per]
and the accuracy of touching the trendline by the RSI indicator [Difference IND from MainTrendLine]
Notice : this formula shows only the latest “immature” trendlines.
A lot of improvements to be added later :
- comparing trends on the price chart and indicator chart
- signal of an indicator trendline breakout before such a breakout occurs on a price chart
and so on …
Screenshots
Similar Indicators / Formulas
Indicator / Formula
// RSI TRENDLINE formula ver 1.0 SetBarsRequired(sbrAll, sbrAll); TP = Param("Trend Per", 300,2,1000); per_RSI= Param("RSI Per", 9, 7, 35,1); IND = RSI(per_RSI); Center = 50 ; Plot( RSI(per_RSI), "", 4, 4); Plot(50,"",1,1) ; // CALCULATE UPTREND startvalue = LastValue( LLV( IND, TP ) ); startbar = LastValue( ValueWhen( IND == startvalue, BarIndex(), 1) ); BP = BarCount - Startbar; secondvalue = LastValue( LLV( IND, BP - 5 ) ); secondbar = LastValue( ValueWhen( IND == secondvalue, BarIndex(), 1) ); BP2 = BarCount - secondbar; thirdvalue = LastValue( LLV( IND, BP2 - 5 ) ); thirdbar = LastValue( ValueWhen( IND == thirdvalue, BarIndex(), 1) ); BP3 = BarCount - thirdbar; fourthvalue = LastValue( LLV( IND, BP3 - 5 ) ); fourthbar = LastValue( ValueWhen( IND ==fourthvalue, BarIndex(), 1) ); BP4 = BarCount - fourthbar; fifthvalue = LastValue( LLV( IND, BP4 - 5 ) ); fifthbar = LastValue( ValueWhen( IND ==fifthvalue, BarIndex(), 1) ); BP5 = BarCount - fifthbar; sixthvalue = LastValue( LLV( IND, BP5 - 5 ) ); sixthbar = LastValue( ValueWhen( IND ==sixthvalue, BarIndex(), 1) ); Low_1= IIf( BarIndex() == startbar, 80, Null); Low_2= IIf( BarIndex() == secondbar, 80, Null); Low_3= IIf( BarIndex() == thirdbar, 80, Null); Low_4= IIf( BarIndex() == fourthbar, 80, Null); Low_5= IIf( BarIndex() == fifthbar, 80, Null); Low_6= IIf( BarIndex() == sixthbar, 80, Null); b = startvalue ; FirstSlope = (secondvalue - b) / (secondbar - startbar) ; FirstTrendline = FirstSlope * ( BarIndex() - startbar ) + b; // Plot( IIf( BarIndex() >= startbar AND FirstTrendline <= 90 , FirstTrendline, Null ) , "FirstTrendline", colorGreen, styleThick +2048 ); SecondSlope = (thirdvalue - b) / (thirdbar - startbar) ; SecondTrendline = SecondSlope * ( BarIndex() - startbar ) + b; ThirdSlope = (fourthvalue - b) / (fourthbar - startbar) ; ThirdTrendline = ThirdSlope * ( BarIndex() - startbar ) + b; FourthSlope = (fifthvalue - b) / (fifthbar - startbar) ; FourthTrendline = FourthSlope * ( BarIndex() - startbar ) + b; FifthSlope = (sixthvalue - b) / (sixthbar - startbar) ; FifthTrendline = FifthSlope * ( BarIndex() - startbar ) + b; MainSlope = IIf( FirstSlope > SecondSlope, IIf( SecondSlope > ThirdSlope, IIf( ThirdSlope > FourthSlope, IIf( FourthSlope > FifthSlope, FifthSlope, FourthSlope),ThirdSlope), SecondSlope), FirstSlope) ; MainLine = MainSlope * ( BarIndex() - startbar ) + b; Plot( IIf( BarIndex() >= startbar, MainLine, Null ) , "MainLine", colorDarkGreen, styleThick ) ; IND_Diff = IIf( BarIndex() >= startbar, abs( IND - MainLine), Null) ; MainTrendLine_Diff = Param("Difference IND from MainTrendLine", 2.5, 0.5,5, 0.5); Cond_Buy = IIf( BarIndex() >= Thirdbar AND IND_Diff <= MainTrendLine_Diff, IND, 0) AND MainLine < 55 ; PlotShapes( IIf( Cond_Buy, shapeUpArrow , shapeNone ), colorGreen ); ///////////////////////////////////////////// // CALCULATE DOWNTREND starthigh = LastValue( HHV( IND, TP ) ); starthighbar = LastValue( ValueWhen( IND == starthigh, BarIndex(), 1) ); HBP = BarCount - starthighbar; secondhigh = LastValue( HHV( IND, HBP - 5 ) ); secondhighbar = LastValue( ValueWhen( IND == secondhigh, BarIndex(), 1) ); HBP2 = BarCount - secondhighbar; thirdhigh = LastValue( HHV( IND, HBP2 - 5 ) ); thirdhighbar = LastValue( ValueWhen( IND == thirdhigh, BarIndex(), 1) ); HBP3 = BarCount - thirdhighbar; fourthhigh = LastValue( HHV( IND, HBP3 - 5 ) ); fourthhighbar = LastValue( ValueWhen( IND ==fourthhigh, BarIndex(), 1) ); HBP4 = BarCount - fourthhighbar; fifthhigh = LastValue( HHV( IND, HBP4 - 5 ) ); fifthhighbar = LastValue( ValueWhen( IND ==fifthhigh, BarIndex(), 1) ); HBP5 = BarCount - fifthhighbar; sixthhigh = LastValue( HHV( IND, HBP5 - 5 ) ); sixthhighbar = LastValue( ValueWhen( IND ==sixthhigh, BarIndex(), 1) ); High_1= IIf( BarIndex() == starthighbar, 90, Null); High_2= IIf( BarIndex() == secondhighbar, 90, Null); High_3= IIf( BarIndex() == thirdhighbar, 90, Null); High_4= IIf( BarIndex() == fourthhighbar, 90, Null); High_5= IIf( BarIndex() == fifthhighbar, 90, Null); High_6= IIf( BarIndex() == sixthhighbar, 90, Null); MainTrendLine_Diff = Param("Difference IND from MainTrendLine", 2.5, 0.5,7, 0.5); d = starthigh ; FirstDownSlope = (secondhigh - d) / (secondhighbar - starthighbar) ; FirstDownTrendline = FirstDownSlope * ( BarIndex() - starthighbar ) + d; SecondDownSlope = (thirdhigh - d) / (thirdhighbar - starthighbar) ; SecondDownTrendline = SecondDownSlope * ( BarIndex() - starthighbar ) + d; ThirdDownSlope = (fourthhigh - d) / (fourthhighbar - starthighbar) ; ThirdDownTrendline = ThirdDownSlope * ( BarIndex() - starthighbar ) + d; FourthDownSlope = (fifthhigh - d) / (fifthhighbar - starthighbar) ; FourthDownTrendline = FourthDownSlope * ( BarIndex() - starthighbar ) + d; FifthDownSlope = (sixthhigh - d) / (sixthhighbar - starthighbar) ; FifthDownTrendline = FifthDownSlope * ( BarIndex() - starthighbar ) + d; MainDownSlope = IIf( FirstDownSlope < SecondDownSlope, IIf( SecondDownSlope < ThirdDownSlope, IIf( ThirdDownSlope < FourthDownSlope, IIf( FourthDownSlope < FifthDownSlope, FifthDownSlope, FourthDownSlope),ThirdDownSlope), SecondDownSlope), FirstDownSlope) ; MainDownLine = IIf( MainDownSlope == 0, Null, MainDownSlope * ( BarIndex() - starthighbar ) + d ) ; Plot( IIf( BarIndex() >= starthighbar, MainDownLine, Null ) , "Main_DOWN_Line", colorViolet, styleThick ) ; IND_Diff = IIf( BarIndex() >= starthighbar, abs( IND - MainDownLine), Null) ; Cond_Sell = IIf( BarIndex() >= Thirdbar AND IND_Diff <= MainTrendLine_Diff, IND, 0) AND MainDownLine > 45 ; PlotShapes( IIf( Cond_Sell, shapeDownArrow , shapeNone ), colorRed ); Title = Name() + "\\c17" + " " +"\\c12" + "RSI" + " " + per_RSI ;
8 comments
Leave Comment
Please login here to leave a comment.
Back
Very well Done. Nice piece of work by you. Highly appreciated
Hi very good work, infact I also arrive to buy/sell indications on similar rsi trendlines. I have much to give you information on this AFL, if you please contact me on my email, I can give you lot of feedbacks for improvements and arriving anaccurate buy sell signal. Please contact me on email: hitechee@rediffmail.com
Thanks Master more power!!!!!
Be careful. I think it is changing the signal when data changed after the signal.
Too Good Sir, it 92% wok perfect………Thanks
When I applied this on my Amibroker 5.6 ver. I am getting a red oscillator. For me no use.
HI WILL YOU PLZ ADD SCAN/EXPLORING TO THIS?
superb.. thanks