Da un’idea a un trading system

Da traderpedia.
Jump to navigation Jump to search

Nelle relazioni sociali due o più persone possono comunicare tra loro se il linguaggio che utilizzano è compatibile, in altre parole se parlano la stessa lingua o se hanno codificato un sistema gestuale trasversale. Se sbagliamo un congiuntivo o se il verbo che utilizziamo nella nostra frase non è propriamente adatto, il nostro cervello analizza il senso del messaggio e lo rende più o meno chiaro. Siamo abituati a questo fin da piccoli e ben conosciamo l’importanza di una buona sintassi espositiva per esporre un nostro pensiero. Anche lo sviluppo di un trading system richiede un linguaggio compatibile tra noi e la nostra controparte, il computer, con una piccola variante. Una sola virgola, un solo punto, una sola parentesi al posto sbagliato rende assolutamente incomprensibile ciò che stiamo chiedendo al nostro computer.

“Opera, guadagna, poco rischio di rovina finanziaria.”
“Opera, guadagna poco, rischio di rovina finanziaria.”

La costruzione di un sistema automatico di trading richiede, per prima cosa, un’idea e come conseguenza un linguaggio chiaro, preciso, capace di trasformare la nostra idea di trading in un sistema operativo, in questo caso siamo noi a non dover essere sibillini fornendo esatte e chiare istruzioni al nostro sistema. Per far ciò ci serviamo del linguaggio di programmazione, un tramite tra le nostre intenzioni e il computer, che è composto da operatori matematici, operatori di preferenza e da centinaia di funzioni, per cui una volta appresi i concetti di base, creare formule risulterà molto semplice.

La prima cosa da conoscere è la trasposizione dei cinque dati principali di uno strumento finanziario: apertura, massimo, minimo, chiusura e volume. Questi cinque valori, chiamati generalmente data array, sono abbreviati così:

Open High  Low  Close  Volume
O  H  L C  V


Per creare qualsiasi formula sono necessari gli operatori matematici ovvero:


Somma Sottrazione Moltiplicazione  Divisione
+ - * /


A questo punto siamo già in grado di costruire le prime rudimentali formule, se vogliamo creare un indicatore che rappresenti il prezzo medio di un titolo dobbiamo sommare il massimo al minimo e dividerli per due ovvero: ( H + L ) / 2

Dove:
H = Massimo
L = Minimo
+ = Somma
/ = Diviso
2 = Parametro
( ) = Parentesi di precedenza

Abbiamo creato una semplice formula in pochi secondi. Tuttavia la potenza di un simile linguaggio è molto limitata se non si inseriscono altre espressioni, definiamo quindi la trasposizione nel linguaggio di programmazione di:

 

Minore di Maggiore di Minore o uguale di Maggiore o uguale di Uguale Diverso
<  > < =  > =  = <>


E degli operatori logici E ed O:

E  O
And Or


Nonché delle condizioni Se e Allora:

Se Allora
If  Then


Infine, va introdotto il controllo che assegna il nome a una variabile ovvero:

Definisce una variabile
Var:


Assimilati questi concetti siamo in grado di realizzare degli indicatori o dei sistemi più sofisticati che anche il computer saprà interpretare e trasformare in strategia operativa. Come esempio impostiamo un sistema automatico prevedendo l’acquisto al superamento da parte del prezzo di una sua media mobile. Costruiamo il nostro sistema, nel linguaggio corrente, scrivendo:

• genera un segnale di acquisto quando la chiusura dei prezzi è maggiore della media mobile a 12 periodi, calcolata col metodo semplice sulla chiusura; compera nella barra seguente in apertura;

• genera un segnale di vendita quando la chiusura dei prezzi è inferiore della media mobile a 12 periodi, calcolata col metodo semplice sulla chiusura dei prezzi; vendi nella barra seguente in apertura.

Nel linguaggio parlato è immediatamente chiaro, trasporlo in linguaggio programmazione è più complesso, nulla è lasciato all’interpretazione e tutto deve essere specificato, a partire dal parametro della media mobile 12 che viene definito come una variabile. In formula, nel linguaggio Visual Trader, si può tradurre in:

var: media1;
media1=mov(c,12,s);

if c > media1 then
enterlong (nextbar, atopen);
endif;

if c < media1 then
entershort (nextbar, atopen);
endif;

Come è facile osservare il linguaggio nel quale abbiamo trasportato la nostra idea di trading è molto diverso dal linguaggio parlato e va scomposto pezzo per pezzo.

La prima cosa che abbiamo dovuto impostare è il nome della nostra variabile, in questo caso chiamata media1. Una volta definito il nome della variabile ne impostiamo le caratteristiche, in questo specifico caso la variabile media1 è composta da una media mobile a 12 periodi calcolata sulla chiusura. Le due barre parallele // a lato di ogni riga del sistema permettono l’inserimento di commenti che non influenzano il sistema.

