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

Re: [amibroker] Andrews Pitchfork



PureBytes Links

Trading Reference Links

I will.

----- Original Message ----- 
From: "Graham" <kavemanperth@xxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Wednesday, July 20, 2005 7:07 PM
Subject: Re: [amibroker] Andrews Pitchfork


> Bob, post it to the AFL library if it works
>
> On 7/21/05, Bob Johnson <bjohnson314@xxxxxxxxx> wrote:
>> Thank you Graham.  You're a wonder.  I'll work on incorporating this and
>> repost the code, hopefully tomorrow.
>>
>> Thanks much.
>>
>> Bob.
>>
>> ----- Original Message -----
>> From: "Graham" <kavemanperth@xxxxxxxxx>
>> To: <amibroker@xxxxxxxxxxxxxxx>
>> Sent: Wednesday, July 20, 2005 6:48 PM
>> Subject: Re: [amibroker] Andrews Pitchfork
>>
>>
>> > yes, this example plots straight line on log chart
>> >
>> >
>> > fLine12 = exp( LineArray( fx2, ln(fP2), fx1, ln(fP1), 1, 1 ) );
>> > Plot( fLine12, "Sup Trend", colorViolet,
>> > styleLine|styleThick|styleNoRescale );
>> >
>> > the variables are defined elsewhere in my overall code, but this
>> > example shows where/how to use the LN and EXP functions
>> >
>> > On 7/21/05, Bob Johnson <bjohnson314@xxxxxxxxx> wrote:
>> >> I wrote this over the last couple of weeks and wanted to share it and 
>> >> ask
>> >> for some help.
>> >>
>> >> It uses peak and trough with variable lookback and variable pk/trough 
>> >> pct
>> >> to
>> >> plot Andrews Pitchfork
>> >> relative to the selected bar.  It seems to do a good job of plotting 
>> >> the
>> >> pitchfork on a linear chart using
>> >> the linear equation for a line.
>> >>
>> >> My question is:
>> >>
>> >>  Is there an exponential equation that would allow plotting the 
>> >> pitchfork
>> >> as a curve that appears
>> >>  as straight line on a semilog chart?
>> >>
>> >>  My algebra, trig & calc courses are too far in the past to figure 
>> >> that
>> >> out
>> >> without a few weeks of reading
>> >>  old textbooks.
>> >>
>> >> A couple of usage notes:
>> >>
>> >>   The shift parameter works fine to offset the pitchfork, but it's a 
>> >> lot
>> >> faster to use if you 'eyeball' the shift
>> >>   you want and type it in.  Then fine tune with the slider.  Just
>> >> activating the slider sometimes shifts it
>> >>   clear out of sight since the hi/lo of the shift param is very wide.
>> >>
>> >>   You can't put more than one on a chart.  The variables used in
>> >> calculating the pitchforks would be overwrite
>> >>   each other.
>> >>
>> >>   That actually raises a second question that I think I've seen 
>> >> answered
>> >> in
>> >> this forum before.  Is there an
>> >>   accessable variable Amibroker uses to add '1', '2'  etc. to the
>> >> standard
>> >> indicators?
>> >>   The pitchfork afl could be modified to use varget() & varset() with
>> >> that
>> >> to allow reuse in a chart.
>> >>
>> >> Regards,
>> >>
>> >> Bob.
>> >>
>> >> The indicator:
>> >>
>> >> // Andrews Pitchfork V.2
>> >> // Use Peak() & Trough() to get peaks & troughs.
>> >> // This version deals with adjacent peaks and adjacent
>> >> // troughs, i.e. two peaks without an intervening trough or 
>> >> vice-versa.
>> >> // It goes backwards from the selected bar until it has a set of
>> >> // peak,trough,peak or trough,peak,trough points to use for calulating
>> >> // the pitchfork. When 2 or more peaks or 2 or more troughs are 
>> >> adjacent
>> >> // it only uses the last one, i.e. the rightmost one, of the series.
>> >>
>> >> SetBarsRequired( 999999,999999);
>> >> bi=BarIndex();
>> >> sbi=SelectedValue(bi);
>> >>
>> >> // How many bars to wait before believing the pivot.
>> >> Lookbk=Param("LookBack",5,1,200,1);
>> >>
>> >> // Pct threshhold for peak() & trough()
>> >> Zigpct1=Param("Zigpct1",3.0,1.0,30.0,0.1,0);
>> >>
>> >> // How many bars to extend the pitchfork past the selected bar.
>> >> xtsn=Param("Extension",62,1,200,1);
>> >>
>> >> // Shift to move pitchfork up/down from original position one penny at
>> >> time.
>> >> shift=Param("Shift",0,-2000,2000,0.01);
>> >>
>> >> // The peak/trough lines will be used to determine the y coordinates
>> >> // of the pitchfork's 3 determining points.
>> >> pline1=Peak(H,Zigpct1,1);
>> >> tline1=Trough(L,Zigpct1,1);
>> >>
>> >> // Identify the pivots
>> >> pzag1=pline1 != Ref(pline1,-1);
>> >> tzag1=tline1 != Ref(tline1,-1);
>> >>
>> >> // Get the x,y coordinates of the pivots skipping adjacent
>> >> // peaks and troughs. Go backwards from the current bar minus the
>> >> lookback.
>> >> // These will hold the x,y coordinates of the pivot points in arrays 
>> >> at
>> >> the
>> >> // sbi index.
>> >> zagx1=0;
>> >> zagx2=0;
>> >> zagx3=0;
>> >> zagy1=0;
>> >> zagy2=0;
>> >> zagy3=0;
>> >>
>> >> for ( i = sbi - Lookbk, zagfnd = 0, pzagfnd = 0, tzagfnd = 0 ; i >= 0 
>> >> &&
>> >> zagfnd <= 3; i-- ) {
>> >>   if ( pzag1[i] || tzag1[i] ) {
>> >>      if ( pzag1[i] && NOT pzagfnd ) {
>> >>         zagfnd=zagfnd+1;
>> >>         pzagfnd=1;
>> >>         tzagfnd=0;
>> >>         if ( zagfnd == 1 ) {
>> >>            zagx1[sbi]=i;
>> >>            zagy1[sbi]=pline1[i];
>> >>         } else if (zagfnd == 2) {
>> >>            zagx2[sbi]=i;
>> >>            zagy2[sbi]=pline1[i];
>> >>         } else if (zagfnd == 3) {
>> >>            zagx3[sbi]=i;
>> >>            zagy3[sbi]=pline1[i];
>> >>         }
>> >>      } else if ( tzag1[i] && NOT tzagfnd ) {
>> >>           zagfnd=zagfnd+1;
>> >>           tzagfnd=1;
>> >>           pzagfnd=0;
>> >>           if ( zagfnd == 1 ) {
>> >>              zagx1[sbi]=i;
>> >>              zagy1[sbi]=tline1[i];
>> >>           } else if (zagfnd == 2) {
>> >>              zagx2[sbi]=i;
>> >>              zagy2[sbi]=tline1[i];
>> >>           } else if (zagfnd == 3) {
>> >>              zagx3[sbi]=i;
>> >>              zagy3[sbi]=tline1[i];
>> >>           }
>> >>       }
>> >>   }
>> >> }
>> >>
>> >> // Calculate the Pitchfork itself
>> >> tslope=0;
>> >> tline=0;
>> >> midx=0;
>> >> midy=0;
>> >> Handle=0;
>> >> Top=0;
>> >> Bot=0;
>> >>
>> >> // Midpoint between the rightmost 2 pivots and the slope from the
>> >> // leftmost pivot to the midpoint.
>> >> Midx[sbi]=zagx2[sbi] + (zagx1[sbi]-zagx2[sbi]) / 2;
>> >> Midy[sbi]=zagy1[sbi] + (zagy2[sbi]-zagy1[sbi]) / 2;
>> >> tslope[sbi]=(midy[sbi]-zagy3[sbi]) / (midx[sbi]-zagx3[sbi]);
>> >>
>> >> // Handle first
>> >> for ( j=zagx3[sbi],n=0 ; j < Min(sbi+xtsn,BarCount) ; j++,n++ ) {
>> >>   Handle[j]=zagy3[sbi] + n*tslope[sbi] + shift;
>> >> }
>> >>
>> >> // High & low median lines.
>> >> if ( zagy2[sbi] > zagy1[sbi] ) { // Which one is top?
>> >>   for ( j=zagx2[sbi],n=0 ; j < Min(sbi+xtsn,BarCount) ; j++,n++ ) {
>> >>      top[j]=zagy2[sbi] + n*tslope[sbi] + shift;
>> >>   }
>> >>   for ( j=zagx1[sbi],n=0 ; j < Min(sbi+xtsn,BarCount) ; j++,n++ ) {
>> >>      bot[j]=zagy1[sbi] + n*tslope[sbi] + shift;
>> >>   }
>> >> } else {
>> >>   for ( j=zagx2[sbi],n=0 ; j < Min(sbi+xtsn,BarCount) ; j++,n++ ) {
>> >>      bot[j]=zagy2[sbi] + n*tslope[sbi] + shift;
>> >>   }
>> >>   for ( j=zagx1[sbi],n=0 ; j < Min(sbi+xtsn,BarCount) ; j++,n++ ) {
>> >>      top[j]=zagy1[sbi] + n*tslope[sbi] + shift;
>> >>   }
>> >> }
>> >>
>> >> // I'm using a white background, adjust to your own preferred 
>> >> background
>> >> color
>> >> Hcolor=IIf(Handle==0,colorWhite,IIf(Ref(handle,-1)== 0 AND handle != 
>> >> 0,
>> >> colorWhite,colorRed));
>> >> Tcolor=IIf(Top==0,colorWhite,IIf(Ref(top,-1)== 0 AND top != 0,
>> >> colorWhite,colorRed));
>> >> Bcolor=IIf(Bot==0,colorWhite,IIf(Ref(bot,-1)== 0 AND bot != 0,
>> >> colorWhite,colorRed));
>> >> Plot(Handle,"\nAndrews: pct="+Zigpct1+" lookback="+lookbk+"
>> >> shift="+shift+"
>> >> Handle",Hcolor,styleLine+styleDashed+styleNoRescale);
>> >> Plot(Top,"MLH",Tcolor,styleLine+styleDashed+styleNoRescale);
>> >> Plot(Bot,"MLL",Bcolor,styleLine+styleDashed+styleNoRescale);
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> Please note that this group is for discussion between users only.
>> >>
>> >> To get support from AmiBroker please send an e-mail directly to
>> >> SUPPORT {at} amibroker.com
>> >>
>> >> For other support material please check also:
>> >> http://www.amibroker.com/support.html
>> >>
>> >>
>> >> Yahoo! Groups Links
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >
>> >
>> > --
>> > Cheers
>> > Graham
>> > http://e-wire.net.au/~eb_kavan/
>> >
>> >
>> >
>> > Please note that this group is for discussion between users only.
>> >
>> > To get support from AmiBroker please send an e-mail directly to
>> > SUPPORT {at} amibroker.com
>> >
>> > For other support material please check also:
>> > http://www.amibroker.com/support.html
>> >
>> >
>> > Yahoo! Groups Links
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>>
>>
>>
>>
>>
>> Please note that this group is for discussion between users only.
>>
>> To get support from AmiBroker please send an e-mail directly to
>> SUPPORT {at} amibroker.com
>>
>> For other support material please check also:
>> http://www.amibroker.com/support.html
>>
>>
>> Yahoo! Groups Links
>>
>>
>>
>>
>>
>>
>>
>
>
> -- 
> Cheers
> Graham
> http://e-wire.net.au/~eb_kavan/
>
>
>
> Please note that this group is for discussion between users only.
>
> To get support from AmiBroker please send an e-mail directly to
> SUPPORT {at} amibroker.com
>
> For other support material please check also:
> http://www.amibroker.com/support.html
>
>
> Yahoo! Groups Links
>
>
>
>
>
>
> 




------------------------ Yahoo! Groups Sponsor --------------------~--> 
Try Online Currency Trading with GFT. Free 50K Demo. Trade 
24 Hours. Commission-Free. 
http://us.click.yahoo.com/DldnlA/9M2KAA/U1CZAA/GHeqlB/TM
--------------------------------------------------------------------~-> 

Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com

For other support material please check also:
http://www.amibroker.com/support.html

 
Yahoo! Groups Links

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

<*> 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/