¿Como configurar The Explorer de Metastock para el Alexander Elder's SafeZone?

Queria configurar el The Explorer de Metastock para que me indique acciones segun el codigo de Alexander Elder's SafeZone que transcribo a continuacion:

================================
Trailing Stop - Elder's SafeZone
================================
---8<------------------------------------------
{Dr Alexander Elder's SafeZone trailing stop v3
 SafeZone types:
  [1] Uses upside/downside penetration days as
       suggested by Dr Elder in his book;
  [2] Uses up/down days (instead of
       upside/downside penetration days)
       to match book's incorrect companion
       spreadsheet.
  Triggers: Long (+1) & Short (-1) signals at
   crossover of user-defined trailing stops.
 ŠCopyright 2003-2007 Jose Silva
  For personal use only.
  Http://www.metastocktools.com }
{ User inputs }
coefficient:=Input("SafeZone coefficient",
 0,10,2.5);
bkpds:=Input("Lookback periods",1,260,10);
pds:=Input("Trend EMA periods",2,260,21);
adv:=Input("plot:  [1]Today's SafeZone,  [2]Tomorrow's stop",1,2,1)-1;
type:=Input("SafeZone type:  [1]Book,  [2]Spreadsheet",1,2,1);
plot:=Input("SafeZone:  [1]Stop,  [2]Long+Short,  [3]Signals",1,3,1);
{ Downside penetrations }
DwSidePen:=
 If(type=1,Mov(C,pds,E)>Ref(Mov(C,pds,E),-1),1)
 AND L<Ref(L,-1);
DwSideDiff:=If(DwSidePen,Ref(L,-1)-L,0);
DwPenAvg:=Sum(DwSideDiff,bkpds)
 /Max(Sum(DwSidePen,bkpds),.000001);
StLong:=Ref(L-DwPenAvg*coefficient,-1);
StopLong:=If(C<PREV,StLong,Max(StLong,PREV));
{ Upside penetrations }
UpSidePen:=
 If(type=1,Mov(C,pds,E)<Ref(Mov(C,pds,E),-1),1)
 AND H>Ref(H,-1);
UpSideDiff:=If(UpSidePen,H-Ref(H,-1),0);
UpPenAvg:=Sum(UpSideDiff,bkpds)
 /Max(Sum(UpSidePen,bkpds),.000001);
StShort:=Ref(H+UpPenAvg*coefficient,-1);
StopShort:=If(C>PREV,StShort,Min(StShort,PREV));
{ Stop signals }
entry:=Cross(C,Ref(StopShort,-1));
exit:=Cross(Ref(StopLong,-1),C);
{ Clean signals }
Init:=Cum(IsDefined(entry+exit))=1;
bin:=ValueWhen(1,entry-exit<>0 OR Init,
 entry-exit);
entry:=bin=1 AND (Alert(bin<>1,2) OR Init);
exit:=bin=-1 AND (Alert(bin<>-1,2) OR Init);
{ Plot on price chart }
If(plot=1,Ref(If(bin=1,stopLong,stopShort),
 -1+adv),If(plot=2,Ref(stopLong,-1+adv),0));
If(plot=1,Ref(If(bin=1,stopLong,stopShort),
 -1+adv),If(plot=2,Ref(stopShort,-1+adv),
 entry-exit))
---8<------------------------------------------

Añade tu respuesta

Haz clic para o