Modified Momentum Finder DDT-NB.afl
上传用户:shiqiang
上传日期:2009-06-12
资源大小:1289k
文件大小:5k
源码类别:

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    Modified Momentum Finder DDT-NB
  4. //  Author/Uploader: Frank Snay 
  5. //  E-mail:          fesnay@san.rr.com
  6. //  Date/Time Added: 2002-01-03 15:34:58
  7. //  Origin:          Modification to Dr. S. Nathan Berger's DDT-NB system, first step (Selection of stocks or funds)
  8. //  Keywords:        Ranking System   Momentum Finder
  9. //  Level:           basic
  10. //  Flags:           exploration
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=147
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=147
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  A Ranking System for stocks or mutual funds that uses Rate of Change
  17. //  (momentum) for three time frames and Rate of Change of Rate of Change
  18. //  (acceleration) for two time frames. The system uses weighted Rate of
  19. //  Changes with the most recent periods having more weight. Combined with
  20. //  non-weighted acceleration, changes in momentum are detected earlier than
  21. //  with Rate of Change only.
  22. //
  23. //------------------------------------------------------------------------------
  24. /* Modified Momentum Finder by Frank Snay
  25.    Use to find stocks or mutual funds in First Step of Dr. S. Nathan Berger's
  26.    DDT-NB SYSTEM posted during the final week of 2001.
  27.    Please copy the following formula to the Automatic Analysis window AND
  28.    click on "Explore"*/
  29. /* The description of Dr. Berger's initial routine to "find" the mutual funds
  30.    based upon trying several different time periods, and writing down the results
  31.    for each.  This explore uses three time frames, a user defined Period for
  32.    the longest time frame, and computer derived half and quarter periods of
  33.    the Period.  Several expolres are now reduced to one. 
  34. /* Use any Watch list, use filter, n last days = 1.  
  35.    As I use a select watch list and want results for all stocks, I set the 
  36.    MinChange  to -100%.  User can reset this to any desired level. */
  37.    MinChange = -100  ; /* this is minimum percent change to be filtered */
  38. /* About 8 Trading Weeks for Scan.  User set to desired time */
  39. Period = 40; /* how many bars back */
  40. HalfPeriod = int(.5 + Period/2); // One-half of the period
  41. QuarterPeriod = int(.5 + Period/4);  // One-quarter of the period
  42. ROCPeriod = ROC(Close,Period); //full period rate of change
  43. ROCHalfPeriod = ROC(Close,HalfPeriod);  //Half period rate of change
  44. ROCQuarterPeriod = ROC(Close,QuarterPeriod);  //Quarter period rate of change
  45. /*  Now add the three, weighted for most recent data having most effect 
  46.     This is done by doubling the half, and 4 times the quarter values,
  47.     and dividing the grand total by 3  */
  48. TotalROC = (ROCPeriod + 2*ROCHalfPeriod + 4*ROCQuarterPeriod)/3;
  49. /*  The old physics lessons told us that momentum ( or velocity ) is a rate of
  50.     change per a unit of time.  In this case, closing price per period.  
  51.     The next step is to compute the rate of change of the rate of change.  Back
  52.     to the lessons, this is acceleration.  Acceleration shows the increasing or
  53.     decreasing momentum for a time unit.  To accomplish this, I will take the
  54.     ROCQuarterPeriod today, and subtract the ROCQuarterPeriod a quarter of a
  55.     period ago, ie, ROCQuarterPeriod - ref(ROCQuarterPeriod,-QuarterPeriod).
  56.     I will repeat the process for the ROCHalfPeriod. For ease of
  57.     display, I will call this final result AccTotal and display it before
  58.     TotalROC.  The AccTotal is the TotalROC with the above additivies for 
  59.     acceleration. 
  60.     Very Important - notice how the results based only upon  TotalROC
  61.     are changed by the AccTotal.  The addition of acceleration brings
  62.     the stocks or funds with the latest positive changes in ROC to the top of 
  63.     the list in AccTotal, and if the acceleration is negative, the stock will
  64.     have a lower ranking than with TotalROC.  By themselves per each stock or
  65.     mutual fund, the values in AccTotal and TotalROC mean little - it is ONLY 
  66.     when compared to other stocks or funds that the values take on a meaning. 
  67.     What this means is that the values in AccTotal and TotalROC ARE NOT the 
  68.     expected returns, BUT A RELATIVE RANKING COMPARED TO OTHER STOCKS OR FUNDS.*/
  69. AccTotal = TotalROC + ((ROCHalfPeriod) - Ref(ROCHalfPeriod,-HalfPeriod)) + (ROCQuarterPeriod - Ref(ROCQuarterPeriod,-QuarterPeriod)) ;        
  70. LastBar = Cum(1) == LastValue( Cum(1) );
  71. Filter = ROCPeriod  > MinChange AND LastBar;
  72. NumColumns =5;
  73. Column0 = AccTotal;Column0Name = "AccTotal";Column0Format = 1.2;
  74. Column1 = TotalROC;Column1Name = "TotalROC";Column1Format = 1.2;
  75. Column2 = ROCPeriod;Column2Name = "ROCPeriod";Column2Format = 1.2;
  76. Column3 = ROCHalfPeriod;Column3Name = "ROCHalfPeriod";Column3Format = 1.2;
  77. Column4 = ROCQuarterPeriod;Column4Name = "ROCQuarterPeriod";Column4Format = 1.2;