half-automated Trading System.afl
上传用户:shiqiang
上传日期:2009-06-12
资源大小:1289k
文件大小:6k
源码类别:

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    half-automated Trading System
  4. //  Author/Uploader: Thomas Zmuck 
  5. //  E-mail:          thomas.zm@aon.at
  6. //  Date/Time Added: 2001-12-21 16:45:47
  7. //  Origin:          
  8. //  Keywords:        half-automated Trading System
  9. //  Level:           basic
  10. //  Flags:           system,exploration
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=142
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=142
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  This System finds stocks, where the price reached a support or resistance
  17. //  line, that you have manually drawn.
  18. //
  19. //  You must give every line any of these 6 predifined StudyID's
  20. //
  21. //  (RE,SU,UP,DN,RI,ST). The system automaticaly detects, if the line is
  22. //  currently a support or resistance line.
  23. //
  24. //  There are two modes: Modus == 0; I called it "after touching" , because you
  25. //  become the signal after the stock has touched any support or resistance
  26. //  line.Adjustment for touching is "ALvalue and AHvalue" With ALvalue you can
  27. //  define, how near the Low must go to any support line, equivalent AHvalue to
  28. //  resistance line, before a signal is given.
  29. //
  30. //  With Modus == 1 "bLvalue and bHvalue" you can detect stocks, where the
  31. //  price is before touching any line, so you mostly can find signals for the
  32. //  next trading day and so you have enough time to check other arguments and
  33. //  then you can buy at the exact support Level or sell at the exact resistance
  34. //  level.
  35. //
  36. //  Cross_buy_value = 1.03; Cross_sell_value = 0.97;
  37. //
  38. //  Here you can define the value, where the price must reached, before a
  39. //  signal would be generated. For example: 1.03 means that a buy signal is
  40. //  given, when the price is 3% above the last resistance. equivalent the
  41. //  cross_sell_value.
  42. //
  43. //  With the Explore Function you can see the distance from the current close
  44. //  to all support and resistance lines in percent.
  45. //
  46. //  Re = Resistance Su = Support
  47. //
  48. //  In the indicator window you can see the close and all your study's
  49. //  (currently 6 study's possible).
  50. //
  51. //  So you can quickly see, if you've forgotten to give a study ID to any line.
  52. //
  53. //  Attention: Dont forget, that the back-test brings unrealistic results,
  54. //  because the signals only real at the time that you've drawn the study.
  55. //
  56. //  Also dont forget in the explore window, that only the resistance and
  57. //  support distances are shown, that you have drawn and defined with a study
  58. //  ID.
  59. //
  60. //  So enjoy it!
  61. //
  62. //  Every comments are welcome
  63. //
  64. //------------------------------------------------------------------------------
  65. Modus = 0; 
  66. /*Modus 0 = after touching (bLvalue and bHvalue)*/
  67. /*Modus 1 = before touching* (ALvalue and AHvalue)*/ 
  68. bLvalue = 1.06;   ALvalue = 1.02;
  69. bHvalue = 0.93;   AHvalue = 0.99;
  70. Cross_buy_value  = 1.03;
  71. Cross_sell_value = 0.97;
  72. /*this is the value, where a line cross is defined as true, it's a way to ignore false breakout's  default = 3 % */
  73. MLV = IIf (Modus ==0, ALvalue,
  74. bLvalue);/*Modus_Low_value */
  75. MHV = IIf (Modus ==0, AHvalue, bHvalue);/*Modus_High_value */
  76. /*Study - Definition  - give your name's */
  77. L1 = Study ("SU"); L2 = Study ("RE"); L3 = Study ("DN");
  78. L4 = Study ("UP"); L5 = Study ("RI"); L6 = Study ("ST");
  79. /*Buy Conditions*/
  80. N1 = L <= MLV * L1 AND IIf(Modus == 1,L >= Alvalue * L1,C>0) AND C > L1 AND Ref (L,-1)>L1;
  81. N2 = L <= MLV * L2 AND IIf(Modus == 1,L >= Alvalue * L2,C>0) AND C > L2 AND Ref (L,-1)>L2;
  82. N3 = L <= MLV * L3 AND IIf(Modus == 1,L >= Alvalue * L3,C>0) AND C > L3 AND Ref (L,-1)>L3;
  83. N4 = L <= MLV * L4 AND IIf(Modus == 1,L >= Alvalue * L4,C>0) AND C > L4 AND Ref (L,-1)>L4;
  84. N5 = L <= MLV * L5 AND IIf(Modus == 1,L >= Alvalue * L5,C>0) AND C > L5 AND Ref (L,-1)>L5;
  85. N6 = L <= MLV * L6 AND IIf(Modus == 1,L >= Alvalue * L6,C>0) AND C > L6 AND Ref (L,-1)>L6;
  86. P1 = C > L1*Cross_buy_value AND (Ref (C,-1)<L1 OR Ref (C,-2)<L1);
  87. P2 = C > L2*Cross_buy_value AND (Ref (C,-1)<L2 OR Ref (C,-2)<L2);
  88. P3 = C > L3*Cross_buy_value AND (Ref (C,-1)<L3 OR Ref (C,-2)<L3);
  89. P4 = C > L4*Cross_buy_value AND (Ref (C,-1)<L4 OR Ref (C,-2)<L4);
  90. P5 = C > L5*Cross_buy_value AND (Ref (C,-1)<L5 OR Ref (C,-2)<L5);
  91. P6 = C > L6*Cross_buy_value AND (Ref (C,-1)<L6 OR Ref (C,-2)<L6);
  92. /*Sell Conditions*/
  93. Q1 = H >= MHV * L1 AND IIf(Modus == 1,H <= AHvalue * L1,C>0) AND C < L1 AND Ref (H,-1)<L1;
  94. Q2 = H >= MHV * L2 AND IIf(Modus == 1,H <= AHvalue * L2,C>0) AND C < L2 AND Ref (H,-1)<L2;
  95. Q3 = H >= MHV * L3 AND IIf(Modus == 1,H <= AHvalue * L3,C>0) AND C < L3 AND Ref (H,-1)<L3;
  96. Q4 = H >= MHV * L4 AND IIf(Modus == 1,H <= AHvalue * L4,C>0) AND C < L4 AND Ref (H,-1)<L4;
  97. Q5 = H >= MHV * L5 AND IIf(Modus == 1,H <= AHvalue * L5,C>0) AND C < L5 AND Ref (H,-1)<L5;
  98. Q6 = H >= MHV * L6 AND IIf(Modus == 1,H <= AHvalue * L6,C>0) AND C < L6 AND Ref (H,-1)<L6;
  99. R1 = C < L1*Cross_sell_value  AND (Ref (C,-1)>L1 OR Ref (C,-2)>L1);
  100. R2 = C < L2*Cross_sell_value  AND (Ref (C,-1)>L2 OR Ref (C,-2)>L2);
  101. R3 = C < L3*Cross_sell_value  AND (Ref (C,-1)>L3 OR Ref (C,-2)>L3);
  102. R4 = C < L4*Cross_sell_value  AND (Ref (C,-1)>L4 OR Ref (C,-2)>L4);
  103. R5 = C < L5*Cross_sell_value  AND (Ref (C,-1)>L5 OR Ref (C,-2)>L5);
  104. R6 = C < L6*Cross_sell_value  AND (Ref (C,-1)>L6 OR Ref (C,-2)>L6);
  105. /*Buy & Sell PART*/
  106. Buy = N1 OR N2 OR N3 OR N4 OR N5 OR N6 OR 
  107.       P1 OR P2 OR P3 OR P4 OR P5 OR P6;
  108. Sell = Q1 OR Q2 OR Q3 OR Q4 OR Q5 OR Q6 OR 
  109.        R1 OR R2 OR R3 OR R4 OR R5 OR R6;
  110. /*Explore-Part*/
  111. L1_diff =  (L1/ C -1)*100;
  112. L2_diff =  (L2/ C -1)*100;
  113. L3_diff =  (L3/ C -1)*100;
  114. L4_diff =  (L4/ C -1)*100;
  115. L5_diff =  (L5/ C -1)*100;
  116. L6_diff =  (L6/ C -1)*100;
  117. Filter = Buy OR Sell;
  118. AddColumn( L1_diff,  WriteIf (C > L1 ,"Su1_%", "Re1_%"),1.1 );
  119. AddColumn( L2_diff,  WriteIf (C > L2 ,"Su2_%", "Re2_%"),1.1 );
  120. AddColumn( L3_diff,  WriteIf (C > L3 ,"Su3_%", "Re3_%"),1.1 );
  121. AddColumn( L4_diff,  WriteIf (C > L4 ,"Su4_%", "Re4_%"),1.1 );
  122. AddColumn( L5_diff,  WriteIf (C > L5 ,"Su5_%", "Re5_%"),1.1 );
  123. AddColumn( L6_diff,  WriteIf (C > L6 ,"Su6_%", "Re6_%"),1.1 );
  124. /*Graph-Part*/
  125. Plot (C,"close",1,64);
  126. Plot (L1,"L1",2,1);/*white*/
  127. Plot (L2,"L2",5,1);/*green*/
  128. Plot (L3,"L3",7,1);/*yellow*/
  129. Plot (L4,"L4",4,1);/*red*/
  130. Plot (L5,"L5",6,1);/*blue*/
  131. Plot (L6,"L6",9,1);/*orange*/