Listing of file='SFPRG2.BAS;01' on disk='vmedia/sfssp_v1.3_stock-sector.ccvf'
100 CLEAR 500:DIM A$(11),DI(160),DT(160),S(9,160),VA(160) 105 DIM F(11),W(11),AN$(11),CV(11),AV(11),V(160) 110 PLOT 12,3,13,2:PRINT "STOCK FUND SWITCH STRATEGY PROGRAM:" 130 PLOT 3,10,6:PRINT "1) ENTER STOCK VALUES & DOW JONES AVERAGES, COMPUTE" 140 PLOT 3,10,8:PRINT " MOVING 39-WEEK AVERAGES & PRINT DECISION TABLE" 145 PLOT 3,10,10:PRINT "2) PRINT DECISION TABLE WITHOUT WEEKLY DATA INPUT" 147 PLOT 3,10,12:PRINT "3) PRINT & CHANGE DATA FILES (SCREEN OR PRINTER)" 160 PLOT 3,10,14:PRINT "4) PLOT STOCK AND DOW PERFORMANCE FOR ONE YEAR" 170 PLOT 3,10,16:PRINT "5) STORE DATA AND END PROGRAM (MUST END PROGRAM" 175 PLOT 3,10,18:PRINT " WITH THIS OPTION OR DATA ENTRIES WILL BE LOST)" 180 PLOT 3,13,22:INPUT "ENTER NUMBER DESIRED ";N 185 IF N< 1OR N> 5THEN 180 190 ON NGOTO 300,500,600,800,1000 300 REM ENTER STOCK & DOW WEEKLY DATA/PRINT DECISION TABLE 301 CI= 1:PLOT 12,3,10,2:PRINT "INPUT WEEKLY VALUES: " 303 PLOT 3,10,6:INPUT "ENTER DOW 'I' AVERAGE ";WI 304 PLOT 3,10,30:INPUT "CHANGE VALUE (Y[CR] OR [CR])? ";Z$:IF Z$= "Y"THEN 303 305 PLOT 3,10,8:INPUT "ENTER DOW 'T' AVERAGE ";WT 306 PLOT 3,10,30:INPUT "CHANGE VALUE (Y[CR] OR [CR])? ";Z$:IF Z$= "Y"THEN 305 310 IF RD< > 1THEN GOSUB 9000 316 FOR S= 1TO NS:X= 10+ 2* (S- 1) 317 PLOT 3,10,X:PRINT "ENTER VALUE FOR "A$(S)" ";:INPUT SW(S) 318 PLOT 3,10,30:INPUT "CHANGE VALUE (Y[CR] OR [CR])? ";Z$:IF Z$= "Y"THEN 317 319 NEXT S 330 GOSUB 9050 388 GOSUB 5500:GOSUB 6000:GOTO 110 500 REM PRINT DECISION TABLE 501 PLOT 12,3,10,4:PRINT "PRINT CURRENT DECISION TABLE: " 510 IF RD< > 1THEN GOSUB 9000 550 GOSUB 5500:GOSUB 6000 599 GOTO 110 600 REM PRINT & CHANGE EXISTING DATA FILES 601 PLOT 12,3,13,0:PRINT "PRINT STOCK AND DOW FILES: " 610 CH= 0:IF RD< > 1THEN GOSUB 9000 628 PLOT 3,0,3:INPUT "LIST TO THE PRINTER? (Y[CR] OR [CR])";ZZ$:IF ZZ$< > "Y"THEN PR= 0:GOTO 631 629 PR= 1:PLOT 3,0,3:INPUT "ENTER THE PRINTER BAUD RATE (1,2..7)[CR]";ZZ:PLOT 27,18,ZZ,27,13 631 IF NS> 5THEN E= 5:GOTO 634 632 E= NS 634 B= 1:IF PR< > 1THEN PLOT 3,0,5 636 GOSUB 7100 648 IF NS< 6THEN 683 650 B= 6:E= NS:IF PR< > 1THEN PLOT 3,0,5 652 GOSUB 7100 683 IF PR= 1THEN GOSUB 4500 685 CI= 0:IF CH= 1THEN GOSUB 9050 699 PRINT :INPUT "HIT [CR] FOR MENU ";ZZ:GOTO 110 800 REM PLOT STOCK & DOW PERFORMANCE 801 PLOT 12:IF RD< > 1THEN GOSUB 9000 802 PLOT 3,20,0:PRINT "PERFORMANCE PLOT:":PLOT 3,10,4:PRINT "NO. STOCK" 803 FOR I= 1TO NS:PRINT :PRINT TAB( 10)I,A$(I):NEXT I 805 PLOT 10,10,10:PRINT TAB( 10);:INPUT "ENTER STOCK NO. TO BE PLOTTED. ";S:IF S< 1OR S> NSTHEN 805 806 PLOT 3,10,29:INPUT "ENTER ENDING WEEK OF PLOT PERIOD. (1=CURRENT) ";LW:IF LW< 1OR LW> DI(160)OR LW> 105THEN 806 807 GOSUB 830:FOR W= 1TO 159:V(W)= S(S,W):NEXT W 808 GOSUB 860:GOSUB 850:IF (VM- VN)= 0THEN KT= 0:GOTO 810 809 KT= 15/ (VM- VN) 810 MN= 16:PLOT 19:GOSUB 870 812 FOR W= 1TO 159:V(W)= DT(W):NEXT W 813 GOSUB 860:GOSUB 850:IF (VM- VN)= 0THEN KT= 0:GOTO 816 814 KT= 40/ (VM- VN) 816 MN= 33:PLOT 21:GOSUB 870 818 FOR W= 1TO 159:V(W)= DI(W):NEXT W 819 GOSUB 860:GOSUB 850:IF (VM- VN)= 0THEN KT= 0:GOTO 822 820 KT= 40/ (VM- VN) 822 MN= 75:PLOT 23:GOSUB 870 828 PLOT 3,0,30:INPUT "(CR) TO MENU ";ZZ:GOTO 110 830 PLOT 12:REM DRAW AXIS AND LABEL 832 PLOT 12,15,17,2,20,15,242,127,15,255 834 PLOT 2,20,15,242,20,127,255 836 PLOT 30:FOR I= 0TO 5:PLOT 2,102- I* 20+ 23,15,255:NEXT I:PLOT 29 838 PLOT 23,3,6,29:PRINT SPC( 4);LW+ 50;TAB( 14);LW+ 40;TAB( 24);LW+ 30;TAB( 34);LW+ 20;TAB( 44);LW+ 10;TAB( 54);LW" 840 PLOT 23,3,0,6:PRINT "DOW INDUS.":PLOT 21,3,0,15:PRINT "DOW TRANS.":PLOT 19,3,0,24:PRINT A$(S) 842 PLOT 3,21,0:PRINT "STOCK & DOW PERFORMANCE" 844 PLOT 3,34,30:PRINT "WEEK NO." 848 RETURN 850 REM MAX/MIN 852 VM= V(LW):VN= V(LW):FOR I= LW+ 1TO LW+ 51 853 IF V(I)< = 0THEN 858 854 IF VM< V(I)THEN VM= V(I) 855 IF VM< VA(I)THEN VM= VA(I):GOTO 858 856 IF VN> V(I)AND V(I)> 0THEN VN= V(I) 857 IF VN> VA(I)AND VA(I)> 0THEN VN= VA(I) 858 NEXT I:RETURN 860 REM 39 WEEK AVE 862 FOR I= LWTO LW+ 51:SM= 0 864 FOR J= ITO I+ 38:IF V(J)= 0THEN VA(I)= 0:GOTO 868 866 SM= SM+ V(J):NEXT J:VA(I)= SM/ 39 868 NEXT I:RETURN 870 REM PLOT 872 FOR I= LW+ 51TO LWSTEP - 1:WK= 23+ (LW+ 51- I)* 2 874 IF V(I)= 0THEN 878 876 PLOT 2,WK,(V(I)- VN)* KT+ MN,255 878 IF VA(I)= 0THEN 882 880 PLOT 2,WK,(VA(I)- VN)* KT+ MN,255 882 NEXT I:PLOT 18:RETURN 1000 REM WRITE DATA, CLOSE ALL FILES, END PGM 1010 REM CLOSE EACH WEEKLY STOCK VALUE FILE 1020 S= 0:PLOT 3,10,26:PRINT "NUMBER STOCKS = ";NS 1022 S= S+ 1:PLOT 3,10,28:PRINT "STOCK NUMBER = ";S 1030 NM$= "STOCK"+ RIGHT$ (STR$ (S),1) 1040 F= S 1042 FOR W= 1TO 160 1044 V(W)= S(S,W) 1046 NEXT W 1047 J= 0 1048 FOR N= 1TO 16 1049 PUT F,N;V(J+ 1),V(J+ 2),V(J+ 3),V(J+ 4),V(J+ 5),V(J+ 6),V(J+ 7),V(J+ 8),V(J+ 9),V(J+ 10) 1050 J= J+ 10 1051 NEXT N 1052 FILE "C",F 1060 IF S= NSTHEN 1080 1065 GOTO 1022 1070 REM CLOSE THE WEEKLY DOW 'I', 'T' FILES 1080 F= 10 1081 NM$= "DJIAVE" 1082 FOR W= 1TO 160 1083 V(W)= DI(W) 1090 NEXT W 1091 J= 0 1092 FOR N= 1TO 16 1093 PUT F,N;V(J+ 1),V(J+ 2),V(J+ 3),V(J+ 4),V(J+ 5),V(J+ 6),V(J+ 7),V(J+ 8),V(J+ 9),V(J+ 10) 1094 J= J+ 10 1095 NEXT N 1096 FILE "C",F 1100 F= 11 1101 NM$= "DJTAVE" 1102 FOR W= 1TO 160 1103 V(W)= DT(W) 1110 NEXT W 1111 J= 0 1112 FOR N= 1TO 16 1113 PUT F,N;V(J+ 1),V(J+ 2),V(J+ 3),V(J+ 4),V(J+ 5),V(J+ 6),V(J+ 7),V(J+ 8),V(J+ 9),V(J+ 10) 1114 J= J+ 10 1115 NEXT N 1116 FILE "C",F 1120 REM CLOSE SKNAME FILE 1130 FILE "C",12:END 3000 REM SUBROUTINE TO READ FILES: CALLING SECTION REQUIRES 3010 REM F (FILE#),V(VARIABLE ARRAY), NM$ (FILE NAME) 3020 FILE "R",F,NM$,1:J= 0:FOR N= 1TO 16 3030 GET F,N;V(J+ 1),V(J+ 2),V(J+ 3),V(J+ 4),V(J+ 5),V(J+ 6),V(J+ 7),V(J+ 8),V(J+ 9),V(J+ 10) 3040 J= J+ 10:NEXT N:RETURN 4000 REM SUBROUTINE TO REARRANGE FILE DATA 4010 IF V(160)> = 159THEN V(160)= 159:GOTO 4030 4020 V(160)= V(160)+ 1 4022 IF V(160)= 1THEN 4040 4024 IF V(160)= 2THEN V(2)= V(1):GOTO 4040 4030 FOR I= V(160)TO 2STEP - 1:V(I)= V(I- 1):NEXT I 4040 V(1)= CV(M):RETURN 4500 REM SUBROUTINE TO ALLOW MASS FILE CHANGES 4510 POKE 33265,0:PLOT 3,0,18:INPUT "DO YOU WISH TO CORRECT ANY VALUES? (Y[CR] OR [CR]) ";ZZ$ 4512 IF ZZ$< > "Y"THEN ER= 5:ED= 20:GOSUB 7000:RETURN 4515 CH= 1:ER= 20:ED= 5:GOSUB 7000 4520 PLOT 3,0,20:PRINT "ENTER WEEK NO.";:INPUT WW:IF WW< 1OR WW> DI(160)THEN 4520 4525 INPUT "ENTER S (STOCK);I (DOW I); OR T (DOW T) ";X$ 4530 IF X$= "S"THEN INPUT "ENTER STOCK NO. ";SS:IF SS< 0OR SS> NSTHEN 4530 4535 IF X$= "S"THEN INPUT "ENTER STOCK VALUE ";S(SS,WW):GOTO 4570 4540 IF X$= "I"THEN INPUT "ENTER DOW I VALUE ";DI(WW):GOTO 4570 4550 IF X$= "T"THEN INPUT "ENTER DOW T VALUE ";DT(WW):GOTO 4570 4560 GOTO 4525 4570 PLOT 3,0,5:GOSUB 7200:FOR WK= W- 10TO W- 1:K= WK:GOSUB 7300:NEXT WK:GOTO 4510 5000 REM SUBROUTINE TO COMPUTE 39-WEEK AVERAGE 5002 IF V(160)< 39THEN F(M)= 1:LM= V(160):W(M)= LM:GOTO 5010 5004 LM= 39:F(M)= 0 5010 IF V(160)= 0THEN AV(M)= 0:GOTO 5030 5015 SM= 0:FOR I= 1TO LM 5020 SM= SM+ V(I):NEXT I:AV(M)= SM/ LM 5030 RETURN 5500 REM PREPARE DATA FOR CHART PRINT OUT 5510 FOR I= 1TO NS 5520 IF CV(I)> AV(I)THEN AN$(I)= "ABOVE":GOTO 5550 5530 IF CV(I)= AV(I)THEN AN$(I)= "SAME":GOTO 5550 5540 AN$(I)= "BELOW" 5550 NEXT I 5560 A$(NS+ 1)= "DOW INDUSTRIAL" 5570 IF CV(NS+ 1)> AV(NS+ 1)THEN AN$(NS+ 1)= "ABOVE":GOTO 5600 5580 IF CV(NS+ 1)= AV(NS+ 1)THEN AN$(NS+ 1)= "SAME":GOTO 5600 5590 AN$(NS+ 1)= "BELOW" 5600 A$(NS+ 2)= "DOW TRANSPORTATION" 5610 IF CV(NS+ 2)> AV(NS+ 2)THEN AN$(NS+ 2)= "ABOVE":GOTO 5650 5620 IF CV(NS+ 2)= AV(NS+ 2)THEN AN$(NS+ 2)= "SAME":GOTO 5650 5630 AN$(NS+ 2)= "BELOW" 5640 REM PRINT OUT STOCK & DOW VALUES & 39-WEEK AVERAGES 5650 PLOT 12,3,19,2:PRINT "STOCK FUND DECISION CHART" 5660 PRINT :PRINT TAB( 4)"VALUE NAME"TAB( 19)"CURRENT VALUE"TAB( 34)"39-WEEK AVERAGE"TAB( 51)"ANALYSIS" 5670 PRINT :FOR I= 1TO NS+ 2:PRINT TAB( 0);A$(I);TAB( 22);CV(I);TAB( 37);AV(I); 5680 IF F(I)= 1THEN PRINT TAB( 48)"*"TAB( 50);W(I)"";: 5690 PRINT TAB( 54);AN$(I):NEXT I:RETURN 6000 PRINT :PRINT " * INDICATES LESS THAN 39 WEEKS OF DATA." 6010 PRINT :PRINT ;:INPUT " HIT [CR] FOR MENU ";ZZ:RETURN 7000 REM SUBROUTINE TO CLEAR PORTION OF SCREEN 7010 FOR J= ERTO ER+ ED:PLOT 3,0,J:PRINT " ":NEXT J:RETURN 7100 GOSUB 7200 7110 L= 0:FOR W= 1TO DI(160):L= L+ 1:IF L< 11OR PR= 1THEN 7130 7120 L= 1:GOSUB 4500:PLOT 3,0,5 7122 GOSUB 7200 7130 K= W:GOSUB 7300 7140 NEXT W:IF PR< > 1THEN GOSUB 4500 7150 RETURN 7200 PRINT " WK";TAB( 5);:FOR S= BTO E:PRINT "STK";S;SPC( 3);:NEXT S:PRINT "DOW I";SPC( 3);"DOW T":PRINT :RETURN 7300 PRINT K;:FOR S= BTO E 7304 IF B= 6THEN MS= S- 5:CE= E- 5:GOTO 7308 7306 MS= S:CE= E 7308 PRINT TAB( 4+ 8* (MS- 1));S(S,K);:NEXT S 7310 PRINT TAB( 4+ 8* CE);DI(K);TAB( 4+ 8* (CE+ 1));DT(K):RETURN 9000 REM SUB TO OPEN, READ, & COMPUTE 39-WEEK AVE ALL FILES 9010 REM OPEN & READ & CLOSE STOCK NAME FILE 9020 FILE "R",12,"SKNAME",2:I= 1:L$= "LAST " 9030 GET 12,I;A$(I)[10]:IF A$(I)< > L$THEN I= I+ 1:GOTO 9030 9040 NS= I- 1:IF CI= 1THEN RETURN 9050 REM OPEN, READ EACH WEEKLY STOCK VALUE FILE 9060 FOR S= 1TO NS:F= S:M= F 9065 IF RD= 1THEN FOR J= 1TO 160:V(J)= S(S,J):NEXT J:GOTO 9082 9070 NM$= "STOCK"+ RIGHT$ (STR$ (S),1):GOSUB 3000 9082 IF CI= 1THEN CV(M)= SW(M):GOSUB 4000 9085 FOR W= 1TO 160:S(S,W)= V(W):NEXT W 9095 CV(M)= V(1):GOSUB 5000 9100 NEXT S 9110 REM OPEN & READ THE WEEKLY DOW 'I', 'T' FILES 9112 F= 10:M= NS+ 1 9115 IF RD= 1THEN FOR J= 1TO 160:V(J)= DI(J):NEXT J:GOTO 9122 9120 NM$= "DJIAVE":GOSUB 3000 9122 IF CI= 1THEN CV(M)= WI:GOSUB 4000 9125 FOR W= 1TO 160:DI(W)= V(W):NEXT W 9135 CV(M)= V(1):GOSUB 5000 9137 F= 11:M= NS+ 2 9139 IF RD= 1THEN FOR J= 1TO 160:V(J)= DT(J):NEXT J:GOTO 9142 9140 NM$= "DJTAVE":GOSUB 3000 9142 IF CI= 1THEN CV(M)= WT:GOSUB 4000 9145 FOR W= 1TO 160:DT(W)= V(W):NEXT W 9160 CV(M)= V(1):GOSUB 5000 9170 RD= 1:CI= 0:RETURN