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

Re: [amibroker] Re: Cycles and Mesa



PureBytes Links

Trading Reference Links

If you are interested in Fourier Analysis in AB environment you should refer
to the work of Dmitris Tsokasis who shared his work on Fourier Analysis with
the group. Am pasting below his code. I have never used it and would not
know how to apply it in a meaningful manner. Hope you find it useful.


R


===============================
// Elementary Fourier analysis, by D. Tsokakis, May 2004

t=Cum(1)-1;

A=Param("Rsi",50,1,100,1);

B=Param("smooth",100,1,120,1);

C1=MA(RSI(A),B);

start=Cum(IsTrue(C1))==1;

t1=ValueWhen(start,t);

PlotShapes(shapeDownTriangle*start,colorYellow);

C10=ValueWhen(start,C1);Plot(C1,"C1",colorBlack,8);

GraphXSpace=2;

x = Cum(1);

lastx = LastValue( x );

Daysback = LastValue(Cum(IsTrue(C1)));

aa = LastValue( LinRegIntercept( C1, Daysback) );

bb = LastValue( LinRegSlope( C1, Daysback ) );

yy = Aa + bb * ( x - (Lastx - DaysBack) );

yy=IIf( x >= (lastx - Daysback), yy, -1e10 );

Plot( yy, "yy", colorRed );

detrend=C1-yy;

new1=detrend;Hor=LastValue(Cum(new1)/Cum(IsTrue(C1)));

pi=4*atan(1);n=12;

// Fundamental period, crude approximation

error00=10000;per01=0;g01=0;phi01=0;stg0=0.5;stp0=100;

for(phi=0;phi<2*pi;phi=phi+pi/n)

{

for(g=0.5;g<=8;g=g+stg0)

{

for(per=300;per<=1000;per=per+stp0)

{f=1/per;

y=Hor+g*sin(2*pi*f*(t-t1)+phi);

error=LastValue(Cum(abs(y-new1)));

if(error<error00)

{error00=error;per01=per;g01=g;phi01=phi;}

}}}

f01=1/per01;y01=Hor+g01*sin(2*pi*f01*(t-t1)+phi01);

Plot(y01+yy,"y01",colorSkyblue,4);

Title=Name()+" [ Sample="+WriteVal(Daysback,1.0)+" bars
]"+"\nyS0="+WriteVal(Hor,1.2)+

"\nyS01="+

WriteVal(g01,1.1)+"*sin(2*pi*(1/"+

WriteVal(per01,1.0)+")*(t-t1)+"+

WriteVal(12*phi01/pi,1.0)+"*pi/"+WriteVal(n,1.0)+"), Error1 ="+

WriteVal(LastValue(Cum(abs(y01-new1))),1.0)+", Error1/bar ="+

WriteVal(2*LastValue(Cum(abs(y01-new1)))/Daysback,1.2)+" %";;

// Fundamental period, detailed approximation

error0=10000;per1=0;g1=0;phi1=0;stg=0.5;stp=10;

for(phi=0;phi<2*pi;phi=phi+pi/n)

{

for(g=0.5;g<=8;g=g+stg)

{

for(per=per01-stp0;per<=per01+stp0;per=per+stp)

{f=1/per;

y=Hor+g*sin(2*pi*f*(t-t1)+phi);

error=LastValue(Cum(abs(y-new1)));

if(error<error0)

{error0=error;per1=per;g1=g;phi1=phi;}

}}}

f1=1/per1;y1=Hor+g1*sin(2*pi*f1*(t-t1)+phi1);

Plot(y1+yy,"y1",colorBlue,4);

Title=Title+

"\nyS1="+

WriteVal(g1,1.1)+"*sin(2*pi*(1/"+

WriteVal(per1,1.0)+")*(t-t1)+"+

WriteVal(12*phi1/pi,1.0)+"*pi/"+WriteVal(n,1.0)+"), Error1 ="+

WriteVal(LastValue(Cum(abs(y1-new1))),1.0)+", Error1/bar ="+

WriteVal(2*LastValue(Cum(abs(y1-new1)))/Daysback,1.2)+" %";;

// 2nd Harmonic

error0=10000;

for(phi=0;phi<2*pi;phi=phi+pi/n)

{

for(g=0;g<=8;g=g+0.1)

{

per2=per1/2;f=1/per2;

y2=y1+g*sin(2*pi*f*(t-t1)+phi);

error2=LastValue(Cum(abs(y2-new1)));

if(error2<error0)

{error0=error2;g2=g;phi2=phi;}

}}

f2=1/per2;y2=y1+g2*sin(2*pi*f2*(t-t1)+phi2);

Plot(y2+yy,"y1",colorYellow,8);

Title=Title+

"\nyS2="+

WriteVal(g2,1.1)+"*sin(2*pi*(1/"+

WriteVal(per2,1.0)+")*(t-t1)+"+

WriteVal(12*phi2/pi,1.0)+"*pi/"+WriteVal(n,1.0)+"), Error2 ="+

WriteVal(LastValue(Cum(abs(y2-new1))),1.0)+", Error2/bar ="+

WriteVal(2*LastValue(Cum(abs(y2-new1)))/Daysback,1.2)+" %";;

// 3rd Harmonic

error0=10000;

for(phi=0;phi<2*pi;phi=phi+pi/n)

{

for(g=0;g<=8;g=g+0.1)

{

per3=per2/2;f=1/per3;

y3=y2+g*sin(2*pi*f*(t-t1)+phi);

error3=LastValue(Cum(abs(y3-new1)));

if(error3<error0)

{error0=error3;g3=g;phi3=phi;}

}}

f3=1/per3;y3=y2+g3*sin(2*pi*f3*(t-t1)+phi3);

Plot(y3+yy,"y1",colorWhite,8);

Title=Title+

"\nyS3="+

WriteVal(g3,1.1)+"*sin(2*pi*(1/"+

WriteVal(per3,1.0)+")*(t-t1)+"+

WriteVal(12*phi3/pi,1.0)+"*pi/"+WriteVal(n,1.0)+"), Error3 ="+

WriteVal(LastValue(Cum(abs(y3-new1))),1.0)+", Error3/bar ="+

WriteVal(2*LastValue(Cum(abs(y3-new1)))/Daysback,1.2)+" %";

/*

===============================

On 9/5/06, Ton Sieverding <ton.sieverding@xxxxxxxxxx> wrote:
>
>  I certainly like what I see Fred. But do you have the AFL code for this
> picture also ?
> Is this based on Fourier stuff ? I have tried to find the FTT instructions
> in AFL but cannot find them. Do they exist in AFL or did you use some
> special DLL ?
>
> Kind regards,
> Ton Sieverding.
>
>
> ----- Original Message -----
> *From:* Fred Tonetti <ftonetti@xxxxxxxxxxxxx>
> *To:* amibroker@xxxxxxxxxxxxxxx
> *Sent:* Tuesday, September 05, 2006 6:18 AM
> *Subject:* [amibroker] Re: Cycles and Mesa
>
>  For example ?
>
> <<...>>
>
> ------------------------------
> I am using the free version of SPAMfighter for private users.
> It has removed 8436 spam emails to date.
> Paying users do not have this message in their emails.
> Try SPAMfighter <http://www.spamfighter.com/go.asp?t=249> for free now!
>
> 
>