home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1993 #2 / Image.iso / finance / tas515dm.zip / EXAMPLES.ZIP / IBDRSVAR.TAS < prev    next >
Text File  |  1992-05-27  |  4KB  |  103 lines

  1.     {The following Script is an attempt to calculate the IBD
  2.     RS index per the Note Martin posted in Prodigy. The ADJ lines
  3.     can be used to 'tune' the range of each group of RS values
  4.     which start with 99. (Example: when you divide the number of
  5.     stocks used by 100 and the result is 2.5, do you want to use
  6.     3 stocks in the 99 range or 2 ?) Of course to match IBD's RS
  7.     values you would need the same group of stocks they use.
  8.                      Leon Egleson  Mandeville, La.
  9.                        Prodigy  CWRB23A }
  10. {TICNAME.TCK}
  11. #MAX_QUOTES 250
  12. #INDEX 'SP-500'
  13. #OUTPUT_FILE ibdrsvar.lst
  14. {#SCAN_DATE 05/01/92}
  15.  
  16. LOOKBACK = 30;
  17.  
  18. {*********************************************************************}
  19.  
  20. IF FIRST_TICKER THEN
  21. BEGIN
  22. COUNT22 = 0;  {COUNT OF STOCKS TO DIVIDE BY 100}
  23. COUNT66 = 0;  {COUNT OF STOCKS USED}
  24.  
  25. {*********************************************************************}
  26.  
  27. WRITELN('                               RS    %          WEEKAGO       WEEKAGO   RS');
  28. WRITELN('SECURITY            TIC       IBD   ROC  CLOSE   CLOSE    VOL   VOL   SP-500');
  29. WRITELN('========            ====      ====  ===  ======  ======  ====  =====  =====');
  30. END;
  31.  
  32. {**********************************************************************}
  33.  
  34. IF QUOTE_COUNT < 150 THEN   {SMALL HISTORY EXCLUSION}
  35. GOTO AGAIN;
  36. ROCPD : ARRAY;    {RATE OF CHANGE}
  37. WEEKAGO : ARRAY;
  38. WEEKAGOV : ARRAY;
  39. WEEKAGO = C[-5];      {WEEK AGO CLOSE}
  40. YESTV = V[-1];     {WEEK AGO VOLUME}
  41. BASE := INDEX / INDEX[- LOOKBACK];     {ONE WAY OF CALCULATING RS}
  42. STKBASE := C / C[- LOOKBACK];          { "   "   "     "       " }
  43. RELSTR := STKBASE / BASE;        { "   "   "     "       " }
  44. NUM1 = 0;          {COUNTER}
  45. NO1 = 0;           {COUNTER}
  46. COUNT44 = 99;      {FIRST IBD RS}
  47. ROCPD = ROC(C,LOOKBACK,'%');
  48. IF C = C THEN      {JUST A WAY TO ADVANCE THE COUNTER}
  49. COUNT22 = COUNT22 + 1;
  50. IF C = C THEN      {JUST A WAY TO ADVANCE THE COUNTER}
  51. COUNT66 = COUNT66 + 1;
  52.  
  53. {*************************************************************************}
  54.  
  55. SORTOUT(FULLNAME,TICKER,ROCPD,C,WEEKAGO,V,WEEKAGOV,RELSTR);
  56. :AGAIN
  57. IF LAST_TICKER THEN
  58. BEGIN
  59. COUNT22 = COUNT22 / 100;    {TOTAL STOCKS USED DIVIDED BY 100}
  60. {COUNT22 = INT(COUNT22);}          {ADJ LINE}
  61.  
  62. SORTON(3,'D');
  63. :RS99
  64.  
  65. SORTGET(FULLNAME,TICKER,ROCPD,C,WEEKAGO,V,WEEKAGOV,RELSTR);
  66.  
  67.  
  68. PRICE : ARRAY;
  69. PRICE = LOAD(TRIM(TICKER),'C');
  70. OPENGRAPH(1);
  71. GRAPH(PRICE,'Closing Price for '+TICKER);
  72. CLOSEGRAPH();
  73.  
  74.  
  75. IF NO1 >= COUNT22 THEN             {ADJ LINE}
  76. GOSUB READD;
  77.  
  78. {**************************************************************************}
  79.  
  80. WRITELN(FULLNAME,'    ',TICKER,' ',INT(COUNT44),INT(ROCPD),C,WEEKAGO,' ',INT(V),' ',INT(WEEKAGOV),
  81. RELSTR);
  82. NO1 = NO1 + 1;     {COUNTER OF NUMBER ACCUMULATED IN GROUP RS}
  83. NUM1 = NUM1 + 1;
  84. IF NUM1 < COUNT66 THEN       {IF NOT LAST STOCK LOOP BACK TO RS99}
  85. GOTO RS99;
  86. ELSE              {IF LAST STOCK GO DOWN TO FINAL}
  87. GOTO FINAL;
  88. :READD            {ROUTINE IF LAST OF A GROUP OF RS COUNTED} 
  89. COUNT44 = COUNT44 - 1;   {COUNTER TO CHANGE TO NEXT GROUP OF RS}
  90. NO1 = 0;          {RESET COUNTER TO START ADDS OF NEW GROUP OF RS}
  91.  
  92. {****************************************************************************}
  93.  
  94. WRITELN('--------------------------------------------------------------------------');
  95. RETURN;
  96. :FINAL
  97. WRITELN('   ');
  98. WRITELN('--------------------------------------------------------------------------');
  99. WRITELN('TOTAL COMPANIES USED =',' ',INT(COUNT66));
  100. WRITELN('TEN SEGMENT USED     =',COUNT22);
  101. WRITELN('    USE ADJ LINES IN THE SCRIPT TO ADJUST FOR NUMBER OF STOCKS');
  102. WRITELN('       IN YOUR FILES FOR THE TEN SEGMENT CALCULATION');
  103.