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

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    pattern correlation
  4. //  Author/Uploader: Ed Pottasch 
  5. //  E-mail:          pablito@home.nl
  6. //  Date/Time Added: 2004-02-13 06:05:56
  7. //  Origin:          
  8. //  Keywords:        pattern correlation
  9. //  Level:           medium
  10. //  Flags:           exploration
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=339
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=339
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  Finds pattern similar as the pattern defined by using the Amibroker
  17. //  markers. Just click a pattern using the mouse and run the program. This
  18. //  program can be used for scanning purposes. The pattern that you want to
  19. //  look for can be marked anywhere in the active chart. The resulting pattern
  20. //  is looked for only at the current date.
  21. //
  22. //  also see header program for a description.
  23. //
  24. //------------------------------------------------------------------------------
  25. /*
  26. Program searches for a pattern within a predefined list of symbols. 
  27. The pattern searched for is marked with the AB markers anywhere 
  28. inside the active chart.
  29. 1) Put this code in the Automatic Analysis window.
  30. 2) Display a chart of a certain symbol.
  31. 3) Select a piece of this chart using AB markers.
  32. 4) Explore a predefined list of symbols ("use filter")
  33.    use from: to: (last date available), or use "n last 
  34.    days", where n = 1
  35. 5) Sort the sum by clicking on "sum" in the AA window 
  36.    (smallest Sum is best correlation).
  37. ed2000nl, Feb 2004, pablito@home.nl
  38. */
  39. // select the symbol from the active chart
  40. EnableScript("jscript");
  41. <%
  42. AB = new ActiveXObject("Broker.Application");
  43. AFL("symb")=AB.ActiveDocument.Name;
  44. %>
  45. // select the variables of the stock you want to correlate
  46. xo=Foreign(symb,"Open");
  47. xh=Foreign(symb,"High");
  48. xl=Foreign(symb,"Low");
  49. xc=Foreign(symb,"Close");
  50. xv=Foreign(symb,"Volume");
  51. // define help arrays in which to store the data you want to fit
  52. xoh = xo; xoh = 100000;
  53. xhh = xh; xhh = 100000;
  54. xlh = xl; xlh = 100000;
  55. xch = xc; xch = 100000;
  56. xvh = xv; xvh = 100000;
  57. // extract the period from the graph selected by using the markers
  58. period = EndValue( BarIndex() ) - BeginValue( BarIndex() );
  59. // store the piece of array selected by using the markers 
  60. cnt = 0;
  61. for( i = BeginValue( BarIndex() ); i < BeginValue( BarIndex() ) + period + 1; i++ ) {
  62. xoh[cnt] = xo[i];
  63. xhh[cnt] = xh[i];
  64. xlh[cnt] = xl[i];
  65. xch[cnt] = xc[i];
  66. xvh[cnt] = xv[i];
  67. cnt = cnt + 1;
  68. }
  69. // define a storage array to store the fit
  70. st = C; st = 100000;
  71. // test to avoid that marked period is out of range of the available data. 
  72. if (period > 0 AND BeginValue( BarIndex() ) != 0 AND EndValue( BarIndex() ) != BarCount) {
  73. // correlate this selected piece of data with the last 
  74. // "period" data for each symbol in a given list
  75. for( i = BarCount - 1; i < BarCount; i++) {
  76. // calculate scale factor
  77. scl = xch[0] / C[i-period];
  78. hsum = 0;
  79. for( j = 0; j < period + 1; j++) {
  80. // the fit or correlation procedure
  81. hsum = hsum +
  82. ((xoh[j] - O[i-period+j]*scl)/xoh[j])^2 +
  83. ((xhh[j] - H[i-period+j]*scl)/xhh[j])^2 +
  84. ((xlh[j] - L[i-period+j]*scl)/xlh[j])^2 +
  85. ((xch[j] - C[i-period+j]*scl)/xch[j])^2;
  86. //AddColumn(C[i-period+j],"Clp");
  87. //AddColumn(xch[j],"Cfit");
  88. }
  89. st[i] = hsum/(period+1);
  90. }
  91. Filter=1;
  92. AddColumn(st,"Sum",format = 1.6);
  93. AddColumn(period,"Period Fitted");
  94. AddColumn(scl,"Scale Factor");
  95. AddTextColumn(symb,"Symbol Fitted");
  96. AddColumn(BarCount,"BarCount");
  97. }