|
Rakesh,
John Ehler's code is quite usable with AB... it
produces the dominant cycle value. It is a bit CPU intensive but I tried using
it at the start of a new bar (instead of using it with every trade) and that
made the CPU load quite acceptable.
My issue with both Ehler's code anf FFT is that I
was not satisfied with either.
Since you were getting good results with FFT, you
might try Ehler's code.
Theoretically ehler's code should be better since
it looks at the most recent data, while FFT would need much longer data to
produce usefuk cycle lengths.
Good luck
Ara
----- Original Message -----
Sent: Tuesday, September 05, 2006 5:33
PM
Subject: Re: [amibroker] Re: Cycles and
Mesa
Ton
Back in the old MetaStock days I had fiddled around
with using the packaged FFT in MS. I had used it to extract the current
dominant cycle length in a market and then used it to compute studies. The
results were quite satisfactory. Then I changed platforms to AB and the whole
idea got shelved. Subsequently I have tried to find a way of extracting
current dominant cycle length in an issue/market in AB but have not seen any
way of using it which my non-engineering/mathmetician brain could comprehend.
It was in this context I tried DT's code. Unfortunately (a) it was computing
power intensive and (b) the results were beyond my
comprehension so I gave up on it. I still would like to find a way of
ascertaining what the current cycle length is in an issue but have not been
able to make much progress. Perhaps someone on the list could throw up some
ideas which are implementable on the AB platform.
R
On 9/6/06, Ton
Sieverding <[EMAIL PROTECTED]>
wrote:
Thanks Rakesh. I've tried underneath mentioned
AFL code for Fourier analysis. It does something but I have some questions
:
1. I have the feeling that the code uses a lot
of computer power. When modifying the parameters it takes several seconds (
about 5 sec ) before I have a result on the graph. I am using a Ghz 2.6 CPU
with 1GB internal and have never seen my computer so slow. Do you have the
same experience ?
2. What I would like to see is a couple of sine
waves being the harmonics of the original time series. So more or less the
same picture as Fred's Cycles. But that's not what I get. Also the
calculations for the Fourier analysis does not look familiar to me. Where
can I find the logical background behind these formulas ?
-----
Original Message -----
Sent:
Tuesday, September 05, 2006 2:12 PM
Subject:
Re: [amibroker] Re: Cycles and Mesa
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 <[EMAIL PROTECTED]> 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!
__._,_.___
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
SPONSORED LINKS
YAHOO! GROUPS LINKS
__,_._,___
|