var: media1; // nome della variabile
media1=mov(c,12,s); // caratteristiche della variabile

Una volta impostata la variabile vanno definite le condizioni operative, se la chiusura (c) è maggiore della variabile media1 entreremo al rialzo (enterlong), il sistema necessita di ulteriori informazioni di ingresso con le funzioni nextbar (alla barra successiva) e atopen (in apertura della barra).

if c > media1 then // se la chiusura è maggiore di media1 allora
enterlong (nextbar, atopen); // acquista alla barra successive in apertura
endif; // fine delle condizioni

if c < media1 then // se la chiusura è minore di media1 allora
entershort (nextbar, atopen); // vendi allo scoperto alla barra successive in apertura
endif; // fine delle condizioni


Ora il nostro sistema è pronto e se volessimo cambiare la frequenza della media mobile che genera il segnale è sufficiente farlo solo sul parametro della variabile media1 così facendo, in automatico, si cambieranno tutti i parametri della variabile media1.

La media mobile ha come parametri standard i diversi metodi di calcolo che possiamo riassumere come:

  • “s” media mobile semplice
  • ''“e” media mobile esponenziale
  • ''“a” media mobile aritmetica
  • ''“t” media mobile triangolare


Ora che il primo passo è stato compiuto possiamo pianificare un sistema leggermente più complesso a due variabili. Dobbiamo abituarci fin da subito a scrivere la nostra idea di trading con parole in lingua corrente per poi trasformarle in linguaggio “macchina”.

Ipotizziamo di acquistare quando la media mobile a 12 periodi, calcolata sulla chiusura è superiore alla media mobile a 26 periodi calcolata sulla chiusura. Venderemo quando la media mobile a 12 periodi è inferiore alla media mobile a 26 periodi, entrambe calcolate sulla chiusura. Il primo passo è di definire le due variabili:

var: media1, media2; // nome delle variabili
media1=mov(c,12,s); // media mobile semplice veloce
media2=mov(c, 26,s); // media mobile semplice lenta

if media1 > media2 then // condizioni operative
enterlong (nextbar, atopen); // acquista alla barra successive in apertura
endif; // fine delle condizioni

if media1 < media2 then // condizioni operative
entershort (nextbar, atopen); // vendi allo scoperto alla barra successive in apertura
endif; // fine delle condizioni

Compresa la logica della programmazione di base è possibile sofisticare il sistema con un numero potenzialmente illimitato di variabili. Per aiutare lo sviluppatore di trading system alcune funzioni racchiudono già un gruppo di variabili, ad esempio se volessimo realizzare un sistema che abbia come motore il macd è possibile utilizzare direttamente la funzione che lo calcola che, in questo caso si chiama macd(Data Array, periodiMM1, periodiMM2).

Var: m1, m2; // nome delle variabili
m1=macd(c,12,26); //differenza di medie del macd 12 e 26
m2=mov(m1,9,e); //media mobile operativa

if m1 > m2 then // condizioni operative
enterlong (nextbar, atopen); // acquista alla barra successive in apertura
endif; // fine delle condizioni

if m1< m2 then // condizioni operative
entershort (nextbar, atopen); // vendi allo scoperto alla barra successive in apertura
endif; // fine delle condizioni

Anche in questo caso è possibile personalizzare le frequenze sia del macd che della media veloce semplicemente agendo sulle variabili m1 e m2. Una volta creato il sistema è possibile applicarlo al titolo o a un future, come in questo caso, visualizzando in forma grafica i segnali. Le frecce in su rappresentano i long, il tempo del long è colorato di verde, le frecce in giù sono i punti di ingresso short mentre il tempo dello short è colorato di rosso. Sono settaggi standard ma è possibile creare un’ampia personalizzazione, tutti i codici di programmazione presenti in questo libro sono sviluppati nel linguaggio di programmazione Visual Trader . Ogni diverso software professionale di analisi tecnica ha delle piccole differenze nella stesura dei sistemi ma la logica di base e la valutazione è uguale per tutti i programmi. Quello che segue è il grafico con la visualizzazione grafica dei segnali operativi.


Visualizzazione grafica segnali.jpg
 Due medie su grafico a 5 minuti del future spmib. Visualizzazione grafica dei segnali.


La visualizzazione grafica dei segnali è importante ma è dal report che si capisce se un sistema è profittevole. Il report che segue è quello della strategia appena creata su 1 anno di dati a 5 minuti e con una commissione di 6€ ad eseguito.

Visualizzazione grafica segnali 2.jpg

 

Due medie su grafico a 5 minuti del future spmib. Report.


Lasciamo, per ora, da parte il linguaggio e la stesura sintattica di un trading system. Ora abbiamo le basi per capire la logica di programmazione, concentriamo l’attenzione sulla valutazione di un sistema partendo dai suoi elementi più indicativi, il report, la curva dei profitti e la visualizzazione grafica dei segnali operativi.

Vedi anche: