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

Re: [amibroker] Re: Cycles and Mesa



PureBytes Links

Trading Reference Links

Thanks Ara. Although I have the same rather negative experience when working with Fourier Analysis for financial stuff, I just can not get a better tool to forecast financial time series. That's the reason why I still am looking for FFT solutions. Frankly I never tried a FFT Chip. So probably that's one of the first tricks in order to get my 'slow' computer running again when trying to do something in this domain. Can you give me any link to a FFT chip supplier you know ? Also pricing ...

Since one can include DLL's in AFL code, I probably can find FFT software and have what I am looking for in AFL. The limitation you are talking about is correct. But I don't think it is difficult to work with time series having the correct number of bars. That can be done easily in AFL. Unless you have a different opinion about that ...

Ton.

  ----- Original Message ----- 
  From: Ara Kaloustian 
  To: amibroker@xxxxxxxxxxxxxxx 
  Sent: Tuesday, September 05, 2006 11:27 PM
  Subject: Re: [amibroker] Re: Cycles and Mesa



  A FFT chip may be useful. They are pretty inexpensive so if your computer can accomodate one, TJ would probably be willing to provide an interface.

  Also, a FFT software is probably available... if someone could put it in a DLL for use with AB..

  Limitation of FFT is that it requires a fixed number of data points ... 4,8,16,32,64... etc.

  Must also say that I spent a fair amount of time looking at FFT, a few years ago, without much to show for.
    ----- Original Message ----- 
    From: Ton Sieverding 
    To: amibroker@xxxxxxxxxxxxxxx 
    Sent: Tuesday, September 05, 2006 12:36 PM
    Subject: Re: [amibroker] Re: Cycles and Mesa


    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 ?

    Ton.


      ----- Original Message ----- 
      From: Rakesh Sahgal 
      To: amibroker@xxxxxxxxxxxxxxx 
      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 <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 
        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 for free now!