Ehlers Fisher Transform.afl
上传用户:shiqiang
上传日期:2009-06-12
资源大小:1289k
文件大小:2k
源码类别:

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    Ehlers Fisher Transform
  4. //  Author/Uploader: Not Too Swift 
  5. //  E-mail:          
  6. //  Date/Time Added: 2005-03-26 23:33:11
  7. //  Origin:          
  8. //  Keywords:        
  9. //  Level:           medium
  10. //  Flags:           indicator
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=449
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=449
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  The Fisher Transform converts price data to a nearly Gaussian probability
  17. //  density function. The result is an indicator that reverses very sharply
  18. //  when a trend changes.
  19. //
  20. //------------------------------------------------------------------------------
  21. SetBarsRequired(200, 0);
  22. // Ehlers formulas
  23. // from Ehlers, John F. Cybernetic Analysis for Stocks and Futures. Wiley. 2004. 
  24. // Chapter 1, p. 1. Code on p. 7.
  25. function InverseFisher(array)
  26. {
  27.   e2y = exp(2 * array);
  28.   return (e2y - 1)/(e2y + 1);
  29. }
  30. function Normalize(array, arraylen)
  31. // Figure 1.7 on p. 7
  32. {
  33.   MaxH = HHV(array, arraylen);
  34.   MinL = LLV(array, arraylen);
  35.   Value1[0] = array[0];  // Initialize as array
  36.   for(i = 1; i < BarCount; i++)
  37.   {
  38.      Value1[i] = .5 * 2 * ((array[i] - MinL[i]) / (MaxH[i] - MinL[i]) - .5) + .5 * Value1[i-1];
  39.      if (Value1[i] > .9999) Value1[i] = .9999;
  40.      if (Value1[i] < -.9999) Value1[i] = -.9999;
  41.   }
  42.   return Value1;
  43. }
  44. function Fisher(array)
  45. // Figure 1.7 on p. 7
  46. {
  47.   F = array;
  48.   F = .25 * log((1+ array)/(1 - array)) + .5 * Ref(F, -1);
  49.   return F;
  50. }
  51. Med = (H+L)/2;
  52. // Fisher Transform
  53. FisherXform = Fisher(Normalize(Med, 10));
  54. Plot(FisherXform, "Fisher Transform", colorRed, styleLine);
  55. Plot(Ref(FisherXform, -1), "", colorBlue, styleLine);
  56. PlotGrid(2);
  57. PlotGrid(-2);