home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1993 #2 / Image.iso / finance / tas515dm.zip / EXAMPLES.ZIP / IBDRS.TAS < prev    next >
Text File  |  1992-04-28  |  3KB  |  71 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 262
  12. #INDEX 'SP-500'
  13. {#OUTPUT_FILE 'IBDRS.LST'}
  14. IF FIRST_TICKER THEN
  15. BEGIN
  16. COUNT22 = 0;  {COUNT OF STOCKS TO DIVIDE BY 100}
  17. COUNT66 = 0;  {COUNT OF STOCKS USED}
  18. WRITELN('           RS    %           PRIOR         PRIOR   RS');
  19. WRITELN('TIC       IBD   ROC  CLOSE   CLOSE    VOL   VOL   SP-500');
  20. WRITELN('====      ====  ===  ======  ======  ====  =====  =====');
  21. END;
  22. IF QUOTE_COUNT < 261 THEN   {TO USE ONLY ABOUT A YEAR OF QUOTES}
  23. GOTO AGAIN;
  24. ROC260 : ARRAY;    {RATE OF CHANGE LAST 260 DAYS}
  25. YEST : ARRAY;
  26. YESTV : ARRAY;
  27. YEST = C[-1];      {YESTERDAY'S CLOSE}
  28. YESTV = V[-1];     {YESTERDAY'S VOLUME}
  29. BASE := INDEX / INDEX[-260];     {ONE WAY OF CALCULATING RS}
  30. STKBASE := C / C[-260];          { "   "   "     "       " }
  31. RELSTR := STKBASE / BASE;        { "   "   "     "       " }
  32. NUM1 = 0;          {COUNTER}
  33. NO1 = 0;           {COUNTER}
  34. COUNT44 = 99;      {FIRST IBD RS}
  35. ROC260 = ROC(C,260,'%');
  36. IF C = C THEN      {JUST A WAY TO ADVANCE THE COUNTER}
  37. COUNT22 = COUNT22 + 1;
  38. IF C = C THEN      {JUST A WAY TO ADVANCE THE COUNTER}
  39. COUNT66 = COUNT66 + 1;
  40. SORTOUT(TICKER,ROC260,C,YEST,V,YESTV,RELSTR);
  41. :AGAIN
  42. IF LAST_TICKER THEN
  43. BEGIN
  44. COUNT22 = COUNT22 / 100;    {TOTAL STOCKS USED DIVIDED BY 100}
  45. {COUNT22 = INT(COUNT22);}          {ADJ LINE}
  46. SORTON(2,'D');
  47. :RS99
  48. SORTGET(TICKER,ROC260,C,YEST,V,YESTV,RELSTR);
  49. IF NO1 >= COUNT22 THEN             {ADJ LINE}
  50. GOSUB READD;
  51. WRITELN(TICKER,' ',INT(COUNT44),INT(ROC260),C,YEST,' ',INT(V),' ',INT(YESTV),
  52. RELSTR);
  53. NO1 = NO1 + 1;     {COUNTER OF NUMBER ACCUMULATED IN GROUP RS}
  54. NUM1 = NUM1 + 1;
  55. IF NUM1 < COUNT66 THEN       {IF NOT LAST STOCK LOOP BACK TO RS99}
  56. GOTO RS99;
  57. ELSE              {IF LAST STOCK GO DOWN TO FINAL}
  58. GOTO FINAL;
  59. :READD            {ROUTINE IF LAST OF A GROUP OF RS COUNTED} 
  60. COUNT44 = COUNT44 - 1;   {COUNTER TO CHANGE TO NEXT GROUP OF RS}
  61. NO1 = 0;          {RESET COUNTER TO START ADDS OF NEW GROUP OF RS}
  62. WRITELN('---------------------------------------------------------');
  63. RETURN;
  64. :FINAL
  65. WRITELN('   ');
  66. WRITELN('---------------------------------------------------------');
  67. WRITELN('TOTAL COMPANIES USED =',' ',INT(COUNT66));
  68. WRITELN('TEN SEGMENT USED     =',COUNT22);
  69. WRITELN('    USE ADJ LINES IN THE SCRIPT TO ADJUST FOR NUMBER OF STOCKS');
  70. WRITELN('       IN YOUR FILES FOR THE TEN SEGMENT CALCULATION');
  71.