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!