home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1993 #2 / Image.iso / finance / tas515dm.zip / EXAMPLES.ZIP / IBDRS_2.TAS < prev    next >
Text File  |  1992-05-05  |  3KB  |  81 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.     Modified 5/04/92 to add more weight to last quarter. Lines
  11.     40,41,42,and 43 (in the TAS editor) can be changed to add
  12.     or delete weight to each qtr.        Leon }
  13.  
  14. {TICNAME.TCK}
  15. #MAX_QUOTES 271
  16. #INDEX 'SP-500'
  17. #OUTPUT_FILE 'IBDRS_2.LST'
  18. IF FIRST_TICKER THEN
  19. BEGIN
  20. COUNT22 = 0;  {COUNT OF STOCKS TO DIVIDE BY 100}
  21. COUNT66 = 0;  {COUNT OF STOCKS USED}
  22. WRITELN('            **** LAST QUARTER GIVEN MORE WEIGHT ****');
  23. WRITELN('           RS    %           PRIOR         PRIOR   RS');
  24. WRITELN('TIC       IBD   ROC  CLOSE   CLOSE    VOL   VOL   SP-500');
  25. WRITELN('====      ====  ===  ======  ======  ====  =====  =====');
  26. END;
  27. IF QUOTE_COUNT < 270 THEN   {TO USE ONLY ABOUT A YEAR OF QUOTES}
  28. GOTO AGAIN;
  29. ROC270 : ARRAY;    {RATE OF CHANGE LAST 66 DAYS}
  30. YEST : ARRAY;
  31. YESTV : ARRAY;
  32. YEST = C[-1];      {YESTERDAY'S CLOSE}
  33. YESTV = V[-1];     {YESTERDAY'S VOLUME}
  34. BASE = INDEX / INDEX[-270];     {ONE WAY OF CALCULATING RS}
  35. STKBASE = C / C[-270];          { "   "   "     "       " }
  36. RELSTR = STKBASE / BASE;        { "   "   "     "       " }
  37. NUM1 = 0;          {COUNTER}
  38. NO1 = 0;           {COUNTER}
  39. COUNT44 = 99;      {FIRST IBD RS}
  40. ROC270 = ROC(C,66,'%');
  41. rank_1 = ROC270[-198] * .2;   {Adj these four lines }
  42. rank_2 = ROC270[-132] * .2;   { for weight you want }
  43. rank_3 = ROC270[-66] * .2;    {  each qtr to have.  }
  44. rank_4 = ROC270 * .4;         { All 4 should add to 1.0 }
  45. RANK_TOT = (rank_1 + rank_2 + rank_3 + rank_4);
  46. IF C = C THEN      {JUST A WAY TO ADVANCE THE COUNTER}
  47. COUNT22 = COUNT22 + 1;
  48. IF C = C THEN      {JUST A WAY TO ADVANCE THE COUNTER}
  49. COUNT66 = COUNT66 + 1;
  50. SORTOUT(TICKER,RANK_TOT,C,YEST,V,YESTV,RELSTR);
  51. :AGAIN
  52. IF LAST_TICKER THEN
  53. BEGIN
  54. COUNT22 = COUNT22 / 100;    {TOTAL STOCKS USED DIVIDED BY 100}
  55. {COUNT22 = INT(COUNT22);}          {ADJ LINE}
  56. SORTON(2,'D');
  57. :RS99
  58. SORTGET(TICKER,RANK_TOT,C,YEST,V,YESTV,RELSTR);
  59. IF NO1 >= COUNT22 THEN             {ADJ LINE}
  60. GOSUB READD;
  61. WRITELN(TICKER,' ',INT(COUNT44),INT(rank_tot),C,YEST,' ',INT(V),' ',
  62. INT(YESTV),RELSTR);
  63. NO1 = NO1 + 1;     {COUNTER OF NUMBER ACCUMULATED IN GROUP RS}
  64. NUM1 = NUM1 + 1;
  65. IF NUM1 < COUNT66 THEN       {IF NOT LAST STOCK LOOP BACK TO RS99}
  66. GOTO RS99;
  67. ELSE              {IF LAST STOCK GO DOWN TO FINAL}
  68. GOTO FINAL;
  69. :READD            {ROUTINE IF LAST OF A GROUP OF RS COUNTED}
  70. COUNT44 = COUNT44 - 1;   {COUNTER TO CHANGE TO NEXT GROUP OF RS}
  71. NO1 = 0;          {RESET COUNTER TO START ADDS OF NEW GROUP OF RS}
  72. WRITELN('---------------------------------------------------------');
  73. RETURN;
  74. :FINAL
  75. WRITELN('   ');
  76. WRITELN('---------------------------------------------------------');
  77. WRITELN('TOTAL COMPANIES USED =',' ',INT(COUNT66));
  78. WRITELN('TEN SEGMENT USED     =',COUNT22);
  79. WRITELN('    USE ADJ LINES IN THE SCRIPT TO ADJUST FOR NUMBER OF STOCKS');
  80. WRITELN('       IN YOUR FILES FOR THE TEN SEGMENT CALCULATION');
  81.