PureBytes Links
Trading Reference Links
|
Hello,
Yes it uses last value. But if you are after finding cycles
you have to assume anyway that given cycle will last at least a bit,
without such assumption there are no cycles :-)
So last value from say one year back should work forward.
Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message -----
From: "vlanschot" <ecbu@xxxxxxxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Thursday, October 12, 2006 12:42 PM
Subject: [amibroker] Re: FFT example (4.86 beta required)
> Thanks TJ,
>
> Just wondering if I am correct that one has to be careful in
> extending this in backtests, since detrending (LR) is based on the
> last value of the regression?
>
> PS
>
> --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@xxx>
> wrote:
>>
>> Hello,
>>
>> Here are few words about new FFT function.
>> It requires AmiBroker 4.86 BETA to run.
>> http://www.amibroker.com/devlog/2006/10/11/amibroker-4860-beta-
> released/
>> ===============
>>
>> FFT( array, len = 0 )
>>
>> performs FFT (Fast Fourier Transform) on last 'len' bars of the
> array, if len is set to zero, then FFT is performed
>> on entire array. len parameter must be even.
>>
>> Result:
>>
>> function returns array which holds FFT bins for first 'len' bars.
> There are len/2 FFT complex bins returned,
>> where bin is a pair of numbers (complex number): first is real part
> of the complex number and second number
>> is the imaginary part of the complex number.
>>
>> result = FFT( array, 256 );
>>
>> where:
>> 0th bin (result[0] and result[1]) represents DC component,
>> 1st bin (result[1 ] and result[2]) represents real and imaginary
> parts of lowest frequency range
>> and so on upto result[ len - 2 ] and result[ len - 1 ]
>>
>> remaining elements of the array are set to zero.
>>
>> FFT bins are complex numbers and do not represent real amplitude
> and phase. To obtain amplitude and
>> phase from bins you need to convert inside the formula. The
> following code snipplet does that:
>>
>> ffc = FFT(data,Len);
>> for( i = 0; i < Len - 1; i = i + 2 )
>> {
>> amp[ i ] = amp[ i + 1 ] = sqrt(ffc[ i ]^ 2 + ffc[ i + 1 ]
> ^2);
>> phase[ i ] = phase[ i + 1 ] = atan2( ffc[ i + 1], ffc[ i ] );
>> }
>>
>> IMPORTANT note: input array for FFT must NOT contain any Null
> values. Use Nz() function to convert Nulls to zeros
>> if you are not sure that input array is free from nulls.
>>
>>
>> Below is example code showing how to use new FFT function in AFL.
>>
>> SetBarsRequired(100000,100000);
>>
>> Len = Param("FFT Length", 1024, 64, 10000, 10 );
>>
>> Len = Min( Len, BarCount );
>>
>> x = BarIndex();
>> x1 = x - BarCount + Len;
>>
>>
>> input = C;
>> a = LastValue( LinRegIntercept( input, Len - 1 ) );
>> b = LastValue( LinRegSlope( input, Len - 1 ) );
>>
>>
>> Lr = a + b * x1;
>>
>> data = input - Lr;// de-trending
>>
>> ffc = FFT(data,Len);
>>
>> for( i = 0; i < Len - 1; i = i + 2 )
>> {
>> amp[ i ] = amp[ i + 1 ] = sqrt(ffc[ i ]^ 2 + ffc[ i + 1 ]^2);
>> phase[ i ] = phase[ i + 1 ] = atan2( ffc[ i + 1], ffc[ i ] );
>> }
>>
>> auto = ParamToggle("Auto dominant cycle", "No|Yes", 1 );
>> sbar = Param( "Which FFT bin", 1, 0, 50 );
>>
>> skipbin1 = ParamToggle("Skip 1st FFT bin", "No|Yes", 1 );
>>
>> if( auto )
>> {
>> sbar = int( LastValue(ValueWhen( amp == LastValue(Highest( IIf(
> skipbin1 AND x < 4, 0 , amp ) )), x / 2 )) );
>> }
>>
>> fv = Status("firstvisiblebar");
>>
>> thisbar = Ref( int(x/2) == sbar, -fv);
>> Plot( Ref(amp,-fv),"amplitude (bin " + Ref( int(x/2), -fv ) +")",
> IIf( thisbar, colorRed, colorBlack ),styleArea);
>>
>> Plot( IIf( BarCount - BarIndex() < Len, data, Null ) , "de-trended
> input ("+Len+" bars)", colorOrange, styleLeftAxisScale );
>> Plot( cos( phase[ sbar * 2 ] + (sbar) * x1 * 2 * 3.1415926 /
> Len ), "dominant cycle "+ Len/(sbar) + "(" + sbar + " bin) bars",
> colorBlue, styleOwnScale );
>>
>> GraphZOrder=1;
>> GraphXSpace = 10;
>>
>> Best regards,
>> Tomasz Janeczko
>> amibroker.com
>>
>
>
>
>
>
> 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 Links
>
>
>
>
>
>
|