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@scarlet.be>
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,
-----
Original Message -----
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 for free now!