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

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    Gann Swing Chart
  4. //  Author/Uploader: Geoff Mulhall 
  5. //  E-mail:          gmulhall@iprimus.com.au
  6. //  Date/Time Added: 2001-06-25 05:13:31
  7. //  Origin:          Swing Chart
  8. //  Keywords:        Swing Chart
  9. //  Level:           semi-advanced
  10. //  Flags:           indicator
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=35
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=35
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  A Gann Swing Chart is similar to a Kanji chart but uses high and low
  17. //  instead of open and close. Refer Beyond Candlesticks by Steve Nison.
  18. //
  19. //------------------------------------------------------------------------------
  20. /* Gann Swing chart v4 */
  21. /* Last modified 24 Feb 2001 */
  22. /* AFL implementation by */
  23. /* (C)2001 Tomasz Janeczko  */
  24. /* one and two - bar reversal version */
  25. /* Change this to 1 for two-bar mode */
  26. twobarmode = 0;
  27. outsidebar = outside();
  28. insidebar = H <= Ref( H, -1 ) AND L >= Ref( L, -1 ); // built-in inside() works with < > instead of <= >=
  29. upbar = H > Ref( H, -1 ) AND L >= Ref( L, -1 );
  30. downbar = L < Ref( L, -1 ) AND H <= Ref( H, -1 );
  31. upbar2 = upbar OR ( outsidebar AND ref( downbar, 1 ) ) ;
  32. downbar2 = downbar OR ( outsidebar and ref( upbar, 1 ) );
  33. Poi =  outsidebar AND ref( insidebar, 1 );
  34. Poo =  outsidebar AND ref( outsidebar, 1 );
  35. Pooi = Poo AND ref( insidebar, 2 );
  36. Poio = Poi AND ref( outsidebar, 2 );
  37. Poii =  Poi AND ref( insidebar, 2 );
  38. Pooo = Poo AND ref( outsidebar, 2 );
  39. Poooi = Pooo AND ref( insidebar, 3 );
  40. Pooio = Pooi AND ref( outsidebar, 3 );
  41. Poioo = Poio AND ref( outsidebar, 3 );
  42. upbar3 = upbar2 OR ( Poi AND ref( downbar, 2 ) );
  43. downbar3 = downbar2 OR ( Poi AND ref( upbar, 2 ) );
  44.  
  45. upbar4 = upbar3 OR ( Poo  AND ref( upbar, 2 ) );
  46. downbar4 = downbar3 OR ( Poo  AND ref( downbar, 2 ) );
  47. upbar5 = upbar4 OR  ( Pooi AND ref( upbar, 3 ) );
  48. downbar5 = downbar4 OR  ( Pooi  AND ref( downbar, 3 ) );
  49. upbar6 = upbar5 OR  ( Poio AND ref( upbar, 3 ) );
  50. downbar6 = downbar5 OR  ( Poio  AND ref( downbar, 3 ) );
  51. upbar7 = upbar6 OR  ( Poii AND ref( downbar, 3 ) );
  52. downbar7 = downbar6 OR  ( Poii  AND ref( upbar, 3 ) );
  53. upbar8 = upbar7 OR  ( Pooo AND ref( downbar, 3 ) );
  54. downbar8 = downbar7 OR  ( Pooo AND ref( upbar, 3 ) );
  55. upbar9 = upbar8 OR  ( Poooi AND ref( downbar, 4 ) );
  56. downbar9 = downbar8 OR  (Poooi  AND ref( upbar, 4 ) );
  57. upbar10 = upbar9 OR  ( Pooio AND ref( downbar, 4 ) );
  58. downbar10 = downbar9 OR  (  Pooio AND ref( upbar, 4 ) );
  59. upbar11 = upbar10 OR  (  Poioo AND ref( downbar, 4 ) );
  60. downbar11 = downbar10 OR  ( Poioo  AND ref( upbar, 4 ) );
  61. fupbar = upbar11;
  62. fdownbar = downbar11;
  63.  
  64. // Two-bar mode handling
  65. fupbar = IIF( twobarmode, fupbar AND ref( fupbar, 1 ), fupbar );
  66. fdownbar = IIF( twobarmode, fdownbar AND ref( fdownbar, 1 ), fdownbar );
  67. /* Barcount since most recent up and down swings */
  68. Us = BarsSince( fupbar  ); 
  69. Ds = BarsSince( fdownbar ) ;
  70. Sd1 =IIf( Us==0, 1,  IIf( Ds==0, -1, 0) );
  71. Sd2 = IIf( Sd1 == 1,  IIf( Ref( BarsSince(Sd1==1), -1) > Ref( BarsSince( Sd1 == -1), -1), 1, 0), 
  72.           IIf( Sd1 == -1,  IIf( Ref( BarsSince(Sd1==1),-1) < Ref( BarsSince( Sd1 == -1),-1), -1, 0),  0 ) ); 
  73. g0 =  ValueWhen( Sd2, Sd2 ); /* sample and hold non-zero values */
  74. /* shift back one bar, add one dummy swing at the end and shift forward */
  75. /* to ensure proper handling of the last swing */
  76. lastbar = Cum(1) == LastValue( cum(1) );
  77. swinglevel = IIF( g0 == -1, HighestSince( Sd2 == 1, H ), LowestSince( Sd2 == -1, L ) );
  78. swinglevel = IIF( lastbar, IIF( g0 == -1, LowestSince( Sd2 == -1, L ), HighestSince( Sd2 == 1, H )), Ref( swinglevel, 1 ) );
  79. /* Gann Swing chart drawn here */
  80. graph1 =  Ref( ValueWhen( Ref( Sd2 != 0, 1 ) or lastbar, swinglevel ,  0 ), -1 );
  81. graph1style = 512+1024;
  82. graphxspace = 5;
  83. /* Colourized price bars drawn here */
  84. /* graph0 = close; */
  85. /* graph0style = 128; */
  86. /* barcolor =  IIF( outsidebar, 1, IIF( downbar, 4, IIF( upbar, 5, 0 ) ) ); */
  87. /* graph0barcolor = ValueWhen( barcolor != 0, barcolor ); */