PureBytes Links
Trading Reference Links
|
Thanks for your help Graham...
Could you elaborate on the third part please? I believe I also
needed to switch my arctan calculation from radians to degrees so on
the numerator I put 6.283185307
--- In amibroker@xxxxxxxxxxxxxxx, Graham <kavemanperth@xxx> wrote:
>
> 3 things about the code
> if (Im[i] != 0 AND Re[i] != 0)
> Period[i]=(360/atan(Im[i]/Re[i]));
> else if (Period[i]>(1.5*(Period[i-1]))) Period[i]=
(1.5*
> (Period[i-1]));
> else if (Period[i]<(.67*Period[i-1]))
> Period[i]=(.67*(Period[i-1]));
> else if (Period[i]<6) Period[i]=6;
> else if (Period[i]>50) Period[i]=50;
> Period=.2*Period[i]+(.8*Period[i-1]);
>
> You are using else if for the first Period check and period is not
> calculated if the first condition if (Im[i] != 0 AND Re[i] !
= 0) is
> not true, so it is only ever using the initiated value of period
from before
> the loop
> Also your last Period calculation is missing the array identifier
so period
> is not always passed to outside the loop except for the last value
of the
> array
> Try this
>
> if (Im[i] != 0 AND Re[i] != 0)
> Period[i]=(360/atan(Im[i]/Re[i]));
>
> if (Period[i]>(1.5*(Period[i-1]))) Period[i]=(1.5*
> (Period[i-1]));
> else if (Period[i]<(.67*Period[i-1]))
> Period[i]=(.67*(Period[i-1]));
> else if (Period[i]<6) Period[i]=6;
> else if (Period[i]>50) Period[i]=50;
> Period[i] =.2*Period[i]+(.8*Period[i-1]);
>
> The 3rd is that you calculation for Re and Im should be inside the
loop as
> you are trying to reference a periovus value of the variables in
their own
> calcualtions, this also occurs for a few other variables. You have
to
> remember that tradestation is based on looping for its basic
coding method.
> This is different to AB whihch calculates each variable for each
bar, TS
> calculates each bar for each variable
> --
> Cheers
> Graham
> AB-Write >< Professional AFL Writing Service
> Yes, I write AFL code to your requirements
> http://www.aflwriting.com
>
> On 23/12/06, jeffro861 <jhend746@xxx> wrote:
> >
> > I got this from tradestation code as seen in the algorithm, but
> > apparently it thinks Period[i]<6. Does anybody have any clues?
> > TIA
> >
> >
> > _SECTION_BEGIN("Ehler's Dominant Cycle1");
> > //derived from
> >
http://www.mesasoftware.com/Seminars/TAG22RocketScience.ppt#294,12,Cy
> > cle Period Code (cont)
> >
> > SetBarsRequired(200,0);
> > P=(H+L)/2;
> >
> > {Period=0; jI=0;jQ=0;I1=0;I2=0;Q2=0;Q1=0;
X1=0;X2=0;Y1=0;Re=0;Im=0;
> > }
> > //Smooth with less than one lag
> > Smoother=(4*P+3*Ref(P,-1) +2*Ref(P,-2) +4*Ref(P,-3))/10;
> >
> > //detrend with linear phase
> > Detrender=(.25*Smoother+.75*Ref(Smoother,-2) -.75*Ref(Smoother,-
4)-
> > .25*Ref(Smoother,-6))*(.046*Ref(period,-1)+.332);
> >
> > //Compute InPhase and Quadrature components
> > jI=.25*I1+.75*Ref(I1,-2) -.75*Ref(I1,-4)-.25*Ref(I1,-6);
> > jQ=.25*Q1+.75*Ref(Q1,-2) -.75*Ref(Q1,-4)-.25*Ref(Q1,-6);
> >
> > //Phasor addition to equalize amplitude due to quadrature
> > calculations (and 3 bar averaging)
> > I2=I1-jQ;
> > Q2=Q1+jI;
> >
> > //Smoothe the I and Q components before applying the
discriminator
> > I2=.15*I2+.85*Ref(I2,-1);
> > Q2=.15*Q2+.85*Ref(Q2,-1);
> >
> > //Homodyne Discriminator
> > //Complex Conjugate Multiply
> > X1=I2*Ref(I2,-1);
> > X2=I2*Ref(Q2,-1);
> > Y1=Q2*Ref(Q2,-1);
> > Y2=Q2*Ref(I2,-1);
> > Re=X1+Y1;
> > Im=X2-Y2;
> > //Smooth to remove undesired cross products
> > Re=.2*Re+.8*Ref(Re,-1);
> > Im=.2*Im+.8*Ref(Im,-1);
> > //Compute cycle period
> > for(i=1;i<BarCount;i++)
> > {
> > if (Im[i] != 0 AND Re[i] != 0)
> > Period[i]=(360/atan(Im[i]/Re[i]));
> > else if (Period[i]>(1.5*(Period[i-1])))
> > Period[i]=(1.5*(Period[i-1]));
> > else if (Period[i]<(.67*Period[i-1]))
> > Period[i]=(.67*(Period[i-1]));
> > else if (Period[i]<6)
> > Period[i]=6;
> > else if (Period[i]>50)
> > Period[i]=50;
> > Period=.2*Period[i]+(.8*Period[i-1]);
> > }
> > Plot(Period,"CyclePeriod",colorRed,styleLine);
> > _SECTION_END();
> >
> >
> >
> > 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 NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> > http://www.amibroker.com/devlog/
> >
> > For other support material please check also:
> > http://www.amibroker.com/support.html
> >
> > Yahoo! Groups Links
> >
> >
> >
> >
>
Content-Description: "AVG certification"
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.432 / Virus Database: 268.15.26/598 - Release Date: 12/22/2006 3:22 PM
|