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

Re: [amibroker] Kind Request of Ehlers MAMA, FAMA & Kaufman KAMA Indicators with buy sell signal



PureBytes Links

Trading Reference Links

//KAMA

LBPeriods = Param( "LB Periods", 10, 1, 200, 1 );

FSCPeriods = Param( "FSC Periods", 2, 1, 200, 1 );

SSCPeriods = Param( "SSC Periods", 30, 1, 200, 1 );

FastSmoothConst = 2 / ( FSCPeriods + 1 );

SlowSmoothConst = 2 / ( SSCPeriods + 1 );

Direction = abs( Close - Ref( Close, -LBPeriods ) );

Volatility = Sum( abs( Close - Ref( Close, -1 ) ), LBPeriods );

EfficiencyRatio = Direction / Volatility;

SC = ( EfficiencyRatio * ( FastSmoothConst - SlowSmoothConst ) + 
SlowSmoothConst ) ^ 2;

KAMA = AMA( Close, SC );

Plot( KAMA, "KAMA", ParamColor( "Color", colorYellow ), styleLine );



// MAMA and FAMA

FastLimit = Param( "Fast Limit", 0.5, 0, 10, 0.1 );

SlowLimit = Param( "Slow Limit", 0.05, 0, 1, 0.01 );

Price = ( H + L ) / 2;

Smooth = ( 4 * Price + 3 * Ref( Price, -1 ) + 2 * Ref( Price, -2 ) + Ref( 
Price, -3 ) ) / 10;

Detrender = Smooth;

II2 = Smooth;

Q2 = Smooth;

Re = Smooth;

Im = Smooth;

I1 = Smooth;

Q1 = Smooth;

jl = Smooth;

jQ = Smooth;

Phase = Smooth;

DeltaPhase = Smooth;

Period = Smooth;

PI = 3.1415926;

for ( i = 0; i < BarCount; i++ )

{

if ( i < 6 )

{

// init previous values to avoid problems

// with exp. averaging of uninitialized values

// later

DeltaPhase[ i ] = 0;

II2[ i ] = 1.0;

Q2[ i ] = 1.0;

Re[ i ] = 0;

Im[ i ] = 0;

Period[ i ] = 6;

}

else

{

factor = 0.075 * Period[ i - 1 ] + 0.54;

Detrender[ i ] = ( ( 0.0962 *Smooth[ i ] + 0.5769 * Smooth[ i-2 ] - 0.5769 * 
Smooth[ i-4] - 0.0962 * Smooth[ i-6 ] ) * factor );

Q1[ i ] = ( ( 0.0962 *Detrender[ i ] + 0.5769 * Detrender[ i-2 ] - 0.5769 * 
Detrender[ i-4 ] - 0.0962 * Detrender[ i-6 ] ) * factor );

I1[ i ] = Detrender[ i-3 ];

jl[ i ] = ( ( 0.0962 *I1[ i ] + 0.5769 * I1[ i-2 ] - 0.5769 * I1[ i-4 ] - 
0.0962 * I1[ i-6 ] ) * factor );

jQ[ i ] = ( ( 0.0962 *Q1[ i ] + 0.5769 * Q1[ i-2 ] - 0.5769 * Q1[ i-4 ] - 
0.0962 * Q1[ i-6 ] ) * factor );

II2[ i ] = I1[ i ] - jQ[ i ];

Q2[ i ] = Q1[ i ] + jl[ i ];

II2[ i ] = 0.2 * II2[ i ] + 0.8 * II2[ i-1 ];

Q2[ i ] = 0.2 * Q2[ i ] + 0.8 * Q2[ i-1 ];

Re[ i ] = II2[ i ] * II2[ i-1 ] + Q2[ i ] * Q2[ i-1 ];

Im[ i ] = II2[ i ] * Q2[ i-1 ] - Q2[ i ] * II2[ i-1 ];

Re[ i ] = 0.2 * Re[ i ] + 0.8 * Re[ i-1 ];

Im[ i ] = 0.2 * Im[ i ] + 0.8 * Im[ i-1 ];

Period[ i ] = Period[ i-1 ];

if ( Im[ i ] != 0 AND Re[ i ] != 0 )

Period[ i ] = ( 2 * PI ) / atan( Im[ i ] / Re[ i ] );


if ( Period[ i ] > 1.5 * Period[ i-1 ] )

Period[ i ] = 1.5 * Period[ i-1 ];

if ( Period[ i ] < 0.67 * Period[ i-1 ] )

Period[ i ] = 0.67 * Period[ i-1 ];

if ( Period[ i ] < 6 )

Period[ i ] = 6;

if ( Period[ i ] > 50 )

Period[ i ] = 50;

Period[ i ] = 0.2 * Period[ i ] + 0.8 * Period[ i-1 ];


if ( I1[ i ] != 0 )

Phase[ i ] = ( 180 / PI ) * atan( Q1[ i ] / I1[ i ] );

DeltaPhase[ i ] = Phase[ i-1 ] - Phase[ i ];

if ( DeltaPhase[ i ] < 1 )

DeltaPhase[ i ] = 1;

}

}

DeltaPhase = DeltaPhase;

alpha = FastLimit / DeltaPhase;

alpha = Min( alpha, FastLimit ); // not more than fast limit

alpha = Max( alpha, SlowLimit ); // not less than slow limit

MAMA = AMA( Price, alpha );

FAMA = AMA( MAMA, 0.5 * alpha );

Plot( MAMA, "MAMA", ParamColor( "MAMA Color", colorYellow ), styleLine );

Plot( FAMA, "FAMA", ParamColor( "FAMA Color", colorRed ), styleLine );



----- Original Message ----- 
From: "ihumbleone" <ihumbleone@xxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Saturday, September 27, 2008 5:31 AM
Subject: [amibroker] Kind Request of Ehlers MAMA, FAMA & Kaufman KAMA 
Indicators with buy sell signal


> Hi all,
> Im a newbie to AFL programming.
>
> May you anyone kindly assist me i have been searching  Amibroker AFL
> Formula for for Ehlers MESA Adaptive Moving Average (MAMA and FAMA)
> with buy sell signals and  Kaufman's Adaptive Moving Average KAMA but
> in vain.
>
> It would be great if you can share the formulas if you have them.
>
>
> "The MESA Adaptive Moving Average (MAMA) adapts to price movement
> based on the rate of change of phase as measured by the Hilbert
> Transform Discriminator (Technical Analysis of Stocks and Commodities
> magazine, December 2000). This method features a fast attack average
> and a slow decay average so that composite average rapidly ratchets
> behind price changes and holds the average value until the next
> ratchet occurs."  The crossing of the MAMA and FAMA lines can be used
> to generate Buy and Sell signals. When the MAMA crosses above the
> FAMA a buy signal is given. Alternatively, when the MAMA crosses
> below the FAMA a sell signal is given.
>
> As for KAMA, Developed by Perry Kaufman, this indicator is a moving
> average that automatically adjusts its speed based on market
> volatility.
>
> Sincere Thanks
> Warmest Rgds
> Ihumbleone
>
>
> ------------------------------------
>
> **** IMPORTANT ****
> This group is for the discussion between users only.
> This is *NOT* technical support channel.
>
> *********************
> TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail directly to
> SUPPORT {at} amibroker.com
> *********************
>
> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> http://www.amibroker.com/devlog/
>
> For other support material please check also:
> http://www.amibroker.com/support.html
>
> *********************************
> Yahoo! Groups Links
>
>
>
> 



------------------------------------

**** IMPORTANT ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

*********************
TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com
*********************

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html

*********************************
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/