Da un’idea a un trading system

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 ) / 2Dove:H = MassimoL = Minimo+ = Somma/ = Diviso2 = Parametro( ) = Parentesi di precedenzaAbbiamo 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 thenenterlong (nextbar, atopen);endif;if c < media1 thenentershort (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 variabilemedia1=mov(c,12,s); // caratteristiche della variabileUna 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 alloraenterlong (nextbar, atopen); // acquista alla barra successive in aperturaendif; // fine delle condizioni if c < media1 then // se la chiusura è minore di media1 alloraentershort (nextbar, atopen); // vendi allo scoperto alla barra successive in aperturaendif; // 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 variabilimedia1=mov(c,12,s); // media mobile semplice velocemedia2=mov(c, 26,s); // media mobile semplice lentaif media1 > media2 then // condizioni operativeenterlong (nextbar, atopen); // acquista alla barra successive in apertura endif; // fine delle condizioniif media1 < media2 then // condizioni operativeentershort (nextbar, atopen); // vendi allo scoperto alla barra successive in aperturaendif; // fine delle condizioniCompresa 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 variabilim1=macd(c,12,26); //differenza di medie del macd 12 e 26m2=mov(m1,9,e); //media mobile operativaif m1 > m2 then // condizioni operativeenterlong (nextbar, atopen); // acquista alla barra successive in apertura endif; // fine delle condizioniif m1< m2 then // condizioni operativeentershort (nextbar, atopen); // vendi allo scoperto alla barra successive in aperturaendif; // fine delle condizioniAnche 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. 
 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.
 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: ==
*Indice sequenziale Trading System 
*Ognuno è fabbro del proprio destino 
*Prevedere il futuro osservando il passato 
*I sistemi automatici di trading 
*Diverse categorie di trading system 
*Trend Following 
*Contrarian 
*Volatility Breakout 
*Ibridi 
*La pianificazione della strategia operativa 
*Gli errori di logica nella costruzione concettuale 
*Da un’idea a un trading system 
*Il punto della situazione
Category:Trading_System