COSTRUZIONE INDICATORE PER ANALISI CICLICA CON VISUAL TRADER (2 lettori)

solospread

Forumer storico
Io uso Visual Trader e siccome voglio costruirmi un indicatore e plottarlo sul grafico chiedo l'aiuto di un esperto in editor per trading system.
Innanzitutto vorrei costruire l'indicatore di velocità che dovrebbe essere abbastanza semplice. Sottrarre al valore dell'indice di oggi il valore di ieri.
Poi mi servirebbe la media mobile a 34 periodi della velocità.
Ovviamente avendo la velocità una grandezza diversa dall'indice bisogna adattarla affinchè sia visibile sul grafico, moltiplicando il suo valore fino a farlo arrivare ad una grandezza attorno ai 30000.
Infine la realizzazione dell'indicatore vero e proprio che abbia queste caratteristiche:
se la velocità è maggiore della sua media mobile allora 1 altrimenti -1. Il risultato sommato al valore precedente.
La formula dovrebbe essere pressapoco cosi:
if (v>vm,1,-1)+ valore precedente then
Ovviamente per l'editor ci vuole la giusta dicitura altrimenti nisba
Aggiungere la funzione di plottarla sul grafico in modo da vedere una linea continua che intersechi il valore dell'indice. Al suo perforamento segnale LONG o SHORT a seconda della direzione dell'indicatore.
Se qualcuno si prendesse il disturbo di farlo gliene sarei infinitamente grato.
Grazie
 

misterx

Nuovo forumer
Ciao Solospread

non ho ben chiaro come vuoi plottare l'indicatore sul grafico e in quale scala e su quale indice (mibtel spmib?)
comunque puoi iniziare da questo codice:

se hai bisogno di aiuto io sono qua..


------------------------------------------------------------------------------------------
Var: vel1(0),
vel2(0),
mm1(0),
indzona1(0),
indzona2(0),
valore(0),
ind(0);


vel1=diff(c,ref(c,1),sub); //Velocità

vel2=vel1; //Qui va posto il moltiplicatore (attenzione alle scale)
//vel2=op(vel1,constval(1000),mul);per moltiplicare vel1*1000

mm1=mov(vel2,34,s); //Media mobile semplice a 34 Periodi


if vel1>mm1 then
valore=1;
endif;

if vel1<mm1 then
valore=-1;
endif;

ind=ind+valore; //Somma il valore al suo precedente

Indzona1 = CreateViewport(300, True, True); //Qui per comodità vengono create 2 zone sotto al grafico
Indzona2 = CreateViewport(300, True, True);

PlotChart(vel2, indzona1, yellow, Solid, 2); //Plot della velocità
PlotChart(mm1, indzona1, Red, Solid, 2); //Plot della media mobile
PlotChart(ind, indzona2, green, Solid, 2); //Plot dell'indicatore

//Qualora volessi plottare l'indicatore sovrapposto all'indice devi sostiturire nelle righe plotchart al posto di indzona uno 0
//PlotChart(ind,0,green,solid,2); plotta l'indicatore sul grafico stesso

PlotChart(0, indzona1, blue, Solid, 1); //Plot della linea 0
PlotChart(0, indzona2, blue, Solid, 1); //Plot della linea 0
----------------------------------------------------------------------------------------------
 

solospread

Forumer storico
Ciao matrix, innanzitutto grazie per la tua collaborazione insperata.
Due sono i problemi che ho riscontrato copiando il tuo editor:
1) il moltiplicatore 1000 non và bene perchè i due valori sono molto differenti. Ho provato a cambiarlo con altri valori ma non riesco a tararlo.
2)L'indicatore mi serve nel campo del grafico per cui ho eseguito qualche modifica al tuo editor originale. Le due zone sotto non mi servono.La linea dello 0 dovrebbe essere tarata attorno ai38000 punti. Questa ovviamente risulta da sola a seconda del moltiplicatore usato. Forse bisognerebbe fare due operazioni (magari vel2*5*......)
Ti posto l'editor cosi puoi verificare se ho commesso errori di sintassi ed il risultato dell'indicatore sul grafico a 5 minuti.
Ammesso che è fuori taratura se riesci a centrarlo è stupefacente. Lo si vede già anche se lavora male perchè anticipa di un bel po' la velocità pura, quindi si riesce ad entrare prima che usando la velocità. grazie ancora

