What everyone has been waiting for….. Kidding aside, there are a few inovations that might be of use to some T/S users. I decided that my 2068 can be put to more serious use . I rolled my own programs to analyze the market, not being a programmer, it took me about 3 months to have a program to meet my needs; the program was revised numerous times, then revised again…! you know the story. Presently, I daily update 17 programs to chart the Dow Jones Ind. and various stocks [275K worth]. The program below represents a stock charting.
Ofinterest are program lines 520 – 580, the highest and the lowest numbers to be plotted are established; the difference is then plotted within the screen limits by lines 660 & 670 that also draw a Vertical Line Chart; the OVER 1 command line 100 is in effect. Line 660 DRAWs the bar from 0 to the high (H) point and line 670 UNDRAWs from 0 to the low (L) point. The numbers were INPUTed into DIM(125) arrays, starting at line 4000. The Moving Averages are plotted by lines 720 to 825. Thanks GOTO Bob Swoger for a faster moving average algorithm. Lines 2210 to 2310 print the scale values to the left of the screen and lines 5000 to 5075 draw and plot the scale tick marks at the screen borders and color lines.
A differenf type of graph is plotted by lines 1450 to 1478 as shown on the bottom of the (O B V) chart.
The menu starts at line 120, at line 250 the INKEY$ CMD is used for efficiency. The arrays are updated daily by lines 1800 – 1900 by dropping element #1 and adding element #125 where the 2068 is SLOW. The array elements can be reviewed by lines 2160 – 2180. GOTO 90 must be used for the menu, otherwise the variables will be lost.


