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

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    Peterson
  4. //  Author/Uploader: Marek Chlopek 
  5. //  E-mail:          mchlopek@post.pl
  6. //  Date/Time Added: 2001-10-17 02:55:21
  7. //  Origin:          
  8. //  Keywords:        
  9. //  Level:           basic
  10. //  Flags:           system
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=128
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=128
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  Trading System developed by Dennis Peterson, described in article "Common
  17. //  Themes in Trading" 09/27/01, Traders.com Advantage
  18. //
  19. //------------------------------------------------------------------------------
  20. /* PETERSON.AFL v 1.00 17/10/2001
  21. /* Peterson Trading Method
  22. /* Developed by Dennis Peterson
  23. /* From Traders.com Advantage, article "Common Themes in Trading" 09/27/01, by Dennis Peterson
  24. /* Trading Method ported and coded by Marek Chlopek, October 2001
  25. /* Support from Tomasz Janeczko and Amibroker Mailing List members - THANKS!!!
  26. /*
  27. /* Cole Trading Method
  28. /* Developed by Roger Cole
  29. /* From Technical Analysis of Stocks and Commodities, V8:12 (460-463), by Alan Friedman
  30. /*
  31. /* TRI - The Range Indicator
  32. /* Developed by Jack L. Weinberg
  33. /* From Technical Analysis of Stocks and Commodities, V13:6 (238-242) */
  34. /*
  35. /* ************************************************************************** */
  36. /* Peterson Trading Method description
  37. /* An up signal is formed when:
  38. /* a) a stock make two Rally Days - kind of modified Cole Trading Method,
  39. /* b) The Range Indicator (TRI) indicates there is a possible trend change from down to up and
  40. /* c) exponential moving averages confirming trending up.
  41. /* An down signal is formed when:
  42. /* a) a stock make two Reaction Days - kind of modified Cole Trading Method,
  43. /* b) The Range Indicator (TRI) indicates there is a possible trend change from up to down and
  44. /* c) exponential moving averages confirming trending down */
  45. /* ************************************************************************** */
  46. opt1  =  9;// optimize("",10,7,10,1);
  47. opt2  =  4;
  48. opt3  = 66;
  49. opt4  =  8;
  50. opt5  =  3;
  51. opt6  =  8;
  52. opt7  =  9;
  53. opt8  =  7;
  54. opt9  = 10;
  55. /* ************************************************************************** */
  56. /* Condition a) - modified Cole Trading Method
  57. /* modification to Cole Trading Method proposed by Dennis Peterson:
  58. /* - two Rally or Reaction Days in a row instead of three,
  59. /* - Inside and Outside Days are not omitted when finding two days in a row
  60. /* - volume analysis is omitted */
  61. /* Cole's Trading Day Status definition */
  62. RY  = H >  Ref(H, -1) AND L >= Ref(L, -1); // Rally Day
  63. RX  = H <= Ref(H, -1) AND L <  Ref(L, -1); // Reaction Day
  64. IN  = H <= Ref(H, -1) AND L >= Ref(L, -1); // Inside Day
  65. OUT = H >  Ref(H, -1) AND L <  Ref(L, -1); // Outside Day
  66. /* Cole - counts number of Rally Days in a row (positive) or Reaction Days in a row (negative)
  67. /* When Rally Cole increases by 1 unless the first Rally Day then Cole = 1
  68. /* When Reaction Cole decreases by 1 unless the first Reaction Day then Cole = -1
  69. /* When Inside Day or Outside Day then Cole = 0 */
  70. PeriodRY = BarsSince(NOT RY);
  71. PeriodRX = BarsSince(NOT RX);
  72. Cole     = IIF(IN OR OUT, 0, ValueWhen(RX OR RY, Sum(RY, PeriodRY) - Sum(RX, PeriodRX)));
  73. CondABuy  = Cole >=  2; // two rally days in a row
  74. CondASell = Cole <= -2; // two reaction days in a row
  75. /* ************************************************************************** */
  76. /* Condition b) - The Range Indicator
  77. /*
  78. /* StochRange - first step in constructing the TRI
  79. /* StochRange - an oscillator of the ratio of the daily true range with the intraday range
  80. /* Value1 - Today's True Range divided by today's close minus yesterday's close unless C-Ref(C,-1) < 0 then Value1 = True Range
  81. /* Value2 - the lowest value of Value1, over the last q days
  82. /* Value3 - the highest value of Value1, over the last q days */
  83. q = opt1; /* stochastic period */
  84. Value1 = IIF(C > Ref(C, -1), ATR(1) / (C - Ref(C, -1)), ATR(1));
  85. Value2 = LLV(Value1, q);
  86. Value3 = HHV(Value1, q);
  87. StochRange = IIF((Value3 - Value2) > 0, 100 * (Value1 - Value2) / (Value3 - Value2), 100 * (Value1 - Value2));
  88. /* The Range Indicator - TRI by J.L Weinberg
  89. /* The Range Indicator - smooth StochRange using an exponential moving average of m periods */
  90. m = opt2; /* exponential smoothing period */
  91. TRI = EMA(StochRange, m);
  92. CondBBuy  = Hold(TRI > opt3, opt4);
  93. CondBSell = Hold(TRI > opt3, opt7);
  94. /* ************************************************************************** */
  95. /* Condition c) - exponential moving averages */
  96. ema1 = EMA(C, opt5);
  97. ema2 = EMA(C, opt6);
  98. ema3 = EMA(C, opt8);
  99. ema4 = EMA(C, opt9);
  100. CondCBuy  = ema1 > ema2;
  101. CondCSell = ema3 < ema4;
  102. /* ************************************************************************** */
  103. /* Trading Signals in Peterson Trading Method */
  104. Buy   = CondABuy  AND CondBBuy  AND CondCBuy;
  105. Sell  = CondASell AND CondBSell AND CondCSell;
  106. Buy   = ExRem(Buy,  Sell);
  107. Sell  = ExRem(Sell, Buy);
  108. Cover = Buy;
  109. Short = Sell;
  110. /* ************************************************************************** */
  111. /* Graphic presentation in Amibroker */
  112. //maxgraph = 1;
  113. //graph0 = Cole;
  114. //title = name() + " - Cole = " + WriteVal(graph0, 1.0);
  115. /* ************************************************************************** */
  116. /* Exploration in Amibroker */
  117. filter = 1;
  118. numcolumns = 21;
  119. column0 = H; column0name = "H"; column0format = 1.2;
  120. column1 = L; column1name = "L"; column1format = 1.2;
  121. column2 = V; column2name = "V"; column2format = 1.0;
  122. column3 = RY; column3name = "RY"; column3format = 1.0;
  123. column4 = RX; column4name = "RX"; column4format = 1.0;
  124. column5 = IN; column5name = "IN"; column5format = 1.0;
  125. column6 = OUT; column6name = "OUT"; column6format = 1.0;
  126. column7 = Cole; column7name = "Cole"; column7format = 1.0;
  127. column8 = CondABuy; column8name = "ABuy"; column8format = 1.0;
  128. column9 = CondASell; column9name = "ASell"; column9format = 1.0;
  129. column10= TRI; column10name= "TRI"; column10format= 1.2;
  130. column11= CondBBuy; column11name= "BBuy"; column11format= 1.0;
  131. column12= CondBSell; column12name= "BSell"; column12format= 1.0;
  132. column13= ema1; column13name= "ema1"; column13format= 1.4;
  133. column14= ema2; column14name= "ema2"; column14format= 1.4;
  134. column15= ema3; column15name= "ema3"; column15format= 1.4;
  135. column16= ema4; column16name= "ema4"; column16format= 1.4;
  136. column17= CondCBuy; column17name= "CBuy"; column17format= 1.0;
  137. column18= CondCSell; column18name= "CSell"; column18format= 1.0;
  138. column19= Buy; column19name= "BuySig"; column19format= 1.0;
  139. column20= Sell; column20name= "SellSig"; column20format= 1.0;
  140. /* ************************************************************************** */
  141. /* END PETERSON Indicator Formula */