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

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    Ehlers CyberCycle
  4. //  Author/Uploader: Not Too Swift 
  5. //  E-mail:          
  6. //  Date/Time Added: 2005-03-19 23:35:31
  7. //  Origin:          
  8. //  Keywords:        
  9. //  Level:           medium
  10. //  Flags:           indicator
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=442
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=442
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  Ehlers CyberCycle is an indicator listed in "Cybernetic Analysis for Stocks
  17. //  and Futures," by John Ehlers. This is a slightly modified version of the
  18. //  code I found at:
  19. //
  20. // 
  21. //  http://www.traders.com/Documentation/FEEDbk_docs/Archive/052004/TradersTips/TradersTips.html#amibroker
  22. //
  23. //------------------------------------------------------------------------------
  24. SetBarsRequired( 200, 0 );
  25. // Ehlers CyberCycle
  26. // Cybernetic Analysis for Stocks and Futures
  27. // Chapter 4, p. 33. Code on p. 38.
  28. // Original code is at:
  29. // http://www.traders.com/Documentation/FEEDbk_docs/Archive/052004/TradersTips/TradersTips.html#amibroker
  30. function CyberCycle( array, alpha )
  31. {
  32.   smooth = ( array + 2 * Ref( array, -1 ) +
  33.              2 * Ref( array, -2 ) + Ref( array, -3 ) ) / 6;
  34.   // init value
  35.   Cycle = ( array[ 2 ] - 2 * array[ 1 ] + array[ 0 ] )/4;
  36.   for( i = 6; i < BarCount; i++ )
  37.   {
  38.      Cycle[ i ] = ( ( 1 - 0.5 * alpha) ^ 2 ) *
  39.                   ( smooth[ i ] - 2 * smooth[ i - 1 ] + smooth[ i - 2] ) +
  40.                   2 * ( 1 - alpha ) * Cycle[ i - 1 ] -
  41.                   ( ( 1 - alpha) ^ 2 ) * Cycle[ i - 2 ];
  42.   }
  43.   return Cycle;
  44. }
  45. Cycle = CyberCycle( (H+L)/2, 0.07 );
  46. Plot( Cycle, "CyberCycle", colorBlue );
  47. Plot( Ref(Cycle, -1), "Trigger", colorRed);