5 REM %%%%%%%%%%%%%%%%%%% Stock Chart %%%%%%%%%%%%%%%%%%%
10 DIM H(125): DIM L(125): DIM C(125): DIM V(125): DIM Q(125)
90 CLS : PAPER SGN PI: BORDER SGN PI: INK VAL "9": POKE 23609,10: POKE 23658,8: POKE 23617,236
95 BEEP .03,40: BEEP .05,42: BEEP .03,45
100 OVER 1: LET G=90: LET H=100
110 DEF FN I(N)=INT (N*10+.5)/10
120 PRINT PAPER PI;" Advance Micro Devices "
122 PRINT " TECHNICAL ANALYSIS"
125 PRINT '" Abed Kahale 1989 rev.6"
130 PRINT " GO TO 90 TO Start ": REM ;Z$;"91"
140 PRINT "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
160 PRINT '"1. Start NEW chart"
170 PRINT '"2. Add NEW DATA ";(38562- FREE )/1E3;"K"
180 PRINT '"3. See charts"
190 PRINT '"4. O B V "
200 PRINT '"5. Backup"
210 PRINT '"6. See DATA C. CAT."
220 PRINT '"7. Correct DATA L. CBU"
230 PRINT '"8. Date ? S. Save"
240 PAUSE NOT PI
245 LET A$=INKEY$
250 IF A$="1" THEN GO TO VAL "4000"
260 IF A$="2" THEN GO TO VAL "1790"
270 IF A$="3" THEN GO TO VAL "500"
280 IF A$="4" THEN GO TO VAL "847"
290 IF A$="5" THEN SAVE "AMD.BB": VERIFY ""
300 IF A$="6" THEN GO TO VAL "2160"
310 IF A$="7" THEN GO TO VAL "1880"
320 REM IF A$="8" THEN INPUT "DATE?... ";Z$
340 IF A$="L" THEN RANDOMIZE USR H: LOAD "CBU.BB"
350 IF A$="S" THEN GO TO VAL "2370"
360 IF A$="C" THEN CLS : RANDOMIZE USR H: CAT "",: PAUSE NOT PI
370 GO TO G
500 CLS : REM LINE CHART ******
505>PRINT AT SGN PI,VAL "14";(Q(121)+Q(122)+Q(123)+Q(124)+Q(125));"W/Vol"
510 GO SUB VAL "5000"
520 LET L=H(1)
530 LET S=L(1)
540 FOR N=2 TO 125
550 IF H(N)>L THEN LET L=H(N)
560 IF L(N)<S THEN LET S=L(N)
570 NEXT N
580 LET D=L-S
590 PRINT AT NOT PI,VAL "6"; PAPER VAL "2";" AMD ";FN I(C(125)-C(124));" ";C(125): REM " ";z$;"91"
600 GO SUB VAL "2210"
650 FOR N=16 TO 125
660 PLOT 2*N+1,((160/D)*(H(N)-S)): DRAW 0,-(160/D)*(H(N)-S)
670 PLOT 2*N+1,((160/D)*(L(N)-S)): DRAW 0,-(160/D)*(L(N)-S)
700 PLOT 2*N+2,((160/D)*(C(N)-S))
710 NEXT N
720 BEEP .1,45: REM MOVING AVE. ***** Repetitious lines have been deleted *****
810 LET TT=0: FOR N=1 TO 49: LET TT=TT+C(N): NEXT N
812 FOR N=50 TO 125
814 LET TT=TT+C(N)
816 LET T=TT/50
820 PLOT 2*N+2,(160/D)*(T-S)
822 LET TT=TT-C(N-49)
825 NEXT N
827 PRINT AT VAL "20",VAL "25";"50-";FN I(T)
840 PRINT #RND;" M.A. 10 15 30 50": BEEP VAL ".1",VAL "38"
845 PAUSE VAL "200": IF INKEY$="Z" THEN COPY
847 GO SUB VAL "1240"
850 REM VOLUME *********
884 LET L=Q(1): LET S=Q(1)
886 FOR N=2 TO 125
888 IF Q(N)>L THEN LET L=Q(N)
890 IF Q(N)<S THEN LET S=Q(N)
891 NEXT N: LET D=L-S
892 FOR N=1 TO 125: PLOT 2*N,((50/D)*(Q(N)-S))+70: DRAW 0,-(50/D)*(Q(N)-S): NEXT N
1220 BEEP SGN PI,NOT PI: PAUSE VAL "200": IF INKEY$="Z" THEN COPY
1230 GO TO G
1240 DIM M(122): REM OBV ******
1250 FOR N=1 TO 14
1260 LET M(N)=V(N)+1.2*V(N+1)+1.6*V(N+2)+2*V(N+3)
1270 NEXT N
1280 FOR N=15 TO 122
1290>LET M(N)=M(N-4)/2+V(N)+1.3*V(N+1)+1.6*V(N+2)+2*V(N+3)
1300 NEXT N
1310 LET K1=M(1)
1320 LET F1=M(1)
1330 FOR N=2 TO 122
1340 IF M(N)>K1 THEN LET K1=M(N)
1350 IF M(N)<F1 THEN LET F1=M(N)
1360 NEXT N
1370 IF K1<0 THEN LET K1=0
1380 IF F1>0 THEN LET F1=0
1390 LET H1=K1-F1
1400 CLS
1402 GO SUB 5000
1405 PRINT AT NOT PI,SGN PI; PAPER PI;" O B V "
1450 PRINT AT 21-(8/H1*(0-F1)),0;" +"
1460 FOR N=17 TO 122
1465 PLOT 2*N+6,4*(18/H1*(M(N)-F1)): DRAW 0,-4*(18/H1*(M(N)-F1))+20
1471 NEXT N
1473 LET L=C(1): LET S=C(1)
1475 FOR N=2 TO 125
1476 IF C(N)>L THEN LET L=C(N)
1477 IF C(N)<S THEN LET S=C(N)
1478 NEXT N
1480 LET D=L-S
1481 FOR N=1 TO 125
1482 PLOT 2*N,4*((20/D)*(C(N)-S)+23)
1483 NEXT N
1500 RETURN
1790 CLS : REM UPDATE *******
1800 FOR N=1 TO 124
1810 LET H(N)=H(N+1)
1820 LET L(N)=L(N+1)
1830 LET C(N)=C(N+1)
1840 LET V(N)=V(N+1)
1850 LET Q(N)=Q(N+1)
1870 NEXT N
1880 CLS
1890 BEEP .1,38: PRINT "AMD": INPUT "H"'H(125),'"L"'L(125),'"C"'C(125)'"V"'V(125): LET Q(125)=V(125)
1900 IF C(125)=C(124) THEN LET V(125)=NOT PI
1910 IF C(125)<C(124) THEN LET V(125)=-V(125)
1939 PRINT '' PAPER 6;"1. Add more DATA "''"5. Correction - Reenter "''"S. SAVE"
1960 PAUSE NOT PI
1970 IF INKEY$="1" THEN GO TO VAL "1800"
1980 IF INKEY$="5" THEN GO TO VAL "1880"
1985 IF INKEY$="S" THEN GO TO 2370
2010 GO TO G: REM DATA *******
2160 CLS : FOR N=104 TO 125
2170 PRINT N;" ";H(N);" ";L(N);" "; BRIGHT SGN PI;C(N); BRIGHT NOT PI;" ";V(N);" ";Q(N)
2180 NEXT N
2190 PAUSE NOT PI: GO TO G: REM SCALE *******
2210 PRINT AT SGN PI,NOT PI;FN I(L)
2220 PRINT 'FN I(D*.9+S)
2230 PRINT 'FN I(D*.8+S)
2240 PRINT 'FN I(D*.7+S)
2250 PRINT 'FN I(D*.6+S)
2260 PRINT 'FN I(D*.5+S)
2270 PRINT 'FN I(D*.4+S)
2280 PRINT 'FN I(D*.3+S)
2290 PRINT 'FN I(D*.2+S)
2300 PRINT 'FN I(D*.1+S)
2310 PRINT 'FN I(S)
2350 RETURN
2370 RANDOMIZE USR H: SAVE "AMD.BB" LINE 90: BEEP VAL ".1",NOT PI: RANDOMIZE USR H: LOAD "L.B1"
4000 CLS : PRINT "USE 1000'S FOR VOLUME"
4010 FOR Y=1 TO 125
4020 INPUT "HIGH"'H(Y)'"LOW"'L(Y)'"CLOSE"'C(Y)'"VOLUME"'V(Y): LET Q(Y)=V(Y)
4030 IF C(Y)=C(Y-1) THEN LET V(Y)=0
4040 IF C(Y)<C(Y-1) THEN LET V(Y)=-V(Y)
4050 NEXT Y
4060 GO TO G
5000 DRAW 255,NOT PI: DRAW NOT PI,175: DRAW -255,NOT PI: DRAW NOT PI,-175
5010 FOR Z=10 TO 250 STEP 10
5020 PLOT Z,1: NEXT Z
5030 FOR Z=10 TO 250 STEP 40
5040 PLOT Z,2: NEXT Z
5050 FOR Z=8 TO 160 STEP 8
5060 PLOT 254,Z: PLOT 1,Z
5070 NEXT Z
5075 FOR N=2 TO 21 STEP 2: PRINT AT N,NOT PI; PAPER NOT PI;" ": NEXT N
5080 RETURN




Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.