- 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.
|
Firma il Guestbook di Antonio Pantalena |
|