DEF FNCONCSI(X,CV) 'CONVERTS FM CSI TO DECIMAL STATIC Y IF X<0 THEN X=X+65536 IF CV>0 THEN Y=X/(10^CV) IF CV<-1 THEN Y=INT(X/100)+((((X/100)-INT(X/100))*100)/(2^(ABS(CV)+2))) IF CV=-1 THEN Y=INT(X/10)+((((X/10)-INT(X/10))*10)/(2^(ABS(CV)+2))) IF CV=0 THEN Y=X FNCONCSI=Y END DEF 1000 'historical fixed fractional trading and sequential analysis study 1010 DIM A$(80),D(1000),D1(1000),T(1000),F(1000),V(1000),Z(500),Q(500),DRAWD#(2),MAXHI#(2) 1020 DIM B$(20),M1(1000),M2(1000),M3(1000),PAR(5),L(5),U(5),SSTEP(5),DELTA(5), BINS(100,3) 1030 B11=.31938153#:B12=-.356563782#:B13=1.781477937# 1040 B14=-1.821255978#:B15=1.330274429#:B10=.2316419 1050 C20=2.515517:C21=.802853:C22=.010328 1060 D21=1.432788:D23=.001308:D22=.189269 1070 PRINT:PRINT:PRINT:PRINT "INPUT TRADES DATA FILE IN FORM b: ";:INPUT B$ 1080 INPUT "DOLLARS PER FULL POINT $",DPP 1090 INPUT "CONVERSION FACTOR ",CV 1100 INPUT "COMMISSIONS AND SLIPPAGE PER TRADE IN DOLLARS $",COMM 1110 BIGLOSS=0 1120 OPEN"I",#1,B$ 1130 FOR I=1 TO 11 1140 INPUT #1,A$ 1150 PRINT I".)";TAB(8);A$ 1160 IF EOF(1) THEN GOTO 1180 1170 NEXT I 1180 CLOSE #1 1190 PRINT " ": PRINT "HOW MANY HEADER LINES TO DELETE";:INPUT N 1200 OPEN"I",#1,B$ 1210 PRINT " " :PRINT "These header lines will be deleted." :PRINT " " 1220 FOR I=1 TO N 1230 INPUT #1,A$ 1240 PRINT A$ 1250 IF EOF(1) THEN GOTO 1450 1260 NEXT I 1270 PRINT"The data used by this program is " :PRINT " " 1280 PRINT " trade","date","p&l" 1290 N=0 1300 INPUT #1,A$ 1310 F$=MID$(A$,9,1) 1320 P$=MID$(A$,11,9):X=VAL(P$) 1330 IF EOF(1) THEN GOTO 1450 1340 INPUT #1,A$ 1350 IF F$="F" THEN GOTO 1440 1360 X=VAL(P$):X1=VAL(MID$(A$,1,6)) 1370 P$=MID$(A$,11,9) 1380 X=(FNCONCSI(X,CV)-FNCONCSI(VAL(P$),CV))*DPP:IF F$="L" THEN X=-X 1390 IF X1=0 THEN 1450 1400 N=N+1:X=X-COMM:PRINT N,X1,X:IF X ",OUTX$ 1480 CLS:INPUT "OUTPUT TO ";OUTX$ 1490 INPUT "IXED FRACTION OR ONSTANT CONTRACT (F OR C) ";FORC$:IF FORC$><"F" AND FORC$><"f" AND FORC$><"C" AND FORC$><"c" THEN 1490 1500 IF FORC$="c" THEN FORC$="C" ELSE IF FORC$="f" THEN FORC$="F" 1510 GOSUB 2100:PRINT "OPTIMAL GROWTH AT 1 CONTRACT PER EVERY $"FFACTR*(-1)"OF EQUITY":INPUT "F IN DOLLARS $",FIXD:if fixd<=0 then fixd=FFACTR*(-1) 1520 IF FORC$><"C" AND FORC$><"c" THEN INPUT "STARTING ACCOUNT EQUITY $",STEX# 1530 INPUT "COMMA DELIMIT (Y OR N) ";COMMA$ 1540 INPUT "SMOOTHING FACTOR - LATEST WEIGHT (0 - 1) ";SMOOTH:IF SMOOTH>1 OR SMOOTH<0 THEN 1540 1550 INPUT "SEQUENTIAL ANALYSIS BINOMIAL MEAN ",BIMEAN 1560 INPUT "SECONDARY CUTOFF ",SCF:SCF=SCF+COMM 1570 INPUT "SEQUENTIAL ANALYSIS PARAMTER P0 (LOSS % ACCEPTANCE THRESHOLD) ",P0 1580 INPUT "SEQUENTIAL ANALYSIS PARAMTER P1 (LOSS % REJECTION THRESHOLD) ",P1 1590 INPUT "SEQUENTIAL ANALYSIS PARAMTER A ",A 1600 INPUT "SEQUENTIAL ANALYSIS PARAMTER B ",B 1610 INPUT "PAUSE AFTER EACH TRADE IS OUTPUT (Y OR N) ";PAUSE$ 1620 OPEN OUTX$ FOR OUTPUT AS #1 1630 M%=0:MM%=0:SIGNAL%=0:LASTSIG%=0:MAXHI#(2)=0:MAXHI#(1)=0:DRAWD#(2)=0:DRAWD#(1)=0:SECOUNT%=0:WINE%=0:SWINE%=0:GFAC1=1:GFAC2=1 1640 DIVISOR=LOG(P1/P0)-LOG((1-P1)/(1-P0)) 1650 CONST=LOG((1-P0)/(1-P1))/DIVISOR 1660 EQUITY#=STEX#:SEQEQ#=STEX# 1670 PRINT #1,"STARTING WITH";USING "$$#######,";STEX# 1680 VALUE=D(1) 1690 FOR X= 1 TO N 1700 FLAGG%=0:GOSUB 1710:NEXT:GOTO 1920 1710 IF SEQEQ#>MAXHI#(1) THEN MAXHI#(1)=SEQEQ# 1720 IF (MAXHI#(1)-SEQEQ#)>DRAWD#(1) THEN DRAWD#(1)=(MAXHI#(1)-SEQEQ#) 1730 IF EQUITY#>MAXHI#(2) THEN MAXHI#(2)=EQUITY# 1740 IF (MAXHI#(2)-EQUITY#)>DRAWD#(2) THEN DRAWD#(2)=(MAXHI#(2)-EQUITY#) 1750 IF FORC$><"C" AND FORC$><"c" THEN EQUITY#=EQUITY#+(INT(EQUITY#/FIXD)*D(X)) ELSE EQUITY#=EQUITY#+D(X) 1760 IF D(X)>0 THEN WINE%=WINE%+1 1770 PREVM%=M% 1780 IF SIGNAL%=0 THEN M%=M%+1 ELSE M%=1 1790 VALUE=(VALUE*(1-SMOOTH))+(D(X)*SMOOTH) 1800 IF VALUE<=BIMEAN AND M%>PREVM% THEN MM%=MM%+1 ELSE IF VALUE<=BIMEAN AND M%<=PREVM% THEN MM%=1 ELSE IF VALUE>BIMEAN AND M%<=PREVM% THEN MM%=0 1810 REJECT%=INT((LOG((1-B)/A)/DIVISOR)+(M%*CONST)) 1820 ACCEPT%=INT((LOG(B/(1-A))/DIVISOR)+(M%*CONST))+1 1830 IF SIGNAL%<>0 THEN LASTSIG%=SIGNAL% 1840 GFAC1=GFAC1*(1+(D(X)/FIXD)) 1850 SEQTDE$=" ":IF MM%REJECT% THEN SIGNAL%=-1 ELSE SIGNAL%=0 1860 IF LASTSIG%=1 AND X>1 AND D(X-1)>SCF THEN SEQTDE$=STR$(D(X)):SECOUNT%=SECOUNT%+1:GFAC2=GFAC2*(1+(D(X)/FIXD)):IF FORC$="F" THEN SEQEQ#=SEQEQ#+(INT(SEQEQ#/FIXD)*D(X)) ELSE SEQEQ#=SEQEQ#+D(X) 1870 IF LASTSIG%=1 AND X>1 AND D(X-1)>SCF AND D(X)>0 THEN SWINE%=SWINE%+1 1880 IF COMMA$><"Y" AND COMMA$><"y" AND FLAGG%=0 THEN PRINT #1,D1(X);TAB(10);D(X);TAB(20);INT(EQUITY#);TAB(50);SEQTDE$;TAB(60);INT(SEQEQ#):GOTO 1900 1890 IF FLAGG%=0 THEN WRITE #1,D1(X),D(X),EQUITY#,VAL(SEQTDE$),SEQEQ# 1900 IF PAUSE$="Y" OR PAUSE$="y" THEN INPUT "",PAUZE$ 1910 RETURN 1920 IF FORC$><"C" AND FORC$><"c" THEN DRAWD#(1)=INT((DRAWD#(1)/MAXHI#(1))*1000)/1000:DRAWD#(2)=INT((DRAWD#(2)/MAXHI#(2))*1000)/1000 1930 PRINT #1," ":PRINT #1,"DRAWDOWNS";TAB(20);INT(DRAWD#(2)*100)/100;TAB(60);INT(DRAWD#(1)*100)/100 1940 IF SECOUNT%<1 THEN SECOUNT%=32000 1950 IF FORC$="C" OR FORC$="c" THEN PRINT #1, "AVG. TRADE";TAB(20);INT((EQUITY#/N)*100)/100;TAB(60);INT((SEQEQ#/SECOUNT%)*100)/100 1960 PRINT #1,"WIN%";TAB(20);INT((WINE%/N)*1000)/10;TAB(60);INT((SWINE%/SECOUNT%)*1000)/10 1970 PRINT #1,"GROWTH FACTOR";TAB(20);INT((GFAC1^(1/N))*10000)/10000;TAB(60);INT((GFAC2^(1/SECOUNT%))*10000)/10000:PRINT #1,"TWR";TAB(20);INT(GFAC1*10000)/10000;TAB(60);INT(GFAC2*10000)/10000:PRINT#1," " 1980 NEWBI=(BIMEAN-(VALUE*(1-SMOOTH)))/SMOOTH:IF NEWBI0 THEN LASTSIG%=SIGNAL% 2000 IF LASTSIG%=1 AND D(N)>SCF THEN PRINT #1,"<< *** TAKE THE NEXT TRADE *** >>" ELSE PRINT #1, "<< *** PASS THE NEXT TRADE *** >>" 2010 FLAGG%=1:PAUSE$="N":EULAV=VALUE:TA%=M%:TB%=MM%:TC%=PREVM%:TD%=SIGNAL%:TE%=LASTSIG%:TF%=REJECT%:TG%=ACCEPT%:X=1:D(X)=NEWBI-1 2020 GOSUB 1770 2030 PRINT#1," ":IF SIGNAL%<>0 THEN LASTSIG%=SIGNAL% 2040 PRINT #1, "<< IF <="NEWBI"THEN PASS THE NEXT TRADE >>" 2050 VALUE=EULAV:M%=TA%:MM%=TB%:PREVM%=TC%:SIGNAL%=TD%:LASTSIG%=TE%:REJECT%=TF%:ACCEPT%=TG%:X=1:D(X)=NEWBI+1:GOSUB 1770:IF SIGNAL%<>0 THEN LASTSIG%=SIGNAL% 2060 IF LASTSIG%=1 THEN PRINT#1,"<< IF >"NEWBI"THEN TAKE THE NEXT TRADE >>" ELSE PRINT #1, "<< IF >"NEWBI"THEN PASS THE NEXT TRADE >>" 2070 PRINT#1," ":PRINT #1,"SEQUENTIAL ANALYSIS PARAMETERS:":PRINT #1,"SMOOTHING FACTOR ="SMOOTH,"BIMEAN ="BIMEAN:PRINT #1,P0,P1,A,B 2080 CLOSE 2090 RUN 2100 F=.01:F2=0:TWR2#=0 2110 REM STARTLOOP 2120 SUMMA=0:FOR X=1 TO N:SUMMA=SUMMA+D(X):NEXT:IF SUMMA<=0 THEN FFACTR=9999999!:RETURN 2130 TWR#=1:HPR#=1:IF F>1 THEN F=1 2140 FOR X=1 TO N 2150 HPR#=(1+(F*(D(X)/ABS(BIGLOSS)))):TWR#=TWR#*HPR# 2160 NEXT 2170 IF TWR#>TWR2# THEN TWR2#=TWR#:F2=F:F=F+.01:IF F2<.999 THEN GOTO 2110 :REM PEAK NOT PASSED 2180 IF TWR#<=TWR2# OR F2>=.999 THEN TWR#=TWR2#:TRUEF=F2:FFACTR=BIGLOSS/TRUEF 2190 RETURN