PS: Forse si dovrebbe usare l'asse opposto con una scala diversa; mi spiego
scala di sinistra tarata per l'indicatore che ha come baricentro lo zero tarato sui 38000
e scala di destra tarata per l'indice.

1199197243editor.gif


1199197297vtvel.gif
 

misterx

Nuovo forumer
solospread ha scritto:
Ciao matrix, innanzitutto grazie per la tua collaborazione insperata.
Due sono i problemi che ho riscontrato copiando il tuo editor:
1) il moltiplicatore 1000 non và bene perchè i due valori sono molto differenti. Ho provato a cambiarlo con altri valori ma non riesco a tararlo.
2)L'indicatore mi serve nel campo del grafico per cui ho eseguito qualche modifica al tuo editor originale. Le due zone sotto non mi servono.La linea dello 0 dovrebbe essere tarata attorno ai38000 punti. Questa ovviamente risulta da sola a seconda del moltiplicatore usato. Forse bisognerebbe fare due operazioni (magari vel2*5*......)
Ti posto l'editor cosi puoi verificare se ho commesso errori di sintassi ed il risultato dell'indicatore sul grafico a 5 minuti.
Ammesso che è fuori taratura se riesci a centrarlo è stupefacente. Lo si vede già anche se lavora male perchè anticipa di un bel po' la velocità pura, quindi si riesce ad entrare prima che usando la velocità. grazie ancora

PS: Forse si dovrebbe usare l'asse opposto con una scala diversa; mi spiego
scala di sinistra tarata per l'indicatore che ha come baricentro lo zero tarato sui 38000
e scala di destra tarata per l'indice.

Immagine sostituita con URL per un solo Quote: http://www.investireoggi.net/forum/immagini/1199197243editor.gif

Immagine sostituita con URL per un solo Quote: http://www.investireoggi.net/forum/immagini/1199197297vtvel.gif

Ok

ora mi è più chiaro cosa vuoi fare. Provo a plottarlo sul grafico principale anche se non sarà semplice. Visual Trader non ha grandi strumenti dal punto di vista della plottatura grafica.

A presto
 

misterx

Nuovo forumer
Ciao

1)L'idea del tuo indicatore è davvero ottima. Mi puoi spiegare a cosa ti serve l'indicatore IND nel listato che fai incrementare di 1 ogniqualvolta la V passa sopra la VM? Tale indicatore risulta difficile da plottare insieme alla V e VM in quanto si trova su un'altra scala.

2)purtroppo non esiste in VT una funzione di plot nel TS che ti permetta di lavorare su un'altra scala (ad esempio a sinistra) e quindi bisogna procedere ad una "centratura" manuale sulla scala di destra dell'indice.
Prima ti avevo indicato erroneamente la funzione vel2=vel1*1000 valida per Metastock ma incompatibile in VT. Per qualunque operazione aritmetica devi utilizzare l'operatore OP.

3) Ho fatto un primo tentativo di centratura sul grafico a 5 min del FIBSP e ti allego il listato. Come avevi già immaginato ho dovuto utilizzare due operazioni, una di moltiplica e una d addizione per posizionare gli indicatori quanto più vicini al grafico stesso. Se però l'indice subisse escursioni forti andrebbe chiaramente rivista la centratura.

---------------------------------------------------------------------------------------------------
Var: vel1(0),
vel2(0),
vel3(0),
mm1(0),
indzona1(0),
indzona2(0),
valore(0),
ind(0);


vel1=diff(c,ref(c,1),sub); //Velocità

vel2=op(vel1,constval(3.5),mul); //Qui va posto il moltiplicatore
vel3=op(vel2,constval(38800),add); //Qui va posta la somma

mm1=mov(vel3,34,s); //Media mobile semplice a 34 Periodi

if vel1>mm1 then
valore=1;
endif;

//if vel1<mm1 then
// valore=-1;
//endif;

ind=ind+valore; //Somma il valore al suo precedente

Indzona1 = CreateViewport(300, True, True); //Qui per comodità vengono create 2 zone sotto al grafico
Indzona2 = CreateViewport(300, True, True);

PlotChart(vel3, 0, yellow, Solid, 1); //Plot della velocità
PlotChart(mm1, 0, Red, Solid, 1); //Plot della media mobile
PlotChart(ind, indzona1, green, Solid, 2); //Plot dell'indicatore

