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

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    Head & Shoulders Pattern
  4. //  Author/Uploader: Dimitris Tsokakis 
  5. //  E-mail:          
  6. //  Date/Time Added: 2002-02-27 05:27:02
  7. //  Origin:          
  8. //  Keywords:        
  9. //  Level:           medium
  10. //  Flags:           exploration
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=166
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=166
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  For a short description of Head & Shoulders Pattern you may see at
  17. //
  18. //  http://www.chartpattern.com/head_sholuders.html
  19. //
  20. //  http://www.chartpatterns.com/headandshoulderschartsstocks.htm
  21. //
  22. //  etc.
  23. //
  24. //  Paste the formula in Automatic Analysis and Explore for n last quotations,
  25. //  n=1.
  26. //
  27. //  Paste the same formula in Indicator Builder and select scaling Automatic.
  28. //
  29. //  H&S points and respective neckline is painted yellow, inverted H&S
  30. //  is light blue.
  31. //
  32. //  H&S is considered as a bearish formation, confirmed after the neckline
  33. //  breakout.
  34. //
  35. //  Inverted H&S is considered as a bullish formation, confirmed after the
  36. //  neckline breakout.
  37. //
  38. //  Sensitivity is calibrated at the per=5 line. Increasing per makes the
  39. //  formula less sensitive.
  40. //
  41. //  The last shoulder should be less than back=50 days ago and the distance
  42. //  between shoulders should be less than inter=100 days.
  43. //
  44. //------------------------------------------------------------------------------
  45. x = Cum(1);
  46. per = 5;
  47. back=50;
  48. inter=100;
  49. s11=H;s12=L;
  50. /* H & S */
  51. pR = PeakBars( s11, per, 1 ) == 0;
  52. endt1= LastValue(ValueWhen( pR, x, 1 ));
  53. medt1=LastValue(ValueWhen( pR, x, 2 ));
  54. startt1=LastValue(ValueWhen( pR, x, 3 ));
  55. dt1=endt1-startt1;
  56. C1=x==endt1 OR x==medt1 OR x==startt1;
  57. endR = LastValue(ValueWhen( pR, s11, 1 ) );
  58. medR=LastValue(ValueWhen( pR, s11, 2 ) );
  59. startR = LastValue( ValueWhen( pR, s11, 3  ));
  60. Filter1=medR>endR AND medR>startR AND abs(startR-endR)<0.02*(startR+endR) AND dt1<inter AND endt1>LastValue(x)-back;
  61. MaxGraph=10;Graph1=C;Graph1Style=64;GraphXSpace=5;
  62. /*H&S Neck Line*/
  63. Aper=medt1-startt1;bper=endt1-medt1;
  64. La=  LastValue(ValueWhen(x==medt1,LLV(L,Aper)));
  65. Lb=LastValue(ValueWhen(x==-1+endt1,LLV(L,bper)));
  66. Fa=L==La AND x>startt1 AND x<medt1;
  67. Fb=L==Lb AND x>medt1 AND x<endt1;
  68. endt= LastValue(ValueWhen( Fb, x ));
  69. startt=LastValue(ValueWhen( Fa, x ));
  70. dtS =endt-startt;endS = Lb;startS = La;
  71. aS = (endS-startS)/dtS;bS = endS;
  72. trendlineS = aS * ( x  -endt ) + bS; 
  73. Graph3 = IIf(Filter1 AND x>startt-5,trendlineS,-1e10);Graph3BarColor=7;
  74. /*Inverted H & S*/
  75. tpR = TroughBars( s12, per, 1 ) == 0;
  76. tendt1=LastValue(ValueWhen(tpr,x,1));
  77. tmedt1=LastValue(ValueWhen(tpr,x,2));
  78. tstartt1=LastValue(ValueWhen(tpr,x,3));
  79. tdt1=tendt1-tstartt1;
  80. C2=x==tendt1 OR x==tmedt1 OR x==tstartt1;
  81. tendR = LastValue(ValueWhen( tpR, s12, 1 ) );
  82. tmedR=LastValue(ValueWhen( tpR, s12, 2 ) );
  83. tstartR = LastValue( ValueWhen( tpR, s12, 3  ));
  84. Filter2=tmedR<tendR AND tmedR<tstartR AND abs(tstartR-tendR)<0.02*(tstartR+tendR) AND tdt1<inter AND tendt1>LastValue(x)-back;
  85. Graph1BarColor=IIf(C1 AND Filter1,7,IIf(C2 AND Filter2,10,1));
  86. /*Inverted H&S Neck Line*/
  87. tAper=tmedt1-tstartt1;tbper=tendt1-tmedt1;
  88. Ha=  LastValue(ValueWhen(x==tmedt1,HHV(H,tAper)));
  89. Hb=LastValue(ValueWhen(x==-1+tendt1,HHV(H,tbper)));
  90. tFa=H==Ha AND x>tstartt1 AND x<tmedt1;
  91. tFb=H==Hb AND x>tmedt1 AND x<tendt1;
  92. Rendt= LastValue(ValueWhen(tFb, x ));
  93. Rstartt=LastValue(ValueWhen( tFa, x ));
  94. Rdt =Rendt-Rstartt;endR = Hb;startR = Ha;
  95. aR = (endR-startR)/Rdt;bR = endR;
  96. trendlineR = aR * ( x  -Rendt ) + bR; 
  97. Graph4 = IIf(Filter2 AND x>Rstartt-5,trendlineR,-1e10);Graph4BarColor=10;
  98. Filter=Filter1 OR Filter2;
  99. NumColumns=2;/*Graph2=x==-1+tendt1;*/
  100. Column0=Filter1;
  101. Column1=Filter2;
  102. Column0Format=Column1Format=1.0;
  103. Column0Name="H&S";
  104. Column1Name="inv H&S";