Dynamic Momentum Index.afl
上传用户:shiqiang
上传日期:2009-06-12
资源大小:1289k
文件大小:4k
源码类别:

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    Dynamic Momentum Index
  4. //  Author/Uploader: jayson casavant 
  5. //  E-mail:          jcasavant@verizon.net
  6. //  Date/Time Added: 2003-08-07 17:26:56
  7. //  Origin:          
  8. //  Keywords:        DMI
  9. //  Level:           medium
  10. //  Flags:           indicator
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=295
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=295
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  Description
  17. //
  18. //  The Dynamic Momentum Index (DMI) was developed by Tushar Chande and Stanley
  19. //  Kroll. The indicator is covered in detail in their book The New Technical
  20. //  Trader.
  21. //
  22. //  The DMI is identical to Welles Wilder’s Relative Strength Index
  23. //  except the number of periods is variable rather than fixed. The variability
  24. //  of the time periods used in the DMI is controlled by the recent volatility
  25. //  of prices. The more volatile the prices, the more sensitive the DMI is to
  26. //  price changes. In other words, the DMI will use more time periods during
  27. //  quiet markets, and less during active markets. The maximum time periods the
  28. //  DMI can reach is 30 and the minimum is 3. This calculation method is
  29. //  similar to the Variable Moving Average, also developed by Tushar Chande.
  30. //
  31. //  The advantage of using a variable length time period when calculating the
  32. //  RSI is that it overcomes the negative effects of smoothing, which often
  33. //  obscure short-term moves.
  34. //
  35. //  The volatility index used in controlling the time periods in the DMI is
  36. //  based on a calculation using a five period standard deviation and a ten
  37. //  period average of the standard deviation.
  38. //
  39. //  Interpretation
  40. //
  41. //  Chande recommends using the DMI much the same as the RSI. However, because
  42. //  the DMI is more sensitive to market dynamics, it often leads the RSI into
  43. //  overbought / oversold territories by one or two days.
  44. //
  45. //  Like the RSI, look for overbought (bearish) conditions above 70 and
  46. //  oversold (bullish) conditions below 30. However, before basing any trade
  47. //  off of strict overbought/oversold levels using DMI or any
  48. //  overbought/oversold indicator, Chande recommends that you first qualify the
  49. //  trendiness of the market using indicators such as r-squared or CMO. If
  50. //  these indicators suggest a non-trending market, then trades based on strict
  51. //  overbought/oversold levels should produce the best results. If a trending
  52. //  market is suggested, you can use the DMI to enter trades in the direction
  53. //  of the trend.
  54. //
  55. //------------------------------------------------------------------------------
  56.  //Dynamic Momentum Index Tushar Chande Translated to AFL by Jayson Casavant
  57. //Cmo5 formula
  58. CMO5_1=Sum( IIf( C > Ref( C, -1 ) , ( C - Ref( C ,-1 ) ) ,0 ) ,5 ) ;
  59. CMO5_2=Sum( IIf( C < Ref( C ,-1 ) , ( Ref( C ,-1 ) - C )  ,0 ) ,5 );
  60. CMO5=DEMA(100 * Nz(( CMO5_1 -CMO5_2)  /( CMO5_1+CMO5_2)),3);
  61. //Cmo10 formula
  62. CMO10_1=Sum( IIf( C > Ref( C, -1 ) , ( C - Ref( C ,-1 ) ) ,0 ) ,10 ) ;
  63. CMO10_2=Sum( IIf( C < Ref( C ,-1 ) , ( Ref( C ,-1 ) - C )  ,0 ) ,10 );
  64. CMO10=DEMA(100 * Nz(( CMO10_1 -CMO10_2)  /( CMO10_1+CMO10_2)),3);
  65. //Cmo20 formula
  66. CMO20_1=Sum( IIf( C > Ref( C, -1 ) , ( C - Ref( C ,-1 ) ) ,0 ) ,20 ) ;
  67. CMO20_2=Sum( IIf( C < Ref( C ,-1 ) , ( Ref( C ,-1 ) - C )  ,0 ) ,20 );
  68. CMO20=DEMA(100 * Nz(( CMO20_1 -CMO20_2)  /( CMO20_1+CMO20_2)),3);
  69. // dmi formula
  70. dmi=((StDev(C,5)* CMO5)+(StDev(C,10)* CMO10)+(StDev(C,20)*
  71. CMO20))/(StDev(C,5)+StDev(C,10)+StDev(C,20));
  72. pds=Param("Smoothing",3,1,10,1);
  73. pds1=Param("Trigger Line",5,1,10,1);
  74. Plot(EMA(dmi,pds),"Dynamic Momentum Index",colorWhite,1);
  75. Plot(MA(dmi,pds1),"trigger",colorYellow,1);
  76. Buy=Cross(EMA(dmi,pds),MA(dmi,pds1));
  77. Sell=Cross(MA(dmi,pds1),EMA(dmi,pds));
  78. PlotShapes(IIf(Buy,shapeUpArrow,shapeNone) ,colorBrightGreen);
  79. PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),colorRed);
  80. PlotGrid(70,colorRed);
  81. PlotGrid(30,colorBrightGreen);