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

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    WLBuildProcess
  4. //  Author/Uploader: Fred Tonetti 
  5. //  E-mail:          
  6. //  Date/Time Added: 2006-09-16 05:30:39
  7. //  Origin:          
  8. //  Keywords:        WatchList AddToComposite
  9. //  Level:           basic
  10. //  Flags:           exploration,function
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=710
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=710
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  Builds a user designated working watchlist using the tickers from an
  17. //  external file, processes the users formula and adds to a composite which is
  18. //  stored in the final watchlist. Any number of files can be processed
  19. //
  20. //------------------------------------------------------------------------------
  21. //
  22. // Builds Composites From External Lists of Symbols
  23. //
  24. // This should be run as an Exploration on the current symbol only
  25. // 
  26. // User Supplied Info:
  27. //
  28. //     WatchLists 
  29. //         62 - Work
  30. //         63 - Final
  31. //
  32. //     The requirements of input files are that they all must
  33. //         - Be in the same directory
  34. //         - Have the same Prefix   ( In this case ETF  ) 
  35. //         - Have the same FileType ( In this case .tls )
  36. //         - Contain a sequential number as part of the name beginning with 1 i.e. ETF1, ETF2 etc ...
  37. //
  38. //     FNMax = Number of Files to be Processed 
  39. //     FNLoc = File Location (Path)
  40. //     FNPre = FileName Prefix
  41. //     FNTyp = FileType
  42. //
  43. // FNNum = FileName Number ( Suffix ) ... Automatically generated from 1 to FNMax
  44. //
  45. // The resulting composites will be named ~FNPreFNNum and will be in the Final WatchList
  46. //
  47. WLWrk = 62;
  48. WLFin = 63;
  49. FNMax =  2;
  50. FNLoc = "C:/Work/";
  51. FNPre = "ETF";
  52. FNTyp = ".tls";
  53. // Clear Final WatchList
  54. IPList = GetCategorySymbols(categoryWatchlist, WLFin);
  55. _TRACE("Removing Tickers from W/L " + NumToStr(WLFin, 1.0));
  56. for (i = 0; i < 999999; i++)
  57. {
  58.     Ticker = StrExtract(IPList, i);
  59.     if (Ticker == "")
  60.         i = 999999;
  61.     else
  62.     {
  63.         CategoryRemoveSymbol(Ticker, categoryWatchlist, WLFin);
  64.         _TRACE("   " + Ticker);
  65.     }
  66. }
  67. Filter = BarIndex() == LastValue(BarIndex());
  68. // Loop to process all files
  69. for (FNNum = 1; FNNum <= FNMax; FNNum++)
  70. {
  71.     // Clear Work WatchList
  72.     IPList = GetCategorySymbols(categoryWatchlist, WLWrk);
  73.     _TRACE("Removing Tickers from W/L " + NumToStr(WLWrk, 1.0));
  74.     for (i = 0; i < 999999; i++)
  75.     {
  76.         Ticker = StrExtract(IPList, i);
  77.         if (Ticker == "")
  78.             i = 999999;
  79.         else
  80.         {
  81.             CategoryRemoveSymbol(Ticker, categoryWatchlist, WLWrk);
  82.             _TRACE("   " + Ticker);
  83.         }
  84.     }
  85.     // Load WatchList
  86.     IPFileName = FNLoc + FNPre + NumToStr(FNNum, 1.0) + FNTyp;
  87.     fh = fopen(IPFileName, "r");  
  88.     if(fh)  
  89.     {
  90.         _TRACE("Loading Tickers from " + IPFileName);
  91.         while(! feof(fh))  
  92.         { 
  93.             Ticker = fgets(fh); 
  94.             Ticker = StrReplace(Ticker, "n", "");  
  95.             Ticker = StrReplace(Ticker, "r", "");
  96.             if (Ticker != "")
  97.             {
  98.                 CategoryAddSymbol(Ticker, categoryWatchlist, WLWrk);
  99.                 _TRACE("   " + Ticker);
  100.             }
  101.         } 
  102.         fclose(fh);  
  103.     }  
  104.     else  
  105.     {  
  106.         printf("ERROR: " + IPFileName + " does NOT exist");  
  107.     }  
  108.     // Process WatchList 
  109.     IPList = GetCategorySymbols(categoryWatchlist, WLWrk); 
  110.     CompNM = "~" + FNPre + NumToStr(FNNum, 1.0);
  111.     _TRACE("Processing Tickers & Adding to Composite " + CompNM);
  112.     for (i = 0; i < 999999; i++) 
  113.     { 
  114.         Ticker = StrExtract(IPList, i); 
  115.         if (Ticker == "") 
  116.             i = 999999; 
  117.         else
  118.         {
  119.             _TRACE("   " + Ticker);
  120.             SetForeign(Ticker);
  121.             // Whatever processing for each Ticker - In this case we're just grabbing Close
  122.             AddToComposite(C, CompNM, "X", atcFlagCompositeGroup + atcFlagEnableInExplore);
  123.             CategoryAddSymbol(CompNm, categoryWatchlist, WLFin);
  124.             CategoryRemoveSymbol(CompNm, categoryGroup, 253);
  125.         }
  126.     }
  127.     AddTextColumn(CompNm, "Completed");
  128. }