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

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    Elder Triple Screen Trading System  -- LONG
  4. //  Author/Uploader: Dennis Skoblar 
  5. //  E-mail:          DennisAndLisa@sbcglobal.net
  6. //  Date/Time Added: 2005-07-27 18:15:12
  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=536
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=536
  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. The best sorts are found using the Force Index 13 Period
  32. //  Weekly tab with the highest value first.
  33. //
  34. //------------------------------------------------------------------------------
  35. // Elder Triple Screen Trading System. Elder Long.
  36. // Coded by Dennis Skoblar 7/05/2005.
  37. // Derrived from "Trading For A Living" and "Come Into My Trading Room" by Alexander Elder.
  38. // 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 
  39. // 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 
  40. // 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
  41. // 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
  42. // 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. 
  43. // 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 
  44. // one Month is used as a Filter for a stock's range. This scan is best used as an Exploration. The best sorts are found using the Force Index 13 Period Weekly tab with the 
  45. // highest value first.
  46. TimeFrameSet( inWeekly );
  47. WeeklyMACD = MACD(12,26) - Signal(12,26,9);
  48. WeekHistRising = Ref(WeeklyMACD, -1) < Ref(WeeklyMACD, 0);
  49. WeekHistFalling = Ref(WeeklyMACD, -1) > Ref(WeeklyMACD, 0);
  50. FIWeekly = EMA(V*(C-Ref(C,-1)),13);
  51. WeeklyForceIndexLong = FIWeekly > 0;
  52. WeeklyForceIndexShort = FIWeekly < 0;
  53. TimeFrameRestore();
  54. // Weekly criteria
  55. MACDLongW = TimeFrameExpand( WeekHistRising, inDaily );
  56. MACDShortW= TimeFrameExpand( WeekHistFalling, inDaily );
  57. FILongW = TimeFrameExpand( WeeklyForceIndexLong, inDaily );
  58. FIShortW = TimeFrameExpand( WeeklyForceIndexShort, inDaily );
  59. // Daily criteria
  60. FIDaily = EMA(V*(C-Ref(C,-1)),2);
  61. FILongD = FIDaily < 0;
  62. FIShortD = FIDaily > 0;
  63. VFilter = EMA(V,50) > 100000;
  64. TenTwentyFilter = HHV(H,20)-LLV(L,20); // How much price has gone in one month (>=10 points preferable)
  65. FiftyDayHVFilter = round(StDev(log(C/Ref(C,-1)),50)*100*sqrt(256)); // One year volotility (>=40 preferable)
  66. bullpower= High - EMA(Close,13); 
  67. bearpower= Low - EMA(Close,13); 
  68. // Scan criteria
  69. ElderLong = MACDLongW AND FILongD;
  70. ElderShort = MACDShortW AND FIShortD;
  71. // Columns for exploration
  72. NumColumns = 10;
  73. Column0 = FullName();     
  74. Column0Name = "Ticker name";
  75. Column1 = " ";
  76. Column1Name =" ";
  77. Column2 = ElderLong;
  78. Column2Name = "Long";
  79. Column3 = ElderLong AND EMA(C,130) > Ref(EMA(C,130),-5);
  80. Column3Name = "Long EMA Weekly Direction";
  81. Column4 = Column3 AND (bearpower < 0 AND bullpower > 0);
  82. Column4Name = "Long Elder Ray Filter";
  83. Column5 = " ";
  84. Column5Name =" ";
  85. Column6 = FIWeekly;
  86. Column6Name = "Force Index 13 Period Weekly";
  87. Column7 = FIDaily;
  88. Column7Name = "Force Index 2 Period Daily";
  89. Column8 = TenTwentyFilter;
  90. Column8Name = "One Month Point Range";
  91. Column9 = FiftyDayHVFilter;
  92. Column9Name = "Historical Volotility 50 Day";
  93. AddTextColumn( IndustryID(1), "Industry" );
  94. AddTextColumn( MarketID(1), "Market" );
  95. // Filters
  96. Filter = TenTwentyFilter > 5 AND VFilter AND ElderLong;
  97. Buy = ElderLong;
  98. //Sell = ElderShort;
  99. // ---------------------------------------------------------------------------------------------------------------------- 
  100. // Charts -- (cut and paste the chart/indicator to it's own window with it's own file name and remove the Remark Slashes "//", except
  101. // for the first line, this line desctibes the chart function. Example...leave "//Weekly Bar Chart" from the following first line as as.
  102. // Weekly Bar Chart
  103. //_SECTION_BEGIN("Weekly Graph");
  104. //TimeFrameSet( inWeekly );
  105. //wo = O;
  106. //wh = H;
  107. //wl = L;
  108. //wc = C;
  109. //TimeFrameRestore(); 
  110. //PlotOHLC( wo, wh, wl, wc, "Weekly Close", colorCustom9, styleBar );
  111. //_SECTION_END();
  112. //_SECTION_BEGIN("EMA");
  113. //P = ParamField("Price field",-1);
  114. //Periods = Param("Periods", 15, 2, 200, 1, 10 );
  115. //Plot( EMA( P, Periods ), _DEFAULT_NAME(), ParamColor( "Color", colorYellow ), ParamStyle("Style") ); 
  116. //_SECTION_END();
  117. // ----------------------------------------------------------------------------------------------------------------------
  118. // Weekly Force Index 13 Chart
  119. //_SECTION_BEGIN("Weekly Force Index Thirteen Period");
  120. //TimeFrameSet( inWeekly ); 
  121. //FI=EMA(V*(C-Ref(C,-1)),13);
  122. //TimeFrameRestore();
  123. //Plot(FI,"FI",colorCustom11,styleLine);
  124. //Plot(0,"ZERO LINE",colorWhite,styleThick);
  125. //_SECTION_END();
  126. // ----------------------------------------------------------------------------------------------------------------------
  127. // Weekly MACD Histogran
  128. //_SECTION_BEGIN("Weekly MACD");
  129. //TimeFrameSet( inWeekly );
  130. //MACDw = MACD( 12, 26 ) - Signal( 12, 26, 9 );
  131. //MACDwLINE =  MACD( 12, 26 ) ;
  132. //MACDwSignal = Signal( 12, 26, 9 );
  133. //TimeFrameRestore();
  134. //Plot(MACDw,"MACD Weekly",colorYellow,styleHistogram);
  135. //Plot(MACDwLINE,"MACD Weekly Line",colorRed,styleLine);
  136. //Plot(MACDwSignal,"MACD Weekly Signal Line",colorBlue,styleLine);
  137. //_SECTION_END();
  138. // ----------------------------------------------------------------------------------------------------------------------
  139. // Daily Bar Chart
  140. //_SECTION_BEGIN("Elder Daily Chart with Envelope");
  141. //SetChartOptions(0,chartShowArrows|chartShowDates);
  142. //Plot( EMA(C,13),"EMA(13)",colorRed,styleLine);
  143. //PlotForeign(GetBaseIndex(),IndustryID(1),colorWhite,styleLine|styleLeftAxisScale);
  144. // LookBkPd = 100 ;
  145. // AvgPd = 22 ;
  146. // ExternalBarPct = 15 ;
  147. // ConvergePct = 2 ;
  148. // Middle = EMA( C,AvgPd ) ;
  149. // Rng = HHV( H,LookBkPd ) - LLV( L,LookBkPd ) ;
  150. // X = Rng ;
  151. // deltaX = X/2 ;
  152. // do
  153. // {
  154. // Over = H > Middle + X ;
  155. // Under = L < Middle - X ;
  156. // OuterPct = 100*( Sum( Over, LookBkPd ) + Sum( Under, LookBkPd )
  157. // )/LookBkPd ;
  158. // OP = LastValue(OuterPct) ;
  159. // X=X+sign( OP - ExternalBarPct )*deltaX ;
  160. // deltaX = deltaX/2 ;
  161. // }while ( abs( OP - ExternalBarPct ) > ConvergePct ) ;
  162. // Plot( Middle, "MA", colorYellow, styleLine|styleNoTitle ) ;
  163. // Plot( Middle+X, "MA", colorSkyblue, styleDashed|styleNoTitle ) ;
  164. // Plot( Middle-X, "MA", colorSkyblue, styleDashed|styleNoTitle ) ;
  165. //_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
  166. //Plot( C, "Close", ParamColor("Color", colorCustom9 ), styleBar | ParamStyle("Style") | GetPriceStyle() ); 
  167. //_SECTION_END();
  168. // ----------------------------------------------------------------------------------------------------------------------
  169. // Daily Force Index 2 Period
  170. //_SECTION_BEGIN("Force Index 2 Day");
  171. //FI=EMA(V*(C-Ref(C,-1)),2);
  172. //Plot(FI,"FI",colorCustom11,styleLine);
  173. //Plot(0,"ZERO LINE",colorWhite,styleThick);
  174. //_SECTION_END();
  175. // ----------------------------------------------------------------------------------------------------------------------
  176. // Daily MACD Histogram
  177. //_SECTION_BEGIN("MACD");
  178. //r1 = Param( "Fast avg", 12, 2, 200, 1 );
  179. //r2 = Param( "Slow avg", 26, 2, 200, 1 );
  180. //r3 = Param( "Signal avg", 9, 2, 200, 1 );
  181. //Plot( ml = MACD(r1, r2), StrFormat(_SECTION_NAME()+"(%g,%g)", r1, r2), ParamColor("MACD color", colorRed ), ParamStyle("MACD style") );
  182. //Plot( sl = Signal(r1,r2,r3), "Signal" + _PARAM_VALUES(), ParamColor("Signal color", colorBlue ), ParamStyle("Signal style") );
  183. //Plot( ml-sl, "MACD Histogram", ParamColor("Histogram color", colorBlack ), styleNoTitle | ParamStyle("Histogram style", styleHistogram | styleNoLabel, maskHistogram ) );
  184. //_SECTION_END();
  185. // ----------------------------------------------------------------------------------------------------------------------
  186. // Daily BullPower
  187. //_SECTION_BEGIN("Bull Power EMA");
  188. ///*Bull Power*/
  189. //Lookback = Param ("EMA Lookback",13);
  190. //BullPower = High - EMA(Close,Lookback);
  191. //Plot (BullPower, "", ParamColor ("Color", colorCustom11), styleHistogram );
  192. //Title = Name() + "   " + Date() + "     Bull Power" + WriteVal (Lookback, 3.0) + " Day:   " + WriteVal (BullPower, 5.3);
  193. //GraphXSpace = 5;
  194. //_SECTION_END();
  195. // ----------------------------------------------------------------------------------------------------------------------
  196. // Daily BearPower
  197. //_SECTION_BEGIN("Bear Power EMA");
  198. ///*Bear Power*/
  199. //Lookback = Param ("EMA Lookback", 13);
  200. //BearPower = Low - EMA(Close,Lookback);
  201. //Plot (BearPower, "", ParamColor ("Color", colorRed), styleHistogram );
  202. //Title = Name() + "   " + Date() + "     Bear Power" + WriteVal (Lookback, 3.0) + " Day:   " + WriteVal (BearPower, 5.3);
  203. //GraphXSpace = 5;
  204. //_SECTION_END();
  205. // End ---------------------------------------------------------------------------------------------------------------------