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

金融证券系统

开发平台:

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-10 14:17:44
  7. //  Origin:          Derrived from the trading 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=499
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=499
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  This scan finds candidates by the Weekly MACD Historgam slope, and the
  17. //  Daily 2 Period Force Index dipping above or below it's Zero Line. Plot a
  18. //  Weekly 26 Period EMA to help confirm the weekly direction. It should be
  19. //  rising along with an uptick on the Weekly MACD Histogram to go long.
  20. //  However, Elder writes that divergences in the MACD Histogram override the
  21. //  EMA. The Daily 2 Period Force Index will be below it's Zero Line. Look for
  22. //  the stock to pullback to around it's Daily 13 Period EMA. Also use the
  23. //  Daily 22 Period EMA to confirm the direction of the daily trend. Do the
  24. //  opposite for shorts. Use the Long/Short EMA Weekly Direction Tabs as
  25. //  filters to cull through the scan to display the Weekly EMA only going in
  26. //  the intended trading direction. Use the Long/Short Elder Ray Tabs
  27. //  (BullPower AND BearPower) to fine tune the entry signals. This tab is best
  28. //  used when in agreement with the Long/Short EMA Weekly Direction Tabs. A 50
  29. //  Period EMA > 100000 is used to filter Volume. A minimum of a 5 point run in
  30. //  one month is used as a filter for a stock's range. This scan is best used
  31. //  as an Exploration.
  32. //
  33. //------------------------------------------------------------------------------
  34. // Elder Triple Screen Trading System.
  35. // Coded by Dennis Skoblar 7/05/2005.
  36. // Derrived from "Trading For A Living" and "Come Into My Trading Room" by Alexander Elder.
  37. // This scan finds candidates by the Weekly MACD Historgam slope, and the Daily 2 Period Force Index dipping above or below it's Zero Line. Plot a Weekly 26 Period EMA to 
  38. // help confirm the weekly direction. It should be rising along with an uptick on the Weekly MACD Histogram to go long. However, Elder writes that divergences in the MACD 
  39. // Histogram override the EMA. The Daily 2 Period Force Index will be below it's Zero Line. Look for the stock to pullback to around it's Daily 13 Period EMA. Also use the
  40. // Daily 22 Period EMA to confirm the direction of the daily trend. Do the opposite for shorts. Use the Long/Short EMA Weekly Direction Tabs as filters to cull through the
  41. // scan to display the Weekly EMA only going in the intended trading direction. Use the Long/Short Elder Ray Tabs (BullPower AND BearPower) to fine tune the entry signals. 
  42. // This tab is best used when in agreement with the Long/Short EMA Weekly Direction Tabs. A 50 Period EMA > 100000 is used to Filter Volume. A minimum of a 5 point run in 
  43. // one Month is used as a Filter for a stock's range. This scan is best used as an Exploration. 
  44. TimeFrameSet( inWeekly );
  45. WeeklyMACD = MACD(12,26) - Signal(12,26,9);
  46. WeekHistRising = Ref(WeeklyMACD, -1) < Ref(WeeklyMACD, 0);
  47. WeekHistFalling = Ref(WeeklyMACD, -1) > Ref(WeeklyMACD, 0);
  48. FIWeekly = EMA(((C-Ref(C,-1))*V),13);
  49. WeeklyForceIndexLong = FIWeekly > 0;
  50. WeeklyForceIndexShort = FIWeekly < 0;
  51. TimeFrameRestore();
  52. // Weekly criteria
  53. MACDLongW = TimeFrameExpand( WeekHistRising, inDaily );
  54. MACDShortW= TimeFrameExpand( WeekHistFalling, inDaily );
  55. FILongW = TimeFrameExpand( WeeklyForceIndexLong, inDaily );
  56. FIShortW = TimeFrameExpand( WeeklyForceIndexShort, inDaily );
  57. // Daily criteria
  58. FIDaily = EMA(((C-Ref(C,-1))*V),2);
  59. FILongD = FIDaily < 0;
  60. FIShortD = FIDaily > 0;
  61. VFilter = EMA(V,50) > 100000;
  62. TenTwentyFilter = HHV(H,20)-LLV(L,20); // How much price has gone in one month (>=10 points preferable)
  63. bullpower= High - EMA(Close,13); 
  64. bearpower= Low - EMA(Close,13); 
  65. // Scan criteria
  66. ElderLong = MACDLongW AND FILongD;
  67. ElderShort = MACDShortW AND FIShortD;
  68. // Columns for exploration
  69. NumColumns = 11;
  70. Column0 = FullName();     
  71. Column0Name = "Ticker name";
  72. Column1 = " ";
  73. Column1Name =" ";
  74. Column2 = ElderLong;
  75. Column2Name = "Long";
  76. Column3 = ElderLong AND EMA(C,130) > Ref(EMA(C,130),-5);
  77. Column3Name = "Long EMA Weekly Direction";
  78. Column4 = ElderLong AND (bearpower < 0 AND bullpower > 0);
  79. Column4Name = "Long Elder Ray Filter";
  80. Column5 = " ";
  81. Column5Name =" ";
  82. Column6 = ElderShort;
  83. Column6Name = "Short";
  84. Column7 = ElderShort AND EMA(C,130) < Ref(EMA(C,130),-5);
  85. Column7Name = "Short EMA Weekly Direction";
  86. Column8 = ElderShort AND (bearpower < 0 AND bullpower > 0);
  87. Column8Name = "Short Elder Ray Filter";
  88. Column9 = " ";
  89. Column9Name =" ";
  90. Column10 = TenTwentyFilter;
  91. Column10Name = "One Month Point Range";
  92. AddTextColumn( IndustryID(1), "Industry" );
  93. AddTextColumn( MarketID(1), "Market" );
  94. // Filters
  95. Filter = TenTwentyFilter > 5 AND VFilter AND (ElderLong OR ElderShort);
  96. Buy = ElderLong;
  97. Sell = ElderShort; 
  98. // Charts (just cut and paste each to it's owm window)-------------------------------------------------------------------
  99. // Weekly Bar Chart
  100. _SECTION_BEGIN("Weekly Graph");
  101. TimeFrameSet( inWeekly );
  102. wo = O;
  103. wh = H;
  104. wl = L;
  105. wc = C;
  106. TimeFrameRestore(); 
  107. PlotOHLC( wo, wh, wl, wc, "Weekly Close", colorCustom9, styleBar );
  108. _SECTION_END();
  109. _SECTION_BEGIN("EMA");
  110. P = ParamField("Price field",-1);
  111. Periods = Param("Periods", 15, 2, 200, 1, 10 );
  112. Plot( EMA( P, Periods ), _DEFAULT_NAME(), ParamColor( "Color", colorCycle ), ParamStyle("Style") ); 
  113. _SECTION_END();
  114. // ----------------------------------------------------------------------------------------------------------------------
  115. // Weekly Force Index 13 Chart
  116. _SECTION_BEGIN("Weekly Force Index Thirteen Period");
  117. TimeFrameSet( inWeekly ); 
  118. FI=EMA(((C-Ref(C,-1))*V),13);
  119. TimeFrameRestore();
  120. Plot(FI,"FI",colorCustom11,styleLine);
  121. Plot(0,"ZERO LINE",colorWhite,styleThick);
  122. _SECTION_END();
  123. // ----------------------------------------------------------------------------------------------------------------------
  124. // Weekly MACD Histogran
  125. _SECTION_BEGIN("Weekly MACD");
  126. TimeFrameSet( inWeekly );
  127. MACDw = MACD( 12, 26 ) - Signal( 12, 26, 9 );
  128. MACDwLINE =  MACD( 12, 26 ) ;
  129. MACDwSignal = Signal( 12, 26, 9 );
  130. TimeFrameRestore();
  131. Plot(MACDw,"MACD Weekly",colorYellow,styleHistogram);
  132. Plot(MACDwLINE,"MACD Weekly Line",colorRed,styleLine);
  133. Plot(MACDwSignal,"MACD Weekly Signal Line",colorBlue,styleLine);
  134. _SECTION_END();
  135. // ----------------------------------------------------------------------------------------------------------------------
  136. // Daily Bar Chart
  137. _SECTION_BEGIN("Price");
  138. SetChartOptions(0,chartShowArrows|chartShowDates);
  139. _N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
  140. Plot( C, "Close", ParamColor("Color", colorCustom9 ), styleBar | ParamStyle("Style") | GetPriceStyle() ); 
  141. _SECTION_END();
  142. _SECTION_BEGIN("EMA");
  143. P = ParamField("Price field",-1);
  144. Periods = Param("Periods", 13);
  145. Plot( EMA( P, Periods ), _DEFAULT_NAME(), ParamColor( "Color", colorYellow ), ParamStyle("Style") ); 
  146. _SECTION_END();
  147. _SECTION_BEGIN("EMA1");
  148. P = ParamField("Price field",-1);
  149. Periods = Param("Periods", 22);
  150. Plot( EMA( P, Periods ), _DEFAULT_NAME(), ParamColor( "Color", colorRed ), ParamStyle("Style") ); 
  151. _SECTION_END();
  152. // ----------------------------------------------------------------------------------------------------------------------
  153. // Daily Force Index 2 Period
  154. _SECTION_BEGIN("Force Index 2 Day");
  155. FI=EMA(((C-Ref(C,-1))*V),2);
  156. Plot(FI,"FI",colorCustom11,styleLine);
  157. Plot(0,"ZERO LINE",colorWhite,styleThick);
  158. _SECTION_END();
  159. // ----------------------------------------------------------------------------------------------------------------------
  160. // Daily MACD Histogram
  161. _SECTION_BEGIN("MACD");
  162. r1 = Param( "Fast avg", 12, 2, 200, 1 );
  163. r2 = Param( "Slow avg", 26, 2, 200, 1 );
  164. r3 = Param( "Signal avg", 9, 2, 200, 1 );
  165. Plot( ml = MACD(r1, r2), StrFormat(_SECTION_NAME()+"(%g,%g)", r1, r2), ParamColor("MACD color", colorRed ), ParamStyle("MACD style") );
  166. Plot( sl = Signal(r1,r2,r3), "Signal" + _PARAM_VALUES(), ParamColor("Signal color", colorBlue ), ParamStyle("Signal style") );
  167. Plot( ml-sl, "MACD Histogram", ParamColor("Histogram color", colorBlack ), styleNoTitle | ParamStyle("Histogram style", styleHistogram | styleNoLabel, maskHistogram ) );
  168. _SECTION_END();
  169. // ----------------------------------------------------------------------------------------------------------------------
  170. // Daily BullPower
  171. _SECTION_BEGIN("Bull Power EMA");
  172. /*Bull Power*/
  173. Lookback = Param ("EMA Lookback",13);
  174. BullPower = High - EMA(Close,Lookback);
  175. Plot (BullPower, "", ParamColor ("Color", colorCustom11), styleHistogram );
  176. Title = Name() + "   " + Date() + "     Bull Power" + WriteVal (Lookback, 3.0) + " Day:   " + WriteVal (BullPower, 5.3);
  177. GraphXSpace = 5;
  178. _SECTION_END();
  179. // ----------------------------------------------------------------------------------------------------------------------
  180. // Daily BearPower
  181. _SECTION_BEGIN("Bear Power EMA");
  182. /*Bear Power*/
  183. Lookback = Param ("EMA Lookback", 13);
  184. BearPower = Low - EMA(Close,Lookback);
  185. Plot (BearPower, "", ParamColor ("Color", colorRed), styleHistogram );
  186. Title = Name() + "   " + Date() + "     Bear Power" + WriteVal (Lookback, 3.0) + " Day:   " + WriteVal (BearPower, 5.3);
  187. GraphXSpace = 5;
  188. _SECTION_END();
  189. // End ---------------------------------------------------------------------------------------------------------------------