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" <[EMAIL PROTECTED]nl>
To:
<[EMAIL PROTECTED]ps.com>
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 [EMAIL PROTECTED]ps.com,
"Tomasz Janeczko" <[EMAIL PROTECTED]>
> 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 = "" - 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
>
>
>
>
>
>