.

Dynamic Momentum Index Crossover System - Amibroker AFL Code

Click Image To Enlarge. Please Rate And Comment.

Dynamic Momentum Index Crossover System

//  Description
//
//  The Dynamic Momentum Index (DMI) was developed by Tushar Chande and Stanley
//  Kroll. The indicator is covered in detail in their book The New Technical
//  Trader.
//
//  The DMI is identical to Welles Wilder’s Relative Strength Index
//  except the number of periods is variable rather than fixed. The variability
//  of the time periods used in the DMI is controlled by the recent volatility
//  of prices. The more volatile the prices, the more sensitive the DMI is to
//  price changes. In other words, the DMI will use more time periods during
//  quiet markets, and less during active markets. The maximum time periods the
//  DMI can reach is 30 and the minimum is 3. This calculation method is
//  similar to the Variable Moving Average, also developed by Tushar Chande.
//
//  The advantage of using a variable length time period when calculating the
//  RSI is that it overcomes the negative effects of smoothing, which often
//  obscure short-term moves.
//
//  The volatility index used in controlling the time periods in the DMI is
//  based on a calculation using a five period standard deviation and a ten
//  period average of the standard deviation.
//
//  Interpretation
//
//  Chande recommends using the DMI much the same as the RSI. However, because
//  the DMI is more sensitive to market dynamics, it often leads the RSI into
//  overbought / oversold territories by one or two days.
//
//  Like the RSI, look for overbought (bearish) conditions above 70 and
//  oversold (bullish) conditions below 30. However, before basing any trade
//  off of strict overbought/oversold levels using DMI or any
//  overbought/oversold indicator, Chande recommends that you first qualify the
//  trendiness of the market using indicators such as r-squared or CMO. If
//  these indicators suggest a non-trending market, then trades based on strict
//  overbought/oversold levels should produce the best results. If a trending
//  market is suggested, you can use the DMI to enter trades in the direction
//  of the trend.
//
//------------------------------------------------------------------------------

 //Dynamic Momentum Index Tushar Chande Translated to AFL by Jayson Casavant
//Cmo5 formula
CMO5_1=Sum( IIf( C > Ref( C, -1 ) , ( C - Ref( C ,-1 ) ) ,0 ) ,5 ) ;
CMO5_2=Sum( IIf( C < Ref( C ,-1 ) , ( Ref( C ,-1 ) - C )  ,0 ) ,5 );
CMO5=DEMA(100 * Nz(( CMO5_1 -CMO5_2)  /( CMO5_1+CMO5_2)),3);

//Cmo10 formula
CMO10_1=Sum( IIf( C > Ref( C, -1 ) , ( C - Ref( C ,-1 ) ) ,0 ) ,10 ) ;
CMO10_2=Sum( IIf( C < Ref( C ,-1 ) , ( Ref( C ,-1 ) - C )  ,0 ) ,10 );
CMO10=DEMA(100 * Nz(( CMO10_1 -CMO10_2)  /( CMO10_1+CMO10_2)),3);

//Cmo20 formula
CMO20_1=Sum( IIf( C > Ref( C, -1 ) , ( C - Ref( C ,-1 ) ) ,0 ) ,20 ) ;
CMO20_2=Sum( IIf( C < Ref( C ,-1 ) , ( Ref( C ,-1 ) - C )  ,0 ) ,20 );
CMO20=DEMA(100 * Nz(( CMO20_1 -CMO20_2)  /( CMO20_1+CMO20_2)),3);

// dmi formula
dmi=((StDev(C,5)* CMO5)+(StDev(C,10)* CMO10)+(StDev(C,20)*
CMO20))/(StDev(C,5)+StDev(C,10)+StDev(C,20));
pds=Param("Smoothing",3,1,10,1);
pds1=Param("Trigger Line",5,1,10,1);

Plot(EMA(dmi,pds),"Dynamic Momentum Index",colorWhite,1);
Plot(MA(dmi,pds1),"trigger",colorYellow,1);

Buy=Cross(EMA(dmi,pds),MA(dmi,pds1));
Sell=Cross(MA(dmi,pds1),EMA(dmi,pds));
PlotShapes(IIf(Buy,shapeUpArrow,shapeNone) ,colorBrightGreen);
PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),colorRed);
PlotGrid(70,colorRed);
PlotGrid(30,colorBrightGreen);
Previous Post Next Post