PureBytes Links
Trading Reference Links
|
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/
------------------------ 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/
|