Trade Equity GV DE Files. (Updated 14 December 2006) The GV.DLL file is required for the Trade Equity indicator in this document. INDICATORS - Install in 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 DE} {V6.2 Dual Equal} {© 2002-2006 Roy Larsen} {www.metastocktips.co.nz} I:=Input("Display Options 0-1",0,1,1); 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); A:=Input("Cost Factor 0-2 (/1 /10 /100)",0,2,0); Cn:=Input("Buy/Sell Costs",0,999999,025025); Nd:=Input("Buy/Sell Delays",0,55,0); Cp:=5000;{default size, 0=points only} {* long formulas *} F:=-1; {see TE Display Options indicator} N:=0; {buy long} Ns:=0; {buy price stop} X:=0; {sell long} Xs:=0; {sell price stop} {* short formulas *} SF:=F; {see TE Display Options indicator} SN:=0; {sell short} SNs:=0; {sell short price stop} SX:=0; {cover} SXs:=0; {cover price stop} {* end of user area *} I:=ExtFml("GV.SetVar","De",I);I:=Int(11*Frac(A/10)); I:=If(I>1,100,If(I=1,10,1));Ns:=(B=5)*Ns; F:=ValueWhen(1+Nd,1,If(F=0,-1,If(Abs(F)>1,Abs(F),-F))); Cx:=(Cn-1000*Int(Cn/1000))/I;Cn:=Int(Cn/1000)/I; Xd:=LastValue(Int(Frac(Nd/9)*10)); Nd:=LastValue(Int(Nd/9)); 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); X:=ValueWhen(1+Xd,1,X);X:=X+Xs>0; SNs:=(B=5)*sNs; SF:=ValueWhen(1+Nd,1,If(SF=0,-1,If(Abs(SF)>1,Abs(SF),-SF))); SN:=SN AND Alert(SN=0,2)+(Cum(SN>-1)=1); SX:=SX AND (Z<5)*(Alert(SX=0,2)+(Cum(SX>-1)=1)); SN:=ValueWhen(1+Nd,1,SN);SN:=If(B<5,SN,SNs>0); SX:=ValueWhen(1+Xd,1,SX);SX:=SX+SXs>0; I:=Cum(N+X+SN+SX+Abs(F+SF)>-1)=1; I:=ExtFml("GV.SetVar","I",I);I:=ExtFml("GV.SetVar","B",B); I:=ExtFml("GV.SetVar","Cn",Cn);I:=ExtFml("GV.SetVar","Cp",Cp); I:=ExtFml("GV.SetVar","Cx",Cx);I:=ExtFml("GV.SetVar","Nd",Nd); I:=ExtFml("GV.SetVar","Xd",Xd);I:=ExtFml("GV.SetVar","Z",Z); I:=ExtFml("GV.SetVar","F",F);I:=ExtFml("GV.SetVar","N",N); I:=ExtFml("GV.SetVar","X",X);I:=ExtFml("GV.SetVar","Ns",Ns); I:=ExtFml("GV.SetVar","Xs",Xs);I:=ExtFml("GV.SetVar","SF",SF); I:=ExtFml("GV.SetVar","SN",SN);I:=ExtFml("GV.SetVar","SX",SX); I:=ExtFml("GV.SetVar","SNs",SNs);I:=ExtFml("GV.SetVar","SXs",SXs); Fml("Trade Equity GV DE Long"); -------8<---------------------------------- {Trade Equity GV DE Long} {V6.2 Dual Equal} {© 2002-2006 Roy Larsen} {www.metastocktips.co.nz} I:=ExtFml("GV.GetVar","I"); B:=ExtFml("GV.GetVar","B"); Cn:=ExtFml("GV.GetVar","Cn"); Cp:=ExtFml("GV.GetVar","Cp"); Cx:=ExtFml("GV.GetVar","Cx"); Nd:=ExtFml("GV.GetVar","Nd"); Xd:=ExtFml("GV.GetVar","Xd"); Z:=ExtFml("GV.GetVar","Z"); F:=ExtFml("GV.GetVar","F"); N:=ExtFml("GV.GetVar","N"); Ns:=ExtFml("GV.GetVar","Ns"); X:=ExtFml("GV.GetVar","X"); Xs:=ExtFml("GV.GetVar","Xs"); M:=If(Ns>0,Min(H,Max(L,Ns)),If(B=1,O,If(B=3,H,If(B=4,L,C)))); Y:=If(Xs>0,Min(H,Max(L,Xs)),If(Z=1,O,If(Z=3,H,If(Z=4,L,C)))); Y:=If((Z<5)*(X=0),C,Y); Y:=If((Xs>0)*N*X,Xs,Y); N:=(I>-1)*N; Y:=If((N+X=0)*Alert(N*X,2),ValueWhen(2,1,Y),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)); {Ex:=Ex OR Lb;} F:=ValueWhen(1,En,If(F<0,Cp*Abs(F),If(F<=1, Int((F*Cp-Cn)/A)*A+Cn,F*A+Cn)))*(Cp>0); En:=Tr*(Alert(Tr=0,2)+I>0); N:=(Ex+Lb>0)*If(Cp=0,Y-A,(F-Cn)*(Y/A)-F-Ex*Cx); B:=Alert(Tr,2)*(1+BarsSince(En+I)); Xs:=Alert(Tr,2)*If(Cp=0,Y-A,(F-Cn)*(Y/A)-F-Ex*Cx); Nd:=LowestSince(1,I,Xs); Ns:=HighestSince(1,I,Xs); X:=Cum((Ex+Lb>0)*(N>0)*B); Xd:=Cum((Ex+Lb>0)*(N<=0)*B); M:=Cum(N)+Cp+Tr*(Lb=0)*If(Cp=0,Y-A,(F-Cn)*(Y/A)-F); I:=ExtFml("GV.SetVar","N_L",N); I:=ExtFml("GV.SetVar","X_L",X); I:=ExtFml("GV.SetVar","EnL",En); I:=ExtFml("GV.SetVar","ExL",Ex); I:=ExtFml("GV.SetVar","LbL",Lb); I:=ExtFml("GV.SetVar","NdL",Nd); I:=ExtFml("GV.SetVar","NsL",Ns); I:=ExtFml("GV.SetVar","TrL",Tr); I:=ExtFml("GV.SetVar","XdL",Xd); I:=ExtFml("GV.SetVar","XsL",Xs); I:=ExtFml("GV.SetVar","EqL",M); Fml("Trade Equity GV DE Short"); -------8<---------------------------------- {Trade Equity GV DE Short} {V6.2 Dual Equal} {© 2002-2006 Roy Larsen} {www.metastocktips.co.nz} I:=ExtFml("GV.GetVar","I"); B:=ExtFml("GV.GetVar","B"); Cn:=ExtFml("GV.GetVar","Cn"); Cp:=ExtFml("GV.GetVar","Cp"); Cx:=ExtFml("GV.GetVar","Cx"); Nd:=ExtFml("GV.GetVar","Nd"); Xd:=ExtFml("GV.GetVar","Xd"); Z:=ExtFml("GV.GetVar","Z"); F:=ExtFml("GV.GetVar","SF"); N:=ExtFml("GV.GetVar","SN"); Ns:=ExtFml("GV.GetVar","SNs"); X:=ExtFml("GV.GetVar","SX"); Xs:=ExtFml("GV.GetVar","SXs"); M:=If(Ns>0,Min(H,Max(L,Ns)),If(B=1,O,If(B=3,H,If(B=4,L,C)))); Y:=If(Xs>0,Min(H,Max(L,Xs)),If(Z=1,O,If(Z=3,H,If(Z=4,L,C)))); Y:=If((Z<5)*(X=0),C,Y); Y:=If((Xs>0)*N*X,Xs,Y); N:=(I>-1)*N; Y:=If((N+X=0)*Alert(N*X,2),ValueWhen(2,1,Y),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)); {Ex:=Ex OR Lb;} F:=ValueWhen(1,En,If(F<0,Cp*Abs(F),If(F<=1, Int((F*Cp-Cn)/A)*A+Cn,F*A+Cn)))*(Cp>0); En:=Tr*(Alert(Tr=0,2)+I>0); N:=(Ex+Lb>0)*If(Cp=0,A-Y,(F-Cn)*((A-Y)/A)-Cn-Ex*Cx); B:=Alert(Tr,2)*(1+BarsSince(En+I)); Xs:=Alert(Tr,2)*If(Cp=0,A-Y,(F-Cn)*((A-Y)/A)-Cn-Ex*Cx); Nd:=LowestSince(1,I,Xs); Ns:=HighestSince(1,I,Xs); X:=Cum((Ex+Lb>0)*(N>0)*B); Xd:=Cum((Ex+Lb>0)*(N<=0)*B); M:=Cum(N)+Cp+Tr*(Lb=0)*If(Cp=0,A-Y,(F-Cn)*((A-Y)/A)-Cn); I:=ExtFml("GV.SetVar","N_S",N); I:=ExtFml("GV.SetVar","X_S",X); I:=ExtFml("GV.SetVar","EnS",En); I:=ExtFml("GV.SetVar","ExS",Ex); I:=ExtFml("GV.SetVar","LbS",Lb); I:=ExtFml("GV.SetVar","NdS",Nd); I:=ExtFml("GV.SetVar","NsS",Ns); I:=ExtFml("GV.SetVar","TrS",Tr); I:=ExtFml("GV.SetVar","XdS",Xd); I:=ExtFml("GV.SetVar","XsS",Xs); I:=ExtFml("GV.SetVar","EqS",M); ExtFml("GV.GetVar","EqL")+M- If(ExtFml("GV.GetVar","De")=0,Cp,2*Cp); -------8<---------------------------------- EXPLORATIONS - Install indicators first. -------8<---------------------------------- {Trade Equity GV DE MS7+ L1} {© 2006 Roy Larsen} These four explorations create system performance reports that can be copied to Excel spreadsheets for summary or further analysis. {Column A: $ Profit} {Net long profit} Eq:=Fml("Trade Equity GV DE"); {refresh GVs} Eq:=ExtFml("GV.GetVar","EqL"); Tr:=ExtFml("GV.GetVar","TrL"); Cp:=ExtFml("GV.GetVar","Cp"); En:=ExtFml("GV.GetVar","EnL"); 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); N:=ExtFml("GV.GetVar","N_L"); LastValue(Cum(N)) {Column B: $ Win} {Value of winning long trades} N:=ExtFml("GV.GetVar","N_L"); Cum((N>0)*N) {Column C: $ Loss} {Value of losing long trades} N:=ExtFml("GV.GetVar","N_L"); Cum((N<0)*N) {Column D: # Win} {Number of winning long trades} N:=ExtFml("GV.GetVar","N_L"); Cum(N>0) {Column E: # Loss} {Number of losing long trades} Ex:=ExtFml("GV.GetVar","ExL"); Lb:=ExtFml("GV.GetVar","LbL"); N:=ExtFml("GV.GetVar","N_L"); Cum(Ex+Lb AND N<=0) {Column F: # BarsIn} {Total bars in all long trades} Tr:=ExtFml("GV.GetVar","TrL"); Cum(Alert(Tr>0,2)) {Filter} Cum(Alert(ExtFml("GV.GetVar","TrL")>0,2))>0 Filter enabled; Yes Periodicity; User choice Records required; XXXX -------8<---------------------------------- {Trade Equity GV DE MS7+ L2} {© 2006 Roy Larsen} {Column A: #BarsOut} {Bars out of long trades} Eq:=Fml("Trade Equity GV DE"); {refresh GVs} Tr:=ExtFml("GV.GetVar","TrL"); Cum(Tr>-1)-Cum(Alert(Tr,2)) {Column B: #TotBars} {Total bars explored} I:=ExtFml("GV.GetVar","I"); Cum(I>-1) {Column C: $ Costs} {Long commissions paid} Cn:=ExtFml("GV.GetVar","Cn"); Cx:=ExtFml("GV.GetVar","Cx"); En:=ExtFml("GV.GetVar","EnL"); Ex:=ExtFml("GV.GetVar","ExL"); Cum(En*Cn+Ex*Cx) {Column D: Buy/Hold} {Buy & hold long profit, 1st bar or signal} Cn:=ExtFml("GV.GetVar","Cn"); Cp:=ExtFml("GV.GetVar","Cp"); Tr:=ExtFml("GV.GetVar","TrL"); Ea:=ValueWhen(1,Cum(1)=1 {OR Cum(Tr)=1} ,C); Ea:=LastValue(Ea); Xp:=LastValue(C); If(Cp>0,((Cp-Cn)*(Xp/Ea))-Cp,(Xp-Ea)) {Column E: P Index} {Long profit index} N :=ExtFml("GV.GetVar","N_L"); Gn:=Cum(If(N>0,N,0)); Ls:=Cum(If(N<0,N,0)); Gn:=If(Gn=0,-1,Gn); If(Gn=-1,0,PREC(100*(Gn+Ls)/Gn,1)) {Column F: In Trade} {Currently in a long trade} ExtFml("GV.GetVar","TrL") {Filter} Cum(Alert(ExtFml("GV.GetVar","TrL")>0,2))>0 Filter enabled; Yes Periodicity; User choice Records required; XXXX -------8<---------------------------------- {Trade Equity GV DE MS7+ L3} {© 2006 Roy Larsen} {Column A: $ MAE} {Maximum long adverse excursion - $ or %} Eq:=Fml("Trade Equity GV DE"); {refresh GVs} Nd:=ExtFml("GV.GetVar","NdL"); Nd; {Cp:=ExtFml("GV.GetVar","Cp"); Ndp:=PREC(100*Nd/Cp,1); Ndp;} {Column B: $ MFE} {Maximum long favourable excursion - $ or %} Ns:=ExtFml("GV.GetVar","NsL"); Ns; {Cp:=ExtFml("GV.GetVar","Cp"); Nsp:=PREC(100*Ns/Cp,1); Nsp;} {Column C: Win Bars} {Total bars in winning long trades} ExtFml("GV.GetVar","X_L"); {Column D: LoseBars} {Total bars in losing long trades} ExtFml("GV.GetVar","XdL") {Column E: Max Win} {Maximum consecutive winning long trades} Ex:=ExtFml("GV.GetVar","ExL"); Lb:=ExtFml("GV.GetVar","LbL"); N :=ExtFml("GV.GetVar","N_L"); I:=Cum(Ex>-1)=2; Up:=N>0; Dn:=Ex+Lb AND N<=0; Ca:=BarsSince(I+Up)-1)=2; Up:=N>0; Dn:= Ex+Lb AND N<=0; Ca:=BarsSince(I+Dn)0,2))>0 Filter enabled; Yes Periodicity; User choice Records required; XXXX -------8<---------------------------------- {Trade Equity GV DE MS7+ L4} {© 2006 Roy Larsen} {Column A: B/H DwDn} {Max buy and hold long adverse excursion} Eq:=Fml("Trade Equity GV DE"); {refresh GVs} Cn:=ExtFml("GV.GetVar","Cn"); Cp:=ExtFml("GV.GetVar","Cp"); Tr:=ExtFml("GV.GetVar","TrL"); Ea:=ValueWhen(1,Cum(1)=1 {OR Cum(Tr)=1} ,C); I :=Cum(Ea>0)=1; Ea:=LastValue(Ea); Gl:=If(Cp>0,((Cp-Cn)*(C/Ea))-Cp,(C-Ea)); LowestSince(1,I,Gl) {Column B: B/H +Exc} {Max buy and hold long favourable excursion} Cn:=ExtFml("GV.GetVar","Cn"); Cp:=ExtFml("GV.GetVar","Cp"); Tr:=ExtFml("GV.GetVar","TrL"); Ea:=ValueWhen(1,Cum(1)=1 {OR Cum(Tr)=1} ,C); I :=Cum(Ea>0)=1; Ea:=LastValue(Ea); Gl:=If(Cp>0,((Cp-Cn)*(C/Ea))-Cp,(C-Ea)); HighestSince(1,I,Gl); {Column C: AvgeWin} {Average long win} N :=ExtFml("GV.GetVar","N_L"); Gn:=Cum((N>0)*N); Up:=Cum(N>0); Up:=If(Up=0,-1,Up); Gn:=If(Up=0,1,Gn); If(Gn/Up=-1,0,Gn/Up) {Column D: AvgeLoss} {Average long loss} Ex:=ExtFml("GV.GetVar","ExL"); Lb:=ExtFml("GV.GetVar","LbL"); N :=ExtFml("GV.GetVar","N_L"); Ls:=Cum((N<0)*N); Dn:=Cum(Ex+Lb AND N<=0); Dn:=If(Dn=0,-1,Dn); Ls:=If(Dn=0,-1,Ls); If(Ls/Dn>0,0,Ls/Dn) {Column E: GL Ratio} {Average long gain/loss ratio} Ex:=ExtFml("GV.GetVar","ExL"); Lb:=ExtFml("GV.GetVar","LbL"); N :=ExtFml("GV.GetVar","N_L"); Gn:=Cum((N>0)*N); Up:=Cum(N>0); Ls:=Cum((N<0)*N); Ok:=Gn>0 AND Ls<0; Dn:=Cum(Ex+Lb AND N<=0); 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)) {Column F: PkTrough} {Max long $ peak-to-trough range} I :=ExtFml("GV.GetVar","I"); Tr:=ExtFml("GV.GetVar","TrL"); Xs:=ExtFml("GV.GetVar","XsL"); A :=If(Tr,HighestSince(1,Tr=0,Xs),0); B :=If(Tr,LowestSince(1,Tr=0,Xs),0); HighestSince(1,I,If(Tr,A-B,0)) {Filter} Cum(Alert(ExtFml("GV.GetVar","TrL")<>0,2))>0; Filter enabled; Yes Periodicity; User choice Records required; XXXX -------8<---------------------------------- {Trade Equity GV DE MS7+ S1} {© 2006 Roy Larsen} These four explorations create system performance reports that can be copied to Excel spreadsheets for summary or further analysis. {Column A: $ Profit} {Net short profit} Eq:=Fml("Trade Equity GV DE"); {refresh GVs} Eq:=ExtFml("GV.GetVar","EqS"); Tr:=ExtFml("GV.GetVar","TrS"); Cp:=ExtFml("GV.GetVar","Cp"); En:=ExtFml("GV.GetVar","EnS"); 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); N:=ExtFml("GV.GetVar","N_S"); LastValue(Cum(N)) {Column B: $ Win} {Amount of winning short trades} N:=ExtFml("GV.GetVar","N_S"); Cum((N>0)*N) {Column C: $ Loss} {Amount of losing short trades} N:=ExtFml("GV.GetVar","N_S"); Cum((N<0)*N) {Column D: # Win} {Number of winning short trades} N:=ExtFml("GV.GetVar","N_S"); Cum(N>0) {Column E: # Loss} {Number of losing short trades} Ex:=ExtFml("GV.GetVar","ExS"); Lb:=ExtFml("GV.GetVar","LbS"); N:=ExtFml("GV.GetVar","N_S"); Cum(Ex+Lb AND N<=0) {Column F: # BarsIn} {Total bars in all short trades} Tr:=ExtFml("GV.GetVar","TrS"); Cum(Alert(Tr>0,2)) {Filter} Cum(Alert(ExtFml("GV.GetVar","TrS")>0,2))>0 Filter enabled; Yes Periodicity; User choice Records required; XXXX -------8<---------------------------------- {Trade Equity GV DE MS7+ S2} {© 2006 Roy Larsen} {Column A: #BarsOut} {Bars out of short trades} Eq:=Fml("Trade Equity GV DE"); {refresh GVs} Tr:=ExtFml("GV.GetVar","TrS"); Cum(Tr>-1)-Cum(Alert(Tr,2)) {Column B: #TotBars} {Total bars explored} I:=ExtFml("GV.GetVar","I"); Cum(I>-1) {Column C: $ Costs} {Short commissions paid} Cn:=ExtFml("GV.GetVar","Cn"); Cx:=ExtFml("GV.GetVar","Cx"); En:=ExtFml("GV.GetVar","EnS"); Ex:=ExtFml("GV.GetVar","ExS"); Cum(En*Cn+Ex*Cx) {Column D: Buy/Hold} {Buy & hold short profit, 1st bar or signal} Cn:=ExtFml("GV.GetVar","Cn"); Cp:=ExtFml("GV.GetVar","Cp"); Tr:=ExtFml("GV.GetVar","TrS"); Ea:=ValueWhen(1,Cum(1)=1 {OR Cum(Tr)=1} ,C); Ea:=LastValue(Ea); Xp:=LastValue(C); If(Cp>0,((Cp-Cn)*(Xp/Ea))-Cp,(Xp-Ea)) {Column E: P Index} {Profit index} N :=ExtFml("GV.GetVar","N_S"); Gn:=Cum(If(N>0,N,0)); Ls:=Cum(If(N<0,N,0)); Gn:=If(Gn=0,-1,Gn); If(Gn=-1,0,PREC(100*(Gn+Ls)/Gn,1)); {Column F: In Trade} {Currently in a short trade} ExtFml("GV.GetVar","TrS"); Filter {Filter} Cum(Alert(ExtFml("GV.GetVar","TrS")>0,2))>0 Filter enabled; Yes Periodicity; User choice Records required; XXXX -------8<---------------------------------- {Trade Equity GV DE MS7+ S3} {© 2006 Roy Larsen} {Column A: $ MAE} {Max short adverse excursion - $ or %} Eq:=Fml("Trade Equity GV DE"); {refresh GVs} Nd:=ExtFml("GV.GetVar","NdS"); Nd; {Cp:=ExtFml("GV.GetVar","Cp"); Ndp:=PREC(100*Nd/Cp,1); Ndp;} {Column B: $ MFE} {Max short favourable excursion - $ or %} Ns:=ExtFml("GV.GetVar","NsS"); Ns; {Cp:=ExtFml("GV.GetVar","Cp"); Nsp:=PREC(100*Ns/Cp,1); Nsp;} {Column C: Win Bars} {Total bars in winning short trades} ExtFml("GV.GetVar","X_S") {Column D: LoseBars} {Total bars in losing short trades} ExtFml("GV.GetVar","XdS") {Column E: Max Win} {Max consecutive winning short trades} Ex:=ExtFml("GV.GetVar","ExS"); Lb:=ExtFml("GV.GetVar","LbS"); N :=ExtFml("GV.GetVar","N_S"); I:=Cum(Ex>-1)=2; Up:=N>0; Dn:=Ex+Lb AND N<=0; Ca:=BarsSince(I+Up)-1)=2; Up:=N>0; Dn:= Ex+Lb AND N<=0; Ca:=BarsSince(I+Dn)0,2))>0 Filter enabled; Yes Periodicity; User choice Records required; XXXX -------8<---------------------------------- {Trade Equity GV DE MS7+ S4} {© 2006 Roy Larsen} {Column A: B/H DwDn} {Max buy and hold short adverse excursion} Eq:=Fml("Trade Equity GV DE"); {refresh GVs} Cn:=ExtFml("GV.GetVar","Cn"); Cp:=ExtFml("GV.GetVar","Cp"); Tr:=ExtFml("GV.GetVar","TrS"); Ea:=ValueWhen(1,Cum(1)=1 {OR Cum(Tr)=1} ,C); I :=Cum(Ea>0)=1; Ea:=LastValue(Ea); Gl:=If(Cp>0,((Cp-Cn)*(C/Ea))-Cp,(C-Ea)); LowestSince(1,I,Gl) {Column B: B/H +Exc} {Max buy and hold short favourable excursion} Cn:=ExtFml("GV.GetVar","Cn"); Cp:=ExtFml("GV.GetVar","Cp"); Tr:=ExtFml("GV.GetVar","TrS"); Ea:=ValueWhen(1,Cum(1)=1 {OR Cum(Tr)=1} ,C); I :=Cum(Ea>0)=1; Ea:=LastValue(Ea); Gl:=If(Cp>0,((Cp-Cn)*(C/Ea))-Cp,(C-Ea)); HighestSince(1,I,Gl) {Column C: AvgeWin} {Average short win} N :=ExtFml("GV.GetVar","N_S"); Gn:=Cum((N>0)*N); Up:=Cum(N>0); Up:=If(Up=0,-1,Up); Gn:=If(Up=0,1,Gn); If(Gn/Up=-1,0,Gn/Up) {Column D: AvgeLoss} {Average short loss} Ex:=ExtFml("GV.GetVar","ExS"); Lb:=ExtFml("GV.GetVar","LbS"); N :=ExtFml("GV.GetVar","N_S"); Ls:=Cum((N<0)*N); Dn:=Cum(N<=0 AND Ex+Lb); Dn:=If(Dn=0,-1,Dn); Ls:=If(Dn=0,-1,Ls); If(Ls/Dn>0,0,Ls/Dn) {Column E: GL Ratio} {Average short gain/loss ratio} Ex:=ExtFml("GV.GetVar","ExS"); Lb:=ExtFml("GV.GetVar","LbS"); N :=ExtFml("GV.GetVar","N_S"); Gn:=Cum((N>0)*N); Up:=Cum(N>0); Ls:=Cum((N<0)*N); Ok:=Gn>0 AND Ls<0; Dn:=Cum(Ex+Lb AND N<=0); 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)); {Column F: PkTrough} {Max $ short peak-to-trough range} I :=ExtFml("GV.GetVar","I"); Tr:=ExtFml("GV.GetVar","TrS"); Xs:=ExtFml("GV.GetVar","XsS"); A :=If(Tr,HighestSince(1,Tr=0,Xs),0); B :=If(Tr,LowestSince(1,Tr=0,Xs),0); HighestSince(1,I,If(Tr,A-B,0)); Filter {Filter} Cum(Alert(ExtFml("GV.GetVar","TrS")>0,2))>0 Filter enabled; Yes Periodicity; User choice Records required; XXXX -------8<---------------------------------- {Trade Equity GV DE MS10 L1} {© 2006 Roy Larsen} These two explorations create system performance reports that can be copied to Excel spreadsheets for summary or further analysis. {Column A: $ Profit} {Net long profit} Eq:=Fml("Trade Equity GV DE"); {refresh GVs} Eq:=ExtFml("GV.GetVar","EqL"); Tr:=ExtFml("GV.GetVar","TrL"); Cp:=ExtFml("GV.GetVar","Cp"); En:=ExtFml("GV.GetVar","EnL"); 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); N:=ExtFml("GV.GetVar","N_L"); LastValue(Cum(N)) {Column B: $ Win} {Value of winning long trades} N:=ExtFml("GV.GetVar","N_L"); Cum((N>0)*N) {Column C: $ Loss} {Value of losing long trades} N:=ExtFml("GV.GetVar","N_L"); Cum((N<0)*N) {Column D: # Win} {Number of winning long trades} N:=ExtFml("GV.GetVar","N_L"); Cum(N>0) {Column E: # Loss} {Number of losing long trades} Ex:=ExtFml("GV.GetVar","ExL"); Lb:=ExtFml("GV.GetVar","LbL"); N:=ExtFml("GV.GetVar","N_L");Cum(Ex+Lb AND N<=0) {Column F: # BarsIn} {Total bars in all long trades} Tr:=ExtFml("GV.GetVar","TrL"); Cum(Alert(Tr>0,2)) {Column G: #BarsOut} {Bars out of long trades} Tr:=ExtFml("GV.GetVar","TrL"); Cum(Tr>-1)-Cum(Alert(Tr,2)) {Column H: #TotBars} {Total bars explored} I:=ExtFml("GV.GetVar","I"); Cum(I>-1) {Column I: $ Costs} {Long commissions paid} Cn:=ExtFml("GV.GetVar","Cn"); Cx:=ExtFml("GV.GetVar","Cx"); En:=ExtFml("GV.GetVar","EnL"); Ex:=ExtFml("GV.GetVar","ExL"); Cum(En*Cn+Ex*Cx) {Column J: Buy/Hold} {Buy & hold long profit, 1st bar or signal} Cn:=ExtFml("GV.GetVar","Cn"); Cp:=ExtFml("GV.GetVar","Cp"); Tr:=ExtFml("GV.GetVar","TrL"); Ea:=ValueWhen(1,Cum(1)=1 {OR Cum(Tr)=1} ,C); Ea:=LastValue(Ea); Xp:=LastValue(C); If(Cp>0,((Cp-Cn)*(Xp/Ea))-Cp,(Xp-Ea)) {Column K: P Index} {Long profit index} N:=ExtFml("GV.GetVar","N_L"); Gn:=Cum(If(N>0,N,0)); Ls:=Cum(If(N<0,N,0)); Gn:=If(Gn=0,-1,Gn); If(Gn=-1,0,PREC(100*(Gn+Ls)/Gn,1)) {Column L: In Trade} {Currently in a long trade} ExtFml("GV.GetVar","TrL") {Filter} Cum(Alert(ExtFml("GV.GetVar","TrL")>0,2))>0 Filter enabled; Yes Periodicity; User choice Records required; XXXX -------8<---------------------------------- {Trade Equity GV DE V10 L2} {© 2006 Roy Larsen} {Column A: $ MAE} {Maximum long adverse excursion - $ or %} Eq:=Fml("Trade Equity GV DE"); {refresh GVs} Nd:=ExtFml("GV.GetVar","NdL"); Nd; {Cp:=ExtFml("GV.GetVar","Cp"); Ndp:=PREC(100*Nd/Cp,1); Ndp;} {Column B: $ MFE} {Maximum long favourable excursion - $ or %} Ns:=ExtFml("GV.GetVar","NsL"); Ns; {Cp:=ExtFml("GV.GetVar","Cp"); Nsp:=PREC(100*Ns/Cp,1); Nsp;} {Column C: Win Bars} {Total bars in winning long trades} ExtFml("GV.GetVar","X_L"); {Column D: LoseBars} {Total bars in losing long trades} ExtFml("GV.GetVar","XdL") {Column E: Max Win} {Max consecutive winning long trades} Ex:=ExtFml("GV.GetVar","ExL"); Lb:=ExtFml("GV.GetVar","LbL"); N:=ExtFml("GV.GetVar","N_L"); I:=Cum(Ex>-1)=2; Up:=N>0; Dn:=Ex+Lb AND N<=0; Ca:=BarsSince(I+Up)-1)=2; Up:=N>0; Dn:=Ex+Lb AND N<=0; Ca:=BarsSince(I+Dn)0)=1; Ea:=LastValue(Ea); Gl:=If(Cp>0,((Cp-Cn)*(C/Ea))-Cp,(C-Ea)); LowestSince(1,I,Gl) {Column H: B/H +Exc} {Max buy and hold long favourable excursion} Cn:=ExtFml("GV.GetVar","Cn"); Cp:=ExtFml("GV.GetVar","Cp"); Tr:=ExtFml("GV.GetVar","TrL"); Ea:=ValueWhen(1,Cum(1)=1 {OR Cum(Tr)=1} ,C); I:=Cum(Ea>0)=1; Ea:=LastValue(Ea); Gl:=If(Cp>0,((Cp-Cn)*(C/Ea))-Cp,(C-Ea)); HighestSince(1,I,Gl); {Column I: AvgeWin} {Average long win} N:=ExtFml("GV.GetVar","N_L"); Gn:=Cum((N>0)*N); Up:=Cum(N>0); Up:=If(Up=0,-1,Up); Gn:=If(Up=0,1,Gn); If(Gn/Up=-1,0,Gn/Up) {Column J: AvgeLoss} {Average long loss} Ex:=ExtFml("GV.GetVar","ExL"); Lb:=ExtFml("GV.GetVar","LbL"); N:=ExtFml("GV.GetVar","N_L"); Ls:=Cum((N<0)*N); Dn:=Cum(Ex+Lb AND N<=0); Dn:=If(Dn=0,-1,Dn); Ls:=If(Dn=0,-1,Ls); If(Ls/Dn>0,0,Ls/Dn) {Column K: GL Ratio} {Average long gain/loss ratio} Ex:=ExtFml("GV.GetVar","ExL"); Lb:=ExtFml("GV.GetVar","LbL"); N:=ExtFml("GV.GetVar","N_L"); Gn:=Cum((N>0)*N); Up:=Cum(N>0); Ls:=Cum((N<0)*N); Ok:=Gn>0 AND Ls<0; Dn:=Cum(Ex+Lb AND N<=0); 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)) {Column L: PkTrough} {Max long $ peak-to-trough range} I:=ExtFml("GV.GetVar","I"); Tr:=ExtFml("GV.GetVar","TrL"); Xs:=ExtFml("GV.GetVar","XsL"); A:=If(Tr,HighestSince(1,Tr=0,Xs),0); B:=If(Tr,LowestSince(1,Tr=0,Xs),0); HighestSince(1,I,If(Tr,A-B,0)) {Filter} Cum(Alert(ExtFml("GV.GetVar","TrL")>0,2))>0 Filter enabled; Yes Periodicity; User choice Records required; XXXX -------8<---------------------------------- {Trade Equity GV DE V10 S1} {© 2006 Roy Larsen} These four explorations create system performance reports that can be copied to Excel spreadsheets for summary or further analysis. {Column A: $ Profit} {Net long profit} Eq:=Fml("Trade Equity GV DE"); {refresh GVs} Eq:=ExtFml("GV.GetVar","EqS"); Tr:=ExtFml("GV.GetVar","TrS"); Cp:=ExtFml("GV.GetVar","Cp"); En:=ExtFml("GV.GetVar","EnS"); 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); N:=ExtFml("GV.GetVar","N_S"); LastValue(Cum(N)) {Column B: $ Win} {Value of winning long trades} N:=ExtFml("GV.GetVar","N_S"); Cum((N>0)*N) {Column C: $ Loss} {Value of losing long trades} N:=ExtFml("GV.GetVar","N_S"); Cum((N<0)*N) {Column D: # Win} {Number of winning long trades} N:=ExtFml("GV.GetVar","N_S"); Cum(N>0) {Column E: # Loss} {Number of losing long trades} Ex:=ExtFml("GV.GetVar","ExS"); Lb:=ExtFml("GV.GetVar","LbS"); N:=ExtFml("GV.GetVar","N_S"); Cum(Ex+Lb AND N<=0) {Column F: # BarsIn} {Total bars in all long trades} Tr:=ExtFml("GV.GetVar","TrS"); Cum(Alert(Tr>0,2)) {Column G: #BarsOut} {Bars out of long trades} Tr:=ExtFml("GV.GetVar","TrS"); Cum(Tr>-1)-Cum(Alert(Tr,2)) {Column H: #TotBars} {Total bars explored} I:=ExtFml("GV.GetVar","I"); Cum(I>-1) {Column I: $ Costs} {Long commissions paid} Cn:=ExtFml("GV.GetVar","Cn"); Cx:=ExtFml("GV.GetVar","Cx"); En:=ExtFml("GV.GetVar","EnS"); Ex:=ExtFml("GV.GetVar","ExS"); Cum(En*Cn+Ex*Cx) {Column J: Buy/Hold} {Buy & hold long profit, 1st bar or signal} Cn:=ExtFml("GV.GetVar","Cn"); Cp:=ExtFml("GV.GetVar","Cp"); Tr:=ExtFml("GV.GetVar","TrS"); Ea:=ValueWhen(1,Cum(1)=1 {OR Cum(Tr)=1} ,C); Ea:=LastValue(Ea); Xp:=LastValue(C); If(Cp>0,((Cp-Cn)*(Xp/Ea))-Cp,(Xp-Ea)) {Column K: P Index} {Long profit index} N :=ExtFml("GV.GetVar","N_S"); Gn:=Cum(If(N>0,N,0)); Ls:=Cum(If(N<0,N,0)); Gn:=If(Gn=0,-1,Gn); If(Gn=-1,0,PREC(100*(Gn+Ls)/Gn,1)) {Column L: In Trade} {Currently in a long trade} ExtFml("GV.GetVar","TrS") {Filter} Cum(Alert(ExtFml("GV.GetVar","TrS")>0,2))>0 Filter enabled; Yes Periodicity; User choice Records required; XXXX -------8<---------------------------------- {Trade Equity GV DE V10 S2} {© 2006 Roy Larsen} {Column A: $ MAE} {Maximum long adverse excursion - $ or %} Eq:=Fml("Trade Equity GV DE"); {refresh GVs} Nd:=ExtFml("GV.GetVar","NdS"); Nd; {Cp:=ExtFml("GV.GetVar","Cp"); Ndp:=PREC(100*Nd/Cp,1); Ndp;} {Column B: $ MFE} {Maximum long favourable excursion - $ or %} Ns:=ExtFml("GV.GetVar","NsS"); Ns; {Cp:=ExtFml("GV.GetVar","Cp"); Nsp:=PREC(100*Ns/Cp,1); Nsp;} {Column C: Win Bars} {Total bars in winning long trades} ExtFml("GV.GetVar","X_S"); {Column D: LoseBars} {Total bars in losing long trades} ExtFml("GV.GetVar","XdS") {Column E: Max Win} {Max consecutive winning long trades} Ex:=ExtFml("GV.GetVar","ExS"); Lb:=ExtFml("GV.GetVar","LbS"); N:=ExtFml("GV.GetVar","N_S"); I:=Cum(Ex>-1)=2; Up:=N>0; Dn:=Ex+Lb AND N<=0; Ca:=BarsSince(I+Up)-1)=2; Up:=N>0; Dn:=Ex+Lb AND N<=0; Ca:=BarsSince(I+Dn)0)=1; Ea:=LastValue(Ea); Gl:=If(Cp>0,((Cp-Cn)*(C/Ea))-Cp,(C-Ea)); LowestSince(1,I,Gl) {Column H: B/H +Exc} {Max buy and hold long favourable excursion} Cn:=ExtFml("GV.GetVar","Cn"); Cp:=ExtFml("GV.GetVar","Cp"); Tr:=ExtFml("GV.GetVar","TrS"); Ea:=ValueWhen(1,Cum(1)=1 {OR Cum(Tr)=1} ,C); I:=Cum(Ea>0)=1; Ea:=LastValue(Ea); Gl:=If(Cp>0,((Cp-Cn)*(C/Ea))-Cp,(C-Ea)); HighestSince(1,I,Gl); {Column I: AvgeWin} {Average long win} N:=ExtFml("GV.GetVar","N_S"); Gn:=Cum((N>0)*N); Up:=Cum(N>0); Up:=If(Up=0,-1,Up); Gn:=If(Up=0,1,Gn); If(Gn/Up=-1,0,Gn/Up) {Column J: AvgeLoss} {Average long loss} Ex:=ExtFml("GV.GetVar","ExS"); Lb:=ExtFml("GV.GetVar","LbS"); N:=ExtFml("GV.GetVar","N_S"); Ls:=Cum((N<0)*N); Dn:=Cum(Ex+Lb AND N<=0); Dn:=If(Dn=0,-1,Dn); Ls:=If(Dn=0,-1,Ls); If(Ls/Dn>0,0,Ls/Dn) {Column K: GL Ratio} {Average long gain/loss ratio} Ex:=ExtFml("GV.GetVar","ExS"); Lb:=ExtFml("GV.GetVar","LbS"); N:=ExtFml("GV.GetVar","N_S"); Gn:=Cum((N>0)*N); Up:=Cum(N>0); Ls:=Cum((N<0)*N); Ok:=Gn>0 AND Ls<0; Dn:=Cum(Ex+Lb AND N<=0); 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)) {Column L: PkTrough} {Max long $ peak-to-trough range} I:=ExtFml("GV.GetVar","I"); Tr:=ExtFml("GV.GetVar","TrS"); Xs:=ExtFml("GV.GetVar","XsS"); A:=If(Tr,HighestSince(1,Tr=0,Xs),0); B:=If(Tr,LowestSince(1,Tr=0,Xs),0); HighestSince(1,I,If(Tr,A-B,0)) {Filter} Cum(Alert(ExtFml("GV.GetVar","TrS")>0,2))>0 Filter enabled; Yes Periodicity; User choice Records required; XXXX -------8<----------------------------------