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