 |
|
01-01-2008, 11:03
|
#1 (permalink)
|
|
Utente Senior
Data registrazione: Dec 2004
Località: piazza affari
Messaggi: 2,816
|
COSTRUZIONE INDICATORE PER ANALISI CICLICA CON VISUAL TRADER
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
__________________
Da una grande sfortuna può nascere una grande fortuna.
Se i soldi non finiscono le carte si cambiano.
Parla poco e ascolta molto.
|
|
|
| Avviso pubblicitario - i seguenti Banner Pubblicitari permettono al sito di offrirvi il consueto, alto standard qualitativo. |
| |
|
01-01-2008, 13:30
|
#2 (permalink)
|
|
Nuovo forumer
Data registrazione: Sep 2007
Località: Mantova
Messaggi: 26
|
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
----------------------------------------------------------------------------------------------
|
|
|
01-01-2008, 15:25
|
#3 (permalink)
|
|
Utente Senior
Data registrazione: Dec 2004
Località: piazza affari
Messaggi: 2,816
|
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.

__________________
Da una grande sfortuna può nascere una grande fortuna.
Se i soldi non finiscono le carte si cambiano.
Parla poco e ascolta molto.
|
|
|
01-01-2008, 15:40
|
#4 (permalink)
|
|
Nuovo forumer
Data registrazione: Sep 2007
Località: Mantova
Messaggi: 26
|
Citazione:
|
Originalmente inviato da solospread
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/i...7243editor.gif
Immagine sostituita con URL per un solo Quote: http://www.investireoggi.net/forum/i...97297vtvel.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
|
|
|
01-01-2008, 15:58
|
#5 (permalink)
|
|
Utente Senior
Data registrazione: Dec 2004
Località: piazza affari
Messaggi: 2,816
|
Grazie a presto
__________________
Da una grande sfortuna può nascere una grande fortuna.
Se i soldi non finiscono le carte si cambiano.
Parla poco e ascolta molto.
|
|
|
01-01-2008, 16:17
|
#6 (permalink)
|
|
Nuovo forumer
Data registrazione: Sep 2007
Località: Mantova
Messaggi: 26
|
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
-----------------------------------------------------------------------------------------------------
|
|
|
01-01-2008, 17:35
|
#7 (permalink)
|
|
Utente Senior
Data registrazione: Dec 2004
Località: piazza affari
Messaggi: 2,816
|
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

__________________
Da una grande sfortuna può nascere una grande fortuna.
Se i soldi non finiscono le carte si cambiano.
Parla poco e ascolta molto.
|
|
|
01-01-2008, 17:52
|
#8 (permalink)
|
|
Nuovo forumer
Data registrazione: Sep 2007
Località: Mantova
Messaggi: 26
|
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
------------------------------------------------------------------------------
|
|
|
01-01-2008, 18:14
|
#9 (permalink)
|
|
Utente Senior
Data registrazione: Dec 2004
Località: piazza affari
Messaggi: 2,816
|
Citazione:
|
Originalmente inviato da matrix975
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

__________________
Da una grande sfortuna può nascere una grande fortuna.
Se i soldi non finiscono le carte si cambiano.
Parla poco e ascolta molto.
|
|
|
01-01-2008, 18:24
|
#10 (permalink)
|
|
Utente Senior
Data registrazione: Dec 2004
Località: piazza affari
Messaggi: 2,816
|
Risolto il problema, ora è pulito
__________________
Da una grande sfortuna può nascere una grande fortuna.
Se i soldi non finiscono le carte si cambiano.
Parla poco e ascolta molto.
|
|
|
|