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 [email protected], "tradinghumble" <sharp...@...> 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 [email protected], "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 [email protected], "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?
> > >
> >
>


Reply via email to