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

金融证券系统

开发平台:

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-05 23:56:38
  7. //  Origin:          As derrived from "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:           showemail
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=490
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=490
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  Elder Triple Screen Trading System. As derrived from "Trading For A Living"
  17. //  and "Come Into My Trading Room" by Alexander Elder. This scan finds long
  18. //  candidates by the weekly MACD rising and the weekly 13 period Force Index
  19. //  above it's zero line. Plot a weekly EMA (26 period)...it should be rising
  20. //  to go long. The daily 2 period Force Index must be below it's zero line.
  21. //  Look for the stock on a pullback around it's daily 13 period ema. Also use
  22. //  the daily 22 period ema to determine the direction of the daily trend. Do
  23. //  the opposite for shorts. Best used as an Exploration.
  24. //
  25. //------------------------------------------------------------------------------
  26. // Elder Triple Screen Trading System.
  27. // Coded by Dennis Skoblar 7/05/2005.
  28. // As derrived from "Trading For A Living" and "Come Into My Trading Room" by Alexander Elder.
  29. // 
  30. // This scan finds long candidates by the weekly MACD rising and the weekly 13 period Force Index above it's zero line.
  31. // Plot a weekly EMA (26 period)...it should be rising to go long.
  32. // The daily 2 period Force Index must be below it's zero line. Look for the stock on a pullback around it's daily 13 period ema.
  33. // Also use the daily 22 period ema to determine the direction of the daily trend.
  34. // Do the opposite for shorts. Best used as an Exploration. 
  35. TimeFrameSet( inWeekly );
  36. WeeklyMACD = MACD( 12, 26 ) - Signal( 12, 26, 9 );
  37. WeekHistRising = IsTrue ( Ref(WeeklyMACD, -1) < Ref(WeeklyMACD, 0) );
  38. WeekHistFalling = IsTrue ( Ref(WeeklyMACD, -1) > Ref(WeeklyMACD, 0) );
  39. FIWeekly = EMA(((C-Ref(C,-1))*V),13);
  40. WeeklyForceIndexLong = IsTrue ( FIWeekly > 0 );
  41. WeeklyForceIndexShort = IsTrue ( FIWeekly < 0);
  42. TimeFrameRestore();
  43. // Weekly criteria
  44. MACDLongW = TimeFrameExpand( WeekHistRising, inWeekly );
  45. MACDShortW= TimeFrameExpand( WeekHistFalling, inWeekly );
  46. FILongW = TimeFrameExpand( WeeklyForceIndexLong, inWeekly );
  47. FIShortW = TimeFrameExpand( WeeklyForceIndexShort, inWeekly );
  48. // Daily criteria
  49. FIDaily = EMA(((C-Ref(C,-1))*V),2);
  50. FILongD = IsTrue ( FIDaily < 0 );
  51. FIShortD = IsTrue ( FIDaily > 0 );
  52. PVFilter = (C>15) AND Ref(MA(V,50),-1)>100000;
  53. TenTwentyFilter = HHV(H,20)-LLV(L,20); // How much price has gone in one month (>=10 points preferable)
  54. FiftyDayHVFilter = round(StDev(log(C/Ref(C,-1)),50)*100*sqrt(256)); // One year volotility (>=40 preferable)
  55. // Scan criteria
  56. ElderLong = MACDLongW AND FILongW AND FILongD;
  57. ElderShort = MACDShortW AND FIShortW AND FIShortD;
  58. // Columns for exploration
  59. NumColumns = 7;
  60. Column0 = FullName();     
  61. Column0Name = "Ticker name";
  62. Column1 = ElderLong;
  63. Column1Name = "Long";
  64. Column2 = ElderShort;
  65. Column2Name = "Short";
  66. Column3 = FiftyDayHVFilter;
  67. Column3Name = "50 Day HV";
  68. Column4 = TenTwentyFilter;
  69. Column4Name = "10/20 Filter";
  70. Column5 = FIWeekly;
  71. Column5Name = "Weekly Force Index";
  72. Column6 = FIDaily;
  73. Column6Name = "Daily Force Index";
  74. AddTextColumn( IndustryID(1), "Industry" );
  75. AddTextColumn( MarketID(1), "Market" );
  76. // Filters
  77. Filter = TenTwentyFilter > 5 AND PVFilter AND (ElderLong OR ElderShort);
  78. Buy= ElderLong;
  79. Sell = ElderShort;
  80. // Charts (just cut and paste each to it's owm window)-------------------------------------------------------------------
  81. // Weekly Bar Chart
  82. _SECTION_BEGIN("Weekly Graph");
  83. TimeFrameSet( inWeekly );
  84. wo = O;
  85. wh = H;
  86. wl = L;
  87. wc = C;
  88. TimeFrameRestore(); 
  89. PlotOHLC( wo, wh, wl, wc, "Weekly Close", colorCustom9, styleBar );
  90. _SECTION_END();
  91. _SECTION_BEGIN("EMA");
  92. P = ParamField("Price field",-1);
  93. Periods = Param("Periods", 15, 2, 200, 1, 10 );
  94. Plot( EMA( P, Periods ), _DEFAULT_NAME(), ParamColor( "Color", colorCycle ), ParamStyle("Style") ); 
  95. _SECTION_END();
  96. // ----------------------------------------------------------------------------------------------------------------------
  97. // Weekly Force Index 13 Chart
  98. _SECTION_BEGIN("Weekly Force Index Thirteen Period");
  99. TimeFrameSet( inWeekly ); 
  100. FI=EMA(((C-Ref(C,-1))*V),13);
  101. TimeFrameRestore();
  102. Plot(FI,"FI",colorCustom11,styleLine);
  103. Plot(0,"ZERO LINE",colorWhite,styleThick);
  104. _SECTION_END();
  105. // ----------------------------------------------------------------------------------------------------------------------
  106. // Weekly MACD Histogran
  107. _SECTION_BEGIN("Weekly MACD");
  108. TimeFrameSet( inWeekly );
  109. MACDw = MACD( 12, 26 ) - Signal( 12, 26, 9 );
  110. MACDwLINE =  MACD( 12, 26 ) ;
  111. MACDwSignal = Signal( 12, 26, 9 );
  112. TimeFrameRestore();
  113. Plot(MACDw,"MACD Weekly",colorYellow,styleHistogram);
  114. Plot(MACDwLINE,"MACD Weekly Line",colorRed,styleLine);
  115. Plot(MACDwSignal,"MACD Weekly Signal Line",colorBlue,styleLine);
  116. _SECTION_END();
  117. // ----------------------------------------------------------------------------------------------------------------------
  118. // Daily Bar Chart
  119. _SECTION_BEGIN("Price");
  120. SetChartOptions(0,chartShowArrows|chartShowDates);
  121. _N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
  122. Plot( C, "Close", ParamColor("Color", colorCustom9 ), styleBar | ParamStyle("Style") | GetPriceStyle() ); 
  123. _SECTION_END();
  124. _SECTION_BEGIN("EMA");
  125. P = ParamField("Price field",-1);
  126. Periods = Param("Periods", 13);
  127. Plot( EMA( P, Periods ), _DEFAULT_NAME(), ParamColor( "Color", colorYellow ), ParamStyle("Style") ); 
  128. _SECTION_END();
  129. _SECTION_BEGIN("EMA1");
  130. P = ParamField("Price field",-1);
  131. Periods = Param("Periods", 22);
  132. Plot( EMA( P, Periods ), _DEFAULT_NAME(), ParamColor( "Color", colorRed ), ParamStyle("Style") ); 
  133. _SECTION_END();
  134. // ----------------------------------------------------------------------------------------------------------------------
  135. // Daily Force Index 2 Period
  136. _SECTION_BEGIN("Force Index 2 Day");
  137. FI=EMA(((C-Ref(C,-1))*V),2);
  138. Plot(FI,"FI",colorCustom11,styleLine);
  139. Plot(0,"ZERO LINE",colorWhite,styleThick);
  140. _SECTION_END();
  141. // ----------------------------------------------------------------------------------------------------------------------
  142. // Daily MACD Histogram
  143. _SECTION_BEGIN("MACD");
  144. r1 = Param( "Fast avg", 12, 2, 200, 1 );
  145. r2 = Param( "Slow avg", 26, 2, 200, 1 );
  146. r3 = Param( "Signal avg", 9, 2, 200, 1 );
  147. Plot( ml = MACD(r1, r2), StrFormat(_SECTION_NAME()+"(%g,%g)", r1, r2), ParamColor("MACD color", colorRed ), ParamStyle("MACD style") );
  148. Plot( sl = Signal(r1,r2,r3), "Signal" + _PARAM_VALUES(), ParamColor("Signal color", colorBlue ), ParamStyle("Signal style") );
  149. Plot( ml-sl, "MACD Histogram", ParamColor("Histogram color", colorBlack ), styleNoTitle | ParamStyle("Histogram style", styleHistogram | styleNoLabel, maskHistogram ) );
  150. _SECTION_END();
  151. // End ---------------------------------------------------------------------------------------------------------------------