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

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    Range Expansion Index
  4. //  Author/Uploader: Tomasz Janeczko 
  5. //  E-mail:          tj@amibroker.com
  6. //  Date/Time Added: 2001-06-16 08:32:31
  7. //  Origin:          Originally developed by Tom DeMark
  8. //  Keywords:        moving average,oscillator
  9. //  Level:           medium
  10. //  Flags:           indicator
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=15
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=15
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  The DeMark Range Expansion Index is a market-timing oscillator described in
  17. //  DeMark on Day Trading Options, by T.R. DeMark and T.R. Demark, Jr., McGraw
  18. //  Hill, 1999. The oscillator is arithmetically calculated and is designed to
  19. //  overcome problems with exponentially calculated oscillators, like MACD. The
  20. //  TD REI oscillator typically produces values of -100 to +100 with 45 or
  21. //  higher indicating overbought conditions and -45 or lower indicating
  22. //  oversold. Here is how Tom DeMark describes the calculation of Range
  23. //  Expansion Index:
  24. //
  25. //  "The first step in calculating the REI is to add together the respective
  26. //  differences between the current day's high and the high two days earlier
  27. //  and the current day's low and the low two days earlier. These values will
  28. //  be positive or negative depending on whether the current day's high and low
  29. //  are greater or less than the high and low two days earlier. To prevent
  30. //  buying or selling prematurely into a steep price decline or advance, two
  31. //  additional conditions should be met to qualify a positive or negative value
  32. //  on a particular day: 1) either the high two days earlier must be greater
  33. //  than or equal to the close seven or eight days ago, or the current day's
  34. //  high must be greater than or equal to the low five or six days ago; 2)
  35. //  either the low two days earlier must be less than or equal to the close
  36. //  seven or eight days ago, or the current day's low must be less than or
  37. //  equal to the high five or six days ago. If either of these conditions are
  38. //  not satisfied, a zero value is assigned to that day. If they both are, the
  39. //  daily values (the differences between the highs and lows) are summed , and
  40. //  the specific value for that next day is determined. Next, all the positives
  41. //  and negative values are added together over a five-day period. This value
  42. //  is then divided by the absolute value price movement of each day over the
  43. //  five-day period. The numerator of the calculation can be either positive,
  44. //  negative or zero, because each day's value is summed for five days, but the
  45. //  denominator is always positive because it is only concerned with the
  46. //  differential price movement itself. This value is then multiplied by 100.
  47. //  Consequently, the REI can fluctuate between +100 and -100."
  48. //
  49. //------------------------------------------------------------------------------
  50. /* 
  51. ** Tom DeMark's Range Expansion Index 
  52. ** AFL Implementation by Tomasz Janeczko 
  53. */
  54. HighMom = H - Ref( H, -2 );
  55. LowMom = L - Ref( L, -2 );
  56. Cond1 = ( H >= Ref( L,-5) OR H >= Ref( L, -6 ) ); 
  57. Cond2 = ( Ref( H, -2 ) >= Ref( C, -7 ) OR Ref( H, -2 ) >= Ref( C, -8 ) ); 
  58. Cond3 = ( L <= Ref( H, -5 ) OR L <= Ref( H, -6) ); 
  59. Cond4 = ( Ref( L, -2 ) <= Ref( C, -7 ) OR Ref( L, -2 ) <= Ref( C, -8 ) );
  60. Cond = ( Cond1 OR Cond2 ) AND ( Cond3 OR Cond4 );
  61. Num = IIf( Cond, HighMom + LowMom, 0 );
  62. Den = Abs(  HighMom ) + Abs( LowMom );
  63. TDREI = 100 * Sum( Num, 5 )/Sum( Den, 5 ) ;
  64. graph0 = TDREI;