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

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    Ranking Ticker WatchList
  4. //  Author/Uploader: nenapacwanfr 
  5. //  E-mail:          s.carrasset@laposte.net
  6. //  Date/Time Added: 2004-12-05 13:54:05
  7. //  Origin:          
  8. //  Keywords:        
  9. //  Level:           basic
  10. //  Flags:           indicator
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=411
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=411
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  /*
  17. //
  18. //  returns the Rank of a ticker in a WL for a given indicator
  19. //
  20. //  if the ticker is outside the WL the rank is empty
  21. //
  22. //  UNFORTUNATELY if the WL contains many tickers the formula is slowwwwww
  23. //
  24. //  */
  25. //
  26. //------------------------------------------------------------------------------
  27. /* 
  28. returns the Rank of a ticker in a WL for a given indicator
  29. if the ticker is outside the WL the rank is empty
  30. UNFORTUNATELY if the WL contains many tickers the formula is slowwwwww
  31. */
  32. listNum=0 ;//enter watchlist number
  33. list = GetCategorySymbols( categoryWatchlist, listnum );
  34. for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ )
  35. {
  36. SetForeign(sym);
  37. VarSet("MyInd"+i,MFI(14));// Indicator
  38. /*
  39. VarSet stores the Value of MFI
  40. ticker 0 has its value of MFI stored in MyInd + 0
  41. ticker 1 has its value of MFI stored in MyInf + 1 ...
  42. */
  43. Rank =1;// Initialize the Rank
  44. for( j = 0; ( item = StrExtract( list, j ) ) != ""; j++ )
  45. {
  46. SetForeign(item);
  47. VarSet("ThisInd"+j,MFI(14));//Indicator
  48. Rank=Rank + IIf( VarGet("MyInd"+i) < VarGet("ThisInd"+j),1,0);
  49. /*
  50. VarGet returns the value of VarSet
  51. Every value of MyInd + i is compared to every Value of ThisInd + j
  52. and the Rank in incremented of + 1 every time the Ind is < to others.
  53. you can also write it
  54. Rank=Rank + IIf( VarGet("MyInd"+i) < MFI(14),1,0);
  55. because of SetForeign
  56. */
  57. RestorePriceArrays();// to get out the influence of SetForeign
  58. }
  59. VarSet("Rank"+i,Rank);
  60. }
  61. /*
  62. I want to know the Rank when I click on a ticker
  63. I must know the position of the ticker in a WL
  64. this loop can do the job instead of writing
  65. IIf(Name()=="12017", 0, IIf(Name()=="12027", 1, ...
  66. */
  67. Count=0;
  68. BreakLoop = False;
  69. for( k = 0; NOT(BreakLoop) &&( ticker = StrExtract( list, k ) ) != ""; k++ )
  70. {
  71. if(Name()==ticker)
  72. Breakloop=True;
  73. else
  74. Count=Count+1;
  75. }
  76. //Plot(Count,"",2,1);
  77. Plot(VarGet("Rank"+ Count),"",2,1);
  78. /*
  79. you Can Control the Rank if you Plot the MFI Of every tickers with
  80. list = GetCategorySymbols( categoryWatchlist, listnum ); 
  81. for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ ) 
  82. SetForeign(sym);
  83. Plot(MFI(14) ,sym,i+1,1);
  84. }
  85. */