STO & MACD Buy Signals with Money-Management.afl
上传用户:shiqiang
上传日期:2009-06-12
资源大小:1289k
文件大小:9k
源码类别:

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    STO & MACD Buy Signals with Money-Management
  4. //  Author/Uploader: Stefan-Georg Fuchs 
  5. //  E-mail:          sgfuchs@tradeshark.de
  6. //  Date/Time Added: 2001-10-13 08:55:29
  7. //  Origin:          Own
  8. //  Keywords:        
  9. //  Level:           semi-advanced
  10. //  Flags:           exploration
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=123
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=123
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  // This exploration looks for simple Stochastics and MACD buy signals
  17. //
  18. //  // to inialize long trades.
  19. //
  20. //  // Money-, Risk and Positionmanagment is more important for
  21. //
  22. //  // successful trading than having only good entries and exits.
  23. //
  24. //  // Therefore, I combined these signals with strict trade-,
  25. //
  26. //  // money-management and positionsizing rules.
  27. //
  28. //  // These trades are usually of very STnature ( 1 - 20 days ) because
  29. //
  30. //  // I used ST Volatility for Money-, Risk-, and positionsizing-managem.
  31. //
  32. //  // Feel free to alter these settings to your preferred trading-style
  33. //
  34. //  // The exploration can also be customized in terms of Account size,
  35. //
  36. //  // personal risk preferences and triggers for STO Indicator.
  37. //
  38. //  // STO and MACD can be replaced by your favourite trading-system
  39. //
  40. //  // However, the volatility based Moneymanagement and
  41. //
  42. //  // positionsizing rules could add a new dimension to your
  43. //
  44. //  // trading system.
  45. //
  46. //  // Standard account size 10 K ( see column6 )
  47. //
  48. //  // Standard risk is 2% of account size for any trade ( see column6)
  49. //
  50. //  // Entries, Stops, Profittargets ( PT) & Positionsizes are calculated
  51. //  on // ST Volatility ( ATR ).
  52. //
  53. //  // Entries should give a reasonable entry price within the projected
  54. //
  55. //  // trading range for the following day.
  56. //
  57. //  // Although I had to use Close as basis for the calculations rather than
  58. //
  59. //  // Median Price ( as I did in MetaStock ), it shourk work well.
  60. //
  61. //  // Stops are designed to keep the trade out of the daily noise.
  62. //
  63. //  // Risk and Reward are managed by positionsize, adjusted to the
  64. //
  65. //  // stocks ST volatility.
  66. //
  67. //  // Stops should only be trailed in the direction of the trade using the
  68. //
  69. //  // SF Stop Indicator
  70. //
  71. //  // Proft-targets are valid as from day of Trade-Entry. With the help of
  72. //
  73. //  // SF Entry,Stop PT indicor, one could "trail" also the PT.
  74. //
  75. //  // My advice is, to take some money of the table, once the initial target
  76. //
  77. //  // as of trade entry has been hit.
  78. //
  79. //  // I recommend strongly, to keep the risk per position at 2% of the
  80. //
  81. //  // account-size. If you are more agressive, think about taking
  82. //
  83. //  // additional trades rather than increasing the risk / trade.
  84. //
  85. //  // I'll experiment with using Adaptive MA's instead of Ema's and post
  86. //
  87. //  // the result later as an update.
  88. //
  89. //  // Backtesting : Unfortunately, the complete system cannot be
  90. //
  91. //  // back-tested in AB, because I can't input the algorithms as
  92. //
  93. //  // Systemsettings.
  94. //
  95. //  // Author :Stefan - Georg Fuchs
  96. //
  97. //  // www.tradeshark.de
  98. //
  99. //  // sgfuchs@tradeshark.de
  100. //
  101. //  lookback = 14;
  102. //
  103. //  buyrange = 20;
  104. //
  105. //  sellrange = 80;
  106. //
  107. //  stochKworkaround = STOCH(14);
  108. //
  109. //  stochDworkaround = EMA( STOCH(14), 3);
  110. //
  111. //  BUY = STOCH(14) < buyrange AND CROSS(stochKworkaround, stochDworkaround) or
  112. //  cross( macd(), signal() );
  113. //
  114. //  Filter = STOCH(14) < buyrange AND CROSS(stochKworkaround, stochDworkaround)
  115. //  or cross( macd(), signal() );
  116. //
  117. //  numcolumns=11;
  118. //
  119. //  column0 =STOCH(14) < buyrange AND CROSS(stochKworkaround,
  120. //  stochDworkaround);
  121. //
  122. //  column0name = "STOBuy";
  123. //
  124. //  column0format = 1;
  125. //
  126. //  Column1 = cross( macd(), signal() );
  127. //
  128. //  column1name = "MACD Buy";
  129. //
  130. //  column1format = 1;
  131. //
  132. //  column2 = close;
  133. //
  134. //  column2name = "Close";
  135. //
  136. //  Column2format = 1.2;
  137. //
  138. //  column3 = ema(CLOSE,5)+(ema(ATR(1),10)/4);
  139. //
  140. //  column3name = "EntrLong";
  141. //
  142. //  column3format = 1.2;
  143. //
  144. //  column4 = ema(CLOSE,5)-(ema(ATR(1),10)*1.50);
  145. //
  146. //  column4name = "StopLong";
  147. //
  148. //  column4format = 1.2;
  149. //
  150. //  column5 = (ema(close,5)+(ema(ATR(1),10)*2.5));
  151. //
  152. //  column5name = "PT";
  153. //
  154. //  column5format = 1.2;
  155. //
  156. //  column6 = ((10000)*2/100)/(ema(CLOSE,5)+
  157. //  (ema(ATR(1),10)/4)-(ema(CLOSE,5)-(ema(ATR(1),10)*1.50)));
  158. //
  159. //  column6name = "Max Pos";
  160. //
  161. //  column6format = 1;
  162. //
  163. //  column7 = (ema(CLOSE,5)+(ema(ATR(1),10)/4)) -
  164. //  (ema(CLOSE,5)-(ema(ATR(1),10)*1.50));
  165. //
  166. //  column7name = "Risk";
  167. //
  168. //  column7format = 1.2;
  169. //
  170. //  column8 = (ema(close,5)+(ema(ATR(1),10)*2.5)) -
  171. //  (ema(CLOSE,5)+(ema(ATR(1),10)/4));
  172. //
  173. //  column8name = "Reward";
  174. //
  175. //  column8format = 1.2;
  176. //
  177. //------------------------------------------------------------------------------
  178. // This exploration looks for simple Stochastics and MACD buy signals
  179. // to inialize long trades.
  180. // Money-, Risk and Positionmanagment is more important for
  181. // successful trading than having only good entries and exits.
  182. // Therefore, I combined these signals with strict trade-,
  183. // money-management and positionsizing rules. 
  184. // These trades are usually of very STnature ( 1 - 20 days ) because
  185. // I used ST Volatility for Money-, Risk-, and positionsizing-managem.
  186. //  Feel free to alter these settings to your preferred trading-style
  187. // The exploration can also be customized in terms of  Account size, 
  188. // personal risk preferences and triggers for STO Indicator.
  189. // STO and MACD can be replaced by your favourite trading-system
  190. // However, the volatility based Moneymanagement and
  191. // positionsizing rules could add a new dimension to your
  192. // trading system.
  193. // Standard account size 10 K ( see column6 )
  194. // Standard risk is 2% of account size for any trade ( see column6)
  195. // Entries, Stops, Profittargets ( PT) & Positionsizes are calculated on    // ST Volatility ( ATR ). 
  196. // Entries should give a reasonable entry price within the projected
  197. // trading range for the following day.
  198. // Although I had to use Close as basis for the calculations rather than
  199. // Median Price ( as I did in MetaStock ), it shourk work well.
  200. // Stops are designed to keep the trade out of the daily noise.
  201. // Risk and Reward are managed by positionsize, adjusted to the
  202. // stocks ST volatility.
  203. // Stops should only be trailed in the direction of the trade using the 
  204. // SF Stop Indicator
  205. // Proft-targets are valid as from day of Trade-Entry. With the help of
  206. // SF Entry,Stop PT indicor, one could "trail" also the PT.
  207. // My advice is, to take some money of the table, once the initial target
  208. // as of trade entry has been hit.
  209. // I recommend strongly, to keep the risk per position at 2% of the 
  210. // account-size. If you are more agressive, think about taking
  211. // additional trades rather than increasing the risk / trade.
  212. // I'll experiment with using Adaptive MA's instead of Ema's and post
  213. // the result later as an update. 
  214. // Backtesting : Unfortunately, the complete system cannot be
  215. // back-tested in AB, because I can't input the algorithms as
  216. // Systemsettings.
  217. // Author :Stefan - Georg Fuchs
  218. // www.tradeshark.de
  219. // sgfuchs@tradeshark.de
  220. lookback = 14;
  221. buyrange = 20;
  222. sellrange = 80;
  223. stochKworkaround = STOCH(14);
  224. stochDworkaround = EMA( STOCH(14), 3);
  225. BUY = STOCH(14) < buyrange AND CROSS(stochKworkaround, stochDworkaround) or cross( macd(), signal() ); 
  226. Filter = STOCH(14) < buyrange AND CROSS(stochKworkaround, stochDworkaround) or cross( macd(), signal() ); 
  227. numcolumns=11;
  228. column0 =STOCH(14) < buyrange AND CROSS(stochKworkaround, stochDworkaround);
  229. column0name = "STOBuy";
  230. column0format = 1;
  231. Column1 = cross( macd(), signal() ); 
  232. column1name = "MACD Buy";
  233. column1format = 1;
  234. column2 = close;
  235. column2name = "Close";
  236. Column2format = 1.2;
  237. column3 = ema(CLOSE,5)+(ema(ATR(1),10)/4);
  238. column3name = "EntrLong";
  239. column3format = 1.2;
  240. column4 = ema(CLOSE,5)-(ema(ATR(1),10)*1.50);
  241. column4name = "StopLong";
  242. column4format = 1.2;
  243. column5 = (ema(close,5)+(ema(ATR(1),10)*2.5));
  244. column5name = "PT";
  245. column5format = 1.2;
  246. column6 = ((10000)*2/100)/(ema(CLOSE,5)+ (ema(ATR(1),10)/4)-(ema(CLOSE,5)-(ema(ATR(1),10)*1.50)));
  247. column6name = "Max Pos";
  248. column6format = 1;
  249. column7 = (ema(CLOSE,5)+(ema(ATR(1),10)/4)) - (ema(CLOSE,5)-(ema(ATR(1),10)*1.50));
  250. column7name = "Risk";
  251. column7format = 1.2;
  252. column8 = (ema(close,5)+(ema(ATR(1),10)*2.5)) -  (ema(CLOSE,5)+(ema(ATR(1),10)/4));
  253. column8name = "Reward";
  254. column8format = 1.2;