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

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    Rectangle entry points
  4. //  Author/Uploader: Ed 
  5. //  E-mail:          empottasch@home.nl
  6. //  Date/Time Added: 2004-11-14 15:28:38
  7. //  Origin:          from "Professional Stock Trading, by Conway / Behle, 2003
  8. //  Keywords:        Rectangle Geometric trading entry long short
  9. //  Level:           semi-advanced
  10. //  Flags:           indicator
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=401
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=401
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  Rectangles give amazing entry positions so it seems. Trick is what to do
  17. //  with them. That .... I leave for yourself to find out (I did not work this
  18. //  out myself yet as well). The system is documented starting in Chapter 5 of
  19. //  Conway's book. Trick as with any system is where do you get in and where do
  20. //  you get out. This is essential for a system to work. The code I give here
  21. //  just locates the entries.
  22. //
  23. //------------------------------------------------------------------------------
  24. /*
  25. Rectangle System Development
  26. after: "Professional Stock Trading", M. Conway / A. Behle, 2003, pages 106, 107, 108
  27. Edward Pottasch, nov 2004
  28. */
  29. RectangleLength = 4;
  30. RangeLength = RectangleLength * 3;
  31. RangeFactor = 1.0;
  32. RangeRatioLimit = 0.3;
  33. AtrPeriod = RangeLength;
  34. // rectangle
  35. hg = HHV(H,RectangleLength);
  36. lw = LLV(L,RectangleLength);
  37. HeightRectangle = hg - lw;
  38. // preceding range
  39. hgp = Ref(HHV(H,RangeLength),RectangleLength * -1);
  40. lwp = Ref(LLV(L,RangeLength),RectangleLength * -1);
  41. HeightRangeLength = hgp - lwp;
  42. // aspect ratio
  43. ar = HeightRectangle / HeightRangeLength;
  44. // ATR
  45. at = ATR(AtrPeriod);
  46. // decide if it is a rectangle
  47. yon = IIF(ar < RangeRatioLimit AND HeightRectangle < at * RangeFactor, 1, 0);
  48. // breakout level
  49. long_breakout_level = IIF(yon,yon * hg,null);
  50. short_breakout_level = IIF(yon,yon * lw,null);
  51. // decide about direction
  52. Buy = IIF(H > Ref(long_breakout_level,-1),1,0);
  53. BuyPrice = IIF(O > Ref(long_breakout_level,-1), O, Ref(long_breakout_level,-1));
  54. Short = IIF(L < Ref(short_breakout_level,-1),1,0);
  55. ShortPrice = IIF(O < Ref(short_breakout_level,-1), O, Ref(short_breakout_level,-1));
  56. Plot(C,"",colorwhite,64);
  57. Plot(ref(hg,-1),"Long breakout level",colorblue,1);
  58. Plot(ref(lw,-1),"Short breakout level",coloryellow,1);
  59. PlotShapes(IIf(yon,shapeCircle,0),colorWhite, layer = 0, yposition = O, offset = 0 );
  60. PlotShapes(IIf(Buy,shapeUpArrow,0),colorWhite, layer = 0, yposition = BuyPrice, offset = 0 );
  61. PlotShapes(IIf(Short,shapeHollowDownArrow,0),colorLightBlue, layer = 0, yposition = ShortPrice, offset = 0 );