domanda su linguaggio metastock (1 Viewer)

ale73a

break even trader
il manuale l'ho trovato :D allora...1,3,1 dovrebbero essere min max e default, il linguaggio dovrebbe essere metastock (anch'io avevo cercato su google :) ) ...allego il ts, che ho scovato nei meandri di un forum, l'autore l'aveva messo in chiaro quindi non credo ci siano problemi...l'ha testato una persona e mi ha detto che su certi titoli funziona su altri no, questa è una versione base...proviamo a ragionarci su x poi tradurlo su vt

pds:=Input("EMA periods",1,2520,7)/2;
spread:=Input("Up/Low EMA bands shift %",
-900,900,2)/200;

pk:=C<Ref(C,-1) AND Ref(C,-1)>Ref(C,-2);
pkVal:=ValueWhen(1,pk,Ref(C,-1));
tr:=C>Ref(C,-1) AND Ref(C,-1)<Ref(C,-2);
trVal:=ValueWhen(1,tr,Ref(C,-1));

pkpds:=If(pds>Cum(pk),Cum(pk),pds);
pkpds:=If(pkpds<1,1,pkpds);
pkEma:=pkVal*2/(pkpds+1)+PREV*(1-2/(pkpds+1));
pkEma:=pkEma*(1+spread);

trpds:=If(pds>Cum(tr),Cum(tr),pds);
trpds:=If(trpds<1,1,trpds);
trEma:=trVal*2/(trpds+1)+PREV*(1-2/(trpds+1));
trEma:=trEma*(1-spread);

Ema:=(pkEma+trEma)/2;
Ema;
 

ale73a

break even trader
pds:=Input("EMA periods",1,2520,7)/2;
spread:=Input("Up/Low EMA bands shift %",
-900,900,2)/200;

pk:=C<Ref(C,-1) AND Ref(C,-1)>Ref(C,-2);

pkVal:=ValueWhen(1,pk,Ref(C,-1));
tr:=C>Ref(C,-1) AND Ref(C,-1)<Ref(C,-2);
trVal:=ValueWhen(1,tr,Ref(C,-1));


pkpds:=If(pds>Cum(pk),Cum(pk),pds);
pkpds:=If(pkpds<1,1,pkpds);
pkEma:=pkVal*2/(pkpds+1)+PREV*(1-2/(pkpds+1));
pkEma:=pkEma*(1+spread);


trpds:=If(pds>Cum(tr),Cum(tr),pds);
trpds:=If(trpds<1,1,trpds);
trEma:=trVal*2/(trpds+1)+PREV*(1-2/(trpds+1));
trEma:=trEma*(1-spread);

Ema:=(pkEma+trEma)/2;
Ema;
comincio io:
- pds è il periodo della media, in questo caso 7...ma perchè/2???
- spread dovrebbe essere la differenza in % tra due medie exp, probabilmente costruite su max e sui min
- pk se si verifica la condizione che la chiusura di oggi è più bassa di quella di ieri e quella di ieri era più alta del close del giorno prima
- pkval = close di ieri SOLO SE si è verificata la condizione pk ieri...
- viceversa tr se c>c di ieri e close di ieri < close dell'altro ieri
- trval e il valore del close di ieri se si è verificato l'evento tr

pkpds:=If(pds>Cum(pk),Cum(pk),pds); pkpds= se pds maggiore di pk allora pk altrimenti pds [in parole povere il più piccolo dei due] ma con un minimo di 1
pkema = close di ieri (se c'è stata la condizione pk)*2/(pkpds+1)che casino!!!
 
Ultima modifica:

Users who are viewing this thread

Alto