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

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    Volatility System
  4. //  Author/Uploader: Ed 
  5. //  E-mail:          empottasch@home.nl
  6. //  Date/Time Added: 2004-10-18 05:46:18
  7. //  Origin:          The Volatility System after Welles Wilder Jr Book: New concepts in technical trading systems, 1978
  8. //  Keywords:        Volatility System Welles Wilder
  9. //  Level:           medium
  10. //  Flags:           system
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=388
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=388
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  The Volatility System after Welles Wilder Jr
  17. //
  18. //  Book: New concepts in technical trading systems, 1978
  19. //
  20. //  Simple stop and reverse system. Did not see one single system designed by
  21. //  Wilder that actually works. We are so lucky having Amibroker and todays
  22. //  power of desktop computers.
  23. //
  24. //------------------------------------------------------------------------------
  25. /*
  26. The Volatility System after Welles Wilder Jr
  27. Book: New concepts in technical trading systems, 1978
  28. Translation in Amibroker Formula Language (AFL)
  29. by: Edward Pottasch, empottasch@home.nl
  30. created: October 18, 2004
  31. */
  32. SetBarsRequired(100000,100000);
  33. // setting for use in portfolio trading
  34. SetOption("MaxOpenPositions", 25 ); 
  35. PositionSize = -15;
  36. SetTradeDelays(0,0,0,0);
  37. PositionScore = 50 - RSI(14);
  38. // constant (any number between 2.80 and 3.10)
  39. const = 3.0; //const = Optimize("const", const, 0.5, 5, 0.1 );
  40. // period over which ATR is calculated
  41. period = 7; //period = Optimize("period", period, 1, 50, 1 );
  42. // ARC
  43. ARC = const * ATR(period);
  44. // SIC (significant close) + / - ARC
  45. SAR_long = Ref(HHV(C,period) - ARC,-1);
  46. SAR_short = Ref(LLV(C,period) + ARC,-1);
  47. // initialize storage array
  48. SAR_plot = 0;
  49. Buy = Short = Sell = Cover = 0;
  50. // initialize position
  51. lpos = 0;
  52. spos = 0;
  53. //
  54. for (i = 0; i < BarCount; i++) {
  55. if (lpos == 0 AND spos == 0) {
  56. if (C[ i ] < SAR_long[ i ]) {
  57. Short[ i ] = 1;
  58. ShortPrice[ i ] = C[ i ];
  59. spos = 1;
  60. } else if (C[ i ] > SAR_short[ i ]) {
  61. Buy[ i ] = 1;
  62. BuyPrice[ i ] = C[ i ];
  63. lpos = 1;
  64. }
  65. SAR_plot[ i ] = null;
  66. } else if (lpos == 1 AND spos == 0) {
  67. // update SAR for chart
  68. SAR_plot[ i ] = SAR_long[ i ];
  69. // check if we need to reverse
  70. if (C[ i ] < SAR_long[ i ]) {
  71. Sell[ i ] = 1;
  72. SellPrice[ i ] = C[ i ];
  73. lpos = 0;
  74. Short[ i ] = 1;
  75. ShortPrice[ i ] = C[ i ];
  76. spos = 1;
  77. }
  78. } else if (lpos == 0 AND spos == 1) {
  79. // update SAR for chart
  80. SAR_plot[ i ] = SAR_short[ i ];
  81. // check if we need to reverse
  82. if (C[ i ] > SAR_short[ i ]) {
  83. Cover[ i ] = 1;
  84. CoverPrice[ i ] = C[ i ];
  85. spos = 0;
  86. Buy[ i ] = 1;
  87. BuyPrice[ i ] = C[ i ];
  88. lpos = 1;
  89. }
  90. }
  91. }
  92. // Price chart
  93. Plot(C,"",1,64);
  94. // SAR (Stop and reverse points)
  95. Plot(SAR_plot,"SAR", colorGold, styleDots | styleNoLine);
  96. // buy, sell, short and cover symbols
  97. PlotShapes(IIf(Buy,shapeUpArrow,0),colorWhite, layer = 0, yposition = BuyPrice, offset = 0 );
  98. PlotShapes(IIf(Sell,shapeDownArrow,0),colorYellow, layer = 0, yposition = SellPrice, offset = 0 );
  99. PlotShapes(IIf(Short,shapeHollowDownArrow,0),colorLightBlue, layer = 0, yposition = ShortPrice, IIf(Sell,offset = -15,offset = 0) );
  100. PlotShapes(IIf(Cover,shapeHollowUpArrow,0),colorGold, layer = 0, yposition = CoverPrice, IIf(Buy,offset = -15,offset = 0) );