CandleStochastics.afl
上传用户:shiqiang
上传日期:2009-06-12
资源大小:1289k
文件大小:4k
源码类别:

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    CandleStochastics
  4. //  Author/Uploader: Jim Varney 
  5. //  E-mail:          
  6. //  Date/Time Added: 2001-06-19 01:31:57
  7. //  Origin:          
  8. //  Keywords:        Candlesticks Stochastics
  9. //  Level:           medium
  10. //  Flags:           exploration
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=26
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=26
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  "CandleStochastics" is an Exploration that combines Stochastics with a scan
  17. //  for 7 different candlestick patterns (Dark Cloud Cover, Piercing Line,
  18. //  Morning and Evening Doji Stars, Hammer, and Engulfing). A Buy signal occurs
  19. //  when the 14-4 Stochastic is at or below 20 and at least one bullish candle
  20. //  pattern is detected. Sell signals happen at 80 or better and if there's a
  21. //  bearish candle pattern.
  22. //
  23. //------------------------------------------------------------------------------
  24. /* -- CANDLESTOCHASTICS  -- */
  25. /* -- Written by Jim Varney  -- */
  26. /*
  27. This Exploration combines Stochastics with a scan for 7 different candlestick patterns (Dark Cloud Cover, Piercing Line, Morning and Evening Doji Stars, Hammer, and Engulfing).
  28. Buy Signal: Stochastic at or below 20 and at least one bullish candle pattern.
  29. Sell Signal: Stochastic at or above 80 and at least one bearish candle pattern.
  30. Vol Index: this column is the ratio of today's volume to the 14-day average volume.
  31. This column should be sorted Descending. The best signals are occur when VolIndex is at least 2 or higher.
  32. PCL[up]: Piercing Line, "up" signifies Bullish.
  33. MDS[up]: Morning Doji Star
  34. BLE[up]: Bullish Engulfing
  35. HAM[up]: Hammer
  36. BRE[dn]: Bearish Engulfing, "dn" signifies Bearish.
  37. DCC[dn]: Dark Cloud Cover
  38. EDS[dn]: Evening Doji Star
  39. A "1" in the column signifies TRUE, a "0" indicates no signal.
  40. ------------------------------------------------------------------*/
  41. /* Minimum Price and 14 day Avg Volume Values for Filter */
  42. minPrice = 3;     //change as needed
  43. minVol = 50000;   //change as needed
  44. VolAvg = ma( v, 14 );
  45. VolumeIdx = v / VolAvg;
  46. AvgRange = sum( abs(O-C),15 )/15;
  47. /* Candle Codes */
  48. White = iif((C>O) AND ((C-O)>=0.8*(H-L)),1,0) AND (C-O)>AvgRange;
  49. Black = iif((C<O) AND ((O-C)>=0.8*(H-L)),1,0) AND (O-C)>AvgRange;
  50. Doji  = iif(abs(O-C)<=0.1*(H-L),1,0);
  51. /* Dark Cloud Cover [Bear] */
  52. DCC = iif(ref(White, -1) AND Black AND C<=ref(((H+L)/2),-1)
  53. AND O>ref(C,-1), 1,0);
  54. /* Piercing Line [Bull] */
  55. PL = iif(ref(Black, -1) AND White AND C>=ref(((H+L)/2),-1)
  56. AND O<ref(C,-1), 1,0);
  57. /* Evening Doji Star [Bear] */
  58. EDS = iif(ref(White, -2) AND ref(Doji, -1) AND Black AND
  59. C<=ref(((H+L)/2),-2), 1,0);
  60. /* Morning Doji Star [Bull] */
  61. MDS = iif(ref(Black, -2) AND ref(Doji, -1) AND White AND
  62. C>=ref(((H+L)/2),-2), 1,0);
  63. /* Hammer [Bull] */
  64. HAM = iif( (H-L > 1.5*AvgRange) AND (C > (H+L)/2)  AND (O > C) AND 
  65. (VolumeIdx > 2), 1, 0);
  66. /* Bearish Engulfing */
  67. BRE = iif(Black AND ref(White, -1) AND (C < ref(O, -1))  AND (O > ref(C, -1)), 1,0);
  68. /* Bullish Engulfing */
  69. BLE = iif(White AND ref(Black, -1) AND (C > ref(O,-1))  AND (O < ref(C,-1)), 1,0);
  70. /* Stochastics 14-4 */
  71. ss = ma(stochk(14),4);
  72. StochBuy = iif(ss<=20, 1, 0);
  73. StochSell = iif(ss>=80, 1, 0);
  74. /* Exploration Columns for Sorting */
  75. NumColumns = 9;
  76. Column0 = V;
  77. Column1 = VolumeIdx;
  78. Column2 = PL;
  79. Column3 = MDS;
  80. Column4 = BLE;
  81. Column5 = HAM;
  82. Column6 = BRE;
  83. Column7 = DCC;
  84. Column8 = EDS;
  85. Column0Name = "Volume"; 
  86. Column1Name = "Vol Idx";
  87. Column2Name = "PCL[up]";
  88. Column3Name = "MDS[up]";
  89. Column4Name = "BLE[up]";
  90. Column5Name = "HAM[up]";
  91. Column6Name = "BRE[dn]";
  92. Column7Name = "DCC[dn]";
  93. Column8Name = "EDS[dn]";
  94. Column0format = 1.0;
  95. Column1format = 1.1;
  96. Column2format = 1.0;
  97. Column3format = 1.0;
  98. Column4format = 1.0;
  99. Column5format = 1.0;
  100. Column6format = 1.0;
  101. Column7format = 1.0;
  102. Column8format = 1.0;
  103. /* Filter */
  104. Filter = ((C > minPrice) AND (VolAvg >= minVol)) AND (StochBuy AND (PL or MDS or BLE or HAM)) OR (StochSell AND (BRE or DCC or EDS));
  105. /* Buy and Sell */
  106. Buy = iif((StochBuy > 0) AND (PL + MDS + HAM + BLE > 0), 1, 0);
  107. Sell = iif((StochSell > 0) AND (BRE + DCC + EDS > 0), 1, 0);