[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 19:46:28 -0000
  • From: "ricko8294_98" <ricko@xxxxxxxxxx>
  • Subject: [amibroker] Re: Please help with this code - trendline to the right of the chart

PureBytes Links

Trading Reference Links

wow 
Quite complex
Try this.  

I've set the 50 as a parameter, and plotted a vertical green dashed line at the 50th line back.  It also has a green line running from its high all the way to the right.

By the way, the Howlong function is not my own.  Found it on some message here and thought it was neat.  Don't know why or how it works either!!

The code....

Lookback = Param( "Lookback Period", 50, 4, 200, 1 ); // in case you want to change the value on the fly
LBHi = LastValue( Ref( H, -Lookback ) ); // Lookback High value

Plot( C, "", colorYellow, 64 );

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;
}

// next get the barindex() values
FinishBar = EndValue( BarIndex() );
StartBar = FinishBar - Lookback ;

// Lets plot a vertical line at the Lookback start point to know where the analysis begins
Plot( BarIndex() == StartBar , "", colorPaleGreen, styleHistogram | styleDashed | styleOwnScale | styleNoLabel );

//Then plot the High of the Lookback bar - this can be removed if it is in the way
Plot( Howlong( LBHi  , Lookback ), "", colorBrightGreen, 1 | styleNoLabel );

// Now plot all the highs that are higher

for ( i = StartBar; i < Finishbar; i++ )
{
    if ( H[i] >= LBHi  )
    {
        Plot( Howlong( H[i] , Finishbar - i ), "", colorYellow, 1 | styleNoLabel );
    }
}



--- In amibroker@xxxxxxxxxxxxxxx, "tradinghumble" <sharp2be@xxx> wrote:
>
> 
> 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@> 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/