Stock Portfolio Organizer
The ultimate porfolio management solution.
Shares, Margin, CFD's, Futures and Forex
EOD and Realtime
Dividends and Trust Distributions
And Much More ....
WiseTrader Toolbox
#1 Selling Amibroker Plugin featuring:
Advanced Adaptive Indicators
Advanced Pattern Exploration
Neural Networks
And Much More ....
advance trendlines for Amibroker (AFL)
Copy & Paste Friendly
Back
_SECTION_BEGIN("Advanced Trend Lines"); function GetXSupport(Lo, Percentage, Back) { return ((BarCount - 1) - LastValue(TroughBars(Lo, Percentage,Back))); } function GetYSupport(Lo, Percentage, Back) { return (LastValue(Trough(Lo, Percentage, back))); } function GetXResistance(Hi, Percentage, Back) { return ((BarCount - 1) -LastValue(PeakBars(Hi, Percentage, Back))); } function GetYResistance(Hi, Percentage, Back) { return (LastValue(Peak(Hi, Percentage, Back))); } function TD_Supply(P) { return ( P > Ref(P, 1) AND P > Ref(P, -1) AND P > Ref(C, -2)); } function TD_Demand(P) { return ( P < Ref(P, 1) AND P < Ref(P, -1) AND P < Ref(C, -2)); } //////////////////////////////////////////////////////////////////////// //Parameters Percentage = Param("Percentage", 1.5, 0.01, 100. ,0.01); DrawAllLines = ParamToggle("Draw All Lines?", "No|Yes"); Lines = Param("Lines?", 1, 1, BarCount-2); DrawR = ParamList("Resistance Points", "Off|High to High|High to Low", 1); DrawS = ParamList("Support Points", "Off|Low to Low|Low to High", 1); ShowTDP = ParamToggle("Show TD Pionts", "No|Yes", 1); AllOrDownR = ParamToggle("Resistance Direction", "All|Down"); AllOrUpS = ParamToggle("Support Direction", "All|Up"); ShowSR = ParamToggle("Show Vert S/R","No|Yes", 1); SRPer = Param("S/R Percentage", 3, 1); SRBack = Param("S/R Back", 5, 1); str = ""; Res = Sup = 0; Con = 1; //////////////////////////////////////////////////////////////////////// Main = C; Con = ConS = ConR = 1; if(DrawS=="Low to Low") { Support1 = L; Support2 = L; } else { Support1 = L; Support2 = H; } if(DrawR=="High to High") { Resistance1 = H; Resistance2 = H; } else { Resistance1 = H; Resistance2 = L; } //////////////////////////////////////////////////////////////////////// //Plotting Area Plot(Main, "", IIf(C>O,colorGreen, colorRed), styleCandle); if(DrawAllLines) for(i = 2; i<=Lines+1; i++) { if(DrawS!="Off") { x0 = GetXSupport(Support1, Percentage, i); x1 = GetXSupport(Support2, Percentage, i-1); y0 = GetYSupport(Support1, Percentage, i); y1 = GetYSupport(Support2, Percentage, i-1); x = LineArray(x0, y0, x1, y1, 1); if(AllOrUpS) ConS = StrToNum(NumToStr(y0 < y1)); if(Con AND ConS) Plot(x, "", IIf(LastValue(C) < LastValue(x), colorBlue,colorBlue), styleLine|styleThick); } if(DrawR!="Off") { x0 = GetXResistance(Resistance1, Percentage, i); x1 = GetXResistance(Resistance2, Percentage, i-1); y0 = GetYResistance(Resistance1, Percentage, i); y1 = GetYResistance(Resistance2, Percentage, i-1); x = LineArray(x0, y0, x1, y1, 1); if(AllOrDownR) ConR = y0 > y1; if(Con AND ConR) Plot(x, "", IIf(LastValue(C) < LastValue(x), colorRed,colorRed), styleLine|styleThick); } } else { if(DrawS!="Off") { x0 = GetXSupport(Support1, Percentage, Lines+1); x1 = GetXSupport(Support2, Percentage, Lines); y0 = GetYSupport(Support1, Percentage, Lines+1); y1 = GetYSupport(Support2, Percentage, Lines); x = LineArray(x0, y0, x1, y1, 1 ); Sup = LastValue(LinRegSlope(x, Lines+1)); if(AllOrUpS) ConS = y0 < y1; if(Con AND ConS) Plot(x, "", IIf(LastValue(C) < LastValue(x), colorBlue,colorBlue), styleLine|styleThick); } if(DrawR!="Off") { x0 = GetXResistance(Resistance1, Percentage, Lines+1); x1 = GetXResistance(Resistance2, Percentage, Lines); y0 = GetYResistance(Resistance1, Percentage, Lines+1); y1 = GetYResistance(Resistance2, Percentage, Lines); x = LineArray(x0, y0, x1, y1, 1 ); Res = LastValue(LinRegSlope(x, Lines+1)); if(AllOrDownR) ConR = y0 > y1; if(Con AND ConR) Plot(x, "", IIf(LastValue(C) < LastValue(x), colorRed,colorRed), styleLine|styleThick); } str = "\nR Slope=("+Res+"), S Slope=("+Sup+")"; } if(ShowTDP) { PlotShapes(TD_Supply(H)*shapeSmallCircle, colorRed, 0, H, H*.001); PlotShapes(TD_Demand(L)*shapeSmallCircle, colorGreen, 0, L, -L*.001); } if(ShowSR) { for(i=1; i<=SRBack; i++) { x0 = GetXSupport(L, SRPer, i); x1 = BarCount-1; y0 = GetYSupport(L, SRPer, i); x = LineArray(x0, y0, x1, y0, 0); Plot(x, "", IIf(LastValue(C) > x, colorDarkGreen, colorDarkRed), styleLine|styleDashed|styleThick); x0 = GetXResistance(H, SRPer, i); y0 = GetYResistance(H, SRPer, i); x = LineArray(x0, y0, x1, y0, 0); Plot(x, "", IIf(LastValue(C) > x, colorDarkGreen, colorDarkRed), styleLine|styleDashed|styleThick); } } Title =FullName()+" ({{NAME}})\n{{DATE}}\n"+"Open: "+O+", Hi: "+H+", Lo: "+L+",Close: "+C+StrFormat(" (%.2f %.2f\%)", C-Ref(C, -1), SelectedValue(ROC(C, 1)))+str; _SECTION_END();