============ Entry Binary ============ This indicator gives a binary entry signal that nominally matches the binary 'Enter Long' signals of the 'PS Fractal Trading Systems' in MetaStock. The 'Trade Equity' family of indicators can use either price stop or binary signals. Note that it makes no pretence of being a valid system entry and should not be treated as such. Trade Equity should be used to test your trading systems. This code is provided just to help you get started along that path. Cut and paste 'Entry Binary' and 'Exit Binary' into the Indicator Builder before attempting to install any indicators from the Trade Equity series. ---8<--------------------------- {Entry Binary} 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); ---8<--------------------------- ================== Trade Equity GV LC ================== This is one of a series of 'Trade Equity' indicators used to create trading system equity curves without running the System Tester. 'Trade Equity GV LC' assumes compounding position sizes (reinvested gains), and long only trades. Other indicators in the family are available for equal (fixed) positions and/or short trades. Four explorations are available for each TE indicator. The explorations create trading system reports for modest portfolios through to entire databases. Several system statistics in addition to the equity curve can be plotted directly onto the chart of any security. Disabling the display option improves the execution speed of TE explorations. Cut and paste the 'Entry Binary' and 'Exit Binary' indicators before attempting to install 'Trade Equity GV LC'. This indicator and its associated explorations can only be used with MetaStock version 7.0 and higher. MS 6.52 does not support dll use. ---8<--------------------------- {Trade Equity GV LC} {V5.0} {© 2004 Roy Larsen, rlarsen@man.quik.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,3,0); Xd:=Input("Sell Delay",0,3,0); Cn:=Input("Buy / Sell Costs",0,9999,3030); I:=Input("Display Options 0-12",0,12,0); Cp:=5000; {* trade capital} N:= Fml("Entry Binary"); {Buy} Ns:=0; X:= Fml("Exit Binary"); {Sell} Xs:=0; {* end 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,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:=If(Nd=0,N,Alert(N,Nd+1)*(Alert(N,Nd)=0)); 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:=If(Xd=0,X,Alert(X,Xd+1)*(Alert(X,Xd)=0)); 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; 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) OR ((Nd+Xd<1)*(B<>2)*(Z>1)*(Max(B,Z)>4 OR B<>Z))),1,Tr); En:=Tr+Alert(Tr=0,2)=2 OR 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:=If((Ex+Lb)*(M>X+Cx),M-X-Cn,0); Xd:=If((Ex+Lb)*(M<=X+Cx),M-X-Cn,0); 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 ======================= This indicator can be linked to 'Trade Equity GV LC' to enable several system statistics in addition to the equity curve to be plotted directly onto the chart of any security. Leaving the display option disable improves the execution speed of TE explorations. ---8<--------------------------- {Trade Equity LC Display} {V5.0} {© 2004 Roy Larsen, rlarsen@man.quik.co.nz} {Use with 'Trade Equity GV LC'} {Display options: 0, total dollar equity 1, total percent equity 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 a trade 10, total bars in all trades 11, Maximum Favorable Excursion 12, Maximum Adverse Excursion } M:=ExtFml("GV.GetVar","Eq"); Z:=ExtFml("GV.GetVar","Lc"); I:=ExtFml("GV.GetVar","I"); N:=ExtFml("GV.GetVar","N"); X:=ExtFml("GV.GetVar","X"); Cn:=ExtFml("GV.GetVar","Cn"); Cp:=ExtFml("GV.GetVar","Cp"); Cx:=ExtFml("GV.GetVar","Cx"); En:=ExtFml("GV.GetVar","En"); Ex:=ExtFml("GV.GetVar","Ex"); Lb:=ExtFml("GV.GetVar","Lb"); Nd:=ExtFml("GV.GetVar","Nd"); Ns:=ExtFml("GV.GetVar","Ns"); Tr:=ExtFml("GV.GetVar","Tr"); Xd:=ExtFml("GV.GetVar","Xd"); Xs:=ExtFml("GV.GetVar","Xs"); If(Z=0,M, If(Z=1,100*(M-Cp)/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), If(Z=10,Cum(Alert(Tr,2)), If(Z=11,HighestSince(1,I,Nd), LowestSince(1,I,Nd))))))))))))); ---8<--------------------------- http://www.metastocktips.co.nz/