Nessuno è mai al sicuro (1 Viewer)

Mercuzio

ex Drenaggio
come faccio a dire a visual trader che in questo momento la variazione % e maggiore alla media delle variazioni in chiusura degli ultimi 100 giorni?

la mia idea è quella postata sopra , però non sò se si può fare, allora prima di mettermi a scrivere 100 righe volevo sapere se avevate una soluzione che non mi è venuta in mente :help:

REM variazione relativa

var=(abs((close-close[1])/close[1]))*100

varav=average[100](var)

if var>varav then
flag=1
elsif var<varav then
flag=0
endif

return flag as "variazione relativa"



saluti:D:up:
 

Damien

Nessuno è mai al sicuro
Se vuoi fare una media di una variabile per la quale non e possibile utilizzare l'istruzione mov puoi fare come hai pensato con un limite.
Il visual trader accetta solo fino a 20 elementi di somma.
Quindi lo devi fregare in questo modo.
Ecco l'esempio di somma di 50 rendimenti:

Var:rendi,s1,s2,s3,mrendi;

rendi=c/c[1];

s1=rendi+rendi[1]+rendi[2]+rendi[3]+rendi[4]+rendi[5]+rendi[6]+rendi[7]+rendi[8]+rendi[9]+rendi[10]+rendi[11]+rendi[12]
+rendi[13]+rendi[14]+rendi[15]+rendi[16]+rendi[17]+rendi[18]+rendi[19];
s2=rendi[20]+rendi[21]+rendi[22]+rendi[23]+rendi[24]+rendi[25]+rendi[26]+rendi[27]+rendi[28]+rendi[29]+rendi[30]+rendi[31]+rendi[32]
+rendi[33]+rendi[34]+rendi[35]+rendi[36]+rendi[37]+rendi[38]+rendi[39];
s3=rendi[40]+rendi[41]+rendi[42]+rendi[43]+rendi[44]+rendi[45]+rendi[46]+rendi[47]+rendi[48]+rendi[49];

mrendi=(s1+s2+s3)/50;

if rendi>mrendi then enterlong(nextbar,atopen);endif;

plotchart(rendi[1],2,blue,solid,1);
plotchart(c,3,blue,solid,1);
plotchart(c[1],4,blue,solid,1);
 

angio

niente è come sembra
Se vuoi fare una media di una variabile per la quale non e possibile utilizzare l'istruzione mov puoi fare come hai pensato con un limite.
Il visual trader accetta solo fino a 20 elementi di somma.
Quindi lo devi fregare in questo modo.
Ecco l'esempio di somma di 50 rendimenti:

Var:rendi,s1,s2,s3,mrendi;

rendi=c/c[1];

s1=rendi+rendi[1]+rendi[2]+rendi[3]+rendi[4]+rendi[5]+rendi[6]+rendi[7]+rendi[8]+rendi[9]+rendi[10]+rendi[11]+rendi[12]
+rendi[13]+rendi[14]+rendi[15]+rendi[16]+rendi[17]+rendi[18]+rendi[19];
s2=rendi[20]+rendi[21]+rendi[22]+rendi[23]+rendi[24]+rendi[25]+rendi[26]+rendi[27]+rendi[28]+rendi[29]+rendi[30]+rendi[31]+rendi[32]
+rendi[33]+rendi[34]+rendi[35]+rendi[36]+rendi[37]+rendi[38]+rendi[39];
s3=rendi[40]+rendi[41]+rendi[42]+rendi[43]+rendi[44]+rendi[45]+rendi[46]+rendi[47]+rendi[48]+rendi[49];

mrendi=(s1+s2+s3)/50;

if rendi>mrendi then enterlong(nextbar,atopen);endif;

plotchart(rendi[1],2,blue,solid,1);
plotchart(c,3,blue,solid,1);
plotchart(c[1],4,blue,solid,1);

in Amibroker mi sembra più semplice, sempre che sia corretto ...

yield_Ieri= ((Ref(C,-1) / Ref(C,-2))-1)*100;
yield_Media= Sum(yield_Ieri,100)/100;
yield_ora= ((C / Ref(C,-1))-1)*100;

Buy = Cover = yield_ora > yield_Ieri;
Short= Sell = yield_Ieri > yield_ora;

PS - drena perche hai usato ... abs ???
 

Damien

Nessuno è mai al sicuro
per comodita il mio rendi è c/c[1] ma ne puoi fare il logaritmo o (c-c[1])/c[1] .... a quel punto te la cambi come vuoi la var rendi
 

luka46

Dracarys
Se vuoi fare una media di una variabile per la quale non e possibile utilizzare l'istruzione mov puoi fare come hai pensato con un limite.
Il visual trader accetta solo fino a 20 elementi di somma.
Quindi lo devi fregare in questo modo.
Ecco l'esempio di somma di 50 rendimenti:

Var:rendi,s1,s2,s3,mrendi;

rendi=c/c[1];

s1=rendi+rendi[1]+rendi[2]+rendi[3]+rendi[4]+rendi[5]+rendi[6]+rendi[7]+rendi[8]+rendi[9]+rendi[10]+rendi[11]+rendi[12]
+rendi[13]+rendi[14]+rendi[15]+rendi[16]+rendi[17]+rendi[18]+rendi[19];
s2=rendi[20]+rendi[21]+rendi[22]+rendi[23]+rendi[24]+rendi[25]+rendi[26]+rendi[27]+rendi[28]+rendi[29]+rendi[30]+rendi[31]+rendi[32]
+rendi[33]+rendi[34]+rendi[35]+rendi[36]+rendi[37]+rendi[38]+rendi[39];
s3=rendi[40]+rendi[41]+rendi[42]+rendi[43]+rendi[44]+rendi[45]+rendi[46]+rendi[47]+rendi[48]+rendi[49];

mrendi=(s1+s2+s3)/50;

if rendi>mrendi then enterlong(nextbar,atopen);endif;

plotchart(rendi[1],2,blue,solid,1);
plotchart(c,3,blue,solid,1);
plotchart(c[1],4,blue,solid,1);

grazie damien
una domanda rendi[1] mi aggiorna da solo le "C" ?
 

Damien

Nessuno è mai al sicuro
grazie damien
una domanda rendi[1] mi aggiorna da solo le "C" ?



rendi [1] è la ref(rendi,1) cioe e il valore precedente della serie e quindi sarebbe anche il close di una barra fa / il close di due barre fa.
Se, quindi, rendi è c/c[1] rendi[1] è c[1]/c[2] rendi[2] è c[2]/c[3] e via così

Ho fatto il plot come segue per testare che effettivamente facesse le cose giuste. :up:
 

Damien

Nessuno è mai al sicuro
in Amibroker mi sembra più semplice, sempre che sia corretto ...

yield_Ieri= ((Ref(C,-1) / Ref(C,-2))-1)*100;
yield_Media= Sum(yield_Ieri,100)/100;
yield_ora= ((C / Ref(C,-1))-1)*100;

Buy = Cover = yield_ora > yield_Ieri;
Short= Sell = yield_Ieri > yield_ora;

PS - drena perche hai usato ... abs ???

Ah sicuro è piu facile :D
 

Users who are viewing this thread

Alto