Calculate composites for tickers in list files.afl
上传用户:shiqiang
上传日期:2009-06-12
资源大小:1289k
文件大小:4k
源码类别:

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    Calculate composites for tickers in list files
  4. //  Author/Uploader: Mark H. 
  5. //  E-mail:          
  6. //  Date/Time Added: 2006-09-15 23:46:12
  7. //  Origin:          
  8. //  Keywords:        Composite AddToComposite File JScript List
  9. //  Level:           semi-advanced
  10. //  Flags:           exploration,function
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=709
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=709
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  Notes:
  17. //
  18. //  1. All list files are in folder C:Program FilesAmiBrokerMyLists and have
  19. //  file name as ListName.tls.
  20. //
  21. //  2. The composite results use ticker ~Comp~ListName.
  22. //
  23. //  3. The AFL formula is C:Program
  24. //  FilesAmiBrokerFormulasCustomListComp.afl
  25. //
  26. //  4. Save the following text in a JScript file named ListsComp.js
  27. //
  28. //  5. Run by double click the JScript file
  29. //
  30. //  //========== Start JScript ListsComp.js ==========
  31. //
  32. //  listFolder = "C:\Program Files\AmiBroker\MyLists";
  33. //
  34. //  compAFL = "C:\Program Files\AmiBroker\Formulas\Custom\ListComp.afl";
  35. //
  36. //  WorkingWatchlist = 40;
  37. //
  38. //  CompWatchlist = 41;
  39. //
  40. //  AB = new ActiveXObject("Broker.Application");
  41. //
  42. //  AA = AB.Analysis;
  43. //
  44. //  WScript.Echo("Now open folder " + listFolder + " to read lists.");
  45. //
  46. //  fs = new ActiveXObject("Scripting.FileSystemObject");
  47. //
  48. //  f = fs.GetFolder(listFolder);
  49. //
  50. //  for (fc = new Enumerator(f.files); !fc.atEnd(); fc.moveNext())
  51. //
  52. //  {
  53. //
  54. //  fullname = fc.item(); name = fc.item().name;
  55. //
  56. //  listname = name.substring(0,name.indexOf(".tls"));
  57. //
  58. //  WScript.Echo("Now calculate composite for list: " + listname); // remove
  59. //  this line to stop prompts
  60. //
  61. //  values = AB.Stocks("~VALUES"); // use a bogus stock to pass filename and
  62. //  listname to AFL
  63. //
  64. //  values.fullname = fullname;
  65. //
  66. //  values.alias = listname;
  67. //
  68. //  AA.ClearFilters();
  69. //
  70. //  AA.RangeMode = 1; // n last quotes
  71. //
  72. //  AA.RangeN = 1;
  73. //
  74. //  AA.ApplyTo = 1; // current stock
  75. //
  76. //  if(AA.LoadFormula( compAFL))
  77. //
  78. //  {
  79. //
  80. //  AA.Explore();
  81. //
  82. //  AA.ApplyTo = 2; // use filter
  83. //
  84. //  AA.Filter(0, "watchlist") = WorkingWatchlist; // apply to this watchlist
  85. //
  86. //  AA.Scan();
  87. //
  88. //  }
  89. //
  90. //  }
  91. //
  92. //  WScript.Echo("Calculation for all composites completed.");
  93. //
  94. //  //=============== End of JScript ================
  95. //
  96. //------------------------------------------------------------------------------
  97. WorkingWatchlist = 40;  // the watchlist for calculating composite, re-use every time
  98. CompWatchlist = 41;     // the watchlist to store composite results
  99. AAAction = Status("action");
  100. if(AAAction == actionScan)
  101. {
  102. buy = 0;
  103. compname = StaticVarGetText("COMPNAME");
  104. AddToComposite(C, compname, "X");    // add more composite calculations here
  105. }
  106. else if(AAAction == actionExplore)
  107. {
  108. filter = 0;
  109. ab = CreateObject("Broker.Application");
  110. values = ab.Stocks("~VALUES");  // get the filename and listname from the bogus stock
  111. filename = values.FullName;
  112. listname = values.Alias;
  113. compname = "~Comp~"+listname;   // generate composite name
  114. StaticVarSetText("COMPNAME", compname);  // store the composite name so that Scan can use it
  115. AddToComposite(0, compname, "X", atcFlagCompositeGroup + atcFlagEnableInExplore);
  116. CategoryAddSymbol( compname, categoryWatchlist, CompWatchlist);
  117. // remove all tickers from the working watchlist
  118. list = CategoryGetSymbols( categoryWatchlist, WorkingWatchlist );
  119. for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ )
  120. {
  121. CategoryRemoveSymbol(sym, categoryWatchlist, WorkingWatchlist);
  122. }
  123. _TRACE("FileName=" + filename + " ListName=" + listname );
  124. // add tickers to the working watchlist from file
  125. fh = fopen(filename, "r");
  126. while( ! feof( fh ) ) 
  127. {
  128. sym = fgets( fh ); 
  129. sym = StrReplace(sym, "n", ""); 
  130. sym = StrReplace(sym, "r", "");
  131. if(StrLen(sym) > 0)
  132. CategoryAddSymbol( sym , categoryWatchlist, WorkingWatchlist);
  133. _TRACE("Adding to watchlist: " + sym);
  134. }
  135. }
  136. AddColumn( Close, "Close", 1.2 ); // useless but required by Explore
  137. }