[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Re: Please help with this code - trendline to the right of the chart


  • Date: Fri, 12 Feb 2010 14:09:54 -0000
  • From: "tradinghumble" <sharp2be@xxxxxxxxx>
  • Subject: [amibroker] Re: Please help with this code - trendline to the right of the chart

PureBytes Links

Trading Reference Links

Rick, thank you so much for the code. I'm always impressed by people's ability to code in AB... I'm pretty good with coding but some aspects of it just go above my head :-) honestly... I understood most of it but the HowLong function I just can't get it into my hard head.

What I'm looking to do is to draw a trendline from the point where the price was higher than the last 50 bars all the way to the right of the chart and a maximum of say 10 ocurrences...

I saw the example below and is sort of what I'm looking for except that instead the GetYSupport should get the point where the price breaks the high of 50 bars ago... I can't seem to figure it out.

If not too difficult and not too time consuming please share a solution. Thanks for your help.


_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), styleBar);
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,colorLightBlue), 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), colorBlue,colorLightBlue), 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,colorLightBlue), 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), colorBlue,colorLightBlue), 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();

--- In amibroker@xxxxxxxxxxxxxxx, "ricko8294_98" <ricko@xxx> wrote:
>
> 
> try this...
> 
> 
> function Howlong( indicator, Length )
> // a length of 0 will place a dot at the last bar
> {
> 
>     Start = LastValue( Cum( 1 ) - Length ) == Cum( 1 );
>     Start2 =  Cum( Start ) == 1;
>     x = ValueWhen( Start2 , indicator, 1 ) ;
>     return x;
> }
> 
> LBPeriod = Param("Lookback Period",50,5,200,1);
> HHValue = LastValue( Ref( HHV( H, LBPeriod ), -1 ) );
> HHPoint = BarsSince( H == HHValue );
> 
> Plot( C, "", colorRed, 64 );
> trigger = LastValue( Cross( C , HHValue ) );
> 
> if ( trigger  )
> {
>     Plot( Howlong( HHValue , HHPoint ), "", colorYellow, 1 );
> }
> 
> Best regards
> Rick 
> --- In amibroker@xxxxxxxxxxxxxxx, "tradinghumble" <sharp2be@> wrote:
> >
> > I would like have a trendline every time the Close is higher than the last 50 closes... the trendline should be drawn from the point all the way to the right of the chart.
> > 
> > Can anyone please point me in the right direction?
> >
>




------------------------------------

**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

TO GET TECHNICAL SUPPORT send an e-mail directly to 
SUPPORT {at} amibroker.com

TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    amibroker-digest@xxxxxxxxxxxxxxx 
    amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/