Trade Equity GV LC Files. (Updated 12 April 2006) The GV.DLL and CALC.DLL files are required for the Trade Equity indicator in this document. INDICATORS - Install in the listed order. -------8<---------------------------------- {Date Filter} {2004 Roy Larsen, rlarsen@man.quik.co.nz} Sd:=Input("Start day" ,1,31,1); Sm:=Input("Start month",1,12,1); Sy:=Input("Start year" ,1980,2010,2002); Ed:=Input("End day" ,1,31,31); Em:=Input("End month" ,1,12,12); Ey:=Input("End year" ,1980,2010,2004); Start:=(DayOfMonth()>=Sd AND Month()=Sm AND Year()=Sy) OR Year()>Sy OR (Year()=Sy AND Month()>Sm); End:=(DayOfMonth()<=Ed AND Month()=Em AND Year()=Ey) OR Year()Ref(L,-2) AND Ref(L,-1)>Ref(L,-2) AND Ref(L,-3)>Ref(L,-2) AND Ref(L,-4)>Ref(L,-2)),Ref(L,-2)); Cross(F2,L)*Fml("Date Filter"); -------8<---------------------------------- {Entry Price} {CLOSE} F1:=ValueWhen(1,Cum(1)=5 OR HRef(L,-2) AND Ref(L,-1)>Ref(L,-2) AND Ref(L,-3)>Ref(L,-2) AND Ref(L,-4)>Ref(L,-2),Ref(L,-2)); Cross(F2,L)*C*Fml("Date Filter"); -------8<---------------------------------- {Trade Equity GV LC} {V6.0} {(c) 2003-2006 Roy Larsen} {www.metastocktips.co.nz} B:=Input("Buy, 1=O 2=C 3=H 4=L 5=Stop" ,1,5,2); Z:=Input("Sell, 1=O 2=C 3=H 4=L 5=Stop",1,5,2); Nd:=Input("Buy Delay" ,0,5,0); Xd:=Input("Sell Delay",0,5,0); Cn:=Input("Buy/Sell Costs",0,9999,2525); I:=Input("Display Options 0-17",0,17,0); Cp:=5000;{* initial trade size} N:= Fml("Entry Binary"); {Buy} X:= Fml("Exit Binary"); {Sell} Ns:=0; Xs:=0; {* end of user area *} I:=ExtFml("GV.SetVar","Lc",I);Ns:=(B=5)*Ns; Cx:=Cn-100*Int(Cn/100);Cn:=Int(Cn/100); M:=If(Ns>0,Min(H,Max(L,Ns)),If(B=1,O,If(B=3,H,If(B=4,L,C)))); N:=N AND Alert(N=0,2)+(Cum(N>-1)=1); X:=X AND (Z<5)*(Alert(X=0,2)+(Cum(N>-1)=1)); N:=ValueWhen(1+Nd,1,N);N:=If(B<5,N,Ns>0); Y:=If(Xs>0,Min(H,Max(L,Xs)),If(Z=1,O,If(Z=3,H,If(Z=4,L,C)))); X:=ValueWhen(1+Xd,1,X);X:=X+Xs>0; Y:=If((Z<5)*(X=0),C,Y);Y:=If((Xs>0)*N*X,Xs,Y); I:=Cum(N+X>-1)=1;N:=(I>-1)*N;Y:=If(Y=0,1,Y); K:=If(I,Y,ValueWhen(2,1,Y)); Y:=If((N+X=0)*Alert(N*X,2),K,Y); Tr:=BarsSince(I+N)<(BarsSince(I+X)+(Cum(N)=1 AND Cum(I+X)=1)); Tr:=If((N+X>1)*(Alert(Tr,2)+((Nd+Xd<1) *(B<>2)*(Z>1)*(Max(B,Z)>4 OR B<>Z))),1,Tr); En:=(Tr+Alert(Tr=0,2)=2)+I; Ex:=(Tr=0)*Alert(Tr,2);M:=If(I*(N=0),C,M); Lb:=Alert(Tr,2)*(LastValue(Cum(1))=Cum(1)); A:=ValueWhen(1,En,If(M=0,1,M)); En:=Tr+(Alert(Tr=0,2)+I>0)=2; N:=Cum(I*Cp-En*Cn-Ex*Cx); Ns:= ExtFml("Calc.Profit",Alert(Tr,2)*If(B=5,1,En=0), If(B+En=6,N,ValueWhen(2,1,N)), If((B+En=6)+((B<5)*Alert(En,2)*(En=0)),(Y-A)/A,(Y-K)/K)); M:=N+Ns;X:=A*(M+(Ex*Cx))/Y; Xs:=(Ex+Lb>0)*(M>X+Cx)*(M-X-Cn); Xd:=(Ex+Lb>0)*(M<=X+Cx)*(M-X-Cn); Nd:=Alert(Tr,2)*(M-If(I,M,ValueWhen(2,1,ValueWhen(1,I+(Tr=0),M)))); I:=ExtFml("GV.SetVar","I",I);I:=ExtFml("GV.SetVar","N",N); I:=ExtFml("GV.SetVar","X",X);I:=ExtFml("GV.SetVar","Cn",Cn); I:=ExtFml("GV.SetVar","Cp",Cp);I:=ExtFml("GV.SetVar","Cx",Cx); I:=ExtFml("GV.SetVar","En",En);I:=ExtFml("GV.SetVar","Ex",Ex); I:=ExtFml("GV.SetVar","Lb",Lb);I:=ExtFml("GV.SetVar","Nd",Nd); I:=ExtFml("GV.SetVar","Ns",Ns);I:=ExtFml("GV.SetVar","Tr",Tr); I:=ExtFml("GV.SetVar","Xd",Xd);I:=ExtFml("GV.SetVar","Xs",Xs); I:=ExtFml("GV.SetVar","Eq",M); {Fml("Trade Equity LC Display")}M; -------8<---------------------------------- {Trade Equity LC Display} {V6.0} {(c) 2004-2006 Roy Larsen} {www.metastocktips.co.nz} {use with Trade Equity GV LC} {Display options 0, nominal gross equity, 1, net profit 2, dollar equity per trade 3, percent equity per trade 4, amount of winning trades 5, amount of losing trades 6, number of winning trades 7, number of losing trades 8, trade in progress, 9, bars in trade 10, total bars in all trades 11, maximum favourable excursion 12, maximum adverse excursion 13, nominal percent equity 14, maximum $ risk per individual trade 15, maximum % risk per individual trade 16, maximum $ risk across all trades 17, maximum % risk across all trades 18, position cost} M:=ExtFml("GV.GetVar","Eq"); Z:=ExtFml("GV.GetVar","Lc"); I:=ExtFml("GV.GetVar","I"); Cn:=ExtFml("GV.GetVar","Cn"); Cp:=ExtFml("GV.GetVar","Cp"); En:=ExtFml("GV.GetVar","En"); Ex:=ExtFml("GV.GetVar","Ex"); Lb:=ExtFml("GV.GetVar","Lb"); Nd:=ExtFml("GV.GetVar","Nd"); Tr:=ExtFml("GV.GetVar","Tr"); Xd:=ExtFml("GV.GetVar","Xd"); Xs:=ExtFml("GV.GetVar","Xs"); A:=HighestSince(1,I+En*(Z<16),M)=M; B:=ValueWhen(1,I+A,M); D:=LowestSince(1,I+A,M); Rd:=HighestSince(1,I,B-D); Rp:=100*HighestSince(1,I,(B-D)/B); D:=If(Z=0,M, If(Z=1,M-Cp, If(Z=2,Nd, If(Z=3,100*Nd/ValueWhen(1,I OR Alert(Tr,2)=0,M), If(Z=4,Cum(Xs),If(Z=5,Cum(Xd),If(Z=6,Cum(Xs>0), If(Z=7,Cum(Ex+Lb>0 AND Xs=0),If(Z=8,Tr, If(Z=9,BarsSince(I OR Alert(Tr,2)=0)*Alert(Tr,2),M)))))))))); If(Z<10,D,If(Z=10,Cum(Alert(Tr,2)), If(Z=11,HighestSince(1,I,Nd), If(Z=12,LowestSince(1,I,Nd), If(Z=13,100*(M-Cp)/Cp, If(Z=14,Rd,If(Z=15,Rp,If(Z=16,Rd,Rp)))))))); -------8<---------------------------------- Exploration notes {Trade Equity GV LC 1 Daily} {(c) 2003-2006 Roy Larsen} {www.metastocktips.co.nz} {This is the first exploration in a family of four that create trading system statistical reports using "Trade Equity GV LC" with daily data. These reports can be copied to Excel for summary or further analysis. Each exploration can be run alone or with others in the set. Make sure that the "Trade Equity GV LC" indicator parameters are set up correctly before proceeding.} {Column A: $ Profit} {Net profit} Eq:=Fml("Trade Equity GV LC"); Tr:=ExtFml("GV.GetVar","Tr"); Cp:=ExtFml("GV.GetVar","Cp"); En:=ExtFml("GV.GetVar","En"); Equity:=ExtFml("GV.GetVar","Equity"); Trades:=ExtFml("GV.GetVar","Trades"); Number:=ExtFml("GV.GetVar","Number"); Equity:=ExtFml("GV.SetVar","Equity",Eq+Equity-Cp); Trades:=ExtFml("GV.SetVar","Trades",Trades+Tr); Number:=ExtFml("GV.SetVar","Number",Number+En); Eq-Cp; ColB: $ Win {Amount of winning trades} Cum(ExtFml("GV.GetVar","Xs")); ColC: $ Loss {Amount of losing trades} Cum(ExtFml("GV.GetVar","Xd")); ColD: # Win {Number of winning long trades} Xs:=ExtFml("GV.GetVar","Xs"); Cum(Xs>0); ColE: # Loss {Number of losing long trades} Ex:=ExtFml("GV.GetVar","Ex"); Lb:=ExtFml("GV.GetVar","Lb"); Xs:=ExtFml("GV.GetVar","Xs"); Cum(Xs=0 AND (Ex OR Lb)); ColF: # BarsIn {Total bars in all trades} Tr:=ExtFml("GV.GetVar","Tr"); Cum(Alert(Tr<>0,2)); Filter {Filter} Cum(Alert(ExtFml("GV.GetVar","Tr")<>0,2))>0; Filter enabled Yes Periodicity Daily Records required XXX -------8<---------------------------------- Exploration notes{Trade Equity GV LC 2 Daily} {2004 Roy Larsen, rlarsen@man.quik.co.nz} {This is the second exploration in a family of four that create trading system statistical reports using "Trade Equity GV LC" with daily data. These reports can be copied to Excel for summary or further analysis. Each exploration can be run alone or with others in the set. Make sure that the "Trade Equity GV LC" indicator parameters are set up correctly before proceeding.} ColA: #BarsOut {Bars out} Eq:=Fml("Trade Equity GV LC"); Tr:=ExtFml("GV.GetVar","Tr"); Cum(Tr>-1)-Cum(Alert(Tr,2)); ColB: #TotBars {Explored bars total} I:=ExtFml("GV.GetVar","I"); Cum(I>-1); ColC: $ Costs {Commissions paid} Cn:=ExtFml("GV.GetVar","Cn"); Cx:=ExtFml("GV.GetVar","Cx"); En:=ExtFml("GV.GetVar","En"); Ex:=ExtFml("GV.GetVar","Ex"); Cum(En*Cn+Ex*Cx); ColD: Buy/Hold {Buy & hold profit/loss, first bar or signal} Cn:=ExtFml("GV.GetVar","Cn"); Cp:=ExtFml("GV.GetVar","Cp"); Tr:=ExtFml("GV.GetVar","Tr"); Ea:=ValueWhen(1,Cum(1)=1 {OR Cum(Tr)=1} ,C); Ea:=LastValue(Ea); Xp:=LastValue(C); ((Cp-Cn)*(Xp/Ea))-Cp; ColE: P Index {Profit index} Xs:=Cum(ExtFml("GV.GetVar","Xs")); Xd:=Cum(ExtFml("GV.GetVar","Xd")); Xs:=If(Xs=0,-1,Xs); If(Xs=-1,0,PREC(100*(Xs+Xd)/Xs,1)); ColF: In Trade {Currently in a trade} ExtFml("GV.GetVar","Tr"); Filter {Filter} Cum(Alert(ExtFml("GV.GetVar","Tr")<>0,2))>0; Filter enabled Yes Periodicity Daily Records required XXX -------8<---------------------------------- Exploration notes{Trade Equity GV LC 3 Daily} {2004 Roy Larsen, rlarsen@man.quik.co.nz} {This is the third exploration in a family of four that create trading system statistical reports using "Trade Equity GV LC" with daily data. These reports can be copied to Excel for summary or further analysis. Each exploration can be run alone or with others in the set. Make sure that the "Trade Equity GV LC" indicator parameters are set up correctly before proceeding.} ColA: $Max DD {Maximum open trade drawdown} Eq:=Fml("Trade Equity GV LC"); Nd:=ExtFml("GV.GetVar","Nd"); LowestSince(1,Cum(Abs(Nd)>-1)=1,Nd); ColB: $MaxProf {Maximum open trade profit} Nd:=ExtFml("GV.GetVar","Nd"); HighestSince(1,Cum(Abs(Nd)>-1)=1,Nd); ColC: Win Bars {Total bars in winning trades} En:=ExtFml("GV.GetVar","En"); Xs:=ExtFml("GV.GetVar","Xs"); I:=Cum(En>-1)=2; Cum(If(Xs>0,BarsSince(I OR En)+1,0)); ColD: LoseBars {Total bars in losing trades} En:=ExtFml("GV.GetVar","En"); Ex:=ExtFml("GV.GetVar","Ex"); Lb:=ExtFml("GV.GetVar","Lb"); Xs:=ExtFml("GV.GetVar","Xs"); I:=Cum(En>-1)=2; Cum(If(Xs<=0 AND (Ex OR Lb),BarsSince(I OR En)+1,0)); ColE: CnscWin {Maximum consecutive winning trades} Ex:=ExtFml("GV.GetVar","Ex"); Lb:=ExtFml("GV.GetVar","Lb"); Xs:=ExtFml("GV.GetVar","Xs"); I:=Cum(Ex>-1)=2; Up:=Xs>0; Dn:=Xs<=0 AND (Ex OR Lb); Ca:=BarsSince(I OR Up)-1)=2; Up:=Xs>0; Dn:=Xs<=0 AND (Ex OR Lb); Ca:=BarsSince(I OR Dn)0,2))>0; Filter enabled Yes Periodicity Daily Records required XXX -------8<---------------------------------- Exploration notes {Trade Equity GV LC 4 Daily} {2004 Roy Larsen, rlarsen@man.quik.co.nz} {This is the fourth exploration in a family of four that create trading system statistical reports using "Trade Equity GV LC" with daily data. These reports can be copied to Excel for summary or further analysis. Each exploration can be run alone or with others in the set. Make sure that the "Trade Equity GV LC" indicator parameters are set up correctly before proceeding.} Col A: B/H DwDn {Maximum buy & hold drawdown} Eq:=Fml("Trade Equity GV LC"); Cn:=ExtFml("GV.GetVar","Cn"); Cp:=ExtFml("GV.GetVar","Cp"); Tr:=ExtFml("GV.GetVar","Tr"); Ea:=ValueWhen(1,Cum(1)=1 {OR Cum(Tr)=1} ,C); I :=Cum(Ea>0)=1; Ea:=LastValue(Ea); Gl:=((Cp-Cn)*(C/Ea))-Cp; LowestSince(1,I,Gl); Col B: B/H +Exc {Maximum buy and hold positive excurion} Cn:=ExtFml("GV.GetVar","Cn"); Cp:=ExtFml("GV.GetVar","Cp"); Tr:=ExtFml("GV.GetVar","Tr"); Ea:=ValueWhen(1,Cum(1)=1 {OR Cum(Tr)=1} ,C); I :=Cum(Ea>0)=1; Ea:=LastValue(Ea); Gl:=((Cp-Cn)*(C/Ea))-Cp; HighestSince(1,I,Gl); Col C: AvgeWin {Average win} Xs:=ExtFml("GV.GetVar","Xs"); Gn:=Cum((Xs>0)*Xs); Up:=Cum(Xs>0); Up:=If(Up=0,-1,Up); Gn:=If(Up=0,1,Gn); If(Gn/Up=-1,0,Gn/Up); Col D: AvgeLoss {Average loss} Ex:=ExtFml("GV.GetVar","Ex"); Lb:=ExtFml("GV.GetVar","Lb"); Xd:=ExtFml("GV.GetVar","Xd"); Ls:=Cum((Xd<0)*Xd); Dn:=Cum(Xd<=0 AND (Ex OR Lb)); Dn:=If(Dn=0,-1,Dn); Ls:=If(Dn=0,-1,Ls); If(Ls/Dn>0,0,Ls/Dn); Col E: GL Ratio {Average gain/loss ratio} Ex:=ExtFml("GV.GetVar","Ex"); Lb:=ExtFml("GV.GetVar","Lb"); Xs:=ExtFml("GV.GetVar","Xs"); Xd:=ExtFml("GV.GetVar","Xd"); Gn:=Cum((Xs>0)*Xs); Up:=Cum(Xs>0); Ls:=Cum((Xd<0)*Xd); Ok:=Gn>0 AND Ls<0; Dn:=Cum(Xd<=0 AND (Ex OR Lb)); Gn:=If(Ok,Gn,-1); Ls:=If(Ok,Ls,1); Up:=If(Ok,Up,1); Dn:=If(Ok,Dn,1); Op:=(Gn/Up)/Abs(Ls/Dn); If(Op<0,0,PREC(Op,2)); Col F: PkTrough {Maximum $ peak-to-trough range} I :=ExtFml("GV.GetVar","I"); Nd:=ExtFml("GV.GetVar","Nd"); Tr:=ExtFml("GV.GetVar","Tr"); A :=If(Tr,HighestSince(1,Tr=0,Nd),0); B :=If(Tr,LowestSince(1,Tr=0,Nd),0); HighestSince(1,I,If(Tr,A-B,0)); Filter {Filter} Cum(Alert(ExtFml("GV.GetVar","Tr")<>0,2))>0; Filter enabled Yes Periodicity Daily Records required XXX -------8<----------------------------------