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

金融证券系统

开发平台:

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-24 23:42:52
  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=523
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=523
  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 only display the Weekly EMA 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(V,13) * (EMA(C,13) - EMA(Ref(C,-1),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(V,2) * (EMA(C,2) - EMA(Ref(C,-1),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. FiftyDayHVFilter = round(StDev(log(C/Ref(C,-1)),50)*100*sqrt(256)); // One year volotility (>=40 preferable)
  64. bullpower= High - EMA(Close,13); 
  65. bearpower= Low - EMA(Close,13); 
  66. // Scan criteria
  67. ElderLong = MACDLongW AND FILongD;
  68. ElderShort = MACDShortW AND FIShortD;
  69. // Columns for exploration
  70. NumColumns = 12;
  71. Column0 = FullName();     
  72. Column0Name = "Ticker name";
  73. Column1 = " ";
  74. Column1Name =" ";
  75. Column2 = ElderLong;
  76. Column2Name = "Long";
  77. Column3 = ElderLong AND EMA(C,130) > Ref(EMA(C,130),-5);
  78. Column3Name = "Long EMA Weekly Direction";
  79. Column4 = Column3 AND (bearpower < 0 AND bullpower > 0);
  80. Column4Name = "Long Elder Ray Filter";
  81. Column5 = " ";
  82. Column5Name =" ";
  83. Column6 = ElderShort;
  84. Column6Name = "Short";
  85. Column7 = ElderShort AND EMA(C,130) < Ref(EMA(C,130),-5);
  86. Column7Name = "Short EMA Weekly Direction";
  87. Column8 = Column7 AND (bearpower < 0 AND bullpower > 0);
  88. Column8Name = "Short Elder Ray Filter";
  89. Column9 = " ";
  90. Column9Name =" ";
  91. Column10 = TenTwentyFilter;
  92. Column10Name = "One Month Point Range";
  93. Column11 = FiftyDayHVFilter;
  94. Column11Name = "Historical Volotility 50 Day";
  95. AddTextColumn( IndustryID(1), "Industry" );
  96. AddTextColumn( MarketID(1), "Market" );
  97. // Filters
  98. Filter = TenTwentyFilter > 5 AND VFilter AND (ElderLong OR ElderShort);
  99. Buy = ElderLong;
  100. Sell = ElderShort;
  101. // ---------------------------------------------------------------------------------------------------------------------- 
  102. // Charts -- (cut and paste the chart/indicator to it's own window with it's own file name and remove the Remark Slashes "//", except
  103. // for the first line, this line desctibes the chart function. Example...leave "//Weekly Bar Chart" from the following first line as as.
  104. // Weekly Bar Chart
  105. //_SECTION_BEGIN("Weekly Graph");
  106. //TimeFrameSet( inWeekly );
  107. //wo = O;
  108. //wh = H;
  109. //wl = L;
  110. //wc = C;
  111. //TimeFrameRestore(); 
  112. //PlotOHLC( wo, wh, wl, wc, "Weekly Close", colorCustom9, styleBar );
  113. //_SECTION_END();
  114. //_SECTION_BEGIN("EMA");
  115. //P = ParamField("Price field",-1);
  116. //Periods = Param("Periods", 15, 2, 200, 1, 10 );
  117. //Plot( EMA( P, Periods ), _DEFAULT_NAME(), ParamColor( "Color", colorYellow ), ParamStyle("Style") ); 
  118. //_SECTION_END();
  119. // ----------------------------------------------------------------------------------------------------------------------
  120. // Weekly Force Index 13 Chart
  121. //_SECTION_BEGIN("Weekly Force Index Thirteen Period");
  122. //TimeFrameSet( inWeekly ); 
  123. //FI=EMA(V,13) * (EMA(C,13) - EMA(Ref(C,-1),13));
  124. //TimeFrameRestore();
  125. //Plot(FI,"FI",colorCustom11,styleLine);
  126. //Plot(0,"ZERO LINE",colorWhite,styleThick);
  127. //_SECTION_END();
  128. // ----------------------------------------------------------------------------------------------------------------------
  129. // Weekly MACD Histogran
  130. //_SECTION_BEGIN("Weekly MACD");
  131. //TimeFrameSet( inWeekly );
  132. //MACDw = MACD( 12, 26 ) - Signal( 12, 26, 9 );
  133. //MACDwLINE =  MACD( 12, 26 ) ;
  134. //MACDwSignal = Signal( 12, 26, 9 );
  135. //TimeFrameRestore();
  136. //Plot(MACDw,"MACD Weekly",colorYellow,styleHistogram);
  137. //Plot(MACDwLINE,"MACD Weekly Line",colorRed,styleLine);
  138. //Plot(MACDwSignal,"MACD Weekly Signal Line",colorBlue,styleLine);
  139. //_SECTION_END();
  140. // ----------------------------------------------------------------------------------------------------------------------
  141. // Daily Bar Chart
  142. //_SECTION_BEGIN("Elder Daily Chart with Envelope");
  143. //SetChartOptions(0,chartShowArrows|chartShowDates);
  144. //Plot( EMA(C,13),"EMA(13)",colorRed,styleLine);
  145. // LookBkPd = 100 ;
  146. // AvgPd = 22 ;
  147. // ExternalBarPct = 15 ;
  148. // ConvergePct = 2 ;
  149. // Middle = EMA( C,AvgPd ) ;
  150. // Rng = HHV( H,LookBkPd ) - LLV( L,LookBkPd ) ;
  151. // X = Rng ;
  152. // deltaX = X/2 ;
  153. // do
  154. // {
  155. // Over = H > Middle + X ;
  156. // Under = L < Middle - X ;
  157. // OuterPct = 100*( Sum( Over, LookBkPd ) + Sum( Under, LookBkPd )
  158. // )/LookBkPd ;
  159. // OP = LastValue(OuterPct) ;
  160. // X=X+sign( OP - ExternalBarPct )*deltaX ;
  161. // deltaX = deltaX/2 ;
  162. // }while ( abs( OP - ExternalBarPct ) > ConvergePct ) ;
  163. // Plot( Middle, "MA", colorYellow, styleLine|styleNoTitle ) ;
  164. // Plot( Middle+X, "MA", colorSkyblue, styleDashed|styleNoTitle ) ;
  165. // Plot( Middle-X, "MA", colorSkyblue, styleDashed|styleNoTitle ) ;
  166. //_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
  167. //Plot( C, "Close", ParamColor("Color", colorCustom9 ), styleBar | ParamStyle("Style") | GetPriceStyle() ); 
  168. //_SECTION_END();
  169. // ----------------------------------------------------------------------------------------------------------------------
  170. // Daily Force Index 2 Period
  171. //_SECTION_BEGIN("Force Index 2 Day");
  172. //FI=EMA(V,2) * (EMA(C,2) - EMA(Ref(C,-1),2));
  173. //Plot(FI,"FI",colorCustom11,styleLine);
  174. //Plot(0,"ZERO LINE",colorWhite,styleThick);
  175. //_SECTION_END();
  176. // ----------------------------------------------------------------------------------------------------------------------
  177. // Daily MACD Histogram
  178. //_SECTION_BEGIN("MACD");
  179. //r1 = Param( "Fast avg", 12, 2, 200, 1 );
  180. //r2 = Param( "Slow avg", 26, 2, 200, 1 );
  181. //r3 = Param( "Signal avg", 9, 2, 200, 1 );
  182. //Plot( ml = MACD(r1, r2), StrFormat(_SECTION_NAME()+"(%g,%g)", r1, r2), ParamColor("MACD color", colorRed ), ParamStyle("MACD style") );
  183. //Plot( sl = Signal(r1,r2,r3), "Signal" + _PARAM_VALUES(), ParamColor("Signal color", colorBlue ), ParamStyle("Signal style") );
  184. //Plot( ml-sl, "MACD Histogram", ParamColor("Histogram color", colorBlack ), styleNoTitle | ParamStyle("Histogram style", styleHistogram | styleNoLabel, maskHistogram ) );
  185. //_SECTION_END();
  186. // ----------------------------------------------------------------------------------------------------------------------
  187. // Daily BullPower
  188. //_SECTION_BEGIN("Bull Power EMA");
  189. ///*Bull Power*/
  190. //Lookback = Param ("EMA Lookback",13);
  191. //BullPower = High - EMA(Close,Lookback);
  192. //Plot (BullPower, "", ParamColor ("Color", colorCustom11), styleHistogram );
  193. //Title = Name() + "   " + Date() + "     Bull Power" + WriteVal (Lookback, 3.0) + " Day:   " + WriteVal (BullPower, 5.3);
  194. //GraphXSpace = 5;
  195. //_SECTION_END();
  196. // ----------------------------------------------------------------------------------------------------------------------
  197. // Daily BearPower
  198. //_SECTION_BEGIN("Bear Power EMA");
  199. ///*Bear Power*/
  200. //Lookback = Param ("EMA Lookback", 13);
  201. //BearPower = Low - EMA(Close,Lookback);
  202. //Plot (BearPower, "", ParamColor ("Color", colorRed), styleHistogram );
  203. //Title = Name() + "   " + Date() + "     Bear Power" + WriteVal (Lookback, 3.0) + " Day:   " + WriteVal (BearPower, 5.3);
  204. //GraphXSpace = 5;
  205. //_SECTION_END();
  206. // End ---------------------------------------------------------------------------------------------------------------------