//Qualora volessi plottare l'indicatore sovrapposto all'indice devi sostiturire nelle righe plotchart al posto di indzona uno 0
//PlotChart(ind,0,green,solid,2); plotta l'indicatore sul grafico stesso

PlotChart(38000, 0, blue, Solid, 1); //Plot della linea 0
-----------------------------------------------------------------------------------------------------
 

solospread

Forumer storico
Direi che il risultato è ottimo seppur sia da settare a seconda del frame su cui si opera.
Per quanto riguarda l'indicatore plottato nella zona sotto;hai ragione non serve a niente
pensavo avesse una qualche utilità, ma oltre a non servire occupa spazio sullo schermo.
Quindi li toglierei entrambi sia il blu che il verde. Io ho provato ad eliminarli, ma mi dà errore. Come faccio a toglierli? Avrai capito che io sono negato per l'informatica!!!!!!!!
Certo che anticipa alla grande, anche se andrà tarato in real time. Non sò come ringraziarti dato che da solo non ci sarei mai riuscito. Questo secondo me deve essere lo spirito del forum: mettersi insieme e collaborare per un progetto unico. Se puoi postarmi come togliere i due indicatori te ne sarei grato. Domani lo provo. Ciao

1199205136xxxxxxxxxxxxxx.gif
 

misterx

Nuovo forumer
ciao

sono d'accordo con te, come si dice in questi casi l'unione fa la forza...
Chiaramente agendo sulla velocità e cambiando i periodi di riferimento
(ad esempio vel1=diff(c,ref(c,4),sub) ovvero la velocità rispetto a 4 periodi fa) si ottiene un risultato ancora più pulito con meno falsi segnali ma chiaramente in ritardo rispetto a quello iniziale).
Cmq lo scambio di idee e l'applicazione delle stesse trovo che sia un modo costruttivo per raggiungere gli stessi obiettivi.

Ciao

Eccoti il codice pulito...

-----------------------------------------------------------------------------
Var: vel1(0),
vel2(0),
vel3(0),
mm1(0);

vel1=diff(c,ref(c,1),sub); //Velocità

vel2=op(vel1,constval(3.5),mul); //Qui va posto il moltiplicatore
vel3=op(vel2,constval(38800),add); //Qui va posta la somma

mm1=mov(vel3,34,s); //Media mobile semplice a 34 Periodi

PlotChart(vel3, 0, yellow, Solid, 1); //Plot della velocità
PlotChart(mm1, 0, Red, Solid, 1); //Plot della media mobile
PlotChart(38800, 0, blue, Solid, 1); //Plot della linea 0
------------------------------------------------------------------------------
 

solospread

Forumer storico
matrix975 ha scritto:
ciao

sono d'accordo con te, come si dice in questi casi l'unione fa la forza...
Chiaramente agendo sulla velocità e cambiando i periodi di riferimento
(ad esempio vel1=diff(c,ref(c,4),sub) ovvero la velocità rispetto a 4 periodi fa) si ottiene un risultato ancora più pulito con meno falsi segnali ma chiaramente in ritardo rispetto a quello iniziale).
Cmq lo scambio di idee e l'applicazione delle stesse trovo che sia un modo costruttivo per raggiungere gli stessi obiettivi.

Ciao

Eccoti il codice pulito...

-----------------------------------------------------------------------------
Var: vel1(0),
vel2(0),
vel3(0),
mm1(0);

vel1=diff(c,ref(c,1),sub); //Velocità

vel2=op(vel1,constval(3.5),mul); //Qui va posto il moltiplicatore
vel3=op(vel2,constval(38800),add); //Qui va posta la somma

mm1=mov(vel3,34,s); //Media mobile semplice a 34 Periodi

PlotChart(vel3, 0, yellow, Solid, 1); //Plot della velocità
PlotChart(mm1, 0, Red, Solid, 1); //Plot della media mobile
PlotChart(38800, 0, blue, Solid, 1); //Plot della linea 0
------------------------------------------------------------------------------


Ottimo, ora funziona bene anche se mi compare la linea dei 38800 in fondo allo schermo
Comunque non dà fastidio piu' di tanto. Ti ringrazio ancora, domani lo testiamo e a risentirci alla prossima

1199207417ffffhjh.gif
 

Users who are viewing this thread

Alto