Elder Triple Screen Trading System (496).afl
上传用户:shiqiang
上传日期:2009-06-12
资源大小:1289k
文件大小:9k
源码类别:

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    Elder Triple Screen Trading System
  4. //  Author/Uploader: Dennis Skoblar 
  5. //  E-mail:          DennisAndLisa@sbcglobal.net
  6. //  Date/Time Added: 2005-07-08 12:49:04
  7. //  Origin:          As derrived from the excellent books, "Trading For A Living" and "Come Into My Trading Room" by Alexander Elder.
  8. //  Keywords:        Triple Screen, Alexander Elder,Pullback scan
  9. //  Level:           semi-advanced
  10. //  Flags:           system,exploration
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=496
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=496
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  This scan finds long candidates by the weekly MACD uptick and the weekly 13
  17. //  period Force Index above it's zero line. Plot a weekly 26 period EMA to
  18. //  determine the weekly direction. It should be rising along with an uptick on
  19. //  the weekly MACD to go long. The daily 2 period Force Index should be below
  20. //  it's zero line. Look for the stock to pullback around it's daily 13 period
  21. //  ema. Also use the daily 22 period ema to determine the direction of the
  22. //  daily trend. Do the opposite for shorts. Best used as an Exploration. Sort
  23. //  by the Weekly Force Index Tab or the Elder-Ray Long Tab or the Elder-Ray
  24. //  Short Tab.
  25. //
  26. //  Basic layout:
  27. //
  28. //  Screen 1 Weekly Layout: 26 period EMA, Weekly 13 period Force index, MACD
  29. //  Histogram and Lines.
  30. //
  31. //  Screen 2 Daily Layout: 13 period EMA, 22 period EMA, 2 period Daily Force
  32. //  Index, Daily BullPower and Daily BearPower.
  33. //
  34. //  Screen 3 is an entry/exit technique. Place an order for tomorrow to enter
  35. //  above today's high and place a stop loss below today's low or yesterdays
  36. //  low, whichever is lower.
  37. //
  38. //------------------------------------------------------------------------------
  39. // Elder Triple Screen Trading System.
  40. // Coded by Dennis Skoblar 7/05/2005.
  41. // As derrived from "Trading For A Living" and "Come Into My Trading Room" by Alexander Elder.
  42. // 
  43. // This scan finds long candidates by the weekly MACD uptick and the weekly 13 period Force Index above it's zero line.
  44. // Plot a weekly 26 period EMA to determine the weekly direction. It should be rising along with an uptick on the weekly MACD to go long.
  45. // The daily 2 period Force Index should be below it's zero line. Look for the stock to pullback around it's daily 13 period ema.
  46. // Also use the daily 22 period ema to determine the direction of the daily trend.
  47. // Do the opposite for shorts. Best used as an Exploration. Sort by the Weekly Force Index Tab or the Elder-Ray Long Tab or the Elder-Ray Short Tab.
  48. TimeFrameSet( inWeekly );
  49. WeeklyMACD = MACD(12,26) - Signal(12,26,9);
  50. WeekHistRising = Ref(WeeklyMACD, -1) < Ref(WeeklyMACD, 0);
  51. WeekHistFalling = Ref(WeeklyMACD, -1) > Ref(WeeklyMACD, 0);
  52. FIWeekly = EMA(((C-Ref(C,-1))*V),13);
  53. WeeklyForceIndexLong = FIWeekly > 0;
  54. WeeklyForceIndexShort = FIWeekly < 0;
  55. TimeFrameRestore();
  56. // Weekly criteria
  57. MACDLongW = TimeFrameExpand( WeekHistRising, inDaily );
  58. MACDShortW= TimeFrameExpand( WeekHistFalling, inDaily );
  59. FILongW = TimeFrameExpand( WeeklyForceIndexLong, inDaily );
  60. FIShortW = TimeFrameExpand( WeeklyForceIndexShort, inDaily );
  61. // Daily criteria
  62. FIDaily = EMA(((C-Ref(C,-1))*V),2);
  63. FILongD = FIDaily < 0;
  64. FIShortD = FIDaily > 0;
  65. PVFilter = (C>15) AND Ref(MA(V,50),-1)>100000;
  66. TenTwentyFilter = HHV(H,20)-LLV(L,20); // How much price has gone in one month (>=10 points preferable)
  67. FiftyDayHVFilter = round(StDev(log(C/Ref(C,-1)),50)*100*sqrt(256)); // One year volotility (>=40 preferable)
  68. bullpower= High - EMA(Close,13); 
  69. bearpower= Low - EMA(Close,13); 
  70. // Scan criteria
  71. ElderLong = MACDLongW AND FILongW AND FILongD; 
  72. ElderShort = MACDShortW AND FIShortW AND FIShortD; 
  73. // Columns for exploration
  74. NumColumns = 9;
  75. Column0 = FullName();     
  76. Column0Name = "Ticker name";
  77. Column1 = ElderLong;
  78. Column1Name = "Long";
  79. Column2 = ElderShort;
  80. Column2Name = "Short";
  81. Column3 = FiftyDayHVFilter;
  82. Column3Name = "50 Day HV";
  83. Column4 = TenTwentyFilter;
  84. Column4Name = "10/20 Filter";
  85. Column5 = FIWeekly;
  86. Column5Name = "Weekly Force Index";
  87. Column6 = FIDaily;
  88. Column6Name = "Daily Force Index";
  89. Column7 = ElderLong AND (bearpower < 0 AND bullpower > 0);
  90. Column7Name = "Elder Ray Long";
  91. Column8 = ElderShort AND (bearpower < 0 AND bullpower > 0);
  92. Column8Name = "Elder Ray Short";
  93. AddTextColumn( IndustryID(1), "Industry" );
  94. AddTextColumn( MarketID(1), "Market" );
  95. // Filters
  96. Filter = TenTwentyFilter > 5 AND PVFilter AND (ElderLong OR ElderShort);
  97. Buy= ElderLong;
  98. Sell = ElderShort;
  99. // Charts (just cut and paste each to it's owm window)-------------------------------------------------------------------
  100. // Weekly Bar Chart
  101. _SECTION_BEGIN("Weekly Graph");
  102. TimeFrameSet( inWeekly );
  103. wo = O;
  104. wh = H;
  105. wl = L;
  106. wc = C;
  107. TimeFrameRestore(); 
  108. PlotOHLC( wo, wh, wl, wc, "Weekly Close", colorCustom9, styleBar );
  109. _SECTION_END();
  110. _SECTION_BEGIN("EMA");
  111. P = ParamField("Price field",-1);
  112. Periods = Param("Periods", 15, 2, 200, 1, 10 );
  113. Plot( EMA( P, Periods ), _DEFAULT_NAME(), ParamColor( "Color", colorCycle ), ParamStyle("Style") ); 
  114. _SECTION_END();
  115. // ----------------------------------------------------------------------------------------------------------------------
  116. // Weekly Force Index 13 Chart
  117. _SECTION_BEGIN("Weekly Force Index Thirteen Period");
  118. TimeFrameSet( inWeekly ); 
  119. FI=EMA(((C-Ref(C,-1))*V),13);
  120. TimeFrameRestore();
  121. Plot(FI,"FI",colorCustom11,styleLine);
  122. Plot(0,"ZERO LINE",colorWhite,styleThick);
  123. _SECTION_END();
  124. // ----------------------------------------------------------------------------------------------------------------------
  125. // Weekly MACD Histogran
  126. _SECTION_BEGIN("Weekly MACD");
  127. TimeFrameSet( inWeekly );
  128. MACDw = MACD( 12, 26 ) - Signal( 12, 26, 9 );
  129. MACDwLINE =  MACD( 12, 26 ) ;
  130. MACDwSignal = Signal( 12, 26, 9 );
  131. TimeFrameRestore();
  132. Plot(MACDw,"MACD Weekly",colorYellow,styleHistogram);
  133. Plot(MACDwLINE,"MACD Weekly Line",colorRed,styleLine);
  134. Plot(MACDwSignal,"MACD Weekly Signal Line",colorBlue,styleLine);
  135. _SECTION_END();
  136. // ----------------------------------------------------------------------------------------------------------------------
  137. // Daily Bar Chart
  138. _SECTION_BEGIN("Price");
  139. SetChartOptions(0,chartShowArrows|chartShowDates);
  140. _N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
  141. Plot( C, "Close", ParamColor("Color", colorCustom9 ), styleBar | ParamStyle("Style") | GetPriceStyle() ); 
  142. _SECTION_END();
  143. _SECTION_BEGIN("EMA");
  144. P = ParamField("Price field",-1);
  145. Periods = Param("Periods", 13);
  146. Plot( EMA( P, Periods ), _DEFAULT_NAME(), ParamColor( "Color", colorYellow ), ParamStyle("Style") ); 
  147. _SECTION_END();
  148. _SECTION_BEGIN("EMA1");
  149. P = ParamField("Price field",-1);
  150. Periods = Param("Periods", 22);
  151. Plot( EMA( P, Periods ), _DEFAULT_NAME(), ParamColor( "Color", colorRed ), ParamStyle("Style") ); 
  152. _SECTION_END();
  153. // ----------------------------------------------------------------------------------------------------------------------
  154. // Daily Force Index 2 Period
  155. _SECTION_BEGIN("Force Index 2 Day");
  156. FI=EMA(((C-Ref(C,-1))*V),2);
  157. Plot(FI,"FI",colorCustom11,styleLine);
  158. Plot(0,"ZERO LINE",colorWhite,styleThick);
  159. _SECTION_END();
  160. // ----------------------------------------------------------------------------------------------------------------------
  161. // Daily MACD Histogram
  162. _SECTION_BEGIN("MACD");
  163. r1 = Param( "Fast avg", 12, 2, 200, 1 );
  164. r2 = Param( "Slow avg", 26, 2, 200, 1 );
  165. r3 = Param( "Signal avg", 9, 2, 200, 1 );
  166. Plot( ml = MACD(r1, r2), StrFormat(_SECTION_NAME()+"(%g,%g)", r1, r2), ParamColor("MACD color", colorRed ), ParamStyle("MACD style") );
  167. Plot( sl = Signal(r1,r2,r3), "Signal" + _PARAM_VALUES(), ParamColor("Signal color", colorBlue ), ParamStyle("Signal style") );
  168. Plot( ml-sl, "MACD Histogram", ParamColor("Histogram color", colorBlack ), styleNoTitle | ParamStyle("Histogram style", styleHistogram | styleNoLabel, maskHistogram ) );
  169. _SECTION_END();
  170. // ----------------------------------------------------------------------------------------------------------------------
  171. // Daily BullPower
  172. _SECTION_BEGIN("Bull Power EMA");
  173. /*Bull Power*/
  174. Lookback = Param ("EMA Lookback",13);
  175. BullPower = High - EMA(Close,Lookback);
  176. Plot (BullPower, "", ParamColor ("Color", colorCustom11), styleHistogram );
  177. Title = Name() + "   " + Date() + "     Bull Power" + WriteVal (Lookback, 3.0) + " Day:   " + WriteVal (BullPower, 5.3);
  178. GraphXSpace = 5;
  179. _SECTION_END();
  180. // ----------------------------------------------------------------------------------------------------------------------
  181. // Daily BearPower
  182. _SECTION_BEGIN("Bear Power EMA");
  183. /*Bear Power*/
  184. Lookback = Param ("EMA Lookback", 13);
  185. BearPower = Low - EMA(Close,Lookback);
  186. Plot (BearPower, "", ParamColor ("Color", colorRed), styleHistogram );
  187. Title = Name() + "   " + Date() + "     Bear Power" + WriteVal (Lookback, 3.0) + " Day:   " + WriteVal (BearPower, 5.3);
  188. GraphXSpace = 5;
  189. _SECTION_END();
  190. // End ---------------------------------------------------------------------------------------------------------------------