| 
 PureBytes Links 
Trading Reference Links 
 | 
Below is a copy of the Fourier analysis that Natasha poster under the (Does 
Amibroker do Fourier transforms) thread. 
This post is a warning that DT was not kidding when he stated that his code 
is a memory hog.  
It took many minutes before it finally appeared on the screen.  I 
just happened to be in the  Yahoo database of the DJI starting in Oct 10, 
1928. 
There was not enough memory left for me to even delete this indicator. I 
finally was able to go to TOOLS>Preferences>Charting, and I changed the 
number of chart sheets to 6, because I had the DT Fourier code in chart pane 
#7.  I then tried to shut down Amibroker in order to restart it, and it 
would not do a proper shutdown.  I had to click on the END NOW button to 
get amibroker to close. 
I then did a restart of my computer, and Amibroker would not open.  I 
waited a few minutes, then did another computer restart, and found that I was 
able to successfully get back to 6 chart sheets. 
Now I am going to try to delete the DT Fourier custom indicator that I have 
not yet saved to a separate folder outside of Amibroker.  
I first tried Unsuccessfully to delete this DT Fourier indicator while 
it was still displayed in chart sheet #7, but there was not enought memory 
left.   
Ron D  
============================ 
// Elementary Fourier analysis, by D. Tsokakis, May 2004 
This code takes a little time to execute and 
also u need memory. If you want a faster execution you can get a graph in exel 
also.Its much faster. 
        
Exel--> Tools -- > AddIns ---> Install if not 
installed 
                    
Tools -- > Data Analysis -- > Fourier Series 
    
      Fourier series 
sinusoids of time and frequency : Transforms to wavelet domain and eliminates 
the time factor. Not very reliable in my opinion.Teriffic 
lag.   Also see wavelet analysis (better) 
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)+" 
%";
/* 
  
       
  
  
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 
 
  
 
| Yahoo! Groups Sponsor | 
 
  ADVERTISEMENT
 ![click here]()  |     | 
 
![]()  |  
 
 
 
Yahoo! Groups Links 
 |   
 |