Analisi tecnica on line
 
Articoli | Commento | Grafici | Sotto la lente | Strategie | USA on line | Mercati RT
AT in pillole | Non solo AT | Ospiti | Bibliografia | Software | News | Links | Forum | Home

   
AT in pillole - Approfondimenti
 

<-- (I Trading systems) -->

Il progetto - La codifica

 
 
di: Antonio Pantalena 

 

Abbiamo una nostra idea; sulla base di questa abbiamo definito una strategia di trading, ora la vogliamo testare. A tal fine dobbiamo fare in modo che il computer possa comprendere le regole da noi delineate in modo da riprodurre la loro applicazione su una serie storica di dati; dobbiamo, quindi, codificare tali regole.
 
Indipendentemente dal software o dal linguaggio utilizzato (Tradestation, Metastock, Visual Basic, C++, ecc.) la codifica richiede necessariamente che i nostri criteri di ingresso/uscita dal mercato siano definibili attraverso un algoritmo, ossia da una precisa e completa serie di istruzioni atte a descrivere, passo dopo passo, il processo che porta alla soluzione del problema (nel nostro caso l'individuazione delle condizioni che fanno scattare i segnali).
 
Tale processo, come già detto, comporta una prima, immediata, utilità: la necessità di ricostruire in termini chiari e puntuali l'intero percorso logico che porta alla definizione dei segnali fa sì che sue eventuali contraddizioni, illogicità o manchevolezze vengano rapidamente alla luce. La programmazione, così, che in prima istanza si propone come strumentale allo sviluppo di un trading system, si rileva invece funzionale a tale attività, ponendo il trader a confronto con i punti deboli del suo approccio al mercato molto tempo prima che questo si traduca in operatività reale.
 
Abbiamo un'idea, passiamo adesso alla codifica!
 
Ricordiamo, però, che il computer non è in grado di fare scelte "discrezionali"; quando parlo di precisione e completezza delle istruzioni, quindi, lo faccio nella maniera più assoluta. I concetti di "molto", "poco", "importante" sono incomprensibili per un elaboratore elettronico, il quale è in grado di elaborare solo istruzioni in termini di >,< e =.
 
Mi spiego con qualche esempio:
 
- Si consideri un segnale di ingresso il quale richiede che la "volatilità sia in aumento". Così com'è questa affermazione non può essere trasferita al computer, bisogna specificarla meglio. Dobbiamo, allora, innanzitutto definire quale algoritmo utilizzare per la misura della volatilità; definire, successivamente, un livello al quale questa è da considerare bassa (al di sotto del 15%? o del 5%? o del 4.9999%? o del valore medio degli ultimi 50 giorni? o degli ultimi 21?); stabilire, quindi, un criterio per individuare il momento in cui la volatilità sta aumentando (due valori consecutivi crescenti? cinque valori consecutivi crescenti? la volatilità al di sopra di una sua media mobile veloce?)
 
- Supponiamo di voler realizzare un sistema che prenda in considerazione livelli di supporto e resistenza. Come li individuiamo? Non possiamo parlare di minimi e/o massimi importanti. Ci serve un criterio ben definito. Potremmo rifarci al metodo proposto da Mel Widner (Automated Support and Resistence, Technical Analysis of Stock&Commodities, May 1998), che fa corrispondere una resistenza al massimo della barra centrale di un determinato periodo di riferimento, nel momento in cui questo massimo risulti essere anche il massimo assoluto del periodo stesso, ed un supporto al minimo della barra centrale dello stesso periodo di riferimento, nel momento in cui questo risulti essere un minimo assoluto. Questo criterio, utilizzando l'EasyLanguage di Tradestation, lo potremmo così codificare:
if h[(period+1)/2]=highest(h,period) then resistenza=h[(period+1)/2)];
if l[(period+1)/2]=lowest(l,period) then supporto=l[(period+1)/2];
 

 

 

Alternativamente potremmo utilizzare il criterio proposto da Alex Saitta per individuare massimi e minimi "importanti" (Bonds, Price Momentum and Trends, Technical Analysis of Stock&Commodities, April 1997), in base al quale questi livelli consistono nei massimi e nei minimi assoluti che hanno preceduto il crossover dei prezzi con una loro media. Questo, in linguaggio Metastock (per par condicio), verrebbe scritto come:
ValueWhen(1,Cross(Mov(C, period,S),C),HHV(H, period));{resistenza}
ValueWhen(1,Cross(C,Mov(C, period,S)),LLV(L, period));{supporto}
 

 

 

In entrambi i casi siamo costretti a tradurre in termini "algebrici" degli strumenti di Analisi Tecnica che, per loro natura, sono facilmente descrivibili in termini concettuali ma che risultano difficili da racchiudere in maniera esaustiva in una struttura "formale", quale è, appunto, un codice. In ogni caso, poi, dobbiamo necessariamente giungere ad un compromesso, rinunciando alla flessibilità propria di determinati strumenti di analisi per poter trarre vantaggio dalle potenzialità proprie di un elaboratore elettronico.
 
In conclusione possiamo affermare, quindi, che la fase di codifica è una fase delicata e, in alcuni casi complessa. Tale complessità deriva non solo dal dover apprendere un linguaggio di programmazione che permetta di comunicare con il computer, ma anche dalle difficoltà insite nella necessità di tradurre in algoritmo, e quindi di definire in maniera puntuale, processi logici che spesso racchiudono in sé elementi di flessibilità e discrezionalità.
 
 
a.p. - 4 marzo 2001
 
< - >
 

 

AVVISO IMPORTANTE
Si precisa che questa Rubrica, occupandosi esclusivamente di Analisi Tecnica, non terrà conto di 'voci' od altre cose del genere, limitandosi ad analizzare oggettivamente i grafici proposti. Le pagine di questo sito non costituiscono servizio di consulenza finanziaria né sollecitazione al pubblico risparmio. Le indicazioni riportate sono frutto di analisi amatoriali e vengono diffuse come elementi di studio o semplici spunti di riflessione. L'autore ed il Web Master declinano pertanto ogni responsabilità per le eventuali conseguenze negative che dovessero scaturire da un'operatività fondata sull'osservanza delle suddette indicazioni.

 

Leggi il Guestbook di Antonio Pantalena

Firma il Guestbook di Antonio Pantalena

Click Here!