Sei sulla pagina 1di 195

DANIELE LIVIO DAINESI

FOREX
Creare e programmare Trading System per il mercato delle valute
Castellanza, 2008
A mia moglie Nicoletta, che mi ha sopportato durante la scrittura di questo libro.
...
Alla nostra gatta Pappis che ha saputo farmi prendere delle pause salutari con le sue insistenti
miagolate.

Sommario
Introduzione ..................................................................................................................................5
Il FOREX ..........................................................................................................................................9
2.a Politiche monetarie e valutarie......................................................................................10
2.b Correlazione tra Cross.......................................................................................................11
2.c Lo Swap ed il Carry Trade ................................................................................................12
2.d I Pips e lo Spread................................................................................................................15
I Trading Systems......................................................................................................................17
Piattaforme esistenti................................................................................................................19
I Time Frame..............................................................................................................................23
(e relativa operatività suggerita)............................................................................................23
Cenni di analisi tecnica ...........................................................................................................29
6.a Le Medie Mobili ...................................................................................................................32
6.a.i Media Mobile Semplice ..............................................................................................32
6.a.ii Media mobile ponderata..........................................................................................33
6.a.iii Media mobile esponenziale....................................................................................34
6.a.iv Variazioni sul tema..................................................................................................34
6.b Gli Indicatori e gli Oscillatori...........................................................................................35
6.b.i Indicatori di Prezzo....................................................................................................36
6.b.ii Indicatori di Volume .................................................................................................39
6.c Le fasi di mercato...............................................................................................................41
6.c.i Il Trend...........................................................................................................................42
6.c.ii La Lateralità................................................................................................................42
6.c.iii La Volatilità...............................................................................................................43
6.d Livelli importanti................................................................................................................47
6.d.i Supporti e Resistenze ................................................................................................47
6.d.ii I Pivot............................................................................................................................48
6.d.iii Cross Volume o Distribution level........................................................................49
Operatività..................................................................................................................................51
7.a Position Trading (il “Cassettista”)..................................................................................52
7.b Trading Multiday (Daytrading).........................................................................................53
7.c Swing trading .......................................................................................................................54
7.d Trading intraday................................................................................................................55
7.e Trading intraday ad altissima velocità: lo Scalping....................................................56
Correlazione inversa tra operatività e leva finanziaria..................................................61
I linguaggi di sviluppo più diffusi per la creazione di Trading System ........................67
9.a MetaTrader e MQL4............................................................................................................71
9.b TradeStation e EasyLanguage..........................................................................................73
Long e Short.............................................................................................................................75
Setup, Stop & Reverse...........................................................................................................79
Tecniche di Trailing Stop......................................................................................................83
12.a Trailing Stop classico.......................................................................................................87
12.b Trailing Multistop .............................................................................................................88
12.c Break Even Stop Loss.......................................................................................................89
12.d Countdown Trailing Stop................................................................................................91
12.e Panic Stop and Go ............................................................................................................94
12.f Few Tick and Go................................................................................................................95
Cenni di Money Management...............................................................................................97
13.a Distribuzione del rischio.................................................................................................98
13.b Prese di profitto e chiusura frazionata delle operazioni.....................................100
13.c Entrate ed uscite piramidali........................................................................................101
13.d Calcolo dei lotti di entrata...........................................................................................111
13.e La Martingala inversa ....................................................................................................113
Creare un Trading System ....................................................................................................117
14.a Le funzioni “scheletro” di un Export Advisor ........................................................119
14.b Condizioni di ingresso...................................................................................................121
14.c Calcolo del lotto iniziale...............................................................................................122
14.d Condizioni di uscita .......................................................................................................125
14.e Debug ................................................................................................................................128
14.f Gestione degli stop.........................................................................................................129
14.g Stampa su file..................................................................................................................140
14.h Strategie Multiposizione e Multicurrency................................................................143
14.h.i Strategie Multiposizione semplici......................................................................143
14.h.ii Strategie Multiposizione Piramidali.................................................................145
14.h.iii Strategie Multicurrency......................................................................................150
14.i Conclusioni........................................................................................................................150
Il BackTest..............................................................................................................................151
15.a Lo Storico .........................................................................................................................153
15.b Ottimizzazione................................................................................................................175
15.b.i Le variabili nei Trading System..........................................................................175
15.b.ii Impostazione di una Ottimizzazione ...............................................................176
15.b.iii Scegliere il risultato ottimizzato più adatto...............................................179
Conclusioni ..............................................................................................................................185
Esercizi accademici: i Campionati per Trading System................................................187
Eventi ricorrenti (fiere e manifestazioni periodiche)..................................................189
: codice completo dell'EA del libro.................................................................191
: operatività con le Bande di Bollinger..........................................................205
Squeeze: Esplosione di volatilità (break out).................................................................206
Rimbalzo sui livelli .................................................................................................................207
Corsa sulle bande....................................................................................................................208
: bibliografia.........................................................................................................211
..............................................................................................................................................212

Introduzione
Per anni ho pensato che l’economia di una nazione era basata sulla capacità di produrre ed innovare,
beni e servizi rivolti ai bisogni espressi o celati del mercato (sia esso composto da singole persone
che da aziende pubbliche o private). Con la crisi dei mercati finanziari iniziata quel tragico 11
Settembre del 2001 queste mie convinzioni hanno iniziato a vacillare.
La certezza che l’economia reale dipende da quella virtuale dei mercati finanziari si è concretizzata
con l’osservazione dei fenomeni inflativi causati dalla ormai famosa crisi dei “subprime” (mutui
immobiliari a tassi elevati concessi a clienti senza le necessarie garanzie di solvibilità). Il terremoto
innescato da questa crisi ha portato allo scoperto il modo in cui le istituzioni finanziarie utilizzavano
il denaro dei depositi dei clienti per speculare su alchimie di ingegneria finanziaria: i derivati nella
loro accezione più spinta. Nel momento in cui scrivo, novembre 2008, la recessione è un fatto
conclamato e la causa maggiore è costituita dal continuo aumento dei costi dei beni di prima
necessità a causa di operazioni finanziarie sulle commodities che ne ha fatto salire i prezzi non per
effetto di una domanda reale ma “virtuale”.
Grazie a questi scenari negli anni è cresciuta la mia inclinazione alla gestione del risparmio prima ed
alla creazione di una professione sempre più specializzata poi, nel campo del trading online.

Se si basa il proprio destino professionale sull’andamento della congiuntura economica nazionale ed


internazionale questi sono tempi cupi. La recessione economica non fa altro che spaventare le
aziende le quali in un clima di incertezza procrastinano ogni tipo di investimento nell’attesa di
schiarite all’orizzonte. Se si vuole lavorare senza preoccuparsi di queste correlazioni congiuntura-
clienti occorre trovare una professione dove noi siamo gli unici artefici: il trading finanziario.

Per anni ho visto il trading solo come azionario, ovvero acquistavo azioni nella speranza che queste
salissero. La scelta dei titoli era basata sull’analisi dei bilanci e sulla lettura di riviste economiche
che ne analizzavano la situazione economica in prospettiva. Con l’avvento dei mercati telematici in
Italia (1994) hanno iniziato ad apparire sul mercato degli intermediari finanziari alcuni broker che
offrivano l’accesso alle “grida” di piazza Affari (Fineco, EptaTrading, ecc…). Negli Stati Uniti
questa possibilità era già una pratica diffusa.

Grazie a questi primi, e rudimentali, strumenti si poteva andare a mercato. Ovvero si potevano
acquistare titoli.

Va da se che questo modo di operare era ideale in un panorama di sviluppo economico in crescita di
tutti i mercati mondiali. La logica era quella dell’investimento e disinvestimento nell’arco di uno o
due mesi. Gli stop loss erano solo concetti teorici e l’unico ordine trasmissibile era l’acquisto o la
chiusura per vendita di una posizione.

Dopo lo scoppio della bolla speculativa nel 2000 tutti gli investitori improvvisati compresero che le
regole con le quali si sarebbe tornati ad investire dovevano essere riviste, profondamente.

Nel 2001 venne introdotto anche in Italia lo Short Selling e questo ha permesso di sfruttare sia le
salite che le discese del mercato. Con lo short selling, o vendita allo scoperto, si può infatti puntare
sulla discesa delle quotazioni di uno strumento finanziario.

Dagli anni 90 ad oggi moltissimi investitori hanno cambiato la loro metodologia utilizzata per
investire: dapprima ci si recava allo sportello titoli della propria Banca e si ordinava tramite
cedolini cartacei l’esecuzione degli ordini di Borsa, adesso si accende il proprio PC e dopo essersi
connessi con il proprio Broker si invia l’ordine per via telematica.

In questi ultimi vent’anni sono cambiati molto i mercati e di riflesso è cambiato l’approccio mentale
con il quale bisogna rivolgersi.
Viene spesso da sorridere quando si legge testi di trading operativo scritti nei primi anni ottanta se
considera la realtà odierna.

I questo panorama così complesso, così incerto, ogni investitore che vuole fare del trading la sua
professione deve avere delle idee chiare ed anche degli strumenti all’altezza della sua
professionalità. E’ per queste ragioni che negli ultimi anni della mia carriera mi sono impegnato a
ricercare metodi efficaci per investire e strumenti in grado di stare al passo con le mie esigenze ed
affidabili nelle loro azioni.

Questo libro si rivolge a tutti quegli investitori che hanno intenzione di affacciarsi al sottomondo del
trading automatico e a tutti quei programmatori che vogliono mettere a frutto le loro competenze
informatiche nel campo della finanza.

La scelta del mercato delle valute come tema dominante del libro è dettata da una più fluida dinamica
della formazione del prezzo e dalla universalità di questo mercato.

Il mio intento è quello di spiegare nella maniera più semplice ed esaustiva come costruire un trading
system, ovvero un programma automatico di investimento, capace di prendere decisioni sulla base
delle nostre convinzioni.

Creare un Trading System significa però anche comprendere per quale mercato lo si va a creare e
quindi cercherò di spiegare in principio cosa è il Forex e quali sono le logiche che lo animano.

Ogni trading system che si rispetti deve seguire delle regole di ingresso e di uscita, queste possono
essere generate secondo due tipi di studi: analisi tecnica delle serie storiche o algoritmi di calcoli
probalistici sugli studi delle reti neurali. In questo libro affronterò lo studio dell’analisi tecnica
(rimandando ad un altro libro l’approfondimento dell’approccio sulle reti neurali) e quindi esporrò
in maniera sintetica alcuni punti chiave. Il testo non può e non vuole essere un manuale di analisi
tecnica per il quale si rimanda a manuali appositi.
Verranno spiegate le più comuni tecniche di Money Management e come queste possano essere
applicate e monitorate attraverso il codice.

In ultimo guiderò il lettore nella costruzione di programmi completi e funzionanti, spiegandone i


contenuti ed insegnando i costrutti base della programmazione legata al linguaggio utilizzato in questo
testo (MQL4).

Il FOREX
Il foreign exchange market (spesso abbreviato in Forex) si ha quando una valuta viene scambiata
con un'altra. Il forex è di gran lunga il più grosso mercato nel mondo, in termini di valore delle
transazioni, e include gli scambi che avvengono tra grosse istituzioni bancarie, banche centrali,
speculatori valutari, imprese multinazionali, governi e altri mercati finanziari ed istituzioni. L'attività
di scambio che ha luogo nei mercati forex globali assomma a più di 6.000 miliardi di dollari al
giorno (in media). I trader retail (piccoli speculatori) sono una parte minima di questo mercato.
Il mercato forex è un mercato monetario interbancario o tra altre controparti, creato nel 1971 quando
cominciarono ad apparire tassi di cambio fluttuanti. Il foreign exchange market è enorme se
comparato ad altri mercati.

Londra si è affermata come il principale centro finanziario globale ed è il più grosso mercato forex
del mondo. Tale affermazione non è dovuta solo al suo posizionamento, che le consente di operare
durante l'apertura dei mercati asiatici ed americano, ma anche per alla creazione del mercato
dell'Eurodollaro. Il mercato dell'Eurodollaro si venne a creare durante gli anni 50 quando i proventi
che l'Urss derivava dalla vendita del petrolio, tutti denominati in dollari, venivano depositati al di
fuori degli USA per il timore che venissero bloccati dalle autorità statunitense. Questa pratica fece sì
che un grosso quantitativo di dollari statunitensi si trovasse al di fuori del controllo degli Stati Uniti.
Queste vaste riserve di liquidità erano molto attraenti per gli investitori di tutto il mondo in quanto
erano soggette ad una regolazione molto meno penetrante e offrivano una redditività più elevata. In
Italia il mercato Forex ha cominciato a vivere un aumento di interesse da parte degli investitori
privati che stanchi della volatilità o stagnazione dei mercati tradizionali hanno trovato nel mercato
delle valute uno strumento finanziario “liquido” e meno esposto a fenomeni di volatilità estrema
(gap).

2.a Politiche monetarie e valutarie


Ogni nazione deve mantenere competiva la propria economia verso il resto del mondo grazie al
delicato equilibrio dato dai costi della produzione e dalla convenienza dei propri prodotti rispetto
alla concorrenza. I costi di produzione sono formati dalle spese per beni interni e beni provenienti
dall’estero e che quindi vengono pagati in un'altra valuta monetaria. I governi e le loro Banche
Centrali hanno il compito di stabilizzare i cambi o, al limite, di migliorarli in virtù della variazione
degli equilibri tra costi interni e costi esterni.

Nell’ultimo anno abbiamo assistito ad una manovra protezionistica da parte dei paesi dell’OPEC
(Organizzazione mondiale dei paesi produttori di Petrolio) per stabilizzare il valore reale della
produzione alla luce della svalutazione del dollaro (moneta di computo del mercato del petrolio) nei
confronti dell’Euro (moneta emergente e dominante nel mercato dei beni durevoli in tre dei cinque
continenti).

Gli obiettivi delle Banche Centrali si distinguono in obiettivi finali e obiettivi intermedi. Gli obiettivi
finali sono gli stessi della politica economica (prezzi, occupazione, sviluppo), ma in particolare la
politica monetaria assume il compito di garantire la stabilità dei prezzi interni ed esterni (cambio).
Tale obiettivo non può essere raggiunto attraverso il controllo diretto dei prezzi, ma con operazioni
che, influendo sulla domanda e l'offerta di beni e servizi, spinga i prezzi nella direzione desiderata.
In particolare se, come spesso accade, il problema da affrontare è l'eccessivo aumento dei prezzi, il
compito della politica monetaria è di rallentare le dinamiche della domanda in modo da contenere
l'aumento dei prezzi nei limiti desiderati.

Per raggiungere tali obiettivi, le banche centrali, cui viene affidata solitamente la politica monetaria,
compiono operazioni di mercato aperto che, attraverso la compravendita di titoli, modificano i tassi
di interesse. A loro volta le modifiche dei tassi influiscono sulla domanda e l'offerta di moneta e
credito e per questa via, sulla domanda e l'offerta di beni e servizi.

Le banche centrali possono poi influire sulla riserva obbligatoria e sul tasso di sconto che, attraverso
il meccanismo del rifinanziamento delle banche, serve a regolare il credito concesso dalle banche
alla clientela.
Il tasso di sconto è una delle variabili del mercato Forex (più avanti vedremo il perché).

2.b Correlazione tra Cross


Come abbiamo visto il forex è il mercato frutto dell’insieme di coppie di valute scambiate tra loro.
Se noi potessimo contare un numero finito di coppie ( o Cross come siusa dire in gergo) potremmo
anche concludere che la somma dei Cross è sempre costante. Come per il principio dei vasi
comunicanti, l’aumento di valore di una valuta sull’altra si riflette in una diminuzione di un'altra terza
valuta sulla prima.

In uno scenario perfetto questo significa che un investimento distribuito su tutti i cross non produce
perdite né profitti in quanto in qualsiasi momento la somma delle perdite e profitti è pari a zero.

Nella realtà il risultato è diverso come si può notare dalla tabella sottostante che evidenzia come la
somma dei cross di quattro valute incrociate tra di loro porti a saldi differenti.

Agosto Agosto Agosto Agosto 1995 2000 2005 2008 EURUSD1,3325 0,8886 1,2342 1,4678
EURGBP0,8598 0,6141 0,684 0,8057 EURJPY129,8 108,43 136,51 159,65 USDJPY97,48 106,72
110,64 108,79 GBPUSD1,5575 1,4646 1,8417 1,821 GBPJPY151,84 154,4 199,52 198,12

Totale 382,8698 372,5173 450,4299 470,6545

Probabilmente la somma dei cross sarebbe stata molto più simile se in tabella avessimo inserito tutti
i cross disponibili ma il vero motivo per cui un insieme di investimenti diversificati su tutti i cross
varia il suo valore nel tempo è che ci sono dei fattori correlati che creano queste discrepanze:
• I differenti tassi di sconto applicati dalle Banche Centrali provocano differenti flussi di interesse
(Interest Swap)
• Gli Spread applicati per ogni Cross non sono sempre identici ma variano (in alcuni casi anche
molto)
• Non tutte le valute sono negoziate sul mercato Forex (vedi Rublo sovietico, Yuan Cinese, ecc..)

Sebbene, come abbiamo visto, le variazioni tra Cross non si propagano in modo perfetto riportando
istantaneamente il saldo a zero, si può senz’altro dire che esistono correlazioni fortissime tra i cross.
A titolo esemplificativo è interessante confrontare l’andamento Euro Dollaro con quello tra Dollaro e
Franco Svizzero come nei due grafici seguenti.

2.c Lo Swap ed il Carry Trade


Nell'ambito della finanza internazionale il carry trade è la pratica speculativa consistente nel
prendere a prestito del denaro in paesi con tassi di interesse più bassi, per cambiarlo in valuta di
paesi con un rendimento degli investimenti maggiore in modo sia da ripagare il debito contratto sia
da ottenere un guadagno con la medesima operazione finanziaria.

Solitamente per mettere in atto un'operazione di carry trade vengono scelte monete che godono di un
cambio stabile nel tempo mentre l'investimento è rivolto a strumenti a basso rischio, quali titoli di
Stato.
È possibile fare un esempio di operazioni di questo genere prendendo a riferimento la situazione
economica del Giappone: in questo caso gli investitori stranieri operano in un mercato che presenta,
in maniera pressoché stabile negli ultimi dieci anni, un tasso di cambio dollaro statunitense/yen di
1/120 e un tasso di interesse dello 0,25%: il disallineamento dei tassi rispetto alla media
internazionale consente di prendere a prestito denaro in yen ad un "prezzo" molto basso, di cambiarlo
in valute straniere che vengono investite in titoli di stato o altri strumenti finanziari a rischio nullo e
che presentano un rendimento del 3% o superiore. L'investitore guadagna, in tal modo, sul
differenziale fra i tassi di interesse: scaduto il titolo di stato, il denaro viene infatti riconvertito dalla
moneta straniera in yen per pagare il debito contratto in Giappone.
Per l'investimento finanziario non è rilevante che il tasso di cambio yen/altra moneta sia a favore o
meno di quella straniera, purché sia stabile nel tempo e resti sostanzialmente invariato dal momento
in cui viene contratto il prestito in Giappone a quello in cui si viene restituito.

Per l’investitore del mercato Forex è importante il differenziale dei tassi in quanto ogni volta che
viene acquistato un lotto di negoziazione (o sue frazioni) vengono applicati degli interessi a debito ed
a credito.

Il contratto Forex è uno scambio tra due valute per un importo equivalente. La prima valuta è
denominata valuta base o certa (base currency) in quanto rimane fissa, mentre la seconda è chiamata
valuta incerta poiché varia (è la quantità di valuta necessaria per acquistare un unità di valuta base).

Nel caso si acquisti un lotto EuroDollaro, per ogni giorno di mantenimento della posizione, si paga
un interesse pari al controvalore in dollari del lotto a cui si applica il tasso di sconto LIBOR1
correlato a quello praticato dalla FED (Federal Reserve) e si percepisce un interesse per
l’equivalente in Euro dell’ammontare del Lotto a cui viene applicato il tasso LIBOR corrispondente a
quello adoperato dalla BCE (Banca Centrale Europea).
Infatti una operazione Long EURUSD significa che compriamo Euro e vendiamo Dollari. Ora, visto
che nel momento in cui vi scrivo il tasso di interesse sui Dollari è maggiore a quello in Euro, il
differenziale tra i due sarà negativo e quindi pagheremo un interesse.
Analogamente qualora aprissimo una posizione Short dovremo ricevere un pagamento pari al
differenziale tra i due tassi.
1 Ilmercato Forex è fortemente influenzato dal London Interbank Offered Rate (LIBOR). Esistono
molti tassi LIBOR calcolati per 10 differenti valute e fissati ogni giorno feriale. Il tasso LIBOR è
calcolato giornalmente per le seguenti valute:

Pound Sterling (GBP) United States Dollar (USD) Japanese Yen (JPY)
Swiss Franc (CHF)
Canadian Dollar (CAD) Australian Dollar (AUD) Euro (EUR)
Danish Kroner (DKK)
Swedish Krona (SEK) New Zealand Dollar (NZD)

Il tasso LIBOR per una specifica valuta dipende dal tasso di sconto locale applicato sulla valuta
dalla Banca Centrale di competenza (La FED per il dollaro Americano, la BCE per l’Euro, La Banca
d’Inghilterra per la Sterlina, ecc..).
Lo Swap

La differenza sul differenziale dei tassi può essere definita come il montante del cambio a pronti
calcolato in base al differenziale dei tassi di interesse delle due divise oggetto di scambio.

Δ
i
=
Cs⋅(Rsc −Rbc)⋅gg 36000

Legenda :
Cs = Cambio Spot (es. 1,2912 sull EURUSD)
Rsc = Rate of second currency (tasso di interesse della valuta incerta) Rbc = Rate of base currency
(tasso di interesse della valuta base) Gg = Durata in Giorni dell’operazione
∆i = Differenziale di interesse

Il premio o sconto è dato dalla seguente formula:


Fp
=
Cs⋅(Rsc −Rbc)⋅ gg 36000+(Rbc)⋅ gg
dove Fp sono i punti forward, ovvero i punti di premio o sconto.

In teoria se noi aprissimo due operazioni identiche ma contrarie su cross direttamente correlati
staremmo compiendo un operazione di Carry Trade poiché tenteremmo di sfruttare a nostro vantaggio
il differenziale di tasso senza incorrere nel rischio di oscillazione del cambio (l’operazione Long
viene neutralizzata dalla posizione Short).

Quindi se il tasso sul Dollaro fosse il 5%, quello sull’Euro fosse del 4% e quello del Franco
Svizzero fosse del 2%, sarebbe conveniente comperare un lotto EurUsde vendere un lotto UsdChf
(due posizioni distinte) e trarre profitto dal flusso di interessi (ricevo l’1% dalla posizione Long (5%
- 4%) e ricevo il 3% dalla posizione Short (5% - 2%).
Peccato che nella realtà i vari broker applicano tassi diversi che non riflettono quelli reali rendendo
spesso nulle le possibilità di CarryTrade per un investitore privato di ridotte dimensioni.

E’ comunque importante ricordare l’esistenza degli Swap in quanto rivestono un importanza non
trascurabile nel caso di posizione mantenute per molti giorni in un panorama di lateralità delle
quotazioni o, peggio, di completo immobilismo (consolidamento).

2.d I Pips e lo Spread


Come ogni strumento finanziario quotato i cross sulle valute sono rappresentati da un offerta (Bid) e
da un offerta (Ask). I prezzi sono indicati come rapporto di cambio tra le due valute ed il più piccolo
incremento possibile è denominato Pips (Percentage In Point). Tutti i prezzi sono rappresentati con
quattro cifre decimali ad eccezione dello Yen che è quotato solo fino alla seconda cifra decimale.

Molti Broker non richiedono canoni fissi né costi mensili di noleggio della piattaforma
informativa/dispositiva e quindi molti si chiedono dove sta allora il loro guadagno ? Semplice. Ogni
Broker funge da Market maker nei confronti dei propri clienti e quindi maschera il mercato reale
amplificando le divergenza tra domanda ed offerta, incassando quindi il differenziale per ogni
transazione.
Se ad esempio la domanda EurUsd fosse di 1,2815 e l’offerta di 1,2816 ecco che il broker potrebbe
divaricare questa differenza di 2 pips portando la domanda a 1,2814 e l’offerta a 1,2817. Colui che
vende realizzerebbe a 1,2814 quando in realtà il mercato ha soddisfatto la sua richiesta a 1,2815 ,
accreditando al broker il pip mancante. Di segno opposto l’ipotesi di acquisto che vede comunque il
broker guadagnare 1 pip.
Questa differenza applicata viene denominata Spread (in modo analogo alla differenza tra Bid ed Ask
di un normale book di negoziazione).
Gli Spread, nei momenti di “fast market2” sono unilateralmente modificabili per far fronte alle
inefficienze trasmissive dei canali telematici dei broker con le loro controparti finanziarie. In pratica
non è così raro veder lievitare spread di due o tre pips a 10-12 pips!
2 Per “Fast Market” si intendono le fasi di mercato contraddistinte da marcata volatilità e notevole
frequenza degli scambi. Tale congestione o frenesia mette a dura prova la capacità di elaborazione
dei server dei broker che per evitare di chiudere operazioni con prezzi molto differenti da quelli
presunti ampliano lo spread nel tentativo di contenere le perdite per il broker.

I Trading Systems
I Trading Systems sono dei programmi che vengono eseguiti su speciali piattaforme, collegate ai
conti dei Clienti, ed in grado di inviare ordini automaticamente e indipendentemente dalla presenza o
meno di alcun operatore accanto al computer, anzi, il programma potrebbe anche essere eseguito su
server remoti che non necessitano di alcuna interazione con l’utente (come accade per esempio
durante i tornei di Trading automatico). Questi programmi, e le piattaforme che li ospitano, sono nati
con lo scopo di applicare regole definite al processo di trading, senza lasciare spazio alla
discrezionalità e, soprattutto, alle emozioni, le peggiori nemiche del trader.

Un idea di investimento viene dapprima schematizzata e quindi codificata e la sua esecuzione affidata
al computer.
L’operatività di trading viene così differenziata in

• Trading discrezionale
• Trading sistematico

Il primo contraddistingue l’operatività manuale basata sulle conoscenze ed emozioni del trader che
fisicamente invia gli ordini a mercato (tramite click del mouse o pressione di tasti). Il secondo invece
denota l’utilizzo di trading system per la gestione automatica dell’operatività.

Piattaforme esistenti
(cenni storici, realtà odierna ed evoluzione in atto)
Attualmente la creazione di trading system è possibile su svariate piattaforme diffuse a livello
mondiale e di seguito se ne dà un elenco sommario delle principali:

• AmiBroker
• ForeXecutor
• MarketCetera
• MetaStock
• MetaTrader
• NinjaTrader
• StrategyRunner
• TickQuest
• TradeStation
• VT Trader
• Ecc…

Tra queste, due meritano di essere citate e ad una di esse faremo riferimento in tutto il presente testo:
TradeStation di OmegaResearch e MetaTrader di MetaQuotes.
OmegaReaserch (Plantation, Florida) è stata la prima a creare software di gestione automatica del
trading con TeleTrac nel 1986 e successivamente TradeStation nel 1991. I suoi programmi
consentivano di ricevere i dati delle quotazioni in tempo reale e di elaborare gli stessi con linguaggi
simili al BASIC. Per oltre vent’anni è stato il punto di riferimento per due generazioni di trader.
Purtroppo il costo elevato delle licenze ne ha limitato la crescita come avrebbe meritato.
MetaQuotes (Kazan, Russia) nasce nel 2000 e si focalizza direttamente sul mercato Forex. Negli anni
si evolve e si propone ai vari broker come piattaforma diretta. Il suo punto di forza sta nella gratuità.
Grazie a questo accorgimento la schiera di sostenitori ed utilizzatori si allarga a macchia d’olio ed
oggi è la seconda piattaforma al mondo per numero di utilizzatori. Adotta un linguaggio C like che a
dire il vero appare molto acerbo ma sufficientemente malleabile per poterci costruire ogni genere di
algoritmo.

La scelta di utilizzare MetaTrader come piattaforme di esempio per la creazione degli esempi in
questo libro nasce da due ordini di considerazioni:

Essendo un tecnico informatico, conosco abbastanza la composizione della massa di sviluppatori


sparsa per il globo e posso affermare con tranquillità che, per anzianità e numero, i conoscitori dei
linguaggi C/C++ e Basic sono i più numerosi. Il C (e successivamente C++) è il capo stipite per
eccellenza dei moderni linguaggi ad oggetti, presente in ogni campo della programmazione è una
specie di pass-partout per capire tutti gli altri linguaggi. Il Basic, nato come linguaggio procedurale,
ha permesso a milioni di persone di capire come funziona e come si crea un programma. Con
l’avvento di Windows e l’introduzione di Visual Basic, questo linguaggio ha avuto una diffusione
ancora più esplosiva.
La differenza universalmente riconosciuta ai due linguaggi sta nel compromesso tra facilità e duttilità.
Con il linguaggio C/C++ si è in grado di fare tutto e per qualsiasi architettura di sistema ma, ecco il
contraltare, a costo di un enorme dispendio di energie in codifica ed apprendimento. I programmi
generati sono in genere molto “piccoli”, ottimizzano le risorse del sistema e perciò risultano molto
veloci nell’esecuzione.
In Visual Basic creare un applicazione da zero è semplice ed è possibile porre la propria
concentrazione sulle finalità del programma piuttosto che sulla sua implementazione pratica
(interazione con l’hardware). L’altro lato della medaglia è che i programmi generati sono spesso
inefficienti in termini di consumo di risorse e quindi non così veloci come quelli scritti in C++. Il
dilemma per lo sviluppatore è sempre legato al tempo di apprendimento (la famosa “curva di
apprendimento”). Oggi giorno le nuove release dei linguaggi si susseguono ad intervalli di due o tre
anni al massimo, mentre la complessità delle novità introdotte si amplia sempre di più. Questo è uno
dei motivi per cui sempre più spesso un programmatore si “specializza” su di un linguaggio senza più
poter imparare correttamente anche un altro: i tempi necessari ad una adeguata preparazione si
allungano e superano la distanza che separa una release dalla successiva (da Visual Studio ’97 a
Visual Studio 6.0 in meno di due anni, Visual Studio.net 2002 a Vs.net 2003 in un anno!!).

Dal punto di vista delle aziende, i programmi scritti con i linguaggi 4GL (di cui Visual Basic fa
parte) sono preferibili per la creazione di gestionali od altri applicativi la cui revisione periodica è
già programmata. Questa decisione nasce dalla constatazione che sebbene i programmi scritti in
C/C++ siano più veloci ed efficienti rispetto a quelli scritti in Visual Basic, sono però decisamente
più costosi in termini di tempo (occorrono più giornate di programmazione) e di risorse (i
programmatori in C/C++ sono meno e quindi più costosi rispetto ai colleghi di Visual Basic).

Nel capitolo 9 saranno introdotti i linguaggi di sviluppo delle due piattaforme ed evidenziati gli
ambienti di sviluppo (IDE). Per coloro completamente a digiuno di programmazione saranno
illustrate le basi sintattiche dei linguaggi di programmazione.

I Time Frame
(e relativa operatività suggerita)
Le quotazioni di qualsiasi strumento finanziario sono costituite dai valori di scambio che si
susseguono all’interno degli orari di negoziazione. Il mercato Forex ad esempio inizia a trattare dalle
17:30 GMT della Domenica per terminare alle 17:30 GMT del Venerdì. Quindi possiamo dire che
c’è una trattazione continua per cinque giorni su sette. Altri strumenti finanziari hanno una trattazione
entro determinati orari della giornata.
Qui sotto è possibile vedere gli orari di trattazione delle azioni alla Borsa di Milano (MTA).
Gli orari del Forex invece sono regolati secondo il meridiano di Greenwitch essendo Londra la
piazza di riferimento.

L’andamento delle quotazioni viene quindi rappresentato sui grafici secondo intervalli temporali
predefiniti il cui intervallo più piccolo è il minuto. Ogni multiplo è quindi una possibile
rappresentazione, sebbene in pratica gli altri intervalli che si possono trovare sui vari tool di
rappresentazione grafica sono i seguenti:

• 1 minuto • 4 ore
• 5 minuti • 1 giorno
• 15 minuti • 1 settimana
• 30 minuti • 1 mese
• 1 ora

Lo studio dei grafici è la base di partenza di tutta l’analisi tecnica e va da sé che a seconda
dell’intervallo temporale scelto, chiamato time frame, cambiano le conclusioni teoriche che si
possono evincere dal grafico.

Molti trader, all’inizio della loro attività, si chiedono su quale time frame è meglio regolare i grafici.
La risposta non è uguale per tutti gli strumenti finanziari poiché diversa è la “liquidità” di questi. Per
liquidità si intende la frequenza degli scambi e la loro contiguità, ovvero la capacità del prezzo di
muoversi attraverso movimenti continui e senza “buchi”. La salita o discesa delle quotazioni fa
segnare scambi su tutti i tick del suo cammino e non salta.
Sui due book riportati in figura si può notare come il book di Fiat sia continuo, ovvero ogni livello è
in corrispondenza del tick successivo senza salti. Biesse invece è da considerarsi un titolo sottile ed
il suo book lo conferma: tra Bid e Ask c’è uno spread di 2 tick e tra i vari livelli ci sono buchi anche
di quattro tick. Nel gergo dei trader questo book è chiamato “Emmenthal svizzero” in chiaro
riferimento ai buchi.del prodotto caseario elvetico
Analogamente a quel che si osserva sul book, la liquidità di un titolo la si vede anche in relazione
alle transazioni effettuate nello scorrere del tempo. E’ sottile o “ingessato”, uno strumento che
scambia poco e per questa ragione il suo grafico diventa illeggibile a bassi time frame. Uno
strumento è invece chiamato liquido quando la frequenza dei suoi scambi permette di alimentare time
frame molto ridotti.

Nei due grafici seguenti si può notare come l’andamento delle quotazioni EURUSD abbiano un
andamento fluido e regolare anche a time frame di un minuto. Lo stesso non si può dire del grafica,
sempre ad un minuto, del titolo Cadbury PLC CFD.

Grafico a 1 minuto EUR USD


Grafico a 1 minuto contratto per differenza sul titolo Cadbury PLC CFD

La scelta del time frame è dettata dal tipo di operatività che si intende adottare. Se però l’operatività
scelta è quella intraday occorrerà selezionare il time frame più stretto che permetta una corretta
leggibilità del grafico. In linea generale valgono le seguenti regole:
• Deve esserci almeno uno scambio su ogni barra
• Se l’apertura coincide con la chiusura allora almeno uno dei valori High e Low

deve differenziarsi dalla chiusura (la barra non deve essere un puntino!)
• Le barre dovrebbero essere più estese di un tick
• La presenza di gap dovrebbe essere eccezionale e legata a speciali momenti

di volatilità del mercato di riferimento

Se questi punti sono soddisfatti allora siamo in presenza di un grafico su cui è possibile impostare
degli studi grafici in grado di prevedere (un tentativo) l’evoluzione prossima.

Come più avanti verrà ripreso, le formazioni di prezzo assumono spesso modelli caratteristici a
seconda del time frame con il quale vengono disegnati.
Ogni modello o pattern di prezzo è rappresentato da una determinata sequenza di barre.

L’andamento del prezzo è anche funzione del passare del tempo ed è quindi facilmente comprensibile
come nel brevissimo sia estremamente difficile assistere a variazioni ampie in grado di generare sul
grafico una moltitudine di modelli (pattern) mentre sul medio periodo è normale.

Un operatività di scalping (trading intraday basato su entrate ed uscite fulminee che puntano a
guadagnare pochissimi tick o pip) richiede time frame ristrettissimi (in genere 1 minuto sul Forex ).

Un operatività intraday che punta a guadagnare oltre i 20 pips o tick richiede invece un time frame
tarato dai 15 minuti all’ora a seconda delle preferenze personali (personalmente uso 15 e 30 minuti).

Nello swing trading settimanale sono indicati i time frame multipli dell’ora (1, 2 o 4 ore), mentre del
position trading il time frame più utilizzato è il giorno.

Grafico a 1 minuto per un operatività di Scalping

Grafico a 15 minuti per un operatività Intraday (notare che il grafica comprende l’intera giornata)
Grafico a 4 ore per un operatività di Swing trading (notate l’estensione su più giorni del grafico che
orientativamente dovrebbe comprendere una settimana)

Grafico daily per un operatività di Position trading (generalmente vengono raffigurati periodi
superiori ai sei mesi)

Tutti i grafici precedenti si riferiscono allo stesso strumento finanziario, il cross Dollaro americano
contro Franco Svizzero, però la loro lettura presenta differenti conclusioni proprio in rapporto alle
diverse analisi che si adottano sui diversi time frame:
Scalping: apertura al ribasso alla ricerca di un rimbalzo di 4/5 pips (SHORT) Intraday: apertura al
rialzo con assecondamento del trend di crescita (LONG) Swing: apertura al ribasso su rimbalzo
della lateralità (SHORT) Position: apertura al rialzo seguendo il trend (LONG)

Come è possibile che sullo stesso strumento vengano aperte posizioni opposte a seconda di come
venga tarato il time frame ? Per rispondere a questa domanda occorre introdurre alcuni concetti di
analisi tecnica (la disciplina che studia i grafici) e capirne le indicazioni.

Cenni di analisi tecnica


L’analisi tecnica dei mercati finanziari è quella disciplina che attraverso l’osservazione dei grafici
trae delle considerazioni circa l’evoluzione futura. In pratica cerchiamo attraverso l’osservazione dei
dati storici di estrapolare la direzione o posizione dei dati futuri.
E’ chiaro che l’analisi tecnica non da la matematica certezza dei suoi assunti ma offre un buon grado
di approssimazione ed una percentuale elevata di indicazioni corrette (siamo sempre in ambito
probabilistico).

L’analisi di uno strumento finanziari può avvenire in due modi:


• attraverso l’Analisi Fondamentale
• attraverso l’Analisi Tecnica

L’analisi fondamentale esamine le notizie, i bilanci, i piani d’investimento e di sviluppo di un


azienda o di un area economica (Eurolandia, ecc..), mentre l’analisi tecnica basa le sue conclusioni
SOLO sull’esame dei grafici in quanto l’andamento delle quotazioni sul grafico include già l’effetto
di qualsiasi elemento di analisi fondamentale, di elemento congiunturale o accidentale: il mercato
sconta tutto.

Un grafico, rappresentando un andamento, evidenzia come un prezzo possa salire (up trend), scendere
(down trend) o rimanere sostanzialmente invariato per lungo tempo (assenza di trend).

Uno dei modi più semplici (sebbene meno precisi) per cercare di interpretare l’andamento delle
quotazioni consiste nell’eliminare gli elementi di disturbo dati dalle oscillazioni anomale delle
singole barre e disegnando un grafico sulla media mobile delle quotazioni. Più la media è lunga e più
vengono eliminati gli effetti degli elementi di disturbo mentre più è corta (media di poche barre) più
riflette l’effettivo movimento.

Come si può notare da questo grafico settimanale, le medie “normalizzano” le quotazioni e danno
fluidità al movimento grafico.
L’uso delle medie è stato uno dei primi tentativi di predizione futura ed il suo teorema, fondato
sull’incrocio delle medie era il seguente:

Si ha un segnale di acquisto quando la media “breve” incrocia dal basso verso l’alto la media
“lunga” e, viceversa, si ha un segnale di vendita quando la media breve incrocia dall’alto verso il
basso la media lunga.

Come si può notare questa tecnica può dare dei buoni segnali di ingresso ma non offre altrettanto
validi segnali di uscita. E comunque è una tecnica che si adatta molto bene a time frame molto ampi
(nel grafico il time frame è il mese) e molto meno ai time frame di breve.

In questo grafico a 15 minuti i segnali sono ancora validi ma la loro resa troppo esigua
Con time frame a 1 minuto i falsi segnali si moltiplicano le operazioni in perdita.

Le regole di ingresso basate sulle medie mobili diventano improponibili qualora si assista ad un
esplosione di volatilità dove la media a breve continua ad attraversare la media lunga creando
un’enorme quantità di segnali che provocano piccole e frequenti perdite. A riprova di queste
affermazioni si può vedere in appendice i report dei backtest effettuati su un anno.

6.a Le Medie Mobili


Dopo aver anticipato l’uso delle medie per l’elaborazione di una previsione, andiamo a vedere come
vengono calcolate e quali tipi di medie si possono utilizzare.

Una media per definizione è il valore medio di una serie di valori. Il valore ottenuto è speso più utile
dei singoli valori contenuti nella serie poiché, paragonato con la media precedente, indica
l’evoluzione. Le variazioni degli indici azionari sono il risultato di un confronto tra il valore medio
dell’indice del giorno precedente con quello della giornata in corso. Ma il valore dell’indice è,
semplificando al massimo, la media dei valori di capitalizzazione delle azioni quotate. La media
viene calcolata sempre sullo stesso numero di dati utilizzando le ultime quotazioni disponibili. Il
prezzo medio di un azione è dato dalla media degli ultimi n prezzi, dove n rappresenta il numero di
periodi di osservazione.
Le variabili sono quindi due: la numerosità dei periodi (n) e l’ampiezza del periodo (il time frame).

n
∑Pn
Media
=
1
n

Se ad ogni nuovo dato (prezzo) ricalcoliamo la media delle ultime n chiusure, stiamo calcolando una
Media Mobile. Il termine mobile si riferisce al fatto che vengono considerati soltanto gli ultimi
prezzi desiderati: in una media mobile a 20 giorni, calcolato sui prezzi di chiusura, verranno presi in
considerazione gli ultimi 20 close di seduta. Mediando i prezzi quindi si può ottenere una linea
smussata che rende più semplice la visione del trend.

Considerando che gli elementi in mano all’analista per poter calcolare gli andamenti delle quotazioni
sono fondamentalmente tre (prezzo, tempo, volume) occorre utilizzare questi elementi, combinandoli,
per ottenere indicazioni maggiormante significative che ci aiutino ad interpretare i grafici.

Esistono diversi tipi di medie mobili che differiscono tra loro semplicemente nella formula di
calcolo generando così i segnali più o meno sensibili alle variazioni dei prezzi. I principali sono i
seguenti:

6.a.i Media Mobile Semplice (Simple Moving Average, SMA)

Detta anche aritmetica e la cui formula è quella indicata ad inizio pagina, rimane quella più usata
dagli analisti e di più facile calcolo. Vengono presi i dati di un determinato periodo e ne viene
calcolata la media sommandoli fra loro e dividendo per il numero totale di valori. Questo tipo di
media però viene spesso criticata da molti in quanto assegna la stessa importanza ad ogni singolo
dato: in una media mobile a 100 periodi l'ultimo valore ha la stessa importanza, 1% di "peso", del
primo valore.

6.a.ii Media mobile ponderata


(Weighted Moving Average, WMA)
E’ stata ideata per ovviare al problema delle medie mobili semplici riguardo al peso da assegnare ai
valori presi in considerazione.
n
∑P ×nn
WMA
=
1
n
∑n
1
Il suo calcolo prevede che, prendendo in esame una media mobile a 10 periodi, la chiusura del
decimo giorno venga moltiplicata per 10, quella del nono giorno per nove, dell'ottavo giorno per otto
e così via. Così facendo si dà maggior peso agli ultimi valori; il totale verrà poi diviso per la somma
dei multipli, ovvero nel nostro caso sarà diviso per 1+2+3+...+10=55.

Resta il fatto che nonostante le varianti di calcolo anche questa media mobile non riesce a dare
istantaneamente un'idea di quello che sta accadendo sul mercato.

6.a.iii Media mobile esponenziale (Exponential Moving Average, EMA)

Questa media mobile viene generata da un sistema di calcolo molto più complesso che cerca sempre
di eliminare le carenze della media mobile semplice. Viene quindi dato un peso differente ai vari
prezzi, maggiore ai più recenti e minore a quelli più vecchi, fatto che porta molti a definirla media
mobile ponderata esponenziale. Nonostante dia un'importanza minore ai prezzi passati li include
ugualmente nel suo calcolo prendendo in esame quindi molti più valori di quelli definiti dal periodo
della media mobile.

Resta di fatto un indicatore quasi impossibile da generare se non attraverso il computer in quanto la
sua formula resta di difficile calcolo per qualsiasi analista.
6.a.iv Variazioni sul tema

A partire dalle medie sovra esposte, nell’intento di meglio descrivere l’andamento della serie si
sono elaborate numerose variazioni sul tema di cui qui di seguito se ne dà un accenno.

Media mobile adattiva


Uno dei problemi riscontrati nell'uso della media mobile riguarda la scelta del periodo da utilizzare;
mentre la media mobile veloce può risultare più efficace in un mercato che si muove poco, una più
lenta sarà preferibile in un mercato con un trend ben definito. Per ovviare a questo problema Perry
Kaufman ha ideato una media mobile che, utilizzando uno studio sulla volatilità presente nel mercato,
adatta la sua velocità. I calcoli e la teoria su cui si basa questo tipo di media mobile non sono di
facile apprendimento e si basano su concetti abbastanza avanzati sia di statistica che matematica. È
stato anche concepito un efficiency ratio, o rapporto di efficienza, che mette a confronto movimento
dei prezzi con il livello di volatilità. Quando rapporto di efficienza è elevato, il movimento è
maggiore della volatilità, favorendo la media più veloce; quando è basso, la volatilità è maggiore del
movimento, il che favorisce una media mobile più lenta. Incorporando l' efficiency ratio si verifica
un aggiustamento automatico della media mobile adattiva alla velocità più opportuna per il mercato
corrente.

Media pesata con i volumi (VWA, Volume Weighted Average) Questa media prende in
considerazione il prezzo ed i volumi scambiati in modo da dare più importanza ai prezzi più
frequenti. Di questa media ne esistono numerosi varianti basate sulle differenti tipologie di medie
basate sui prezzi.

6.b Gli Indicatori e gli Oscillatori


Se l’uso delle medie poteva portare a qualche indicazione, è con l’introduzione degli indicatori e
degli oscillatori che si ottengono dei segnali di ingresso uscita più definiti. Dato che i valore assunto
da questi strumenti ha una scala differente da quello delle quotazioni spesso la rappresentazione
viene inserita in una seconda finestra o grafico.

Sotto il grafico si possono notare le due finestre secondarie che includono rispettivamente l’MACD e
il Money Flow Index
L’indicatore è il risultato di una funzione matematica applicata a una serie storica di prezzi che
origina uno strumento che consente di osservare l'evoluzione dei prezzi da un'altra prospettiva,
indicando particolari situazioni quali divergenze, i livelli di ipercomprato e ipervenduto.
Questi indicatori ed oscillatori, così come tutte gli studi sulle serie storiche finanziarie si basano sui
soliti dati elementari reperibili da ogni fornitore dati: Prezzo, Tempo e Volume.
Gli oscillatori sono chiamati così perché il loro valore assume valori discreti all’intorno di un
preciso range di valori (da zero a 100 o da 1 a -1), mentre gli indicatori assumono valori continui
non standard. Nel grafico raffigurato più sopra si può osservare come l’MFI oscilla tra 0 e 100
mentre il MACD assume valori non standard.

Molti economisti appoggiano i loro studi sull’andamento dei prezzi per spiegare il futuro ed altri
indicano come l’osservazione dei volumi sia l’origine del prezzo, si sono sviluppati due grandi
categorie di indicatori:

• Indicatori di Prezzo
• Indicatori di Volume

A loro volta queste famiglie si dividono in sottocategorie legate alla finalità d’indagine a loro
affidata (Momentum, Trend, Sentiment, Volume, Ipercomprato/Ipervenduto).
In questo paragrafo cercheremo di evidenziare i pregi dell’una e dell’altra categoria, ed
evidenziandone il loro uso come conferme a sostegno di studi più complessi.

6.b.i Indicatori di Prezzo

Gli indicatori di prezzo più famosi sono il ROC (Rate of Change), il MACD (Moving Average
Convergence Divergence), RSI (Relative Strenght Index), Stocastico.
Ma andiamo con ordine ed analizziamo il significato di ognuno.

RSI (Relative Strength Index) è un oscillatore che misura la forza relativa di un valore rispetto ad
un periodo prestabilito scelto, come sempre, in maniera del tutto arbitraria da chi effettua l'analisi.
L'oscillarore RSI ha un intervallo di oscillazione compreso fra 0 e 100, e generalmente si considera
un valore RSI superiore a 70 come un indice di ipercomprato mentre un valore RSI inferiore a 30
come un indice di ipervenduto. Naturalmente, l'intervallo compreso fra 70 e 30 viene considerato
zona neutra. Tuttavia, come sempre accade con l'analisi tecnica, anche in questo caso la scelta è
soggettiva. Ipercomprato e ipervenduto identificano una fase di mercato potenzialmente pericolosa
per la tendenza in atto: ipercomprato indica una situazione anomala di forza relativa del valore,
mentre ipervenduto segnala una situazione anomala di debolezza.

100 RSI =100−1+RS

Dal momento che RS equivale al rapporto fra la media degli incrementi e la media dei decrementi di
prezzo del valore nel periodo, l'oscillatore RSI assume valore uguale a zero quando la media degli
incrementi, nel periodo considerato, è eguale a zero; mentre assume valore uguale a 100 quando la
media dei decrementi è uguale a zero.
Come si vede, la circostanza che il periodo di tempo sul quale calcolare l'oscillatore RSI sia scelto
in maniera arbitraria, è un dato di non poca rilevanza, dal momento che l'oscillatore assumerà valori
diversi a seconda del periodo scelto, dando di conseguenza segnali operativi diversi sulla base di
elementi soggettivi. Operativamente la strategia suggerita dall’RSI indica di aprire una posizione
short per valori dell’indicatore superiori a 70 (area di ipercomprato) e di andare lunghi quando il
valore è inferiore a 30 (soglia di ipervenduto). La teoria che stà alla base di tutti quegli oscillatori
che indicano soglie di ipercomprato ed ipervenduto si spiega con la convinzione che gli strumenti
finanziari in circolazione siano in numero finito e quando questi sono passati di mano per acquisto è
logico aspettarsi dei realizzi in vendita. Questa conseguenza logica è tanto più sensata quanto più si
susseguono le transazioni monodirezionali (ovvero serie di transazioni tutte verso il Bid o tutte verso
l’Ask).

Il MACD (Moving Average Convergence Divergence) è un indicatore di momento che indica la


relazione tra due medie mobili di prezzi. Più esattamente, il MACD è dato dalla differenza tra una
media mobile esponenziale a 21 giorni ed una a 12 giorni. La media mobile esponenziale a 5 giorni
(signal line) della prima linea viene poi tracciata per individuare le opportunità di acquisto o di
vendita. In particolare si ha un segnale di acquisto quando il MACD buca dal basso la signal line,
mentre si ha un segnale di vendita nel caso opposto. Questi incroci vengono definiti crossovers. In
genere gli incroci importanti del MACD si verificano lontano dalla linea mediana dello zero. Gli
incroci vicini alla linea dello zero, infatti, molto spesso non producono movimenti di rilievo,
suggerendo poca reattività del mercato. Il MACD indica tra l'altro quando un titolo è ipercomprato o
ipervenduto, mostrando probabili inversioni nella tendenza del prezzo. Se è maggiore di zero indica
una situazione di ipercomprato, se è inferiore allo zero indica una situazione di ipervenduto.
Il R.O.C. (Rate-Of-Change) è un indicatore calcolato dal rapporto tra la differenza della chiusura
più recente e la chiusura registrata n periodi indietro. Il risultato è la percentuale del prezzo del titolo
che è cambiata negli ultimi n periodi. Se il prezzo del titolo è più alto ora di n periodi indietro, il
ROC sarà un numero positivo

I parametri del ROC sono i seguenti :


Time Periods. Indica il numero di periodi da utilizzare per il calcolo La formula per il calcolo è:

R.O.C. =P −Pn ×100Pn


P indica l'ultima chiusura e Pn la chiusura di n periodi indietro.

Il rapporto viene moltiplicato per 100 allo scopo di regolarizzare l'oscillatore attorno ad una linea
dello Zero.
Il Roc misura il tasso di variazione delle quotazioni. Le applicazioni di un sistema che utilizza questo
indicatore di momentum sono sostanzialmente tre:

• utilizzare la linea dello zero come generatrice di segnali (acquisto al superamento della linea in un
trend al rialzo, vendita alla perforazione in un trend al ribasso)
• analisi degli estremi della banda di oscillazione, allo scopo di mettere in evidenza situazioni di
mercato anomale
• analizzare le divergenze fra il grafico dell'oscillatore ed il bar chart

6.b.ii Indicatori di Volume


Gli indicatori di volume più famosi sono l’MFI (Money Flow Index), L’Intraday Intensity e l’OBV
(On Bilance Volume).

L’ OBV (On Balance Volume) è un indicatore che si basa sull’assunto che i grossi investitori
entrano sul mercato prima che i prezzi inizino un trend e ne escano prima che il trend finisca. Un
analisi dei volumi evidenzierebbe come questi aumentino all’inizio di un movimento rialzista per
diminuire poco prima del suo termine.

Joseph E. Granville, il suo ideatore, si basava sul presupposto che le cosidette mani forti entrano
(fase di accumulo) o escono (fase di distribuzione) dal mercato in anticipo rispetto alla massa degli
investitori.

L’OBV rappresenta la somma algebrica dei volumi scambiati nelle varie sedute di borsa. Per il suo
calcolo si sommano i volumi del giorno in questione al valore dell'indice OBV del giorno
precedente, nel caso in cui si è avuto un aumento del prezzo mentre si sottraggono i volumi del giorno
in questione al valore dell'indice OBV del giorno precedente, nel caso in cui si è avuto un ribasso del
prezzo.

Se Close0 – Close1 > 0 allora Indice = Indice + Volume scambiato Se Close0 – Close1 < 0 allora
Indice = Indice - Volume scambiato
Ed infine
OBV = OBV + Indice
Dove C rappresenta il valore di chiusura dei periodi 0 e 1 mentre V è il volume degli scambi.

Nella rappresentazione grafica dei volumi viene tenuto conto del loro segno positivo o negativo
L'OBV ha le sue radici su uno dei principi fondamentali dell'analisi tecnica, in base al quale quando
si verifica un aumento dei prezzi, questo deve essere confermato dalla presenza di volumi in crescita.
Un rialzo con volumi in calo è un indizio di debolezza nella forza del trend. Dall'incrocio dell'OBV
con l'andamento dei prezzi si possono trarre i seguenti segnali operativi:

• OBV decrescente con prezzi in aumento o mercato in fase di congestione è un segnale di


indebolimento del titolo
• OBV crescente con prezzi in diminuzione segna un probabile inversione di tendenza
• OBV uniforme con i prezzi, non rilascia segnali o conferma la tendenza

L’MFI (Money Flow Index) è un indicatore di momentum che misura la forza dei volumi al rialzo o al
ribasso di un titolo. Quando un titolo viene scambiato ad un prezzo più alto (Uptick), il Money Flow
è positivo, quando invece viene scambiato ad un prezzo più basso (Downtick), il Money Flow è
negativo. La somma algebrica degli Uptick e dei Downtick genera il valore dell’MFI.
Tale indicatore serve per segnalare la possibilità di una imminente inversione di tendenza. Infatti,
secondo l'analisi tecnica, le divergenze fra l'andamento del prezzo e l'indicatore (per esempio il
prezzo sale mentre il Money Flow segnala una inclinazione negativa) sono un chiaro segnale di
possibile inversione.

Proprio in virtù del fatto che l’indicatore assume importanza nel confronto con l’andamento dei
prezzi l’MFI è un importante strumento di conferma delle strategie decise tramite altri studi.

L' Intraday Intensity è un indicatore creato da David Bostian e viene anche chiamato Money Flow,
Accumulation-Distribution o Daily Volume Indicator e mette in relazione il movimento di prezzo con
i volumi scambiati di un titolo.

II
Std
=

n 2×Closen −Highn −Lown
1 (High −Low )×Volume
n n n

Come si vede dalla formula l'indicatore confronta il prezzo di chiusura con il minimo e il massimo
della giornata. Chiusure vicine ai massimi produrranno valori dell'Intraday Intensity positivi,
chiusure vicine ai minimo produrranno valori negativi, chiusure vicine alla media tra minimo e
massimo produrranno valori nulli o molto piccoli.

La costruzione dell'indicatore si basa sul concetto fondamentale che gli scambi saranno stati
alimentati da forze rialziste quanto più la chiusura si sia posizionata vicino al massimo di giornata,
allo stesso modo una chiusura vicino ai minimi sarà stata guidata principalmente da forze ribassiste,
che sono riuscite a prendere il controllo al termine della giornata.

La chiusura del giorno precedente non può in alcun modo influenzare il valore corrente
dell'indicatore. Parimenti il valore odierno dell'apertura non viene considerato, rendendo ininfluente
il segno (candela bianca o nera) della giornata borsistica corrente.
Il lato negativo di tale indicatore sta inoltre nel fatto che non viene posta alcuna attenzione
all'ampiezza del range della giornata, misurando esclusivamente la posizione relativa della chiusura
per fornire da moltiplicatore al volume; l'entità dello scostamento risulta infatti solo in termini
percentuali e non assoluti.

Dell'Intraday Intensity esiste anche la versione normalizzata che ha il pregio di dare migliori
indicazioni grafiche, con divergenze fra prezzi e indicazioni più evidenti. La formula dell'indicatore
normalizzato a 21 giorni è:

II
Norm =∑n Volume
1
IIstd ×100

In pratica, la versione normalizzata divide la formula dell'indicatore standard per la sommatoria dei
volumi per lo stesso numero di n periodi e moltiplica il risultato per 100.

Il risultato è quello di un indicatore che si muove attraversando al rialzo o al ribasso la linea di


equilibrio costituita dallo zero e la cui direzione determina una maggiore presenza di forze in
acquisto o in vendita.

6.c Le fasi di mercato


L’andamento delle quotazioni assume andamenti irregolari che ad un profano possono sembrare più
casuali che razionali. In realtà i grafici documentano una tendenza in atto che porta gli investitori a
comprare od a vendere determinati strumenti finanziari. Le aspettative degli investitori giocano un
ruolo determinante sull’andamento delle quotazioni: la mancanza di notizie o di indicazioni
macroeconomiche porta ad un clima di incertezza che deprime i mercati.

6.c.i Il Trend

La linea di un grafico, può salire, può scendere o può rimanere orizzontale. In termini generici un
andamento in crescita costante evidenzia un trend positivo (Up Trend), mentre una discesa costante
indica un trend negativo (Down Trend) mentre un andamento pressoché piatto indica l’assenza di
trend.

Up Trend
Down Trend

Il Trend è una delle condizioni in cui si può trovare il mercato. La più propizia poiché
tendenzialmente il movimento rimane stabile per lungo tempo e offre profitti “facili”.
6.c.ii La Lateralità

Creare dei programmi, Trading System, per mercati in trend è abbastanza semplice poiché sono molti
i segnali che possono aiutare ad individuare la direzione del mercato.

Ma il mercato non è sempre in trend. Spesso, dopo una lunga salita o discesa, le quotazioni si
assestano all’interno di un range, anche ampio, nel quale rimangono prigioniere per lungo tempo.
Questa seconda fase viene chiamata Laterale in quanto le quotazioni si muovono “in laterale” senza
andare con decisione né su né giù.
Le fasi laterali sono particolarmente tecniche in quanto riconoscerle in tempo reale non è semplice (a
posteriori sono in tanti a riconoscerle ma ormai il tempo delle occasioni è passato …).

6.c.iii La Volatilità

Esiste una terza fase di mercato caratterizzata da brusche e repentine variazioni di prezzo dettate più
dall’isteria degli investitori che da ragioni razionali. I volumi sono spesso modesti e si assiste di
sovente a quotazioni che “saltano” intervalli di prezzo creando i cosiddetti gap: gap down quando i
prezzi saltano al ribasso e gap up quando saltano al rialzo.

La creazione di gap frequenti spesso porta sul grafico a formazioni denominate “isole”. Le isole sono
intervalli di tempo in cui le quotazioni subiscono dei gap al rialzo e successivamente al ribasso (o
viceversa). Un isola è generalmente un periodo in cui le quotazioni sono “staccate” al rialzo o al
ribasso dall’andamento precedente il gap di apertura della formazione.

Durante la volatilità sono spesso presenti barre di estensione particolarmente ampia la cui apertura e
chiusura possono anche coincidere. Non vanno confuse con le barre tipiche di un espansione al rialzo
od al ribasso ove i volumi sono importanti e solitamente l’apertura e la chiusura si posizionano
vicino agli estremi opposti. Le ampie barre volatili sono spesso denominate “Spike”.

Questa particolare fase di mercato è detta di volatilità.

Per capire, matematicamente se siamo in una fase volatile o meno è sufficiente utilizzare uno dei tanti
indicatori di volatilità. Il più diffuso è l’ATR (Average True Range) che misura la distanza massima
media tra gli estremi della barra precedente e quella successiva.

ATR
n
=
(n −1)• ATRprecedente +TRcorrente
nn
Dove TR identifica il True Range, ovvero il massimo tra la distanza tra il massimo degli estremi
delle ultime due barre.
Alcune caratteristiche generali della volatilità sono:

• E’ ciclica, aumenta e diminuisce


• E’ persistente
• Tende a ritracciare verso la sua media, il cosiddetto fenomeno della “mean reversion”, cioè la
volatilità tende tornare sui suoi valori medi o normali dopo aver raggiunto picchi estremi

Uno degli indicatori di Volatilità più interessanti ai fini dell’analisi del Sentiment è l’indice Vix.

Il Vix misura la volatilità implicita a breve termine delle opzioni “at the money” sull’indice S&P
500 quotate sul mercato delle opzioni del CBOE (Chicago Board of Trade). Il Vix misura il prezzo
che gli investitori sono disposti a pagare per opzioni che permettono di vendere un titolo ad un
prezzo determinato entro un certo periodo di tempo, proteggendosi quindi dal ribasso.
Durante una fase di mercato rialzista la volatilità tende a diminuire, mentre durante gli impulsi
correttivi tende ad aumentare repentinamente.
Un basso livello di volatilità tende a sostenere il trend rialzista eventualmente in atto.

L'interpretazione classica è di posizionarsi al rialzo quando l'indice taglia al ribasso la media mobile
a 20 giorni e si mantiene al di sotto di quest'ultima, invertendo la posizione in caso di rottura al rialzo
della stessa.
Quando il Vix si trova in ipercomprato o al contrario, in ipervenduto, sulla base di parametri
variabili, si individua una buona opportunità per posizionarsi sul mercato al ribasso o nel caso
contrario al rialzo, assumendo la media mobile a 20 giorni come primo supporto/resistenza.

Valori estremi del Vix si registrano su minimi importanti del mercato azionario Usa. Tanto per
esemplificare, durante la prima guerra del Golfo (ottobre 1990) l’indice raggiunse un valore di 36,
nel novembre 1997 (crisi Asia) arrivò a 38, nell’ottobre 1998 (crisi bond emergenti ed LTCM) toccò
46, nel settembre 2001 (attentati alle torri gemelle) raggiunse i 44 e tra luglio e ottobre 2002
(scandali contabili Enron, Worldcom) arrivò a 45. A seguito della crisi dei subprime che ha scosso
l’intero mercato finanziario a cominciare dal maggio 2007, l’indice Vix ha raggiunto l’incredibile
valore di 81,17 a fine ottobre 2008.

L'efficacia di questo indicatore non è altrettanto valida in corrispondenza di valori molto bassi che
non necessariamente individuano i massimi del mercato azionario.
Se l’ATR e il Vix sono due importanti valori che misurano la volatilità, è con le Bande di Bollinger
che riusciamo graficamente a riconoscere la volatilità ed a confrontarla con lo stesso ordine di valori
delle quotazioni.

Le Bande di Bollinger si basano sulla volatilità di un titolo. La volatilità può essere vista come la
deviazione standard (standard deviation) statisticamente definita come scarto quadratico medio o
radice quadrata della varianza.
Per calcolare le Bande di Bollinger si usa dapprima una media mobile a n periodi (spesso 20) a cui
viene aggiunto o sottratto il valore della deviazione standard moltiplicata per un determinato fattore F
(spesso intorno a 2).

La banda superiore: è quindi ottenuta aggiungendo alla media mobile F volte la deviazione standard.
La banda centrale (se la si vuole visualizzare) è data dalla media mobile. La banda inferiore è
calcolata sottraendo alla media mobile F volte la deviazione standard.

Una maggiore ampiezza delle bande corrisponde ad un'alta volatilità. Una minore ampiezza
corrisponde viceversa a una bassa volatilità. Bande convergenti rappresentano volatilità in
diminuzione. Bande divergenti rappresentano volatilità in aumento.

È possibile variare leggermente i parametri n ed F. Valori che secondo lo stesso Bollinger possono
essere utilizzati sono i seguenti:
n = 20 F = 2 Valido in generale
n = 10 F = 1.9 Se c'e' la necessita' di usare una media mobile molto corta
n = 50 F = 2.1 Se c'e' la necessita' di usare una media mobile molto lunga

Al valore 2 del moltiplicatore della deviazione standard corrisponde un insieme del 95% delle
quotazioni comprese all’interno delle bande. Più si aumenta il moltiplicatore e più si aumenta questa
percentuale.

Approssimativamente, dal punto di vista operativo, le Bande di Bollinger danno segnali di acquisto e
vendita quando si verificano le seguenti condizioni:

- quando il grafico del prezzo esce dalla banda superiore e successivamente vi rientra, si ottiene un
segnale di vendita; questo corrisponde ad un rapido aumento del prezzo e ad un successivo
rallentamento o aggiustamento;
- quando il grafico del prezzo esce dalla banda inferiore e successivamente vi rientra, si ottiene un
segnale di acquisto; cioè il prezzo è calato molto velocemente fino ad arrestarsi e -probabilmente- ad
invertire il trend.

In realta' le Bande di Bollinger da sole possono dare falsi segnali in quanto ad esempio il grafico
potrebbe uscire in basso, rientrare e continuare il trend discendente. Per questo motivo si utilizzano
altri indicatori, non correlati, a sostegno dell’operatività suggerita. Quando 2 o più indicatori
cofermano il comportamento delle bande, allora il segnale acquista significato.

In linea generale si posono evidenziare diverse tipologie di operatività con le Bande di Bollinger a
seconda che ci si trovi in una delle tre fasi distinte di mercato.

Nelle fasi laterali gli sconfinamenti oltre le bande suggeriscono un prossimo rientro (e quindi
inversione del movimento in atto).
Durante i trend gli sconfinamenti sono spesso da intendersi come temporanee piccole correzioni.

Vedremo più avanti come utilizzare al meglio i segnali derivanti dallo studio delle Bande di
Bollinger e degli indicatori di sostegno (vedi appendice B).

6.d Livelli importanti


L’andamento delle quotazioni è spesso contrassegnato da livelli di prezzo ove le quotazioni
rimbalzano o stazionavano per periodi di tempo superiori al normale. Su questi livelli vengono
scambiati volumi generalmente maggiori. Il significato di questi livelli è da intendersi come una
pausa o presa di beneficio degli investitori che erano entrati nel trade e hanno raggiunto un sufficiente
livello di remunerazione (o, al contrario hanno raggiunto il livello massimo di perdita accettabile).
In genere questi livelli sono anche condizionati da scelte psicologiche (il prezzo “tondo”, la cifra
intera, l’incrocio tra due medie di lungo periodo come quella a 50 periodi con quella a 200) ma
molto più spesso sono determinate da livelli storici o massimi e minimi di periodo.

6.d.i Supporti e Resistenze

Quando un prezzo rimbalza su una quotazione si definisce quel livello “Supporto”. Quando la salita
delle quotazioni rimbalza sotto una quotazione quel livello viene definito “Resistenza”.
Nel trading effettuato con i Book questi livelli intraday sono riconoscibili per la sproporzione di
proposte di negoziazione che si trovano su questi livelli (i supporti e le resistenze sono infatti
caratterizzati da volumi molto elevati). Quando un supporto od una resistenza vengono “rotti” si
assiste ad una rapida espansione della volatilità (break-out) poiché i volumi sino ad allora scambiati
a livelli compressi (i supporti e resistenze non sono livelli precisi ma range di prezzo limitati) si
“spalmano” su quotazioni meno “gettonate”.
E’ interessante notare come spesso i livelli di resistenza una volta rotti diventino livelli di supporto e
viceversa.

Un altro fattore da tenere importante sono i livelli storici. Spesso si dice che i prezzi hanno memoria.
Sarebbe più corretto dire che gli investitori hanno memoria (soprattutto i gestori fondi …) in quanto
analizzando grafici di lungo periodo si possono individuare medesimi punti di supporto e resistenza a
distanza di anni (nel grafico sopra si può notare come una resistenza del 1998 sia ancora un livello
importante dieci anni dopo !).

6.d.ii I Pivot

Altrettanto importanti come i supporti e le resistenze di lungo periodo sono i Pivot Point di breve
periodo (intraday). Questi punti identificano 7 livelli di prezzo che dovrebbero caratterizzare
l’andamento delle quotazioni della giornata.

I Pivot sono calcolati mediante semplici formule matematiche che consentono di determinare dei
possibili valori di supporto e resistenza per la seduta successiva.

I Pivot vengono maggiormente utilizzati dai trader che lavorano in intra-day su Cowered Warrant ed i
derivati in generale che hanno necessità di prendere determinati livelli di prezzo a cui entrare e
uscire nel corso della seduta. Questi punti vengono presi in considerazione per determinare la
direzione primaria del mercato identificando i principali livelli di supporto (Pivot Low) e di
resistenza (Pivot High). I livelli dei Pivot possono anche essere utilizzati per generare livelli validi
in un'ottica settimanale o mensile anche ai singoli titoli azionari ed indici.

AP
=

( H +L +C) 3
S1 = (2× AP)− H R1 = (2×AP) −L

S2 = AP−(R1 − S1) R2 = (AP−S1) +R1 R3 = R2 +(H −L) S3 = S2 −(H −L)


Dove S1 è il livello del primo pivot di supporto ed R1 il primo pivot di resistenza e così via. AP è il
prezzo medio (Average Price), H è il prezzo massimo della giornata precedente, L il prezzo minimo e
C corrisponde alla chiusura.

Il principio dei pivot è nato come un elemento di contenimento dei prezzi tra i vari supporti e
resistenze, L' interpretazione dei segnali non è solo concernente l'inversione del trend in vicinanza di
una di queste quote ma anche quella della perforazione di tali livelli può essere un segnale di
ingresso favorevole. Infatti anche se il perforamento dei pivot è inteso come un segnale fallito di
inversione, la rottura di un importante livello critico assume un significato di forza del trend in atto,
ed è quindi un segnale di continuazione rialzista o ribassista che sia. Da aggiungere che la tattica di
breakout si è rivelata pìù vantaggiosa di quella dell'inversione.

6.d.iii Cross Volume o Distribution level

A livello grafico sono molto utili gli indicatori relativi alla distribuzione del volume. Graficamente
vengono rappresentate attraverso istogrammi orizzontali le distribuzioni dei volumi in
corrispondenza dei livelli di prezzo. Comparando le barre del Cross Volume (anche chiamato
Distribution level) con I livelli Pivot è possibili scoprire quali livelli sono realmente significativi e
quali sono solo teorici. Nel grafico sottostante evidenzio con delle linee orizzontali I volumi più
significativi e si può vedere come queste intersecano livelli di supporto o resistenza testati più volte.

E’ chiaro che l’uso di questi strumenti risulta molto più semplice a livello visivo che programmatico
in quanto determinare tramite un programma quale siano i livelli significativi in archi temporali
anche ampi non è né semplice né veloce.

Operatività
La popolazione degli investitori si compone di persone ed entità che adottano particolari strategie di
investimento a seconda della finalità per la quale operano:

• Profitto
• Copertura economica

Le aziende, attraverso i loro addetti, operano sul mercato per coprire i rischi legati alle oscillazione
dei mercati valutari (per congelare i rischi su commesse multicurrency), dei mercati delle
commodities (per tenere sotto controllo l’incidenza delle materie prime), e dei tassi di interesse (per
livellare e calmierare il costo del denaro).

I privati e le società di investimento (SIM, fondi e fiduciarie) operano gli investimenti alla ricerca di
un profitto: adoperano il capitale di rischio come strumento per generare ricchezza e remunerare
adeguatamente l’impegno delle risorse impiegate.

Al capitolo dedicato ai time frame si era dimostrato come cambiando la scala temporale di un grafico
ed applicando sullo stesso le medesime strategie di investimento queste possano generare azioni
molto diverse.
Ebbene, gli investitori professionisti sono soliti perfezionare le loro tecniche con riferimento a time
frame simili. Per cui sarà molto frequente incontrare trader specializzati solo su determinati intervalli
temporali ignorando gli altri.
E’ normale quindi pensare che un trader abituato a compiere centinaia di operazioni giornaliere non
sappia come gestire del capitale investito sul medio lungo periodo.
Ed è altrettanto normale che i cosiddetti “cassettisti” ignorino il significato della parola “scalper”.

7.a Position Trading (il “Cassettista”)


La figura di investitore più comune sino a metà degli anni ’80 era costituita da persone che
acquistavano titoli di società quotate e, sulla base di notizie derivate dall’analisi fondamentale e da
consigli o suggerimenti giunti dalla lettura di giornali e riviste economiche.
La durata dell’investimento medio era ed è ancora oggi l’arco di diversi anni (spesso più di dieci).
Quasi come fosse un “fondo pensione”. L’idea che stà alla base di questa tipologia di investimento è
che (se i titoli appartengono a società sane monopoliste o facenti parte di mercati in lenta espansione)
le quotazioni nel lungo andare tendono a salire naturalmente per effetto stesso dell’aumento dei costi
di produzione e di vendita che determina un aumento fisiologico dei numeri (se un automobile costa
diecimila euro nel 2008 è lecito aspettarsi che costi ventimila euro nel 2018).
Chiaramente l’investitore sa che durante tutta la durata del suo investimento il valore dei suoi titoli
potrà salire o scendere anche pesantemente. Quel capitale è come se fosse indisponibile sino alla sua
ipotetica scadenza fissata molti anni dopo.
Coloro che avevano investito in titoli prima della crisi del ’29 hanno dovuto aspettare quarant’anni
ma hanno recuperato il loro valore. Nella speranza, e convinzione, che crisi come quella del ’29 non
siano così frequenti e naturale aspettarsi un tempo più ragionevole per vedere il proprio capitale
finalmente “lievitare” (la crisi aperta in questi mesi potrebbe essere simile a quella del ’29).

Le tecniche operative sono semplici ma eterogenee: occorre informarsi tramite gli organi di
comunicazione (stampa economica, siti internet istituzionali delle aziende quotate, sito degli enti
proposti al controllo delle aziende quotate) dei dati fondamentali, ovvero dei dati di bilancio
comparati e proiettati in ottiche temporali di medio e lungo termine. Spesso occorre studiare anche
l’evoluzione dei mercati di riferimento dell’azienda quotata per prevedere mutamenti
macroeconomici che possano apportare modifiche alle previsioni microeconomiche.

Se invece lo strumento finanziario che si intende tradare è una valuta od il suo cross (scambio di
egual valore tra due valute) sarà l’evoluzione degli scenari geopolitici ad essere oggetto di studio.
Possibili scenari bellici così come elezioni dei massimi esponenti delle economie guida (da qui
nascono pure tutte le teorie al riguardo sulle elezioni di fine mandato da quelle di metà mandato).
Il cassettista è comunque un investitore prudente e sa che la sua migliore arma di difesa è la
diversificazione e perciò tenderà a distribuire il rischio su più titoli o strumenti finanziari il più
possibile correlati tra loro.

Gli strumenti operativi necessari sono ridotti all’osso in quanto la velocità di esecuzione degli ordini
non ha importanza così come non assume importanza il valore od entità delle commissioni. L’arco
temporale dell’investimento farà si che questi valori siano insignificanti nell’insieme
dell’operazione. Tutto quello che serve è carta e penna e molte letture economiche. La piattaforma di
trading utilizzata in apertura di posizione molto probabilmente sarà sconosciuta ai più a fine
operazione.

Nel grafico è
rappresentato l’andamento del titolo ERG dal 2003 al 2008.

A livello psicologico il cassettista è l’investitore più tranquillo. Tipicamente gli investimenti in


operazioni ad alto rischio come gli investimenti azionari o strumenti derivati costituiscono al
massimo un 30% dei risparmi e un loro ipotetico annullamento non è considerato come una catastrofe
ma solo un rischio calcolato che matura e si accetta nel tempo.

7.b Trading Multiday (Daytrading)


Quando l’operatività comincia a diventare più “frequente” (spesso le ragioni che spingono
l’investitore sono la ricerca di un secondo reddito) ecco che gli orizzonti temporali, affinché
l’investimento si completi, calano drasticamente a periodi compresi da pochi giorni a qualche mese.
L’operatività resta ancora ordinaria e quindi il livello di rischio generalmente rimane confinato ad
investimenti senza leva finanziaria (titoli) o a leva volutamente ridotta (derivati con leva
personalizzabile).
Iniziano ad avere importanza le piattaforme di trading anche se la velocità di esecuzione e la
possibilità di avere dati in tempo reale non sono un esigenza. E’ importante avere la possibilità di
inserire stop loss ed eventualmente dei take profit. Nel caso di utilizzo di strumenti derivati è
fondamentale poter decidere l’entità della leva finanziaria in modo da ridurre gli oneri legati al costo
del denaro e, soprattutto, attutire gli effetti della volatilità sui margini di garanzia.
La perdita generalmente accettabile oscilla intorno al 5/10% dell’investimento, mentre un buon
livello di profitto si ottiene a partire dal 10%.
I grafici assumono rilevanza ed il metro di giudizio per la selezione dello strumento è un mix tra
analisi fondamentale e studio dei grafici (analisi tecnica).
Molto spesso le analisi partono dall’esame comparato di grafici dello stesso strumento ma plottati su
diversi time frame per poter scegliere il momento migliore per l’entrata e, possibilmente, passare
subito in guadagno (queste sono le intenzioni …).
Tecnologicamente cominciano ad essere necessarie delle piattaforme di trading con capacità
informative in grado di tracciare grafici storici ed applicare sugli stessi note o linee (per evidenziare
i livelli di supporto e resistenza di medio periodo).
Le strategie che si possono utilizzare sono moltissime e l’analisi tecnica si combina con le
metodologie di riconoscimento dei pattern, ovvero modelli standardizzati di combinazioni di
sequenza di candele.

Nel trading multiday gli obiettivi sono molto diversi da quelli di breve termine così come anche da
quelli di lungo termine. Si è alla ricerca di strumenti in grado di muoversi in un tempo
ragionevolmente circoscritto ma abbastanza ampio da poter prendere in considerazione anche
strumenti poco liquidi (solitamente detti “sottili”).

In questa operatività i take profit, o obiettivi di profitto, sono strumenti frequentemente utilizzati
poiché l’entrata in posizione è stata determinata proprio da una previsione degli obiettivi
raggiungibili. Rimanere in posizione ad oltranza potrebbe rivelarsi una politica che non paga.

7.c Swing trading


Quando i trade vengono aperti a inizio settimana e chiusi entro il venerdì, siamo in presenza di uno
swing trading. Il termine Swing deriva dal fatto che generalmente le quotazioni disegnano un
andamento sinusoidale, segnando un massimo e poi rintracciando sino a segnare un minimo per poi
scambiare all’interno di questi due punti, i quali diventano una resistenza ed un supporto importanti.
La rottura di questi livelli viene considerata un segnale di forza. Naturalmente il periodo è
suscettibile di variazioni ma le basi dello swing è la formazione di un trading range3 che inquadri il
movimento dello strumento finanziario per un periodo di tempo.
L’analisi tecnica può essere l’unica analisi di cui lo swing trader ha bisogno. L’individuazione dei
livelli che delimitano gli estremi del trading range e la fissazione dei punti di entrata e uscita è
l’elemento fondamentale su cui ruota questa operatività.
Operativamente è necessaria una piattaforma che abbia una buona capacità informativa e sappia
rappresentare in grafici gli andamenti e gli studi applicati (ovvero sappia rappresentare graficamente
gli indicatori di analisi tecnica così come gli oscillatori ed i volumi). Per esaminare più strumenti e
trovare facilmente i candidati al trade occorre molto spazio e quindi sono altamente consigliati
almeno due monitor.
A cominciare da questo tipo di operatività le possibilità di trading si sdoppiano in discrezionale ed
automatico. E’ infatti quest’ultima la scelta migliore per operare contemporaneamente su centinaia di
strumenti (titoli o derivati) che nel range temporale dello swing trading offrono le maggiori
opportunità di successo.
3 Un trading range è un intervallo abbastanza ampio di prezzi in cui le quotazioni continuano ad
oscillare. In genere questo modello contraddistingue le fasi laterali, ovvero quei periodi (brevi o
lunghi è indifferente) in cui non esiste una direzione specifica (trend) ma i prezzi oscillano dentro gli
estremi generalmente posti in corrispondenza di supporti e resistenze importanti.

7.d Trading intraday


L’operatività quotidiana è rappresentata dal trading intraday. Le operazioni di trading iniziano alla
mattina e terminano la sera (raramente si portano al giorno dopo).
Si osservano i grafici a più time frame per individuare quegli strumenti che nella giornata potranno
avere movimenti importanti e si prendono le decisioni di entrata osservando i grafici più “granulari”,
ovvero quelli con time frame più ridotti sebbene ancora “leggibili”.
L’osservazione del book ci permette di avere
un ulteriore conferma circa i livelli di
giornata denominati Pivot.
Dovendo osservare e confrontare più time
frame occorre tenere aperti più finestre
grafico, un book per ogni strumento trattato
ed una watchlist, ovvero una lista dei titoli o
strumenti che terremo sotto osservazione,
così come una finestra del nostro portafoglio
ordini con le indicazioni in tempo reale delle
sue variazioni. La possibilità di inserire
ordini condizionati diventa un esigenza
irrinunciabile così come è importante poter
avere tutte le altre caratteristiche utili a
diminuire il carico di lavoro dell’operatore
(che porterebbero solo ad un aumento
pericoloso dei livelli di ansia e pressione
psicologica, estremamente dannosi
nell’attività di trading):

• Inserimento di Stop Loss e Take Profit


• Attivazione di Trailing Stop e sue varianti4
• Frazionamento o raddoppio della posizione
4 Come vedremo più avanti quando si parlerà di tecniche di money management, esistono infinite
varianti dei trailing stop a cominciare dai livelli di attivazione e dalle posizioni protette.

• Stop & reverse della posizione5


• Inserimento di ordini condizionati autoescludenti6
• Interfacciamento informativo e dispositivo con strumenti esterni7

Per l’operatività quotidiana è necessario avere i dati in tempo reale aggiornati in “Push”, ovvero
ottenere gli aggiornamenti in automatico delle quotazioni senza dover inviare nessuna richiesta di
aggiornamento tramite la pressione di un qualsiasi tasto del programma o della tastiera del computer
(aggiornamento altrimenti detto in “Pull”).
La mole di dati e la loro frequenza di aggiornamento richiede un collegamento internet ad alta
velocità (almeno ADSL a partire da 640 kbit in download). Mentre le richieste grafiche per sostenere
due monitor richiedono una scheda video adeguata (doppia uscita video e risoluzione del monitor
uguale o superiore a 1024 x 1280 pixel).

7.e Trading intraday ad altissima velocità: lo Scalping


Esiste un ultima tecnica di trading basata sull’esecuzione di moltissime operazioni fulminee che
hanno l’obiettivo di guadagnare pochi tick8 per ogni trade.

L’utilizzo combinato di grafici e book è fondamentale anche se molti Scalper sono soliti utilizzare
solo il book.

Per operare con questa tecnica occorrono piattaforme di esecuzione velocissime (e quindi
collegamenti internet affidabili e veloci) per andare a mercato in meno di un decimo di secondo. I
migliori trade sono spesso conclusi nelle fasi di “fast market” ovvero nei momenti in cui le
quotazioni subiscono variazioni importanti accompagnate da un aumento considerevole dei volumi e
delle proposte di negoziazione (PDN), presenti sul book o che “aggrediscono” il book.
Dal gennaio del 2008 anche in Italia sono comparsi i book “profondi” già presenti da tempo su altre
Borse mondiali. Un book è una griglia in cui sono rappresentati i due insiemi delle proposte di
negoziazione (PDN) di chi vuole acquistare lo strumento negoziato (Bid o “denaro”) e chi lo vuole
vendere (Ask o “lettera”). In teoria, in
ogni book, i livelli di prezzo
raffigurati dovrebbero essere
tutti i prezzi contigui, ovvero
tra ogni livello di prezzo
dovrebbe esserci la sola
differenza di un tick o di un
pip per i cross del mercato
forex. Nella realtà è molto
frequente trovare book con
“salti” nei livelli. La
differenza tra il miglior
prezzo di vendita (primo Ask)
e la più alta proposta in
acquisto (primo Bid) è
definita Spread e per il mercato Forex, a differenza di tutti gli altri mercati, è artificiosamente
ingrandita poiché rappresenta la fonte di guadagno del Broker e dei Market Maker9 (spesso l’unica
fonte di guadagno).
5 Si definisce Stop & reverse l’ordine con il quale si chiude e si riapre una posizione di eguale
quantità ma segno opposto della posizione originaria. Se ad esempio siamo “lunghi” di due contratti
sul Futures DAX e le quotazioni tendono a scendere, valuteremo la possibilità di vendere quattro
contratti per poter chiudere i due lunghi ed aprirne due “corti” in una sola operazione. Generalmente
gli Stop & reverse hanno il vantaggio di essere eseguiti prima ed ad un minor costo commissionale o
di slippage (slittamento dei prezzi di aggiudicazione causati dagli spread e dalla velocità del
mercato).
6 Si chiamano ordini condizionati poiché la loro attivazione dipende dal verificarsi di una o più
condizioni (es. raggiungimento di un prezzo o di un valore di analisi tecnica) e autoescludenti poiché
spesso si inseriscono due ordini, uno di acquisto ed uno di vendita, ed il primo che si attiva cancella
l’altro.
7 Per interfacciamento si intende la possibilità di dialogare con altri software esterni (magari anche

creati dall’utente) in grado di ricevere i dati storici ed in tempo reale delle quotazioni nei suoi cinque
dati principali (Apertura, Chiusura, Massimo, Minimo e Volume) per il time frame selezionato e di
inviare ordini preconfezionati per l’apertura, chiusura o prenotazione di operazioni di trading.
8 Il Tick è la minima variazione possibile tra le quotazioni di uno strumento finanziario. Nel mercato
delle valute il termine Tick lascia il posto al termine Pip (Percentage In Point) che identifica la più
piccola variazione consentita.
I book possono essere visualizzati sia in orizzontale che in verticale. L’immagine precedente mostra
un book orizzontale a cinque livelli (cinque livelli di offerta ed altrettanti di domanda). Il pregio
della visualizzazione verticale è che essa rappresenta tutti i livelli di prezzo possibili anche se su di
un livello non ci sono proposte, evidenziando così i “buchi”.
Nelle due immagini è possibile vedere le due visualizzazioni del book e come si può osservare nel
book verticale è subito riconoscibile la presenza di buchi nella lettera tra il secondo e terzo livello e
tra il quarto ed il quinto. Lo stesso dicasi per il denaro dove c’è un buco tra il secondo e terzo
livello. Osservando la visualizzazione orizzontale questi buchi non sono riconoscibili a colpo
d’occhio.
9 I Broker sono gli intermediari economici che ricevono gli ordini dai clienti e li tramutano in ordini
sul mercato presso gli intermediari maggiori o emittenti dello strumento finanziario. Il Market Maker
è l’emettitore dello strumento finanziario che si impegna a mantenerne la liquidità ed a limitare gli
spread entro limiti prefissati.

Nell’attività di scalping la velocità è tutto ed ecco perché molti broker mettono a disposizione dei
loro clienti più esigenti piattaforme con book in grado di inviare ordini complessi con un solo click.

Considerando che il guadagno di uno scalper arriva dalla differenza di pochi tick (spesso addirittura
solo uno!) la possibilità di immettere ordini, modificarli, chiuderli o riversarli in frazioni di secondo
è essenziale. Specie durante le fasi movimentate in cui le quotazioni variano di venti o trenta tick in
meno di cinque secondi.

La necessità di operare con tempistiche così strette costringe lo scalper ad adottare la massima leva
finanziaria possibile (generalmente le leve finanziarie utilizzate per operazioni intraday sono
sgravate da interessi). Ecco che è così indispensabile operare con broker che offrano la leva sia per
operazioni Long (di acquisto) che Short (vendita allo scoperto).

Nell’immagine è possibile osservare come un capitale investito di 3.000 euro, grazie alla leva
finanziaria con un margine del 5%, permetta un investimento di 60 mila euro e rendere possibile
guadagnare anche con un singolo tick (tenendo conto persino delle commissioni applicate dal broker
che, nel caso illustrato, sono permillari con un tetto massimo).

L’analisi tecnica, in lassi temporali così brevi come quelli adoperati dagli scalper ha un importanza
limitata. Sono importanti i livelli Pivot così come pure il riconoscimento dei trading range giornalieri
ma è l’osservazione dei volumi che assume un importanza strategica. Lo scalper può guadagnare con
un solo tick ma sa che vale anche l’opposto (maggiorato delle commissioni). Per cui deve entrare sul
movimento e non precederlo.
Anticipare i movimenti di mercato significa scommettere sulla direzione che assumeranno le
quotazioni nei prossimi trenta secondi e la sommessa è un aleatorietà troppo rischiosa visti i valori in
ballo.
Cavalcare l’onda per prenderne un piccolo beneficio è invece una pratica statisticamente
profittevole.
Nell’immagine seguente è raffigurato uno strumento sviluppato dallo scrivente nel quale è possibile
fare scalping (anche sistematico) grazie a tutti gli strumenti di cui uno scalper necessita.
E’ possibile pre impostare una strategia sulla base dei livelli di prezzo e monitorare l’andamento dei
volumi grazie alla scomposizione tra volumi in acquisto e in vendita. Osservare la barra di pressione
dei movimenti per captarne in anticipo la tendenza a brevissimo.
Mentre per quasi tutte le tipologie di trading le piattaforme in commercio sono sufficientemente
dotate (l’optimum non è raggiunto da nessuna), per l’opratività di scalping e di intraday trading le
esigenze non sono mai soddisfatte dai tool in commercio ed è quindi normale che un trader cerchi di
crearsi da se la propria piattaforma di negoziazione o, quantomeno, un tool di sostegno.

Correlazione inversa tra operatività e leva finanziaria


Come abbiamo visto nei capitoli precedenti, i diversi approcci al trading, con riferimento al tempo
che si presume duri l’investimento, assumono una diversa importanza alla capacità di lavorare con
capitale a prestito.

Il tentativo di guadagnare soldi comprando e vendendo dopo pochi secondi uno strumento finanziario
ha qualche possibilità di successo se la soglia costituita dal costo dell’operazione si possa superare
facilmente sin dal primo tick di variazione positiva.

Se ad esempio adoperiamo 5.000 euro per acquistare delle azioni Unicredit al prezzo di 1,741, ne
potremo acquistare 2.871 ed il costo per la conclusione dell’operazione ci costerà (apertura e
successiva chiusura) 18,99 euro (considerando una commissione permillare del 1,90).
Con questo investimento, senza alcuna leva finanziaria, saremo in perdita sino a che le quotazioni non
raggiungeranno 1,748 (ben 7 tick in più del punto di ingresso!) .
Come si vede dalla figura precedente il guadagno dopo 7 tick è di un solo euro! Per poter guadagnare
l’1% del capitale investito (50 euro) è necessario aspettare ben 24 tick. Decisamente troppi
considerando la volatilità dei movimenti intraday. Le possibilità che un titolo compia un movimento
nella nostra direzione in proporzione all’ampiezza aspettata: questo significa che se ci aspettiamo un
movimento di uno o due tick (e la nostra entrata è motivata dallo studio dei movimenti intraday) esite
una forte probabilità che il movimento si compia nel breve. Se invece ci attendiamo un movimento di
24 tick la possibilità che ciò si verifichi è prossima allo zero e la perdita quasi una certezza
(statisticamente parlando …).

Se invece dovessimo impiegare lo stesso capitale ma utilizzandolo come margine per un operazione
in leva ecco che i risultati cambiano. Un tick ci fornisce un guadagno di venti euro mentre al settimo
tick avremmo 364 euro contro la singola moneta dell’operativita senza leva.
Il punto percentuale di guadagno (i 50 euro) si raggiungono e superano con il secondo tick.
Naturalmente le perdite sono amplificate ma l’operativita di scalping impone uno stop loss rigido a 1
o massimo due tick se proprio si è entrati male.

Andando a riconsiderare il peso delle perdite con il peso dei profitti attesi si potrà notare come due e
sette tick di guadagno siano contrapposti dai due e sette tick di perdita in diversa misura a seconda
che ci si avvalga o meno della leva.

Operatività Perdita Guadagno Rapporti percentuali


2 tick Ordinaria - 24,74 - 13,25 N/A
2 tick Marginazione - 152,88 + 76,88 67% - 33%
7 tick Ordinaria - 39,09 + 1,10 97% - 3%
7 tick Marginazione - 440,08 + 364,08 55% - 45%

Sebbene in assoluto i valori in campo siano più ampi (maggior valore delle perdite con l’utilizzo
della leva) è anche possibile notare come il peso delle perdite sia inferiore con l’utilizzo della
emarginazione piuttosto che con l’operatività ordinaria.
Tralasciando gli aspetti puramente matematici e puntando invece su quelli statistici (molto più
pertinente vista la numerosità delle operazioni che uno scalper svolge quotidianamente) si può
osservare come con un operatività in leva sia sufficiente chiudere in profitto due operazioni su tre per
arrivare al pareggio e poco più di questo rapporto per guadagnare. Con un operatività ordinaria
invece non c’è nessuna possibilità in quanto per arrivare ad un guadagno occorre aspettare 7 tick.

Se si considera che mediamente uno scalper compie dalle 100 alle 300 operazioni al giorno ed
ipotizzando prese di profitto e stop loss a 2 tick dalla posizione per poter guadagnare occorrerà
chiudere due terzi delle operazioni in guadagno, più una.

Es.
100 operazioni
33 stop loss comportano perdite per € 5.045,04
67 take profit fanno guadagnare € 5.150,96 Saldo € 105,92

Questo libro non vuole certo incentivare l’attività di scalping essendo estremamente rischiosa
(considerando i valori coinvolti) ma si vuole dare qui un informativa quanto meno realistica delle
possibilità insite in questa attività.

Se la legge dei numeri insegna che sulla quantità la media delle vincite pareggia quella delle perdite
e la possibilità di spostare l’ago della bilancia spetta alla preparazione professionale del trader che
sa riconoscere i movimenti e scegliere il momento più corretto per “cavalcarli”, è anche vero che le
osservazioni delle serie storiche ci indicano che prima che la legge dei numeri ristabilisca
l’equilibrio è spesso possibile assistere a serie anomale che sussistono e incidono negativamente
sulla capacità di rimanere sul mercato. In altri termini, è possibile che il mercato ci faccia chiudere
in perdita le prime 30 operazioni e ci azzeri il capitale prima che inizino le operazioni con profitto in
grado di ristabilire l’equilbrio.

Se 5.000 euro fosse tutto il capitale disponibile è facile capire che alla prima operazione è possibile
impiegare l’intero capitale. Ogni volta che si perde il capitale diminuisce (ed il valore di un ipotetica
vincita) diminuendo le possibilità di recupero.
Alcuni trader, consci di questo, adoperano solo una parte del capitale lasciando la rimanenza come
“riserva di reintegro”. In questo modo si è in grado di sopportare le serie negative in attesa della
ripresa dell’equilibrio.

All’estremo dello Scalping troviamo il Position Trading nel quale l’utilizzo della leva risulta
dannoso essendo un onere finanziario di rilevanza assoluta. Mantenendo l’investimento “congelato”
per lunghi periodi di tempo, in modalità ordinaria l’unico costo che si sostiene è rappresentato dal
mancato guadagno degli interessi creditori di conto corrente (qualora presenti). Nel caso di
marginazione invece si è sottoposti al pagamento trimestrale degli interessi per il finanziamento
ricevuto (nell’ordine del 10% nel momento in cui scrivo questo libro).
Visto che per il cassettista l’obiettivo non è rappresentato dai tick ma da movimenti del 30% annui è
facile capire come l’operatività ordinaria sia preferibile in quanto non espone l’investitore a
chiusure per stop loss automatici (spesso imposti dai broker sulla emarginazione) né ad oneri
finanziari sulla maturazione degli interessi.

Esempio di 5.000 euro investiti su un titolo che quota 5 euro al 1° Gennaio e 6,5 a fine anno.

Ordinaria
1.000 azioni
Profitto di 1.500 euro
Stop loss al 15% con perdita di 150 euro
Marginazione
5.000 euro diventano 20.000 utilizzando un margine del 25% (la norma su leve multiday)
4.000 azioni
Profitto lordo di 6.000 euro
Oneri finanziari di 2.000 euro
Profitto netto di 4.000 euro
Stop Loss al 15% con perdita di 2.500 euro

Comprendendo quindi come la necessità del ricorso alla leva finanziaria sia importante nel
brevissimo termine e inutile se non dannoso nel lungo termine, è possibile disegnare un diagramma
che illustra la relazione inversa tra tempo del trade e ricorso alla emarginazione.

I linguaggi di sviluppo più diffusi per la creazione di Trading System


Attualmente sul mercato esistono decine di programmi che permettono di creare trading system ma
due di questi sono particolarmente interessanti, uno perché è stato il precursore di tutti i linguaggi per
la scrittura di trading system e l’altro perché è uno degli ultimi arrivati ma è quello in più rapida
diffusione. Stiamo parlando di Easy Language e MQL4. Easy Language è il linguaggio di sviluppo
usato dal programma TradeStation e l’altro invece è il fulcro di MetaTrader.

Ogni linguaggio di sviluppo usato per creare trading system ha delle caratteristiche che lo
contraddistinguono dai linguaggi “general purpose” utilizzati per creare programmi. Queste
caratteristiche sono la presenza di oggetti per la referenziazione ed utilizzo delle serie dati legate alla
quotazione di uno strumento finanziario.

Ogni programma prende come riferimento i dati raffigurati in un grafico. Ogni grafico si caratterizza
per alcune proprietà specifiche:

• Descrizione
• Simbolo
• Time frame
• Open
• Low
• High
• Close
• Volume

Per Descrizione si intende una descrizione estesa dello strumento finanziario a cui si riferisce la
serie storica.
Il Simbolo è il codice che rappresenta lo strumento finanziario. Nel Forex è composto da sei lettere
(tre lettere per la prima valuta e le ultime tre per la seconda valuta del cross).
Il Time frame indica il range temporale rappresentato da ogni barra (o candela) raffigurata nel
grafico.
Open è il prezzo di apertura nella barra, Close il prezzo di chiusura, Low è il prezzo minimo
raggiunto mentre High è il prezzo massimo.
Il volume ed i prezzi sono delle serie storiche con le quali è possibile accedere ai loro valori
specificando l’offset, ovvero il numero di periodi di scostamento dall’ultima candela (la più
recente).
Correlati ai dati del grafico ci sono anche i dati relativi allo scambio (al book) che definisce la
miglior offerta e la miglior domanda: il Bid e l’Ask.

Grazie alla manipolazione dei dati del grafico è possibile derivare tutte le funzioni relative al valore
degli indicatori di analisi tecnica.
Si tenga presente che ogni trading system viene eseguito esattamente come una chiamata ad una
funzione. L’evento che genera questa chiamata è lo scambio o la variazione di una delle proprietà
esposte poc’anzi.

Se si tengono presente queste caratteristiche peculiari insite in tutti i linguaggi utilizzati per la
creazione di trading system risulta facile l’approccio da parte di programmatori di altri linguaggi
quali il C, Java, Basic o Pascal.

Per chi invece legge questo libro essendo completamente a digiuno di programmazione è bene che
sappia quattro concetti base per capire e comprendere cosa fa e come si scrive un programma.

Concetti base di programmazione

Ogni linguaggio viene utilizzato per creare applicazioni. Queste possono essere con o senza
interfaccia grafica, ovvero presentarsi come una finestra che contiene scritte, pulsanti o caselle di
testo (o altri elementi grafici) oppure lavorare “dietro le quinte” elaborando le richieste che gli
vengono inviate (da altri programmi o dall’utente).

La creazione di trading system significa creare programmi senza interfaccia, che rispondono agli
invii generati dai grafici (o meglio dai “data feed10” dei broker). Ogni scambio, ogni variazione del
“denaro” o della “lettera” genera l’esecuzione del trading system.

I programmi utilizzano particolari parole per definire delle funzioni o comandi “nativi” chiamati
token. I token sono parole riservate che rappresentano il vocabolario del linguaggio (un po’ come le
parole che in una lingua definiscono gli oggetti, gli articoli, gli avverbi, ecc..).
I programmi elaborano dei dati. Questi dati sono memorizzati all’interno di variabili o di costanti.
Le variabili possono cambiare valore mentre le costanti mantengono inalterato il loro valore per tutta
l’esecuzione del programma.
10 I Datafeed sono i componenti delle piattaforme di trading che ricevono i dati delle quotazioni
(scambi e volumi) degli strumenti finanziari. Questi dati sono poi archiviati in database locali ed
aggregati per intervalli temporali.

Una variabile la si può paragonare ad un box con la serranda aperta in un immenso garage
sotterraneo. Una costante potrebbe essere rappresentata da un box con la serranda chiusa al cui
interno c’è un automobile. La memoria del computer è il posteggio sotterraneo. Il programma, ogni
volta che dichiara una variabile alloca della memoria per contenere il valore. Come dire che viene
riservato un box per contenere una vettura che ancora non si conoscono le generalità.

Le variabili possono contenere diverse tipologie di dati (lettere, numeri o date) e quindi
nell’esempio dei box questi possono essere box doppi o per automezzi pesanti.

Esistono poi delle variabili particolari chiamate puntatori le quali memorizzano solo l’indirizzo della
variabile a cui fa riferimento. Un po’ come il tagliandino del posteggio che indica il piano ed il
numero del box.

Sulla base di queste variabili di base (costanti, variabili e puntatori) esiste poi una variante sul tema
che è l’Array (o vettore) che rappresenta un insieme di variabili ordinate per posizione. Un po’ come
dire “i box della fila 5 al quarto piano”.

Gli array possono essere monodimensionali o multidimensionali. L’esempio della fila di box
chiarisce il concetto di array monodimensionale. Per chiarire ad esempio il concetto di un array
bidimensionale si pensi a tutte le file 5 di tutti i piani del posteggio.
Per estrarre il valore di una variabile all’interno di un array occorre definire le sue posizioni.

Cambiando esempio, pensiamo ad una serie storica di dati riferiti ad un cross di monete. Per riferirci
al prezzo di apertura della candela in corso dovremo scrivere un codice simile a questo:

A = Open[0]

Open è il token che rappresenta l’array dei prezzi di apertura e 0 fa riferimento al primo elemento
della serie storica (gli indici degli array iniziano sempre da 0) mentre A è una variabile che
memorizza il valore estratto. In genere vengono utilizzate le parentesi quadre per indicare il dominio
di un array.

Ogni programma è simile ad un algoritmo, ovvero ad una serie di azioni condizionate da una serie di
valutazioni.
Il controllo di flusso è uno dei concetti chiave della programmazione e sancisce i metodi per
giudicare che azioni compiere se una variabile assume un certo valore.
Del controllo di flusso fanno parte i costrutti seguenti:

if condizione then se vero else se falso


swich/select variabile case valore default altrimenti
do/while until condizione loop
La prima è la più semplice: se una condizione è vera allora verrà eseguito il codice “se vero”
altrimenti verrà eseguito “se falso”.
If Open[0] > Open[1] then Buy else Sell

Nel codice (teorico) appena scritto se l’apertura della barra in corso è maggiore dell’apertura della
barra precedente si procede con l’apertura di una posizione LONG altrimenti si aprirà una posizione
SHORT.

Il costrutto Switch o Select (a seconda dei linguaggi ma è del tutto equivalente il concetto) compie
delle azioni a seconda del valore che assume l’espressione di valutazione.

Select WeekDay(Now)
Case = 1 : A = “Lunedì”
Case 2 to 4: A = “Metà settimana” Case = 5 : A = “Venerdì”
Default A = “Week end”

End Select
Il terzo costrutto esegue un pezzo di codice fintanto che una condizione risulta vera.

Do until i = 20
If Open[i] > Close[i] then A = A – 1 else A = A + 1 i = i + 1

Loop
Questo ciclo calcola la soma delle candele positive meno la soma delle candele negative in un
intervallo di 20 periodi.
Oltre ai controlli di flusso ci sono i costrutti per ciclare un insieme. Ovvero per ripetere n volte un
pezzo di codice. Questo costrutto è il seguente.

For (valore iniziale, valore finale, passo) Codice


Next

Più avanti, negli esempi pratici avremo modo di esaminare il codice e capirne meglio il significato.
Il presente testo non vuole certo essere una guida base per la programmazione (per la quale si
rimanda ai riferimenti citati in appendice) ma si espone solo un breve accenno agli elementi
principali.

9.a MetaTrader e MQL4


La piattaforma di MetaQuotes utilizza MQL come linguaggio di sviluppo (MetaQuotes Language). La
sintassi è molto simile al C e quindi molte delle regole sintattiche saranno conosciute da molti
programmatori che sicuramente un po’ di C lo hanno studiato.

In MetaTrader il linguaggio C è rimasto molto blando per cui non c’è nessun problema di
apprendimento anche per i novizi. Anzi, saranno proprio i programmatori esperti a lamentarsi in
quanto molte delle caratteristiche avanzate del linguaggio C e C++ non sono presenti in MQL.

La piattaforma, come altre piattaforme per il trading, si presenta come un’applicazione “container11”
nella quale sono presenti al suo interno alcuni contenitori che mostrano informazioni di ambiente
quali i riferimenti del conto, il portafoglio ordini e l’elenco degli strumenti “tradabili”.
11 Un applicazione Container è un applicativo che contiene al suo interno altre finestre. Spesso le
applicazioni container salvano in file il contenuto del lavoro svolto dall’utente (Word è un
applicazione container che salva i lavori svolti dall’utente in file con estensione .doc associata).

Nell’immagine sopra la finestra 1 riporta il grafico tick by tick, nel riquadro 2 sono elencati i trading
system disponibili oltra agli indicatori ed alle informazioni sui conti utente disponibili, il grafico
viene proposto nella finestra 3. Il riquadro 4 riporta l’elenco delle posizioni aperte, chiuse oltre ad
altre informazioni.
Il riquadro 5 invece è dedicato al backtest dei programmi di trading system.

I programmi vengono invece scritti in una finestra applicazione separata (un editor) in cui tutta
l’attenzione è rivolta al codice, alle guide in linea così come all’analisi degli errori.

Segnaliamo che purtroppo quasi tutte le piattaforme di trading con sviluppo di trading system offrono
sistemi molto elementari di debug delle applicazioni per cui i programmatori più esigenti si
troveranno a disagio nella verifica del loro codice e nell’individuazione degli errori.

La figura mostra l’ambiente di sviluppo, MetaEditor, nel quale si creano i trading system per
MetaTrader.
9.b TradeStation e EasyLanguage
TradeStation utilizza il linguaggio EasyLanguage per scrivere i propri trading system. E’ un
linguaggio basato pesantemente sul Basic e quindi il suo apprendimento è abbastanza semplice.
Semplice non significa che sia limitato ma semplicemente che la curva di apprendimento è
abbastanza corta (in termini di tempo). Mediamente un programmatore che già conosce il Basic
impiega una settimana per imparare EasyLanguage. Un neofita impiegherà circa un mese.

E’ possibile creare “Segnali” (Signal) che sono i veri e propri programmi per automatizzare il
trading, Indicatori (sia semplici funzioni matematiche che la loro rappresentazione grafica) cosi come
oggetti grafici da posizionare sul grafico (ShowMe). Un Trading System è poi formato dall’unione di
uno o più Signal (è possibile quindi creare programmi con pre-assemblati).
Nella figura si vede l’ambiente di sviluppo, PowerEditor, nel quale si scrivono i programmi in
EasyLanguage.
Come si può osservare confrontando la figura di MetaEditor, gli ambienti di sviluppo sono molto
simili. Entrambi hanno in comune un tasto per la compilazione che permette al programmatore di
evidenziare eventuali errori.

Questo libro non tratterà EasyLanguage (lo sarà un prossimo testo attualmente in scrittura) ma vuole
comunque avvertire il lettore della presenza di questo linguaggio e della sua piattaforma come
alternativa a MetaTrader per la creazione di Trading System specifici per il mercato delle valute
(Forex).

Long e Short
Volendo semplificare al massimo gli interventi sul mercato che un investore può compiere, diremmo
che si può comprare o vendere uno strumento finanziario. Nel mercato delle valute compreremo o
venderemo lotti di contratti di scambio tra due valute (il Cross).

Quindi le possibili operazioni sono l’acquisto nella speranza che le quotazioni aumentino
(operazione LONG) e la vendita nella speranza che le quotazioni scendano (operazione SHORT).

Nel mercato delle azioni le operazioni SHORT sono anche chiamate “vendite allo scoperto” poiché
si vendono delle azioni che non si possiedono nella speranza di ricomprarle successivamente ad un
prezzo più basso e lucrando sulla differenza (un po’ come vendere un automobile sul catalogo e
cercare di comprarla ad un prezzo più basso di quello avuto dal cliente prima dell’effettiva
consegna).
Nel mercato azionario, essendo a tutti gli effetti un prestito titoli, quest’operazione è sottoposta agli
oneri finanziari degli interessi debitori per tutti i giorni nei quali si mantiene l’operazione.
Nel mercato delle valute non siamo in presenza di un prestito titoli ma semplicemente in un
ribaltamento della prospettiva del contratto. Sul Cross EurUsd andare Long significa comperare Euro
e prestare l’equivalente in dollari, mentre andare short significa acquistare Dollari e prestare
l’equivalente in Euro.
Se la posizione viene tenuta oltre le ore 17 di Londra (piazza finanziaria fulcro del mercato Forex) si
genereranno due flussi di interessi: uno a debito sulla valuta comperata ed uno a credito sulla valuta
prestata. Il differenziale tra i due flussi di interesse è denominato SWAP (o interest rate swap). La
misura degli interessi è data dal tasso di sconto interno dei singoli paesi emittenti (BCE per l’Euro,
FED per il dollaro e così via).

In codice MQL4 un operazione LONG si manda a mercato con il seguente comando:


tk=OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, SL, TP, “”, 30,0,
Green);
e in generale la sintassi è la seguente

int OrderSend(string symbol,int cmd,double volume,double price,int


slippage,double stoploss,double takeprofit,string comment=NULL,int
magic=0,datetime expiration=0,color arrow_color=CLR_NONE)
La funzione di invio ordine restituisce un identificativo denominato Ticket che corrisponde al codice
univoco con il quale il Broker processa l’ordine. I parametri necessari sono la descrizione del Cross
(symbol), la direzione dell’ordine (OP_BUY per aprire una posizione LONG e OP_SELL per aprire
una posizione SHORT), la quantità espressa come parti di lotto (dal minimo a suoi multipli), il
prezzo che può essere l’Ask o il Bid se si vuole l’esecuzione immediata (Ask per l’apertura di una
posizione Long e Bid per l’esecuzione di una operazione Short) oppure un qualsiasi altro prezzo per
un ordine limite (ovvero con un prezzo specifico). E’ quindi possibile inserire uno Stop Loss ed un
Take profit così come un commento o un numero, chiamato “MagicNumber” che torna utile per
riconoscere gli ordini generati da un trading system da quelli generati da un altro trading system (in
MetaTrader i trading system vengono chiamati EA o Export Advisors).

Un ordine di apertura Short assomiglierà al seguente:


tk=OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, SL, TP, “”, 30,0,
Red);
L’ultimo parametro indica il colore che deve assumere la freccia che comparirà sul grafico ad
indicare l’apertura della posizione.
Nel caso in cui si volesse inviare un ordine limit ad un prezzo di acquisto di 1,2945 con scadenza per
le ore 15 dovremo scrivere
tk=OrderSend(Symbol(), OP_BUY, Lots, 1.2945, 3, SL, TP, “”, 30,
“15:00”, Green);

Sul grafico sono visibili le frecce che indicano l’apertura delle posizioni (frecce rivolte a destra) e
quelle che ne indicano la chiusura (frecce rivolte a sinistra).

E’ importante ricordare che tutti gli ordini immessi possiedono un proprio identificativo dato dal
sistema (i server del broker) e l’insieme degli ordini è visibile via codice tramite la funzione
OrderSelect

OrderSelect (idx, SELECT_BY_POS, MODE_TRADES);


e
OrderSelect(idx, SELECT_BY_POS, MODE_HISTORY);

Oppure
OrderSelect(tck, SELECT_BY_TICKET);
OrderSelect può essere usata come funzione o come metodo. Usata come funzione ritorna un valore
booleano per indicare l’esito della chiamata a funzione (false se fallisce e true se viene eseguita in
modo corretto).

Nelle prime due versioni OrderSend viene invocata indicando la posizione dell’ordine all’interno
della collezione di ordini attivi (MODE_TRADES) o storici (MODE_HISTORY).

Con questo metodo è facile utilizzare una iterazione con il costrutto for per esaminare gli ordini.
for (i=0;i<total;i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES)

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol()) {


if(OrderType()==OP_BUY) … else if(OrderType()=OP_SELL) …
}

Nel pezzo di codice riportato si esaminano gli ordini attivi alla ricerca di quelli applicati sul cross
del grafico (Symbol() ritorna il cross in uso sul grafico attivo) e se la funzione OrderType() ritorna
un valore minore od uguale alla costante OP_SELL significa che è un ordine di acquisto o vendita per
apertura posizione (i valori superiori a OP_SELL infatti riguardano gli ordini di variazione di
operazioni già aperte).
In base ai nostri algoritmi potremo così esaminare ad ogni tick (ogni volta cioè che viene eseguito
l’EA) le azioni da intraprendere sulle posizioni aperte. Siano esse Long (OP_BUY) o Short
(OP_SELL).
Questo aspetto lo vedremo nei capitoli successivi. Per ora è importante capire che una volta aperta
una posizione è con l’esecuzione ad ogni variazione di tick che il nostro programma controlla gli
ordini aperti e compie su di essi le operazioni che riteniamo opportune (chiusura, modifica dello stop
loss o del take profit).

Setup, Stop & Reverse


In analisi tecnica il frutto degli studi degli indicatori e dei pattern grafici si concretizza nella
individuazione dei punti di ingresso e di uscita. Spesso il prezzo, dopo un movimento direzionale
abbastanza lungo, si stabilizza e comincia a rimbalzare entro margini sempre più stretti. Questo
fenomeno è anche chiamato consolidamento.
In questi momenti i volumi iniziano ad aumentare è si ingaggia una lotta tra chi vuol vendere e chi
vuol comprare. Quando uno dei due schieramenti ha la peggio le quotazioni “esplodono” in una
direzione o nell’altra. Fare una previsione è difficile (anche se di norma si dice che il movimento
prosegue la direzione principale precedente il consolidamento) e quindi per non perdere l’occasione
si inseriscono due ordini autoescludenti: uno Long alla rottura superiore del range di consolidamento
ed un altro, short, alla rottura del lato inferiore.

Questi ordini si chiamano “Limit order” e i due prezzi di entrata vengono chiamati Setup (Setup long
e Setup short).

Sulle piattaforme professionali dove si possono inserire gli ordini ad albero (ordini dipendenti ed
autoescludenti) l’esecuzione di un ordine di acquisto disattiva (cancella) l’ordine di vendita.

In MetaTrader, con gli EA, questo procedimento è demandato al programmatore che deve codificare
la cancellazione dell’ordine opposto.

Come si fa quindi ad eliminare un ordine “pendente”, ovvero ancora attivo e residente sul server del
broker? Si utilizza la funzione OrderDelete. E per sapere quale ordine sia da cancellare tra i due
inseriti occorre ciclare gli ordini pendenti ed eliminare quello opposto a quello aperto. I due ordini
saranno contraddistinti dallo stesso sottostante (Symbol()) e lo stesso Magic Number
(OrderMagicNumber()) e se poi avremo avuto l’accortezza di inserire un commento comune ci
agevolemo il compito.

int total;
bool bActive(false);
total = OrdersTotal();

for (i=0;i<total;i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol()&&


OrderMagicNumber()==30) {
bActive = true;
break;
}

if (bActive == true) { for (i=0;i<total;i++)


{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType()>OP_SELL && OrderSymbol()==Symbol()&&


OrderMagicNumber()==30) OrderDelete(i);
break;
}

L’esempio di codice illustra come accorgersi quando un ordine è andato a mercato e cancellare altri
ordini pendenti sullo stesso cross. L’operatore break interrompe il ciclo for (quando si è arrivati a
scoprire l’ordine eseguito o si è cancellato l’opposto) e la variabile booleana bActive informa il
programma che il primo dei due ordini è andato a mercato.
La variabile total contiene il numero di ordini (tutti) legati all’Account utente presso il broker.
Data la liquidità del mercato Forex merita una considerazione il fatto che gli stop order sono di fatto
inutili in quanto è rarissimo assistere a dei gap durante la trattazione continua (e nel Forex c’è solo
quella o la chiusura delle contrattazioni). Inoltre, in presenza di Gap l’entrata sul mercato sarebbe
pericolosa in quanto i gap sono fisiologicamente destinati al riassorbimento. E’ comunque utile
sapere come inserire ordini stop e soprattutto come eliminare gli opposti correlati.

Una volta a mercato è necessario osservare l’andamento delle quotazioni per mantenere un controllo:
verificare che l’oscillazione non produca perdite oltre il consentito, non riduca i guadagno oltre una
certa misura o che, viste le mutate condizioni di mercato, occorra invertire la posizione in maniera
rapida ed efficiente.
La gestione degli Stop Loss e dei Take Profit le vedremo nel prossimo capitolo. Adesso osserveremo
la tecnica dello “Stop and reverse”, ovvero nella chiusura della posizione e contemporanea apertura
in un'altra di segno opposto.

Si immagini di essere Long e dopo qualche barra compaiono i segnali per un entrata Short. Di norma
un operatore stopperebbe (chiuderebbe) la posizione Long ed aprirebbe una Short. Agendo così
compirebbe alla fine due operazioni (chiusura Long e apertura Short) andando a pagare due Spread
(uno per la chiusura e l’altro per l’apertura): decisamente poco economico, soprattutto per un
operatività di brevissimo termine.
Un modo alternativo per chiudere un operazione ed aprirne un'altra di segno contrario consiste
nell’aprire direttamente l’operazione di segno contrario con una quantità doppia rispetto alla
posizione già aperta e segnalando nell’ordine la correlazione con l’ordine da chiudere.

Poniamo di essere Long con 1 Lotto del contratto EURUSD e di voler “reversare”. Non dobbiamo far
altro che andare Short con 2 Lotti e collegare i due ordini tramite l’istruzione OrderCloseBy.

ticket = OrderSend(Symbol(), OP_SELL, Lots*2, Bid, 3, sl, 0, "",


MN, 0, Red); Sleep(30000);
if(ticket > 0) OrderCloseBy(ticket, prevticket, Blue);

Il metodo accetta tre parametri: il primo è il Ticket (identificativo univoco dell’ordine in via di
apertura), il secondo parametro rappresenta il Ticket dell’ordine aperto che si vuole reversare ed il
terzo parametro (facoltativo) è il colore con il quale sarà raffigurata la freccia sul grafico che
rappresenta il reverse.

Non deve creare dubbi il fatto che prima si apra la posizione contraria e dopo si invochi
OrderCloseBy, quest’ultima infatti serve a comunicare al broker che i due ordini sono
autocompensanti e non vanno trattati come due posizioni distinte (il che sarebbe peraltro del tutto
lecito).

L’uso del metodo Sleep è utilizzato per far trascorrere il tempo necessario all’esecuzione dell’ordine
short prima di comunicare al server la correlazione tra gli ordini (il parametro del metodo esprime i
millisecondi di attesa prima di ritornare all’esecuzione del programma).

Tecniche di Trailing Stop


Una volta aperta una posizione la direzione delle quotazioni può avere momenti di incertezza (ecco
perché si inseriscono gli Stop Loss) e quindi intraprendere una direzione per un certo lasso
temporale. Come è facile intuire le incognite sono molte e un trader ha la necessità di ridurle al
massimo per poter pianificare ulteriori investimenti.

Una volta aperto l’ordine a mercato (ovvero comperando o vendendo utilizzando le migliori
quotazioni dell’Ask e del Bid per un esecuzione immediata) la nostra posizione sarà subito in perdita
poiché paghiamo lo scotto dello spread.

La figura illustra l’apertura di una operazione Long su un Cross che offra uno Spread di 3 Pips. La
distanza tra il Bid e l’Ask (nell’esempio pari a 3 Pips) rappresenta la perdita immediata che si
incamera all’apertura della posizione. Se, infatti, si volesse subito chiudere la posizione aperta si
troverebbe da vendere al valore del Bid che è ben 3 Pips meno di quanto abbiamo in carico la
posizione Long (il discorso per lo Short è speculare). Da queste prime considerazioni risulterà
chiaro come le operazioni di scalping sul mercato Forex siano estremamente pericolose visto che
l’assenza di commissioni è più che compensata con gli Spread (che non variano la loro incidenza
negativa in base alla Leva concessa dal broker).

Consideriamo quindi che la nostra posizione, appena dopo l’apertura possa andare in senso contrario
al nostro (ovvero ci aumenta subito le perdite). Se le considerazioni per le quali abbiamo aperto una
posizione Long sono valide allora dobbiamo solo decidere di quanto il cross possa rintracciare
prima che saremo costretti ad ammettere la sconfitta e chiudere in perdita l’operazione.
A questo proposito valgono due considerazioni fondamentali:

• Quanto equivale la massima perdita accettabile ?


• Quali sono i livelli importanti che fungono da argini ?

La massima perdita accettabile può essere un valore assoluto (“ Non voglio perdere più di 200$ per
operazione ..”) o un valore relativo (es. un decimo del capitale di rischio).
I livelli importanti invece sono le resistenze, i supporti ed i Pivot.

Una volta che sono chiari quali sono i livelli importanti e quale è la massima perdita accettabile
occorre stabilire quale è la quantità tale per cui i due vincoli possono coincidere. In altre parole, se
in un operazione non voglio rischiare più di 200$ e l’entrata long dista 40 pips da un supporto ed
ogni Pips vale 50 $ per contratto, allora la quantità dell’operazione sara 0,10 lotti.

Valore di 1 Contratto = 100.000 $


Valore di 1 Pips = 50$
Perdita massima = 200$
Variazione massima prima del Supporto = 40 Pips

Q=MaxLoss ValoreUnPipxContrattoEscursionePipsMax
e quindi
Q
=
200$
40 = 0,10

Come si vede, acquistando 0,10 lotti è possibile impostare uno stop loss in corrispondenza del
supporto ed il cui valore corrisponda alla perdita massima accettabile.

A questo punto occorre però capire come calcolare il valore del supporto o della resistenza.

A livello predittivo i Pivot di giornata si possono calcolare con le formule presentate nell’apposito
capitolo, mentre per calcolare le resistenze e supporti storici occorrerebbe analizzare la serie storica
(almeno un paio di anni) con una granularità almeno giornaliera e pesare le quotazioni con i volumi
degli scambi. Per trovare il primo supporto o resistenza occorrerà poi cercare i prezzi con volumi
superiore alla media.
In definitiva il metodo è di difficile realizzazione ed inoltre i livelli così estratti non sono
particolarmente attendibili.
Cosa fare allora ? Tralasciando l’utilizzo dei livelli storici dobbiamo convergere la nostra attenzione
sui livelli di volatilità. La volatilità del cross indica approssimativamente l’escursione tipica, nel
time frame prescelto per la misurazione.
In pratica, non potendo calcolare con sufficiente precisione i livelli storici per fissare lo stop loss, ci
orienteremo verso la volatilità del cross nel time frame prescelto per capire fin dove può fluttuare il
corso del cross prima di riprendere la direzionalità prevista.

Una tipica misura della volatilità, come accennato nel capitolo dedicato, è l’Average True Range
(ATR) che nel codice MQL4 è identificato dalla funzione iATR

double iATR(string symbol, int timeframe, int period, int shift)

I parametri utilizzati sono il simbolo del Cross (Symbol() per confermare il Cross in uso sul grafico),
una costante che definisce il TimeFrame (il cui valore è la somma dei minuti del time frame), la
lunghezza del periodo utilizzato per il calcolo mobile e, per ultimo, l’Offset ovvero lo scostamento
rispetto alla candela corrente (il che ci permette di recuperare l’ATR di candele precedenti ed
effettuare dei confronti).

Personalmente utilizzo un multiplo dell’ATR per il calcolo dello stop loss: l’ATR diviso la
dimensione del Pip e moltiplicato per un opportuno valore indica i Pips di Stop loss.

stoploss = MathRound((iATR(NULL,0,21,0)/Point)*slFactor);

Nella riga precedente viene ricavato lo stop loss in termini di numero di Pips tramite il calcolo
dell’ATR basato su 21 periodi (il parametro NULL equivale a confermare il simbolo del grafico,
così come porre a 0 il parametro del time frame). Point è una funzione che riporta la misura numerica
del Pip, mentre slFactor è una variabile che indica il moltiplicatore di ATR per ottenere lo Stop
Loss.
La funzione MathRound viene utilizzata per arrotondare il risultato dell’espressione ad un valore
intero.
Il risultato dell’espressione sopra riportata, applicato al grafico porterà ad un risultato pari a 81 Pips
su un time frame di 15 minuti. Se osserviamo la linea tratteggiata rossa che indica il livello di stop
loss potremo osservare che effettivamente lo stop loss indicato è abbastanza ampio da contenere i
normali e fisiologici movimenti del cross per un intervallo ragionevole affinché le quotazioni
intraprendano la direzionalità auspicata (se non lo facessero dovremo intervenire per chiudere
prematuramente la posizione o lasciare che lo stop loss compia il suo compito).

Naturalmente è lecito chiedersi “ma quando conviene chiudere l’operazione?”.


Un detto popolare recita così: “Taglia le perdite e lascia correre i profitti”. Se il taglio delle perdite
è un argomento affrontato e risolto, rimane il concetto relativo ai profitti. Come si può osservare dal
grafico precedente sono indicate altre operazioni che dopo essere state aperte sono andate in
guadagno e successivamente sono girate in perdita.

L’uso dei Take Profit è ed era stato un primo tentativo di risolvere il problema. La pianificazione
dell’intera operazione comporta il calcolo dello stop loss e dei livelli a cui sia lecito aspettarsi
l’arrivo delle quotazioni. Questi livelli possono essere le resistenze e supporti storici oppure i Pivot
Point.
L’applicazione di Take Profit su operatività di brevissimo termine è però influenzata dalla distanza
che i Pivot hanno dal punto di entrata: maggiore è la distanza e minore è la possibilità che le
quotazioni raggiungono il Pivot senza prima rintracciare verso il Pivot opposto (che farebbe scattare
lo stop loss e vanificando ogni sforzo). Inoltre, molto spesso le quotazioni “rimbalzano” nei pressi
dei Pivot e quindi un take profit situato esattamente sul Pivot rischierebbe di non essere raggiunto in
tempi brevi, ed è quindi più indicato un take profit posto “in prossimità del pivot” (5 o 10 pips
prima).

Da quanto detto risulta però chiaro che molte operazioni che si concludono con una perdita
potrebbero chiudersi in guadagno o quanto meno in pari se solo ci fosse una qualche gestione dei
profitti.

Nell’ottica di monitorare l’andamento grafico di un operazione in ogni sua variazione, nascono le


tecniche di Trailing stop12.

Con Trailing Stop si intende definire quegli ordini di modifica con cui lo stop loss viene spostato per
cercare di proteggere i profitti (o di limitare le perdite) man mano che i prezzi si muovono nella
direzione dei profitti. Mentre non avviene nessuna modifica se le quotazioni si deprimono, riducendo
i guadagni.

L’attivazione del trailing stop può avvenire sin dall’apertura della posizione o al verificarsi di
particolari eventi tra cui:

• superamento di un dato livello di prezzo


• superamento del livello di entrata
• superamento del livello di entrata più lo spread

In nessun caso l’attivazione avviene se il prezzo non supera il livello di ingresso e l’operazione è in
perdita (in questa situazione esiste lo stop loss originario).

Data l’ampia varietà di tecniche di trailing stop, di seguito analizzeremo le più diffuse ed
accenneremo alcuni spunti di sviluppo.

12.a Trailing Stop classico


La versione originale del trailing stop prevede che al superamento di un certo prezzo, superiore a
quello di ingresso, venga modificato lo stop loss per far si che dal massimo relativo raggiunto dalle
quotazioni sia concesso un rintracciamento massimo tale per cui non vengano erosi tutti i profitti
maturati.
La tecnica funziona benissimo in mercati molto direzionali dove il movimento delle quotazioni è
molto definito e l’unica incognità sono le prese di beneficio che fanno rimbalzare le quotazioni. In
questo frangente i profitti maturati vengono preservati “regalando al mercato” solo una parte (si spera
piccola) dei guadagni.
Le due variabili del trailing stop classico sono il livello di attivazione ed il rintracciamento massimo
consentito (ovvero il nuovo stop loss espresso in termini di Pips dall’ultimo massimo relativo per
operazioni Long). In genere si adotta la misura dello Stop Loss come misura della distanza dal prezzo
di ingresso per stabilire l’attivazione (a cui spesso si aggiunge anche lo spread) e si mantiene
inalterata la dimensione.
12 La dizione Trailing deriva dal fatto che lo stop loss viene trascinato (in inglese “to trail”) dal
prezzo.
Es.

Entrata Long a 100


StopLoss a 90
Attivazione trailing stop dopo 112 (10 + spread di 2 pips) con ritracciamento di 10 pips dal massimo
relativo.

12.b Trailing Multistop


Il trailing stop multistop è una variazione del
trailing stop classico. Dopo il superamento di
ulteriori livelli di attivazione riduce
progressivamente il rintracciamento
ammesso. Si introducono questi ulteriori
livelli poiché aumenta, oltre certi livelli, la
possibilità di un ritracciamento di
dimensioni importanti.
Nella figura si può osservare la sintesi di un
ordine condizionato a cui viene applicato sia
lo stop loss che il trailing stop multi livello.

Questo genere di trailing è indicato quando la posizione viene aperta distante dai pivot e pian piano
ci si avvicina. In prossimità del pivot si fa scattare il secondo livello di trailing poiché è molto
probabile una reazione violenta ed ampia che eroda il guadagno sin lì accumulato. Volendo evitare
quest’eventualità si stringono i margini di oscillazione e si prende profitto, magari inserendo un
ordine condizionato al superamento del Pivot.
Nel codice
l’applicazione del trailing stop si può inserire con il codice MQL seguente:
if (Close[0] > OrderOpenPrice() + ActivationLevel * Point)
{
if (OrderStopLoss()<Bid - sl * Point)
OrderModify(OrderTicket(), OrderOpenPrice(), Bid-sl * Point, 0, 0,
Blue);
}

Sl rappresenta lo stop loss espresso in Pips e ActivationLevel è una variabile che rappresenta i Pips
oltre l’apertura da cui attivare il trailing stop. E’ chiaro che nel caso di un multistop nel codice si
andrà a modificare il valore della variabile ActivationLevel e di sl (variabile dei Pips di stop loss)
in modo da adeguare i livelli.

12.c Break Even Stop Loss


Molti trader vivono con ansia le fasi iniziali di un trade, ovvero quando la posizione è ancora in
perdita dal momento dell’entrata. Le quotazioni, magari dopo una fase carica di “momentum13”
iniziano a stagnare. Si alternano i momenti in cui si è in leggero guadagno a quelle di leggera perdita.
Più il tempo passa e più è chiaro che i presupposti che avevano determinato l’entrata in posizione
vengono meno ed è quindi prudente accorciare gli stop loss. La soluzione migliore sarebbe quella di
sfruttare il momento in cui si è in leggero guadagno per spostare lo stop loss ad un livello tale da
coprire il costo degli spread e chiudere così a zero il trade (o al limite con uno o due Pips di
guadagno).
Nel grafico viene illustrata l’entrata long sul Cross Sterlina inglese contro Dollaro canadese.
L’entrata, avvenuta in piena ascesa delle quotazioni, si è purtroppo conclusa poco prima della fine
del momentum che aveva caratterizzato il movimento e un inversione sembra una possibilità non
remota. La possibilità di ritracciamento si concretizzerà cinque minuti dopo. In casi come questo la
presa di beneficio alla pari (o magari di pochissimi Pips) è da preferire al mantenimento della
posizione.
In questo contesto diviene importante saper riconoscere quando i presupposti dell’entrata vengono
meno e attivare il BEP (Break Even Point stop loss).

Se il presupposto era, ad esempio, la permanenza dei volumi di scambio sopra la media degli ultimi
50 periodi è possibile attivare il BEP con il seguente codice MQL:

// BREAKEVEN STOP LOSS


if (Close[0]>OrderOpenPrice()+10 * Point && Volume[1] <
VolumeAverage(50,0) ) {
if (OrderStopLoss()< OrderOpenPrice() + 5 * Point)
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+5*Point,
}

//Funzione che calcola la Media dei Volumi int VolumeAverage(int


Periods, int Offset) {
int TotVol;
int i;
for (i=1+Offset;i<Periods;i++)
13 Il
momentum è un termine che definisce quelle fasi di forte movimento dei prezzi accompagnato da
un aumento considerevole dei volumi. Le quotazioni acquistano direzionalità vincendo le
opposizioni.
{
TotVol = TotVol + Volume[i]; }
return(MathRound(TotVol/Periods)); }

Nel codice riportato il BEP si attiva al superamento del 10° Pips e inserisce uno stol loss a 5 Pips
dall’entrata. Per utilizzare il BEP viene verificato il confronto con i Volumi (si usa la barra 1, ovvero
la precedente, poiché la zero è ancora in fase di completamento) e la loro media (calcolata con un
apposita funzione utente riportata).
In alternativa ai volumi si sarebbe potuto utilizzare un confronto tra l’ATR a 20 periodi e quello a 3
(confronto di volatilità).

if (Close[0]>OrderOpenPrice()+10*Point && iATR(NULL,0,3,1)<


iATR(NULL,0,20,1)) {
//Applicazione del Break Even Point stop loss }

12.d Countdown Trailing Stop


L’apertura di una posizione presuppone che esistano le condizioni per poter ottenere profitto in breve
termine (altrimenti si ritarderebbe l’entrata) in base alle conferme date da indicatori o altri algoritmi
utilizzati dal trader. Il tempo è alla base di questo trailing stop. L’entrata è avvenuta in un preciso
istante poiché da quel momento ci si aspetta un movimento a favore che rechi profitto. Se queste
aspettative vengono deluse significa che il ragionamento che stava alla base dell’entrata in posizione
è sbagliato o è stato disatteso (l’analisi tecnica non è una scienza esatta ma bensì una disciplina
probabilistica) per motivi che non ci interessa approfondire. Una sola cosa è certa: siamo in
posizione e non sappiamo il perché dobbiamo rimanerci.
In questi casi è utile dare del tempo al mercato affinché il ragionamento con il quale siamo entrati in
posizione si affermi o venga smentito, ricordando però che ogni minuto che restiamo in una posizione
perdente è un minuto regalato alle probabilità di aumentare le perdite. Se, infatti, un movimento
doveva esserci e non si è verificato significa che l’intuizione era sbagliata e la mossa più saggia da
compiere è “levarsi dal mercato”, chiudere la posizione. Naturalmente è anche vero che i segnali non
sono precisi al secondo (né al tick) per cui è possibile che il nostro movimento tardi leggermente
rispetto a quanto ipotizzato14. Per cercare di proteggere il capitale investito e contemporaneamente
concedere del tempo affinché il movimento si realizzi (evitando una perdita sicura dalla chiusura
anticipata) si adotta un trailing stop a scalare vincolato al tempo che passa.
Il Countdown Trailing Stop (CTS) è una tecnica con la quale ad ogni barra (o ad ogni unità di tempo)
viene ridotto lo stop loss sino ad arrivare alla chiusura della posizione per intersecamento dei due
valori.
14 Sipensi all’aspettativa di un break-out dopo una lunga compressione, chi può dire quando la
compressione è terminata ? Alcune compressioni terminano dopo 5 barre mentre alcune arrivano
anche a 40 o più.
Nell’immagine sopra si può notare come l’utilizzo del CTS abbia evitato una perdita decisamente più
grande se si fosse mantenuto lo Stop Loss originario. L’entrata long presupponeva una continuazione
del movimento di ascesa che invece è stato disatteso.
La linea a gradini evidenzia lo stop loss del CTS che viene riadeguato ad ogni barra, partendo dalla
seconda barra dopo l’entrata.

In MQL per inserire il CTS occorre creare una funzione che abbia come parametri il passo
(dimensione in Pips della riduzione unitaria dello Stop loss), il ritardo (barre o tempo passato
dall’apertura della posizione) e l’unità di misura (barre o minuti). Questa funzione verrà richiamata
se vengono disattese le condizioni di entrata, altrimenti deve rimanere “dormiente”. L’expert advisor
analizza le posizioni aperte e testa la conferma delle premesse che hanno indotto all’apertura della
posizione. Se questa conferma viene meno verrà richiamato il Countdown Trailing Stop.

Il codice necessario per implementare questa tecnica è riportato di seguito.


//Se le condizioni che hanno indotto all’entrata vengono meno … if
(Conferma == false) CTS(2,3,”B”);

//-----------------------------------------------------------*
//COUNTDOWN Trailing Stop | // | //Unit B = barre e Unit M =
minuti | //-------------------------------------------------------
----*

void CTS(int Step, int Delay, string Unit = "B")


{
bool bActive; //se true allora posso applicare il CTS static int
LastUnit; //l’ultima barra o minuto già elaborata int
CurrentUnit;//la barra o minuto corrente double NewSL; //il nuovo
Stop loss
int Direction; //Long o Short ?

bActive = false;
if (Unit == "B")
{
if((TimeMinute(Time[0])-
TimeMinute(OrderOpenTime()))/Period()>=Delay)

bActive = true;
else
LastUnit=0;
}

if (Unit == "M")
{
if((TimeMinute(Time[0])-TimeMinute(OrderOpenTime()))>=Delay)

bActive = true;
else
LastUnit=0;
}

if (bActive==false) return(0);
if (Unit == "B")
{CurrentUnit=(TimeMinute(Time[0])- TimeMinute(OrderOpenTime()))/
Period();}
if (Unit == "M")
{CurrentUnit=(TimeMinute(Time[0])- TimeMinute(OrderOpenTime()));}
if (CurrentUnit == LastUnit) return(0);
if (OrderType() == OP_BUY)

Direction = 1;
else
Direction = -1;

NewSL = OrderStopLoss() + Direction*(Step * Point);


if (Direction == 1)
{
if(OrderStopLoss()<NewSL)
return(0);
else
OrderModify(OrderTicket(),OrderOpenPrice(),NewSL,OrderTakeProfit(),0
}
else
{
if(OrderStopLoss()>NewSL)
return(0);
else
OrderModify(OrderTicket(),OrderOpenPrice(),NewSL,OrderTakeProfit(),0
}
LastUnit = CurrentUnit;
}

Nella funzione CTS si noterà l’uso della parola static nella dichiarazione della variabile LastUnit.
Questo identificatore serve a mantenere il valore della variabile in memoria tra una chiamata e l’altra
della funzione. Naturalmente, nel caso di EA che mantengano aperte contemporaneamente più
posizioni occorrerà modificare il codice della funzione per referenziare meglio le variabili statiche
(magari con un array contenente coppie di valori OrderTicket e LastUnit).

12.e Panic Stop and Go


Quando sono attesi dati macroeconomici di rilevanza mon diale, anche i cross sulle valute vengono
influenzati (molto meno dei mercati azionari) e molti movimenti si bloccano o addirittura invertono
direzione.

Gli operatori dei mercati (trader privati ed investitori istituzionali15) conoscono queste reazioni e
spesso si fanno trovare “flat16” un minuto prima della diffusione di questi dati (o prima dei discorsi
dei direttore delle banche centrali). Chi invece non se la sente di chiudere le posizioni (magari
perché è in perdita e spera in un recupero proprio sull’onda emotiva delle notizie uscenti) è pronto a
chiudere tutte le posizioni non appena il movimento avverso accelera, con una chiusura al meglio
dettata dal panico. Un trading system può adottare questo sistema o chiudendo tutte le operazioni
contemporaneamente o inserendo per ogni operazione uno stop loss prossimale, ovvero distante
pochi Pips dalle quotazioni correnti (molti broker non consentono stop loss inferiori ai 10 Pips di
distanza dal prezzo corrente).

Se il broker non consente stop loss troppo stretti sarà il programma a gestire le chiusure
memorizzando in variabili globali i rispettivi livelli.
//Per posizioni LONG
OrderModify(OrderTicket(),OrderOpenPrice(),Close[0] -
5*Point,0,0,Blue)
//Per posizioni SHORT
OrderModify(OrderTicket(),OrderOpenPrice(),Close[0] +
5*Point,0,0,Blue)
Oppure se il broker non permette stop loss così stretti

Gl obalVariableSet("PanicStop" + Symbol(), Close[0] – 5 * Point);


...
if(Close[0] <= GlobalVariableGet("PanicStop" + Symbol())

OrderClose(ticket,OrderLots(),Bid,3,Red);

Questa tecnica la chiamo “ Panic Stop and go (PaStGo)” perché è dettata dal panico e perché non
chiude immediatamente ma lascia pochi Pips di margine per i ripensamenti nel movimento atteso ed
accennato (un movimento contrario) e i corsi riprendano a nostro favore.
Con questa tecnica è probabile che molte posizioni vengano chiuse (limitando le perdite) ma è anche
probabile che alcune posizioni restino aperte e proseguano a guadagnare (od a diminuire le perdite).
15 Sono chiamati investitori istituzionali quelle società di intermediazione immobiliare come i gestori
di Fondi, gli intermediari per il collocamento azionario, i proprietary trader e le SIM che operano
per conto dei clienti. Ed in generale quegli organismi, anche pubblici, che muovono ingenti quantità
di denaro.
16 Essere flat (piatto) significa non avere ordini aperti e quindi non essere potenzialmente esposti alle
perdite.

Il fattore scatenante di un Panic Stop and go è la brusca reazione di un cross accompagnata da volumi
in fortissima espansione (situazione di attesa in cui si compiono poche operazioni e quindi bassi
volumi, seguita da forti volumi ed intensi scambi).

Questo evento può essere intercettato attraverso un controllo inserito in ogni EA e che riguarda il
singolo Cross ma che, modificando una variabile globale accessibile da tutti gli EA, attiva le
procedure di attivazione del PaStGo.

// CHECK-UP per i momenti di panico


if (iATR(NULL,0,3,1)>3*iATR(NULL,0,20,1)) &&
Volume[1]>3*VolumeAverage(50,0)) {
//Applicazione del PaStGo
GlobalVariableSet("PanicStop", true); }
...
// Controllo per l’applicazione del PaStGo
if(GlobalVariableGet("PanicStop") == true)

{
//Applicazione del Panic Stop and Go
}

L’uso dei metodi GlobalVariableSet e GlobalVariableGet permette la memorizzazione statica e


condivisa tra i vari EA attivi sullo stesso client permettendo l’attivazione del nostro Panic Stop.

12.f Few Tick and Go


Come ultima variante dei traIling stop cito questa tecnica , Few Tick and Go (FeTiG), che ha il
preciso intento di sfruttare tutti i micromovimenti del mercato con prese di profitto frequenti sebbene
modeste.
Si tratta di una copia del Panic Stop and Go che viene attivata senza il verificarsi dell’evento di
panico ma in automatico per espressa volontà del trader o come risultato della verifica di esistenza
di una situazione di lateralità. In pratica se il programma verifica la mancanza di trend (si presuppone
quindi che le variazioni di prezzo non possano essere eccessive) opta per prese di profitto modeste
(pochi Pips).
Il fattore che indica la mancanza di trend potrebbe essere l’indicatore ADX che in MQL è
rappresentato dalla funzione iADX

double iADX(string symbol,int timeframe,int period, int


applied_price, int mode, int shift)

Se il valore dell’ADX è inferiore a 25 siamo in mancanza di Trend. L’ampiezza della presa di


profitto può essere un valore assoluto (da 1 a 5 Pips) oppure determinato da una frazione del numero
di Pips inclusa tra il massimo di periodo ed il minimo di periodo.
In MQL, a questo proposito risultano utili le funzioni iHighest e iLowest che riportano
rispettivamente l’indice della barra del massimo ed del minimo all’interno di un intervallo di
periodi.

int iHighest(string symbol,int timeframe,int type,int


count=WHOLE_ARRAY, int start=0)
e
int iLowest(string symbol,int timeframe,int type,int
count=WHOLE_ARRAY, int start=0)

// Calcolo del valore più basso di 10 barre consecutive


nell’intervallo tra // la 10a e 19ma inclusa del grafico corrente
double val = Low[iLowest(NULL,0,MODE_LOW,10,10)];

Una variante del FeTiG chiude la posizione non appena sono stati raggiunti I Pips preimpostati.
Questa variante è particolarmente indicata nelle operatività di brevissimo termine come lo Scalping.

//Per operazioni LONG (5 Pips & Go)


if (OrderOpenPrice() + 5*Point <= Bid)
OrderClose(OrderTicket(),1,Bid,3,Red);

//Per operazioni SHORT (5 Pips & Go)
if (OrderOpenPrice() - 5*Point >= Ask)
OrderClose(OrderTicket(),1,Ask,3,Red);
Come si può notare dale righe di codice, le operazioni vengono chiuse non appena sono raggiunti I
target definiti (nell’esempio 5 Pips).

Cenni di Money Management


E’ convinzione diffusa che un bravo trader sia colui che sa concludere un elevato numero di
operazioni di trading in profitto. Nell’immaginario collettivo dei trader dilettanti il concetto astratto
si estende alla figura “mitologica” di colui che entra ai minimi per vendere ai massimi e viceversa.

La realtà è molto diversa. Un bravo guidatore non è uno capace di correre a 300 chilometri orari in
centro ad una metropoli ma bensì chi sa trasportare un carico di porcellane e vetrerie per le strade
dissestate di una città sotto i bombardamenti.

Fare trading non significa concentrarsi sull’unico trade aperto e solo su quello strumento finanziario
ma bensì saper gestire l’equilibrio tra rischio e conoscenza affinché si possano generare flussi medi
costanti di guadagni.

Grazie all’analisi tecnica ed allo studio dei Pattern (modelli grafici) ad elevata probabilità, le entrate
in posizione sono molto spesso corrette. Molto diverso è il giudizio sulle uscite. Moltissimi trader le
sbagliano ritardandole od anticipandole, con il risultato di chiudere in perdita una posizione che
sarebbe potuta essere di guadagno.

Il Money Management è quella disciplina che cerca di responsabilizzare sul rischio di mercato ed
insegnare delle tecniche su come distribuirlo. Una delle prime domande che un trader dovrebbe porsi
è: “quanto capitale impegno nell’operazione che voglio intraprendere ?”

Spesso, nel desiderio di massimizzare i profitti (ipotetici) si utilizza tutto il capitale di rischio
adottando il massimo della leva finanziaria disponibile. Per il 90% dei trader questa pratica porta
alla rovina totale entro un periodo di tempo molto ristretto.

Si supponga di disporre di un capitale iniziale di 1.000€. La prima operazione comporta l’acquisto,


con leva 100:1, di un lotto del Cross EURUSD. Ogni Pips equivale a 10€ e se lo SL viene inserito a
80 Pips ecco che se l’operazione fallisce i nostri 1.000 si ridurranno subito a 200 ! Affinché i 200
possano tornare a 1.000 occorre che la successiva operazione di 0,20 lotti (il massimo permesso con
il capitale rimasto) guadagni ben 400 Pips !! Un evenienza abbastanza remota. Nel tentativo di
mantenere la posizione aperta sino al guadagno dei 400 Pips l’operazione potrebbe incorrere in un
ritracciamento di altri 80 Pips (lo stop loss) e perdere così altri 160€ portando il capitale a soli 40€,
inutili per qualsiasi pezzatura di lotto (in genere il minimo lotto ammesso è 0,10 che equivale ad un
capitale impegnato di 100€).

Nel caso presentato, lo sfortunato trader azzera il proprio capitale con due sole operazioni.
Naturalmente il caso presentato è portato all’estremo, sebbene non infrequente, ma porta in luce un
difetto molto comune.

13.a Distribuzione del rischio


Il proprio capitale destinato agli investimenti ad alto rischio non dovrebbe mai eccedere il 30% dei
propri risparmi.
Ricadono nella categoria “investimenti ad alto rischio” le azioni, le obbligazioni, le opzioni ed i
derivati17, lo spread trading, CFD ed il FOREX. Sono invece considerati a basso rischio i contratti
di “Pronto contro termine”, i “Fondi Liquidità” ed i buoni dello Stato (BOT, CCT e BTP) italiani ed
esteri.

Il motivo di questa suddivisione è da ricercare nella stabilità economica e mantenimento della


capacità di sostenere il proprio stile di vita indipendentemente dall’esito dell’attività di trader (che
potrebbe essere disastrosa così come eccezionale).

Se si è capaci (come tutti i trader pensano di esserlo) non sarà difficile far lievitare il 30% dei
propri risparmi e raggiungere gli stessi risultati che si sarebbero potuti raggiungere impiegando il
100%. Ma se, operando, ci si rende conto di essersi sopravvalutati allora il danno non sarà così
irrecuperabile se fatto con solo una parte del patrimonio disponibile.
17 Con il termine Derivati si accomunano tutti gli strumenti finanziari che “derivano” il loro valore
da un secondo strumento finanziario chiamato sottostante. I Futures sono contratti relativi al valore
che assumerà in un futuro prossimo un indice (Index Futures come il FIB, MiniRussell, MiniNasdaq
ecc..), un bene di consumo (Commodity Futures come quelli sul Petrolio, l’Oro, la Soia, il succo
d’arancia, ecc..) o un cambio tra valuta (Currency Futures come l’EuroFX). Altri derivati sono i
Warrant e Covered Warrant, i CFD (contratti per differenza).

La destinazione di parte dei risparmi ad un’attività di rischio deve poi essere ancora ripartita su più
investimenti distinti in modo da distribuire il rischio su più operazioni contemporanee.

La diversificazione è uno dei principi cardine della teoria finanziaria sugli investimenti. Se ben
preparati sarà possibile sbagliare qualche investimento ma non tutti e la distribuzione percentuale
dipende dalla preparazione e dall’esperienza del trader.

Nello specifico del mercato FOREX, è buona norma entrare in posizione su più cross in modo da
livellare i rischi connessi a errori di valutazione. Inoltre il mercato delle valute è un mercato molto
particolare in quanto rappresenta un esempio anomalo di vasi comunicanti. La contrazione di un cross
provoca la distensione di altri cross per cui, all’estremo, l’acquisto di un lotto per ogni cross
porterebbe all’annullamento del rischio18. Questo sappiamo che non avviene poiché ci sono molti
fattori di disturbo che limitano l’ottimizzazione ma, in generale ed i modo attutito, questo fenomeno si
verifica, specie su alcuni cross particolarmente correlati.

Una diversificazione corretta dovrebbe tenere conto anche di cross con spread limitati per evitare di
rimanere troppo a lungo in posizione di attesa. L’entrata su contratti cross con 8 o più pips di spread
comporterebbe un immediata perdita (lo spread) ed un tempo atteso troppo lungo per la sua
neutralizzazione.

Considerando la liquidità, gli spread applicati dai broker e la correlazione, i cross seguenti, al tempo
in cui scrivo, rappresentano dei buoni candidati per effettuare la diversificazione:

• EURUSD Euro vs. Dollaro Americano


• EURCHF Euro vs. Franco Svizzero
• EURJPY Euro vs. Yen Giapponese
• USDCHF Dollaro Americano vs. Franco Svizzero
• USDJPY Dollaro Americano vs. Yen Giapponese
• GBPUSD Sterlina Inglese vs. Dollaro Americano
• GBPJPY Sterlina Inglese vs. Yen Giapponese
18 Rifacendosi all’esempio dei vasi comunicanti, essendo sempre 100 il totale dei litri posti nel
circuito, la pressione di un vaso corrisponde all’innalzamento di livello nell’altro vaso. Ora
ipotizziamo che i vasi comunicanti siano non due ma decine (come i cross sulle valute), la pressione
su di un vaso porta all’innalzamento del livello sui rimanenti vasi. Il volume totale del liquido rimane
comunque inalterato.
13.b Prese di profitto e chiusura frazionata delle operazioni
Una volta che l’operazione è aperta ed i corsi viaggiano in nostro favore è necessario assicurarci la
positività o neutralità dell’operazione. Per fare questo occorre prendere profitto od assicurarcene una
presa soddisfacente.

Nel capitolo dedicato ai trailing stop abbiamo affrontato il modo di gestire la “mobilità” del cross e
del modo per assicurarci parte dei guadagni. Ora si vedrà come razionalizzare le uscite da un punto
di vista puramente economico.

Quando un operazione (la cui dimensione è un multiplo del lotto minimo) è in guadagno occorre
cercare di suddividere l’uscita in più momenti. Una prima uscita tende a compensare il costo degli
spread per l’intera posizione mentre la successiva (o successive) ad inseguire il massimo profitto (al
netto del trailing stop).

Facciamo un esempio. Supponiamo di aprire una posizione sulla Sterlina contro Franco Svizzero per
0,20 lotti al prezzo di 3 Pips di spread e 40 Pips di Stop Loss. Ogni Pips vale 2€. Dopo qualche
minuto passato in quotazioni altalenanti intorno alla parità, il cross inizia a salire. Quando il
guadagno raggiunge i 32 Pips vendiamo metà posizione (0,10 Lotti) e incassiamo 26€. Si aspettano
32 Pips poiché ogni operazione comporta uno spread di 3 Pips, e la somma tra apertura e chiusura è
di 6 Pips, ma noi abbiamo un'altra posizione aperta per la quale vogliamo già scontare i costi di
chiusura. Nel frattempo il trailing stop sulla restante posizione viene portato a 40 Pips dalle
quotazioni. Se, malauguratamente le quotazioni dovessero invertire e fosse raggiunto lo stop loss la
perdita sarebbe di 26€ che, compensata con il profitto precedente renderebbe neutra l’operazione.
Naturalmente è possibile spostare la presa di beneficio da 32 a 40 Pips in modo da rendere
comunque positiva l’intera operazione, senza compromettere l’operazione.
E’ naturale che più gli spread sono ridotti e più sarà anticipata la chiusura della prima parte (per uno
Spread di 2 Pips si chiuderà a 28 e non più a 32 Pips). Nella figura riportata il triangolo verde
corrisponde all’entità del guadagno all’aumentare dell’attesa per la chiusura della prima parte.

13.c Entrate ed uscite piramidali


Uno dei concetti che stà alla base del money management è la salvaguardia del capitale ed
all’abbattimento del rischio in un attività che ne è piena. Con le entrate piramidali si vuole investire
su un cross poco alla volta e aumentare la posizione man mano che aumentano i guadagni. Affinché il
tutto avvenga con il minor livello di rischio possibile è necessario calcolare esattamente i livelli di
ingresso e le relative quantità, così come i livelli di ingresso.
Rifacendosi al concetto della massimizzazione dei profitti, chi impiega tutto il capitale, in caso di
guadagno otterrà il massimo possibile date le proprie finanze. Ma è anche vero che si espone ad un
rischio enorme proprio a causa del valore assoluto che hanno le variazioni in relazione al capitale
disponibile e la leva utilizzata.
La tecnica delle entrate piramidali vuole invece cercare di ottenere il massimo profitto minimizzando
i rischi.
Partiamo dalla coda: il massimo rischio ammesso. Il rischio massimo deve essere costituito dalla
chiusura in stop loss del più piccolo investimento possibile (per esempio 0,10 lotti di un Cross e 80
punti di stop pari a 80€). Il massimo profitto possibile è invece quello ricavabile da una posizione in
guadagno impegnando tutto il capitale a disposizione. Si può ipotizzare un obiettivo di prezzo (fissare
quindi un Take Profit) oppure affidarsi ad un trailing stop tra quelli visti nel passato capitolo.

I piramidali classici sono creati con aquisti frazionati di quantità mano a mano calanti (per ordini
Long) o crescenti (per ordini Short). In questo modo la prima operazione assume in sé un rischio
mercato troppo alto (per le operazioni Long).

Il piramidale che si vuole introdurre in questo capitolo è invece basato sulla diminuzione del rischio
sopra ogni altro fattore.

La tecnica prevede di aprire una posizione con 0,10 lotti e aprirne successivamente una da 0,20 lotti
(il doppio della precedente) non appena i guadagni della prima possano compensare le perdite della
seconda apertura in caso di inversione ed attivazione dello stop loss. Le successive aperture seguono
la stessa logica. Va da sé che tra un’apertura e la successiva occorre mantenere un margine di
movimento del cross in modo tale da consentirgli di muoversi e crescere senza chiudere anzitempo
l’intero castello di posizioni.

Se il passo piramidale, ovvero l’entità delle quantità degli ordini successivi, si mantiene costante
allora la distanza tra ogni ulteriore ordine diminuisce man mano che si va avanti poiché diminuisce
l’apporto percentuale sul totale dell’operazione.
Nel caso in cui si raddoppi la posizione ad ogni ulteriore ingresso la distanza si manterrà costante tra
un ingresso ed il successivo.

Nelle tabelle seguenti vengono rappresentate le griglia delle entrate e delle uscite da usare come
riferimento nelle tre diverse tipologie di progressione piramidale:
progressione lineare
progressione geometrica progressione esponenziale

In tutte è tre i modelli ci si è attenuti a due vincoli: iniziare con 0,10 lotti e mantenere un margine di
stop loss di 20 Pips a partire dalla seconda entrata. Uno stop loss più stretto sarebbe
controproducente in quanto i ritracciamenti fisiologici rischierebbero di chiudere anzitempo la
posizione intera. Tabella di un investimento piramidale con progressione lineare

Lotti (incremento con progressione lineare di 0,10)


Pips 0,1 0,2 0,3 0,4 0,5
0 € - -€ 124,00 -€ 370,00 -€ 750,00 -€ 1.275,00
1 € 1,00 -€ 121,00 -€ 364,00 -€ 740,00 -€ 1.260,00
2 € 2,00 -€ 118,00 -€ 358,00 -€ 730,00 -€ 1.245,00
3 € 3,00 -€ 115,00 -€ 352,00 -€ 720,00 -€ 1.230,00
4 € 4,00 -€ 112,00 -€ 346,00 -€ 710,00 -€ 1.215,00
5 € 5,00 -€ 109,00 -€ 340,00 -€ 700,00 -€ 1.200,00
6 € 6,00 -€ 106,00 -€ 334,00 -€ 690,00 -€ 1.185,00
7 € 7,00 -€ 103,00 -€ 328,00 -€ 680,00 -€ 1.170,00
8 € 8,00 -€ 100,00 -€ 322,00 -€ 670,00 -€ 1.155,00
9 € 9,00 -€ 97,00 -€ 316,00 -€ 660,00 -€ 1.140,00
10 € 10,00 -€ 94,00 -€ 310,00 -€ 650,00 -€ 1.125,00
11 € 11,00 -€ 91,00 -€ 304,00 -€ 640,00 -€ 1.110,00
12 € 12,00 -€ 88,00 -€ 298,00 -€ 630,00 -€ 1.095,00
13 € 13,00 -€ 85,00 -€ 292,00 -€ 620,00 -€ 1.080,00
14 € 14,00 -€ 82,00 -€ 286,00 -€ 610,00 -€ 1.065,00
15 € 15,00 -€ 79,00 -€ 280,00 -€ 600,00 -€ 1.050,00
16 € 16,00 -€ 76,00 -€ 274,00 -€ 590,00 -€ 1.035,00
17 € 17,00 -€ 73,00 -€ 268,00 -€ 580,00 -€ 1.020,00
18 € 18,00 -€ 70,00 -€ 262,00 -€ 570,00 -€ 1.005,00
19 € 19,00 -€ 67,00 -€ 256,00 -€ 560,00 -€ 990,00
20 € 20,00 -€ 64,00 -€ 250,00 -€ 550,00 -€ 975,00
21 € 21,00 -€ 61,00 -€ 244,00 -€ 540,00 -€ 960,00
22 € 22,00 -€ 58,00 -€ 238,00 -€ 530,00 -€ 945,00
23 € 23,00 -€ 55,00 -€ 232,00 -€ 520,00 -€ 930,00
24 € 24,00 -€ 52,00 -€ 226,00 -€ 510,00 -€ 915,00
25 € 25,00 -€ 49,00 -€ 220,00 -€ 500,00 -€ 900,00
26 € 26,00 -€ 46,00 -€ 214,00 -€ 490,00 -€ 885,00
27 € 27,00 -€ 43,00 -€ 208,00 -€ 480,00 -€ 870,00
28 € 28,00 -€ 40,00 -€ 202,00 -€ 470,00 -€ 855,00
29 € 29,00 -€ 37,00 -€ 196,00 -€ 460,00 -€ 840,00
30 € 30,00 -€ 34,00 -€ 190,00 -€ 450,00 -€ 825,00
31 € 31,00 -€ 31,00 -€ 184,00 -€ 440,00 -€ 810,00
32 € 32,00 -€ 28,00 -€ 178,00 -€ 430,00 -€ 795,00
33 € 33,00 -€ 25,00 -€ 172,00 -€ 420,00 -€ 780,00
34 € 34,00 -€ 22,00 -€ 166,00 -€ 410,00 -€ 765,00
35 € 35,00 -€ 19,00 -€ 160,00 -€ 400,00 -€ 750,00
36 € 36,00 -€ 16,00 -€ 154,00 -€ 390,00 -€ 735,00
37 € 37,00 -€ 13,00 -€ 148,00 -€ 380,00 -€ 720,00
38 € 38,00 -€ 10,00 -€ 142,00 -€ 370,00 -€ 705,00
39 € 39,00 -€ 7,00 -€ 136,00 -€ 360,00 -€ 690,00
40 € 40,00 -€ 4,00 -€ 130,00 -€ 350,00 -€ 675,00
41 € 41,00 -€ 1,00 -€ 124,00 -€ 340,00 -€ 660,00
42 € 42,00 € 2,00 -€ 118,00 -€ 330,00 -€ 645,00
43 € 43,00 € 5,00 -€ 112,00 -€ 320,00 -€ 630,00
44 € 44,00 € 8,00 -€ 106,00 -€ 310,00 -€ 615,00
45 € 45,00 € 11,00 -€ 100,00 -€ 300,00 -€ 600,00
46 € 46,00 € 14,00 -€ 94,00 -€ 290,00 -€ 585,00
47 € 47,00 € 17,00 -€ 88,00 -€ 280,00 -€ 570,00
48 € 48,00 € 20,00 -€ 82,00 -€ 270,00 -€ 555,00
49 € 49,00 € 23,00 -€ 76,00 -€ 260,00 -€ 540,00
50 € 50,00 € 26,00 -€ 70,00 -€ 250,00 -€ 525,00
51 € 51,00 € 29,00 -€ 64,00 -€ 240,00 -€ 510,00
52 € 52,00 € 32,00 -€ 58,00 -€ 230,00 -€ 495,00
53 € 53,00 € 35,00 -€ 52,00 -€ 220,00 -€ 480,00
54 € 54,00 € 38,00 -€ 46,00 -€ 210,00 -€ 465,00
55 € 55,00 € 41,00 -€ 40,00 -€ 200,00 -€ 450,00
56 € 56,00 € 44,00 -€ 34,00 -€ 190,00 -€ 435,00
57 € 57,00 € 47,00 -€ 28,00 -€ 180,00 -€ 420,00
58 € 58,00 € 50,00 -€ 22,00 -€ 170,00 -€ 405,00
59 € 59,00 € 53,00 -€ 16,00 -€ 160,00 -€ 390,00
60 € 60,00 € 56,00 -€ 10,00 -€ 150,00 -€ 375,00
61 € 61,00 € 59,00 -€ 4,00 -€ 140,00 -€ 360,00
62 € 62,00 € 62,00 € 2,00 -€ 130,00 -€ 345,00
63 € 63,00 € 65,00 € 8,00 -€ 120,00 -€ 330,00
64 € 64,00 € 68,00 € 14,00 -€ 110,00 -€ 315,00
65 € 65,00 € 71,00 € 20,00 -€ 100,00 -€ 300,00
66 € 66,00 € 74,00 € 26,00 -€ 90,00 -€ 285,00
67 € 67,00 € 77,00 € 32,00 -€ 80,00 -€ 270,00
68 € 68,00 € 80,00 € 38,00 -€ 70,00 -€ 255,00
69 € 69,00 € 83,00 € 44,00 -€ 60,00 -€ 240,00
70 € 70,00 € 86,00 € 50,00 -€ 50,00 -€ 225,00
71 € 71,00 € 89,00 € 56,00 -€ 40,00 -€ 210,00
72 € 72,00 € 92,00 € 62,00 -€ 30,00 -€ 195,00
73 € 73,00 € 95,00 € 68,00 -€ 20,00 -€ 180,00
74 € 74,00 € 98,00 € 74,00 -€ 10,00 -€ 165,00
75 € 75,00 € 101,00 € 80,00 € - -€ 150,00
76 € 76,00 € 104,00 € 86,00 € 10,00 -€ 135,00
77 € 77,00 € 107,00 € 92,00 € 20,00 -€ 120,00
78 € 78,00 € 110,00 € 98,00 € 30,00 -€ 105,00
79 € 79,00 € 113,00 € 104,00 € 40,00 -€ 90,00
80 € 80,00 € 116,00 € 110,00 € 50,00 -€ 75,00
81 € 81,00 € 119,00 € 116,00 € 60,00 -€ 60,00
82 € 82,00 € 122,00 € 122,00 € 70,00 -€ 45,00
83 € 83,00 € 125,00 € 128,00 € 80,00 -€ 30,00
84 € 84,00 € 128,00 € 134,00 € 90,00 -€ 15,00
85 € 85,00 € 131,00 € 140,00 € 100,00 € - 86 € 86,00 € 134,00 € 146,00 € 110,00 € 15,00
87 € 87,00 € 137,00 € 152,00 € 120,00 € 30,00
88 € 88,00 € 140,00 € 158,00 € 130,00 € 45,00
89 € 89,00 € 143,00 € 164,00 € 140,00 € 60,00
90 € 90,00 € 146,00 € 170,00 € 150,00 € 75,00
91 € 91,00 € 149,00 € 176,00 € 160,00 € 90,00
92 € 92,00 € 152,00 € 182,00 € 170,00 € 105,00
93 € 93,00 € 155,00 € 188,00 € 180,00 € 120,00
94 € 94,00 € 158,00 € 194,00 € 190,00 € 135,00
95 € 95,00 € 161,00 € 200,00 € 200,00 € 150,00
96 € 96,00 € 164,00 € 206,00 € 210,00 € 165,00
97 € 97,00 € 167,00 € 212,00 € 220,00 € 180,00
98 € 98,00 € 170,00 € 218,00 € 230,00 € 195,00
99 € 99,00 € 173,00 € 224,00 € 240,00 € 210,00
100 € 100,00 € 176,00 € 230,00 € 250,00 € 225,00
101 € 101,00 € 179,00 € 236,00 € 260,00 € 240,00
102 € 102,00 € 182,00 € 242,00 € 270,00 € 255,00
103 € 103,00 € 185,00 € 248,00 € 280,00 € 270,00
104 € 104,00 € 188,00 € 254,00 € 290,00 € 285,00
105 € 105,00 € 191,00 € 260,00 € 300,00 € 300,00
106 € 106,00 € 194,00 € 266,00 € 310,00 € 315,00
107 € 107,00 € 197,00 € 272,00 € 320,00 € 330,00
108 € 108,00 € 200,00 € 278,00 € 330,00 € 345,00
109 € 109,00 € 203,00 € 284,00 € 340,00 € 360,00
110 € 110,00 € 206,00 € 290,00 € 350,00 € 375,00
111 € 111,00 € 209,00 € 296,00 € 360,00 € 390,00
112 € 112,00 € 212,00 € 302,00 € 370,00 € 405,00
113 € 113,00 € 215,00 € 308,00 € 380,00 € 420,00
114 € 114,00 € 218,00 € 314,00 € 390,00 € 435,00
115 € 115,00 € 221,00 € 320,00 € 400,00 € 450,00
116 € 116,00 € 224,00 € 326,00 € 410,00 € 465,00
117 € 117,00 € 227,00 € 332,00 € 420,00 € 480,00
118 € 118,00 € 230,00 € 338,00 € 430,00 € 495,00
119 € 119,00 € 233,00 € 344,00 € 440,00 € 510,00

Tabella di un investimento piramidale con progressione geometrica

Lotti (incremento a progressione geometrica)


Pips 0,1 0,2 0,4 0,8 1,6 0 € - -€ 124,00 -€ 484,00 -€ 1.396,00 -€ 3.572,00 1 € 1,00 -€ 121,00 -€
477,00 -€ 1.381,00 -€ 3.541,00 2 € 2,00 -€ 118,00 -€ 470,00 -€ 1.366,00 -€ 3.510,00 3 € 3,00 -€
115,00 -€ 463,00 -€ 1.351,00 -€ 3.479,00 4 € 4,00 -€ 112,00 -€ 456,00 -€ 1.336,00 -€ 3.448,00 5 €
5,00 -€ 109,00 -€ 449,00 -€ 1.321,00 -€ 3.417,00 6 € 6,00 -€ 106,00 -€ 442,00 -€ 1.306,00 -€
3.386,00 7 € 7,00 -€ 103,00 -€ 435,00 -€ 1.291,00 -€ 3.355,00 8 € 8,00 -€ 100,00 -€ 428,00 -€
1.276,00 -€ 3.324,00 9 € 9,00 -€ 97,00 -€ 421,00 -€ 1.261,00 -€ 3.293,00 10 € 10,00 -€ 94,00 -€
414,00 -€ 1.246,00 -€ 3.262,00 11 € 11,00 -€ 91,00 -€ 407,00 -€ 1.231,00 -€ 3.231,00 12 € 12,00 -€
88,00 -€ 400,00 -€ 1.216,00 -€ 3.200,00 13 € 13,00 -€ 85,00 -€ 393,00 -€ 1.201,00 -€ 3.169,00 14 €
14,00 -€ 82,00 -€ 386,00 -€ 1.186,00 -€ 3.138,00 15 € 15,00 -€ 79,00 -€ 379,00 -€ 1.171,00 -€
3.107,00 16 € 16,00 -€ 76,00 -€ 372,00 -€ 1.156,00 -€ 3.076,00 17 € 17,00 -€ 73,00 -€ 365,00 -€
1.141,00 -€ 3.045,00 18 € 18,00 -€ 70,00 -€ 358,00 -€ 1.126,00 -€ 3.014,00 19 € 19,00 -€ 67,00 -€
351,00 -€ 1.111,00 -€ 2.983,00 20 € 20,00 -€ 64,00 -€ 344,00 -€ 1.096,00 -€ 2.952,00 21 € 21,00 -€
61,00 -€ 337,00 -€ 1.081,00 -€ 2.921,00 22 € 22,00 -€ 58,00 -€ 330,00 -€ 1.066,00 -€ 2.890,00 23 €
23,00 -€ 55,00 -€ 323,00 -€ 1.051,00 -€ 2.859,00 24 € 24,00 -€ 52,00 -€ 316,00 -€ 1.036,00 -€
2.828,00 25 € 25,00 -€ 49,00 -€ 309,00 -€ 1.021,00 -€ 2.797,00 26 € 26,00 -€ 46,00 -€ 302,00 -€
1.006,00 -€ 2.766,00 27 € 27,00 -€ 43,00 -€ 295,00 -€ 991,00 -€ 2.735,00 28 € 28,00 -€ 40,00 -€
288,00 -€ 976,00 -€ 2.704,00 29 € 29,00 -€ 37,00 -€ 281,00 -€ 961,00 -€ 2.673,00 30 € 30,00 -€
34,00 -€ 274,00 -€ 946,00 -€ 2.642,00 31 € 31,00 -€ 31,00 -€ 267,00 -€ 931,00 -€ 2.611,00 32 €
32,00 -€ 28,00 -€ 260,00 -€ 916,00 -€ 2.580,00 33 € 33,00 -€ 25,00 -€ 253,00 -€ 901,00 -€ 2.549,00
34 € 34,00 -€ 22,00 -€ 246,00 -€ 886,00 -€ 2.518,00 35 € 35,00 -€ 19,00 -€ 239,00 -€ 871,00 -€
2.487,00 36 € 36,00 -€ 16,00 -€ 232,00 -€ 856,00 -€ 2.456,00 37 € 37,00 -€ 13,00 -€ 225,00 -€
841,00 -€ 2.425,00 38 € 38,00 -€ 10,00 -€ 218,00 -€ 826,00 -€ 2.394,00 39 € 39,00 -€ 7,00 -€
211,00 -€ 811,00 -€ 2.363,00 40 € 40,00 -€ 4,00 -€ 204,00 -€ 796,00 -€ 2.332,00 41 € 41,00 -€ 1,00
-€ 197,00 -€ 781,00 -€ 2.301,00 42 € 42,00 € 2,00 -€ 190,00 -€ 766,00 -€ 2.270,00 43 € 43,00 €
5,00 -€ 183,00 -€ 751,00 -€ 2.239,00 44 € 44,00 € 8,00 -€ 176,00 -€ 736,00 -€ 2.208,00 45 € 45,00
€ 11,00 -€ 169,00 -€ 721,00 -€ 2.177,00 46 € 46,00 € 14,00 -€ 162,00 -€ 706,00 -€ 2.146,00 47 €
47,00 € 17,00 -€ 155,00 -€ 691,00 -€ 2.115,00 48 € 48,00 € 20,00 -€ 148,00 -€ 676,00 -€ 2.084,00
49 € 49,00 € 23,00 -€ 141,00 -€ 661,00 -€ 2.053,00 50 € 50,00 € 26,00 -€ 134,00 -€ 646,00 -€
2.022,00 51 € 51,00 € 29,00 -€ 127,00 -€ 631,00 -€ 1.991,00 52 € 52,00 € 32,00 -€ 120,00 -€
616,00 -€ 1.960,00 53 € 53,00 € 35,00 -€ 113,00 -€ 601,00 -€ 1.929,00 54 € 54,00 € 38,00 -€
106,00 -€ 586,00 -€ 1.898,00 55 € 55,00 € 41,00 -€ 99,00 -€ 571,00 -€ 1.867,00 56 € 56,00 € 44,00
-€ 92,00 -€ 556,00 -€ 1.836,00 57 € 57,00 € 47,00 -€ 85,00 -€ 541,00 -€ 1.805,00 58 € 58,00 €
50,00 -€ 78,00 -€ 526,00 -€ 1.774,00 59 € 59,00 € 53,00 -€ 71,00 -€ 511,00 -€ 1.743,00 60 € 60,00
€ 56,00 -€ 64,00 -€ 496,00 -€ 1.712,00 61 € 61,00 € 59,00 -€ 57,00 -€ 481,00 -€ 1.681,00 62 €
62,00 € 62,00 -€ 50,00 -€ 466,00 -€ 1.650,00 63 € 63,00 € 65,00 -€ 43,00 -€ 451,00 -€ 1.619,00 64
€ 64,00 € 68,00 -€ 36,00 -€ 436,00 -€ 1.588,00 65 € 65,00 € 71,00 -€ 29,00 -€ 421,00 -€ 1.557,00
66 € 66,00 € 74,00 -€ 22,00 -€ 406,00 -€ 1.526,00 67 € 67,00 € 77,00 -€ 15,00 -€ 391,00 -€
1.495,00 68 € 68,00 € 80,00 -€ 8,00 -€ 376,00 -€ 1.464,00 69 € 69,00 € 83,00 -€ 1,00 -€ 361,00 -€
1.433,00 70 € 70,00 € 86,00 € 6,00 -€ 346,00 -€ 1.402,00 71 € 71,00 € 89,00 € 13,00 -€ 331,00 -€
1.371,00 72 € 72,00 € 92,00 € 20,00 -€ 316,00 -€ 1.340,00 73 € 73,00 € 95,00 € 27,00 -€ 301,00 -€
1.309,00 74 € 74,00 € 98,00 € 34,00 -€ 286,00 -€ 1.278,00 75 € 75,00 € 101,00 € 41,00 -€ 271,00 -€
1.247,00 76 € 76,00 € 104,00 € 48,00 -€ 256,00 -€ 1.216,00 77 € 77,00 € 107,00 € 55,00 -€ 241,00
-€ 1.185,00 78 € 78,00 € 110,00 € 62,00 -€ 226,00 -€ 1.154,00 79 € 79,00 € 113,00 € 69,00 -€
211,00 -€ 1.123,00 80 € 80,00 € 116,00 € 76,00 -€ 196,00 -€ 1.092,00 81 € 81,00 € 119,00 € 83,00
-€ 181,00 -€ 1.061,00 82 € 82,00 € 122,00 € 90,00 -€ 166,00 -€ 1.030,00 83 € 83,00 € 125,00 €
97,00 -€ 151,00 -€ 999,00 84 € 84,00 € 128,00 € 104,00 -€ 136,00 -€ 968,00 85 € 85,00 € 131,00 €
111,00 -€ 121,00 -€ 937,00 86 € 86,00 € 134,00 € 118,00 -€ 106,00 -€ 906,00 87 € 87,00 € 137,00 €
125,00 -€ 91,00 -€ 875,00 88 € 88,00 € 140,00 € 132,00 -€ 76,00 -€ 844,00 89 € 89,00 € 143,00 €
139,00 -€ 61,00 -€ 813,00 90 € 90,00 € 146,00 € 146,00 -€ 46,00 -€ 782,00 91 € 91,00 € 149,00 €
153,00 -€ 31,00 -€ 751,00 92 € 92,00 € 152,00 € 160,00 -€ 16,00 -€ 720,00 93 € 93,00 € 155,00 €
167,00 -€ 1,00 -€ 689,00 94 € 94,00 € 158,00 € 174,00 € 14,00 -€ 658,00 95 € 95,00 € 161,00 €
181,00 € 29,00 -€ 627,00 96 € 96,00 € 164,00 € 188,00 € 44,00 -€ 596,00 97 € 97,00 € 167,00 €
195,00 € 59,00 -€ 565,00 98 € 98,00 € 170,00 € 202,00 € 74,00 -€ 534,00 99 € 99,00 € 173,00 €
209,00 € 89,00 -€ 503,00 100 € 100,00 € 176,00 € 216,00 € 104,00 -€ 472,00 101 € 101,00 €
179,00 € 223,00 € 119,00 -€ 441,00 102 € 102,00 € 182,00 € 230,00 € 134,00 -€ 410,00 103 €
103,00 € 185,00 € 237,00 € 149,00 -€ 379,00 104 € 104,00 € 188,00 € 244,00 € 164,00 -€ 348,00
105 € 105,00 € 191,00 € 251,00 € 179,00 -€ 317,00 106 € 106,00 € 194,00 € 258,00 € 194,00 -€
286,00 107 € 107,00 € 197,00 € 265,00 € 209,00 -€ 255,00 108 € 108,00 € 200,00 € 272,00 €
224,00 -€ 224,00 109 € 109,00 € 203,00 € 279,00 € 239,00 -€ 193,00 110 € 110,00 € 206,00 €
286,00 € 254,00 -€ 162,00 111 € 111,00 € 209,00 € 293,00 € 269,00 -€ 131,00 112 € 112,00 €
212,00 € 300,00 € 284,00 -€ 100,00 113 € 113,00 € 215,00 € 307,00 € 299,00 -€ 69,00 114 €
114,00 € 218,00 € 314,00 € 314,00 -€ 38,00 115 € 115,00 € 221,00 € 321,00 € 329,00 -€ 7,00 116 €
116,00 € 224,00 € 328,00 € 344,00 € 24,00 117 € 117,00 € 227,00 € 335,00 € 359,00 € 55,00 118 €
118,00 € 230,00 € 342,00 € 374,00 € 86,00 119 € 119,00 € 233,00 € 349,00 € 389,00 € 117,00 120
€ 120,00 € 236,00 € 356,00 € 404,00 € 148,00 121 € 121,00 € 239,00 € 363,00 € 419,00 € 179,00
122 € 122,00 € 242,00 € 370,00 € 434,00 € 210,00 123 € 123,00 € 245,00 € 377,00 € 449,00 €
241,00 124 € 124,00 € 248,00 € 384,00 € 464,00 € 272,00 125 € 125,00 € 251,00 € 391,00 € 479,00
€ 303,00 126 € 126,00 € 254,00 € 398,00 € 494,00 € 334,00 127 € 127,00 € 257,00 € 405,00 €
509,00 € 365,00 128 € 128,00 € 260,00 € 412,00 € 524,00 € 396,00 129 € 129,00 € 263,00 € 419,00
€ 539,00 € 427,00 130 € 130,00 € 266,00 € 426,00 € 554,00 € 458,00 131 € 131,00 € 269,00 €
433,00 € 569,00 € 489,00 132 € 132,00 € 272,00 € 440,00 € 584,00 € 520,00 133 € 133,00 € 275,00
€ 447,00 € 599,00 € 551,00 134 € 134,00 € 278,00 € 454,00 € 614,00 € 582,00 135 € 135,00 €
281,00 € 461,00 € 629,00 € 613,00 136 € 136,00 € 284,00 € 468,00 € 644,00 € 644,00 137 € 137,00
€ 287,00 € 475,00 € 659,00 € 675,00 138 € 138,00 € 290,00 € 482,00 € 674,00 € 706,00 139 €
139,00 € 293,00 € 489,00 € 689,00 € 737,00 140 € 140,00 € 296,00 € 496,00 € 704,00 € 768,00 141
€ 141,00 € 299,00 € 503,00 € 719,00 € 799,00 142 € 142,00 € 302,00 € 510,00 € 734,00 € 830,00
143 € 143,00 € 305,00 € 517,00 € 749,00 € 861,00 144 € 144,00 € 308,00 € 524,00 € 764,00 €
892,00

Tabella di un investimento piramidale con progressione Esponenziale

Lotti (incremento a progressione esponenziale)


Pips 0,1 0,2 0,6 1,8 5,4 0 € - -€ 124,00 -€ 736,00 -€ 3.292,00 -€ 13.120,00 1 € 1,00 -€ 121,00 -€
727,00 -€ 3.265,00 -€ 13.039,00 2 € 2,00 -€ 118,00 -€ 718,00 -€ 3.238,00 -€ 12.958,00 3 € 3,00 -€
115,00 -€ 709,00 -€ 3.211,00 -€ 12.877,00 4 € 4,00 -€ 112,00 -€ 700,00 -€ 3.184,00 -€ 12.796,00 5
€ 5,00 -€ 109,00 -€ 691,00 -€ 3.157,00 -€ 12.715,00 6 € 6,00 -€ 106,00 -€ 682,00 -€ 3.130,00 -€
12.634,00 7 € 7,00 -€ 103,00 -€ 673,00 -€ 3.103,00 -€ 12.553,00 8 € 8,00 -€ 100,00 -€ 664,00 -€
3.076,00 -€ 12.472,00 9 € 9,00 -€ 97,00 -€ 655,00 -€ 3.049,00 -€ 12.391,00

10 € 10,00 -€ 94,00 -€ 646,00 -€ 3.022,00 -€ 12.310,00


11 € 11,00 -€ 91,00 -€ 637,00 -€ 2.995,00 -€ 12.229,00
12 € 12,00 -€ 88,00 -€ 628,00 -€ 2.968,00 -€ 12.148,00
13 € 13,00 -€ 85,00 -€ 619,00 -€ 2.941,00 -€ 12.067,00
14 € 14,00 -€ 82,00 -€ 610,00 -€ 2.914,00 -€ 11.986,00
15 € 15,00 -€ 79,00 -€ 601,00 -€ 2.887,00 -€ 11.905,00
16 € 16,00 -€ 76,00 -€ 592,00 -€ 2.860,00 -€ 11.824,00
17 € 17,00 -€ 73,00 -€ 583,00 -€ 2.833,00 -€ 11.743,00
18 € 18,00 -€ 70,00 -€ 574,00 -€ 2.806,00 -€ 11.662,00
19 € 19,00 -€ 67,00 -€ 565,00 -€ 2.779,00 -€ 11.581,00
20 € 20,00 -€ 64,00 -€ 556,00 -€ 2.752,00 -€ 11.500,00
21 € 21,00 -€ 61,00 -€ 547,00 -€ 2.725,00 -€ 11.419,00
22 € 22,00 -€ 58,00 -€ 538,00 -€ 2.698,00 -€ 11.338,00
23 € 23,00 -€ 55,00 -€ 529,00 -€ 2.671,00 -€ 11.257,00
24 € 24,00 -€ 52,00 -€ 520,00 -€ 2.644,00 -€ 11.176,00
25 € 25,00 -€ 49,00 -€ 511,00 -€ 2.617,00 -€ 11.095,00
26 € 26,00 -€ 46,00 -€ 502,00 -€ 2.590,00 -€ 11.014,00
27 € 27,00 -€ 43,00 -€ 493,00 -€ 2.563,00 -€ 10.933,00
28 € 28,00 -€ 40,00 -€ 484,00 -€ 2.536,00 -€ 10.852,00
29 € 29,00 -€ 37,00 -€ 475,00 -€ 2.509,00 -€ 10.771,00
30 € 30,00 -€ 34,00 -€ 466,00 -€ 2.482,00 -€ 10.690,00
31 € 31,00 -€ 31,00 -€ 457,00 -€ 2.455,00 -€ 10.609,00
32 € 32,00 -€ 28,00 -€ 448,00 -€ 2.428,00 -€ 10.528,00
33 € 33,00 -€ 25,00 -€ 439,00 -€ 2.401,00 -€ 10.447,00
34 € 34,00 -€ 22,00 -€ 430,00 -€ 2.374,00 -€ 10.366,00
35 € 35,00 -€ 19,00 -€ 421,00 -€ 2.347,00 -€ 10.285,00
36 € 36,00 -€ 16,00 -€ 412,00 -€ 2.320,00 -€ 10.204,00
37 € 37,00 -€ 13,00 -€ 403,00 -€ 2.293,00 -€ 10.123,00
38 € 38,00 -€ 10,00 -€ 394,00 -€ 2.266,00 -€ 10.042,00
39 € 39,00 -€ 7,00 -€ 385,00 -€ 2.239,00 -€ 9.961,00
40 € 40,00 -€ 4,00 -€ 376,00 -€ 2.212,00 -€ 9.880,00
41 € 41,00 -€ 1,00 -€ 367,00 -€ 2.185,00 -€ 9.799,00
42 € 42,00 € 2,00 -€ 358,00 -€ 2.158,00 -€ 9.718,00
43 € 43,00 € 5,00 -€ 349,00 -€ 2.131,00 -€ 9.637,00
44 € 44,00 € 8,00 -€ 340,00 -€ 2.104,00 -€ 9.556,00
45 € 45,00 € 11,00 -€ 331,00 -€ 2.077,00 -€ 9.475,00
46 € 46,00 € 14,00 -€ 322,00 -€ 2.050,00 -€ 9.394,00
47 € 47,00 € 17,00 -€ 313,00 -€ 2.023,00 -€ 9.313,00
48 € 48,00 € 20,00 -€ 304,00 -€ 1.996,00 -€ 9.232,00
49 € 49,00 € 23,00 -€ 295,00 -€ 1.969,00 -€ 9.151,00
50 € 50,00 € 26,00 -€ 286,00 -€ 1.942,00 -€ 9.070,00
51 € 51,00 € 29,00 -€ 277,00 -€ 1.915,00 -€ 8.989,00
52 € 52,00 € 32,00 -€ 268,00 -€ 1.888,00 -€ 8.908,00
53 € 53,00 € 35,00 -€ 259,00 -€ 1.861,00 -€ 8.827,00
54 € 54,00 € 38,00 -€ 250,00 -€ 1.834,00 -€ 8.746,00
55 € 55,00 € 41,00 -€ 241,00 -€ 1.807,00 -€ 8.665,00
56 € 56,00 € 44,00 -€ 232,00 -€ 1.780,00 -€ 8.584,00
57 € 57,00 € 47,00 -€ 223,00 -€ 1.753,00 -€ 8.503,00
58 € 58,00 € 50,00 -€ 214,00 -€ 1.726,00 -€ 8.422,00
59 € 59,00 € 53,00 -€ 205,00 -€ 1.699,00 -€ 8.341,00
60 € 60,00 € 56,00 -€ 196,00 -€ 1.672,00 -€ 8.260,00
61 € 61,00 € 59,00 -€ 187,00 -€ 1.645,00 -€ 8.179,00
62 € 62,00 € 62,00 -€ 178,00 -€ 1.618,00 -€ 8.098,00
63 € 63,00 € 65,00 -€ 169,00 -€ 1.591,00 -€ 8.017,00
64 € 64,00 € 68,00 -€ 160,00 -€ 1.564,00 -€ 7.936,00
65 € 65,00 € 71,00 -€ 151,00 -€ 1.537,00 -€ 7.855,00
66 € 66,00 € 74,00 -€ 142,00 -€ 1.510,00 -€ 7.774,00
67 € 67,00 € 77,00 -€ 133,00 -€ 1.483,00 -€ 7.693,00
68 € 68,00 € 80,00 -€ 124,00 -€ 1.456,00 -€ 7.612,00
69 € 69,00 € 83,00 -€ 115,00 -€ 1.429,00 -€ 7.531,00
70 € 70,00 € 86,00 -€ 106,00 -€ 1.402,00 -€ 7.450,00
71 € 71,00 € 89,00 -€ 97,00 -€ 1.375,00 -€ 7.369,00
72 € 72,00 € 92,00 -€ 88,00 -€ 1.348,00 -€ 7.288,00
73 € 73,00 € 95,00 -€ 79,00 -€ 1.321,00 -€ 7.207,00
74 € 74,00 € 98,00 -€ 70,00 -€ 1.294,00 -€ 7.126,00
75 € 75,00 € 101,00 -€ 61,00 -€ 1.267,00 -€ 7.045,00
76 € 76,00 € 104,00 -€ 52,00 -€ 1.240,00 -€ 6.964,00
77 € 77,00 € 107,00 -€ 43,00 -€ 1.213,00 -€ 6.883,00
78 € 78,00 € 110,00 -€ 34,00 -€ 1.186,00 -€ 6.802,00
79 € 79,00 € 113,00 -€ 25,00 -€ 1.159,00 -€ 6.721,00
80 € 80,00 € 116,00 -€ 16,00 -€ 1.132,00 -€ 6.640,00
81 € 81,00 € 119,00 -€ 7,00 -€ 1.105,00 -€ 6.559,00
82 € 82,00 € 122,00 € 2,00 -€ 1.078,00 -€ 6.478,00
83 € 83,00 € 125,00 € 11,00 -€ 1.051,00 -€ 6.397,00
84 € 84,00 € 128,00 € 20,00 -€ 1.024,00 -€ 6.316,00
85 € 85,00 € 131,00 € 29,00 -€ 997,00 -€ 6.235,00
86 € 86,00 € 134,00 € 38,00 -€ 970,00 -€ 6.154,00
87 € 87,00 € 137,00 € 47,00 -€ 943,00 -€ 6.073,00
88 € 88,00 € 140,00 € 56,00 -€ 916,00 -€ 5.992,00
89 € 89,00 € 143,00 € 65,00 -€ 889,00 -€ 5.911,00
90 € 90,00 € 146,00 € 74,00 -€ 862,00 -€ 5.830,00
91 € 91,00 € 149,00 € 83,00 -€ 835,00 -€ 5.749,00
92 € 92,00 € 152,00 € 92,00 -€ 808,00 -€ 5.668,00
93 € 93,00 € 155,00 € 101,00 -€ 781,00 -€ 5.587,00
94 € 94,00 € 158,00 € 110,00 -€ 754,00 -€ 5.506,00
95 € 95,00 € 161,00 € 119,00 -€ 727,00 -€ 5.425,00
96 € 96,00 € 164,00 € 128,00 -€ 700,00 -€ 5.344,00
97 € 97,00 € 167,00 € 137,00 -€ 673,00 -€ 5.263,00
98 € 98,00 € 170,00 € 146,00 -€ 646,00 -€ 5.182,00
99 € 99,00 € 173,00 € 155,00 -€ 619,00 -€ 5.101,00
100 € 100,00 € 176,00 € 164,00 -€ 592,00 -€ 5.020,00
101 € 101,00 € 179,00 € 173,00 -€ 565,00 -€ 4.939,00
102 € 102,00 € 182,00 € 182,00 -€ 538,00 -€ 4.858,00
103 € 103,00 € 185,00 € 191,00 -€ 511,00 -€ 4.777,00
104 € 104,00 € 188,00 € 200,00 -€ 484,00 -€ 4.696,00
105 € 105,00 € 191,00 € 209,00 -€ 457,00 -€ 4.615,00
106 € 106,00 € 194,00 € 218,00 -€ 430,00 -€ 4.534,00
107 € 107,00 € 197,00 € 227,00 -€ 403,00 -€ 4.453,00
108 € 108,00 € 200,00 € 236,00 -€ 376,00 -€ 4.372,00
109 € 109,00 € 203,00 € 245,00 -€ 349,00 -€ 4.291,00
110 € 110,00 € 206,00 € 254,00 -€ 322,00 -€ 4.210,00
111 € 111,00 € 209,00 € 263,00 -€ 295,00 -€ 4.129,00
112 € 112,00 € 212,00 € 272,00 -€ 268,00 -€ 4.048,00
113 € 113,00 € 215,00 € 281,00 -€ 241,00 -€ 3.967,00
114 € 114,00 € 218,00 € 290,00 -€ 214,00 -€ 3.886,00
115 € 115,00 € 221,00 € 299,00 -€ 187,00 -€ 3.805,00
116 € 116,00 € 224,00 € 308,00 -€ 160,00 -€ 3.724,00
117 € 117,00 € 227,00 € 317,00 -€ 133,00 -€ 3.643,00
118 € 118,00 € 230,00 € 326,00 -€ 106,00 -€ 3.562,00
119 € 119,00 € 233,00 € 335,00 -€ 79,00 -€ 3.481,00
120 € 120,00 € 236,00 € 344,00 -€ 52,00 -€ 3.400,00
121 € 121,00 € 239,00 € 353,00 -€ 25,00 -€ 3.319,00
122 € 122,00 € 242,00 € 362,00 € 2,00 -€ 3.238,00
123 € 123,00 € 245,00 € 371,00 € 29,00 -€ 3.157,00
124 € 124,00 € 248,00 € 380,00 € 56,00 -€ 3.076,00
125 € 125,00 € 251,00 € 389,00 € 83,00 -€ 2.995,00
126 € 126,00 € 254,00 € 398,00 € 110,00 -€ 2.914,00
127 € 127,00 € 257,00 € 407,00 € 137,00 -€ 2.833,00
128 € 128,00 € 260,00 € 416,00 € 164,00 -€ 2.752,00
129 € 129,00 € 263,00 € 425,00 € 191,00 -€ 2.671,00
130 € 130,00 € 266,00 € 434,00 € 218,00 -€ 2.590,00
131 € 131,00 € 269,00 € 443,00 € 245,00 -€ 2.509,00
132 € 132,00 € 272,00 € 452,00 € 272,00 -€ 2.428,00
133 € 133,00 € 275,00 € 461,00 € 299,00 -€ 2.347,00
134 € 134,00 € 278,00 € 470,00 € 326,00 -€ 2.266,00
135 € 135,00 € 281,00 € 479,00 € 353,00 -€ 2.185,00
136 € 136,00 € 284,00 € 488,00 € 380,00 -€ 2.104,00
137 € 137,00 € 287,00 € 497,00 € 407,00 -€ 2.023,00
138 € 138,00 € 290,00 € 506,00 € 434,00 -€ 1.942,00
139 € 139,00 € 293,00 € 515,00 € 461,00 -€ 1.861,00
140 € 140,00 € 296,00 € 524,00 € 488,00 -€ 1.780,00
141 € 141,00 € 299,00 € 533,00 € 515,00 -€ 1.699,00
142 € 142,00 € 302,00 € 542,00 € 542,00 -€ 1.618,00
143 € 143,00 € 305,00 € 551,00 € 569,00 -€ 1.537,00
144 € 144,00 € 308,00 € 560,00 € 596,00 -€ 1.456,00
145 € 145,00 € 311,00 € 569,00 € 623,00 -€ 1.375,00
146 € 146,00 € 314,00 € 578,00 € 650,00 -€ 1.294,00
147 € 147,00 € 317,00 € 587,00 € 677,00 -€ 1.213,00
148 € 148,00 € 320,00 € 596,00 € 704,00 -€ 1.132,00
149 € 149,00 € 323,00 € 605,00 € 731,00 -€ 1.051,00
150 € 150,00 € 326,00 € 614,00 € 758,00 -€ 970,00 151 € 151,00 € 329,00 € 623,00 € 785,00 -€
889,00 152 € 152,00 € 332,00 € 632,00 € 812,00 -€ 808,00 153 € 153,00 € 335,00 € 641,00 €
839,00 -€ 727,00 154 € 154,00 € 338,00 € 650,00 € 866,00 -€ 646,00 155 € 155,00 € 341,00 €
659,00 € 893,00 -€ 565,00 156 € 156,00 € 344,00 € 668,00 € 920,00 -€ 484,00 157 € 157,00 €
347,00 € 677,00 € 947,00 -€ 403,00 158 € 158,00 € 350,00 € 686,00 € 974,00 -€ 322,00 159 €
159,00 € 353,00 € 695,00 € 1.001,00 -€ 241,00 160 € 160,00 € 356,00 € 704,00 € 1.028,00 -€
160,00 161 € 161,00 € 359,00 € 713,00 € 1.055,00 -€ 79,00 162 € 162,00 € 362,00 € 722,00 €
1.082,00 € 2,00
163 € 163,00 € 365,00 € 731,00 € 1.109,00 € 83,00 164 € 164,00 € 368,00 € 740,00 € 1.136,00 €
164,00 165 € 165,00 € 371,00 € 749,00 € 1.163,00 € 245,00 166 € 166,00 € 374,00 € 758,00 €
1.190,00 € 326,00 167 € 167,00 € 377,00 € 767,00 € 1.217,00 € 407,00 168 € 168,00 € 380,00 €
776,00 € 1.244,00 € 488,00 169 € 169,00 € 383,00 € 785,00 € 1.271,00 € 569,00 170 € 170,00 €
386,00 € 794,00 € 1.298,00 € 650,00 171 € 171,00 € 389,00 € 803,00 € 1.325,00 € 731,00 172 €
172,00 € 392,00 € 812,00 € 1.352,00 € 812,00 173 € 173,00 € 395,00 € 821,00 € 1.379,00 € 893,00
174 € 174,00 € 398,00 € 830,00 € 1.406,00 € 974,00 175 € 175,00 € 401,00 € 839,00 € 1.433,00 €
1.055,00 176 € 176,00 € 404,00 € 848,00 € 1.460,00 € 1.136,00 177 € 177,00 € 407,00 € 857,00 €
1.487,00 € 1.217,00 178 € 178,00 € 410,00 € 866,00 € 1.514,00 € 1.298,00 179 € 179,00 € 413,00 €
875,00 € 1.541,00 € 1.379,00 180 € 180,00 € 416,00 € 884,00 € 1.568,00 € 1.460,00 181 € 181,00 €
419,00 € 893,00 € 1.595,00 € 1.541,00 182 € 182,00 € 422,00 € 902,00 € 1.622,00 € 1.622,00 183 €
183,00 € 425,00 € 911,00 € 1.649,00 € 1.703,00 184 € 184,00 € 428,00 € 920,00 € 1.676,00 €
1.784,00 185 € 185,00 € 431,00 € 929,00 € 1.703,00 € 1.865,00 186 € 186,00 € 434,00 € 938,00 €
1.730,00 € 1.946,00 187 € 187,00 € 437,00 € 947,00 € 1.757,00 € 2.027,00 188 € 188,00 € 440,00 €
956,00 € 1.784,00 € 2.108,00 189 € 189,00 € 443,00 € 965,00 € 1.811,00 € 2.189,00 190 € 190,00 €
446,00 € 974,00 € 1.838,00 € 2.270,00 191 € 191,00 € 449,00 € 983,00 € 1.865,00 € 2.351,00 192 €
192,00 € 452,00 € 992,00 € 1.892,00 € 2.432,00 193 € 193,00 € 455,00 € 1.001,00 € 1.919,00 €
2.513,00 194 € 194,00 € 458,00 € 1.010,00 € 1.946,00 € 2.594,00 195 € 195,00 € 461,00 € 1.019,00
€ 1.973,00 € 2.675,00

Nelle tabelle precedenti in verde si è evidenziato il livello di ingresso del rinforzo della posizione
(le entrate successive che formano la “piramide”) e in giallo è evidenziato il livello di stop loss.
Tutti i livelli sono espressi come pips di distanza dal livello di ingresso della prima posizione.

Le cifre che si trovano nelle colonne evidenziano il livello di guadagno (perdita) in corrispondenza
di quel livello per l’intera operazione. Ad esempio, nell’ultima tabella (qua sopra) la riga dei 180
Pips riporta un guadagno di 180€ per un operazione composta di solo 0,10 lotti, 416€ se fosse 0,30
lotti (0,10 + 0,20) e così via. Si noterà che l’ultima colonna riporta un valore inferiore a quello della
penultima (1.460€ vs. 1.568€): il motivo è che l’ultima posizione è stata aperta al 182° Pips e a 180
accusa una perdita di 2 Pips che è proprio pari alla differenza tra le due colonne.
Ogni valore tiene conto del livello di ingresso dei singoli incrementi e lo si nota andando a verificare
il livello degli ingressi, dove la colonna del nuovo ingresso equivale in valore alla colonna adiacente
(le posizioni già in essere).

Da notare come con la tecnica piramidale lineare si possa entrare in posizione con tutti e 5 i rinforzi
in 105 Pips e guadagnare 300€ con aumenti di 15€ da quel livello in poi. Il piramidale a
progressione geometrica completa i rinforzi al 136° Pip raggiungendo un profitto di 644€ ed un passo
di incremento di 29€ a pip. La progressione esponenziale completa il piramidale in 182 Pips
raggiungendo un guadagno di 1.622€ ed un passo di 81€.

Come si può notare dal grafico, le tre tecniche offrono sulla carta differenti risultati, tutti positivi,
sebbene di diversa misura. Non bisogna farsi abbagliare dalle cifre in quanto per poter ottenere i
profitti del piramidale ottenuto con la progressione esponenziale bisogna che per ben 182 Pips le
quotazioni non invertano mai per oltre 20 Pips ! Non è una considerazione così banale visto che per
la legge della statistica tanto più si espande il periodo temporale (la “popolazione degli scambi”) e
tanto più è probabile che si ristabilisca l’equilibrio (legge dei numeri). Per cui è molto più probabile
che si riesca a terminare un piramidale lineare che uno esponenziale e nel mezzo si trova la
progressione geometrica.

Un secondo aspetto da non sottovalutare riguarda i margini necessari richiesti. Con il piramidale
lineare si aprono sino a 1,50 lotti (1 lotto se ci si ferma al 3° rinforzo) ed è quindi necessario
disporre di un capitale di 1.500€ o un margine libero equivalente. Con la progressione geometrica
arriviamo a 3,10 lotti mentre con quella esponenziale addirittura a 8,10 lotti.

Nella scelta di quale tecnica piramidale adottare merita quindi un attenta considerazione la richiesta
di quanto capitale disporre per poterlo costruire (nulla vieta di fermarsi al secondo o terzo
incremento).

Nel calcolo dei lotti, come si vedrà nel prossimo capitolo, incidono molte variabili, ma nel calcolo
del margine disponibile incide non solo il capitale disponibile ma anche quello “virtuale”, ovvero la
somma tra il capitale disponibile ed il profitto maturato (ma non ancora monetizzato) nelle operazioni
in essere, che equivale al controvalore di portafoglio.
13.d Calcolo dei lotti di entrata
I contratti Forex hanno in genere un valore di 100.000 unità della valuta base ed ogni contratto
equivale all’acquisto e vendita contemporanea dell’equivalente nelle valute del cross prescelto.

A causa dell’effetto leva (leverage) utilizzato da tutti i broker, per acquistare un contratto non c’è
bisogno di depositare 100000 $ ma solamente il margine richiesto. Se il broker offre una leva di
100:1 (100 a 1) occoreranno 1.000 USD, se viene offerta una leva di 50:1 occoreranno 2000 USD
per acquistare un lotto (contratto standard).

Attualmente molti broker offrono la possibilità di tradare i lotti, i minilotti ed i microlotti. Si tratta di
porzioni frazionali del lotto standard che permettono anche agli investitori privati l’accesso a questo
mercato.

La disposizione della leva finanziaria unita alla disponibilità di “pezzature” di lotto ampia la
possibilità di diversificazione a chi non dispone di grandi capitali ma vuole comunque gestire
adeguatamente il rischio.

Attualmente la leva più diffusa tra i broker è 100:1 (es. 1000$ per trattare un lotto standard) ma
alcuni iniziano ad offrire leve da 200:1 e persino 500:1. Occorre comunque ricordare che la leva va
utilizzata con doveroso rispetto in quanto sebbene vista come moltiplicatore di profitti, è anche un
moltiplicatore di perdite. Nel caso, malaugurato, che rimanga aperta una posizione durante il
weekend ed alla riapertura dei mercati il cross accusi un gap a nostro sfavore, dovremo aspettarci
una chiamata da parte del nostro broker che ci invita a reintegrare i margini di garanzia (e quindi
andremo a rischiare più del capitale inizialmente investito).

Fatte queste opportune premesse, andiamo a vedere come si calcolano i lotti di entrata in relazione al
capitale disponibile, al margine disponibile e alle proprietà intrinseche dell’accoppata cross/broker.

Partendo dalla domanda “quanti lotti posso acquistare con il margine che ho a disposizione ?”
analizziamo i dati a disposizione (ricavabili anche via codice).

• Margine disponibile
• Dimensione del lotto standard
• Dimensione del lotto minimo
• Leva finanziaria concessa

Il margine disponibile si ricava dalla funzione AccountFreeMargin() che riporta un valore double
(numerico a virgola mobile).
La dimensione del lotto la otteniamo utilizzando la funzione MarketInfo(Symbol(),
MODE_LOTSIZE), mentre il lotto minimo ce lo fornisce MarketInfo(Symbol(), MODE_MINLOT).
La leva finanziaria, legata all’account e non al cross, è fornita da AccountLeverage().
Quindi se volessimo sapere quanti lotti è possibile acquistare con il margine disponibile dovremo
utilizzare le seguenti righe di codice:

double L = MarketInfo(Symbol(), MODE_MINLOT); double S =


MarketInfo(Symbol(), MODE_LOTSIZE); double MR=
MarketInfo(Symbol(), MODE_MARGINREQUIRED); double X =
AccountLeverage();
double fool;

//Margine utilizzabile/margine richiesto per ogni lotto standard


fool=AccountFreeMargin()/(S/X);
//ottengo la quantità intera di lotti minimi consentiti
fool=MathRound(fool/L);
//Ora ottengo la quantità massima, corretta, consentita dal
margine libero Lotti=fool*L;

Va da sé che così facendo otteniamo il numero di lotti (o pezzature) consentite, utilizzando TUTTO il
margine disponibile. Questo significa che non potremo poi aprire altre posizioni sno a che non
chiuderemo le operazioni in essere (e recuperare margine).
Per questa ragione che spesso si sostituisce il valore dato da AccountFreeMargin() con una sua
frazione.

double L = MarketInfo(Symbol(), MODE_MINLOT);


double S = MarketInfo(Symbol(), MODE_LOTSIZE);
double MR= MarketInfo(Symbol(), MODE_MARGINREQUIRED);
double X = AccountLeverage();
double fool;
//Propensione al rischio espressa come nr. max di operazioni
contemporanee double P;
int OrdersOpen;
int y, Total;

Total = OrdersTotal();

for (y=0;y<Total;y++)
{
OrderSelect(y, SELECT_BY_POS, MODE_TRADES); if (OrderType()<=
OP_SELL){ OrdersOpen++;}

}
P = 6 - OrdersOpen;

//Margine utilizzabile/margine richiesto per ogni lotto standard


fool=(AccountFreeMargin()/P)/(S/X);
//ottengo la quantità intera di lotti minimi consentiti
fool=MathRound(fool/L);
//Ora ottengo la quantità massima, corretta, consentita dal
margine libero Lotti=fool*L;

Nell’esempio riportato, la variabile P indica la volontà di poter aprire un massimo di 6 operazioni.


Se ci fossero già degli ordini aperti allora P varrebbe 6 meno la somma degli ordini già aperti. Se
non apportassimo questa correzione (6 – ordini aperti) otterremmo un numero sempre più piccolo di
lotti sino a rendere impossibile l’apertura di nuove posizioni a causa della barriera del lotto minimo.

Adesso facciamo un esempio pratico:


Con un margine disponibile di 837 dollari, una leva 100:1 ed un lotto minimo di 0,10 lotti sarà
possibile acquistare al massimo 0,80 lotti.
837 Lotti =100.000 =0,837 che adeguato per il lotto minimo diventa 0,80
/100
Come secondo esempio calcoliamo il lotto massimo nel caso di disponibilità di 46.257 dollari, 3
operazioni aperte e stessi dati del cross di prima. Lotti =46.257/(6−3) =15,419 che adeguati per il lotto
minimo diventa 15,40 100.000/100

13.e La Martingala inversa


Molti trading system sono pensati per adoperare una dimensione costante dei lotti utilizzati (in genere
questa dimensione è esposta tra le proprietà “esterne19” dell’Expert Advisor). Utilizzare una
dimensione costante penalizza le potenzialità dell’EA in quanto non sfrutta appieno il margine
disponibile.
Modificare la dimensione dei lotti impiegati in ogni operazione, grazie al calcolo esaminato nel
paragrafo precedente, permette di adeguare il rischio seguendo le proprie disponibilità. Se poi si
unisce l’adeguamento della dimensione anche con l’esito dell’operazione precedente allora si parlerà
di Martingala. La Martingala è una tecnica molto antica. Realizzata per i giocatori dei casinò. Molto
semplice da impiegare: in caso di scommessa perdente, si aumenta progressivamente l’importo della
giocata fino al recupero delle perdite cosi da realizzare un guadagno alla prima scommessa vincente.
Una volta concretizzato l’atteso guadagno si riprende la strategia dall’inizio e si ricomincia a puntare
la cifra iniziale.
Questa tecnica presuppone la pari possibilità di vincere o perdite, cosicché per la legge dei numeri
mano a mano che aumenta il numero di puntate aumenta la possibilità che la serie di perdite si
interrompa a favore di una vincita.
Nel trading questo metodo porta in tempi brevi alla rovina economica in quanto i mercati finanziari
sono ben lungi dall’essere perfetti ed i trading system generano segnali per diverse ragioni (differenti
pattern) e quindi la possibilità di incorrere in lunghe serie negative non sono remote. Una martingala
di 5 perdite, ad esempio, comporta una sesta operazione da ben 32 volte la dimensione
dell’operazione iniziale.
La Martingala inversa è invece una tecnica conservativa che permette la riduzione dell’esposizione
in caso di esiti negativi consecutivi.
Contrariamente alla Martingala classica, dopo ogni perdita si dimezza la dimensione effettivamente
possibile.
19 Unaproprietà esterna è una variabile dichiarata con l’identificatore extern. Queste varibili
possono essere impostate dall’utente nella finestra delle proprietà del trading system.
Facciamo un esempio.

Partendo da un capitale di 1.000$ iniziamo la prima operazione con 0,20 lotti. Chiusura in stop loss e
successiva apertura di una posizione da 0,10 lotti. Se anche questa dovesse chiudersi in perdita si
utilizzerebbero ancora 0,10 lotti (anche perché è il lotto minimo).

Ma vediamo nella tabella seguente un esempio più ampio nel quale viene presentato anche il margine
disponibile ed ipotizzando una perdita del 20%.

Operazione Lotti Esito Margine disponibile Lotti teorici massimi


1 1 Loss 1.000 1
2 0,40 Loss 800 0,80
3 0,30 Loss 720 0,70
4 0,30 Loss 660 0,60
5 0,30 Loss 600 0,60
6 0,60 ? 540 0,50

La tabella che segue mostra invece gli effetti di una Martingala classica che parte da 0,10 lotti

Operazione Lotti Esito Margine disponibile Lotti teorici massimi


1 0,10 Loss 1.000 1
2 0,20 Loss 980 0,90
3 0,40 Loss 940 0,90
4 0,80 Loss 660 0,60
5 0,60 Loss 600 0,60
6 0,40 ? 480 0,40

Dal confronto dei due metodi si può osservare come la martingala classica, sebbene parta operando
con il lotto minimo, ottenga perdite maggiori e un profitto sperato alla sesta operazione di 80$
riportando il margine a 560$. La martingala inversa inizia utilizzando tutti i lotti a disposizione e
riduce gradualmente il rischio, arrivando alla sesta operazione con un profitto sperato pari a 120$ in
grado di riportare il margine disponibile a 660$.

La Martingala inversa viene inserita nel codice tramite il calcolo della dimensione dei lotti previo il
controllo dell’esito dell’ultima operazione chiusa. Qui di seguito si può osservare i pezzi di codice
necessari per applicare questa tecnica. Il controllo dell’esito dell’ultima operazione conclusa viene
svolto da una funzione creata a proposito. Il valore di ritorno di questa funzione viene utilizzata
all’interno delle righe di codice in cui viene calcolata la dimensione dell’operazione.

//+---------------------------------------------------------------
---+ //| MARTINGALA INVERSA | //| Dimezzamento del lotto possibile
in caso di perdita precedente | //+-------------------------------
-----------------------------------+

double L = MarketInfo(Symbol(), MODE_MINLOT); double S =


MarketInfo(Symbol(), MODE_LOTSIZE); double MR=
MarketInfo(Symbol(), MODE_MARGINREQUIRED); double X =
AccountLeverage();
double fool;
//Margine utilizzabile/margine richiesto per ogni lotto standard
fool=AccountFreeMargin()/(S/X);
//ottengo la quantità intera di lotti minimi consentiti
fool=MathRound(fool/L);
if (LastResult()<0) {Lotti=Lotti/2}
//Ora ottengo la quantità massima, corretta, consentita dal
margine libero Lotti=fool*L;


//Invio dell’ordine a mercato
ticket=OrderSend(Symbol(),OP_BUY,Lotti,Ask,3,Bid-
sl*Point,0,"sdEA",99,0,Blue); …

//+---------------------------------------------------------------
---+ //| ULTIMO ESITO | //| Ritorno l'esito dell'ultima operazione
chiusa | //+------------------------------------------------------
------------+ double LastResult()
{
int i=0;
double esito=0;

for(i=OrdersHistoryTotal(); i > 0; i--)


{
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if(OrderCloseTime()> 0 && OrderMagicNumber()==99 &&
OrderSymbol()==Symbol())

{
if (OrderProfit() != 0) {esito=OrderProfit();break;}
}

}
return(esito);
}

Creare un Trading System


Dopo aver passato la prima parte di questo libro a spiegare i concetti del trading, dell’analisi tecnica
e del Forex, con questo capitolo vedremo come costruire un trading system. Per iniziare creeremo un
sistema molto semplice che entrerà in acquisto quando la media breve attraverserà dal

basso verso l’alto la media lenta, e viceversa entrerà in vendita quando la media a breve attraverserà
dall’alto verso il basso la media lenta. Questo è naturalmente un sistema molto elementare e non ci
aspettiamo risultati eclatanti ma lo scopo di questo sistema è di capire come si costruisce un Expert
Advisor. I miglioramenti li apporteremo in seguito.

Per iniziare, dal programma MetaTrader Client dobbiamo richiamare l’editor tramite il comando
Strumenti|Scrittore linguaggio MetaQuotes.

All’interno dell’editor del codice


per creare un nuovo Export
Advisor è necessario selezionare la
voce di menù File|Nuovo. Una
finestra ci chiederà di selezionare
il tipo di oggetto che intendiamo
creare. La scelta da selezionare è
“Consigliere esperto” (Export
Advisor).
• l’intestazione
• la funzione init()
• la funzione deinit()
• la funzione start()

Premendo Avanti potremo indicare il nome dell’esperto ed eventualmente aggiungere i parametri che
l’utente potrà modificare a piacimento. Scriviamo sdCrossAverages nella riga del nome e clicchiamo
il tasto Fine. L’editor di codice creerà automaticamente lo scheletro del trading system inserendo
automaticamente gli elementi minimi necessari per la scrittura di un Export Advisor:
//+---------------------------------------------------------------
---+ //| sdCrossAverages.mq4 | //| Copyright © 2008, SD Studio
Dainesi | //| http://www.sdstudiodainesi.com | //+----------------
--------------------------------------------------+ #property
copyright "Copyright © 2008, SD Studio Dainesi" #property link
"http://www.sdstudiodainesi.com"

//+---------------------------------------------------------------
---+ //| expert initialization function | //+---------------------
---------------------------------------------+ int init()

{
//----
//----
return(0);

}
//+---------------------------------------------------------------
---+ //| expert deinitialization function | int deinit()

{
//----
//----
return(0);

}
//+---------------------------------------------------------------
---+ //| expert start function | //+------------------------------
------------------------------------+ int start()

{
//----
//----
return(0);
}
//+---------------------------------------------------------------
---+

L’intestazione serve per poter catalogare e richiamare i sistemi dalla piattaforma di trading e
collegarli al grafico di un cross.

14.a Le funzioni “scheletro” di un Export Advisor


La funzione init() serve per inizializzare l’esperto la prima volta che viene mandato in esecuzione. In
questa funzione si inseriscono i controlli relativi all’ottenimento dei dati relativi alla misura del
lotto, del lotto minimo, della leva finanziaria ed di tutti gli altri calcoli che non è necessario
rieseguire poiché il risultato non cambia col passare del tempo e dei prezzi.

La funzione deinit() viene invocata prima di disattivare

l’esperto dalla finestra del client. In questa funzione è


possibile inserire una routine che scriva su un file l’elenco completo delle operazioni effettuate, ad
esempio.

La funzione start() è la funzione principale che incorpora tutta la logica del sistema esperto. Questa
funzione viene richiamata ad ogni variazione tick by tick, ovvero ogni qualvolta viene eseguito uno
scambio o quando cambiano i livelli del Bid e dell’Ask (denaro e lettera). All’interno della funzione
start vengono inseriti i controlli per decidere l’entrata o l’uscita da una posizione. Start è l’unica
funzione delle tre ad essere indispensabile per la creazione di un EA.

Inseriamo adesso le variabili globali dell’EA. Queste variabili manterranno inalterato il loro valore
tra un esecuzione e la successiva del nostro Export Advisor.

Alcune di queste variabili sono i parametri che mettiamo a disposizione dell’utente per la loro
modifica e sono relativi alla dimensione iniziale consigliata, la dimensione massima che non si vuole
superare, lo stop loss massimo sopportabile in termini di Pips ed i parametri della lunghezza delle
medie adottate.
I parametri sono evidenziati dall’identificatore extern anteposto alla loro dichiarazione.

Le normali variabili iserite si riferiscono invece ai lotti effettivamente impiegati, all’identificatore


univoco dell’ultimo ordine e a due indicatori booleani che indicano se sulla barra si è chiusa o aperta
una operazione.

In viola si è evidenziato il codice aggiunto.

//+---------------------------------------------------------------
---+ //| sdCrossAverages.mq4 | //| Copyright © 2008, SD Software
Corp. | //| http://www.sdstudiodainesi.com | //+------------------
------------------------------------------------+ #property
copyright "Copyright © 2008, SD Software Corp." #property link
"http://www.sdstudiodainesi.com"

// Lotto standard
extern double StartLot = 0.2;
extern double MaxLot = 2.5; //se fosse ZERO equivarrebbe a nessun
limite !!

// StopLoss
extern double sl = 80;
extern int MagicNumber = 3434;
extern int AverageFastPeriod = 5;
extern int AverageSlowPeriod = 21;
double Lotti = 0; //sd Variabile Globale bool bClosedOnBar;
bool bOpenedOnBar;
int prevTicket;

//+---------------------------------------------------------------
---+ //| expert initialization function | //+---------------------
---------------------------------------------+ int init()

}
//+---------------------------------------------------------------
---+ //| expert deinitialization function | //+-------------------
-----------------------------------------------+ int deinit()

{
//----
//----
return(0); }
int start() {
return(0); }

14.b Condizioni di ingresso


Aggiungiamo ora, al nostro esperto, una funzione (da inserire in coda a tutto il codice) che
chiameremo Tendenza, all’interno della quale valuteremo l’andamento delle medie mobili lente e
veloci e sulla base degli assunti iniziali faremo ritornare il valore 1 per esprimere propensione
all’apertura di posizioni Long e – 1 per entrate Short.

//+---------------------------------------------------------------
---+ //| sdCrossAverages.mq4 | //| Copyright © 2008, SD Software
Corp. | //| http://www.sdstudiodainesi.com | //+------------------
------------------------------------------------+ #property
copyright "Copyright © 2008, SD Software Corp." #property link
"http://www.sdstudiodainesi.com"

// Lotto standard
extern double StartLot = 0.2;
extern double MaxLot = 2.5; //se fosse ZERO equivarrebbe a nessun
limite !!

// StopLoss
extern double sl = 80;
extern int MagicNumber = 3434;
extern int AverageFastPeriod = 5;
extern int AverageSlowPeriod = 21;
double Lotti = 0; //sd Variabile Globale bool bClosedOnBar;
bool bOpenedOnBar;
int prevTicket;

//+---------------------------------------------------------------
---+ //| expert initialization function | //+---------------------
---------------------------------------------+ int init()

}
//+---------------------------------------------------------------
---+ //| expert deinitialization function | //+-------------------
-----------------------------------------------+ int deinit()

{
//----
//----
return(0);

}
//+---------------------------------------------------------------
---+ //| expert start function | //+------------------------------
------------------------------------+ int start()

{
return(0);
}

int Tendenza()
{
//le medie veloci e lente al momento 1 e 2 (l'ultimo) double M1V,
M2V, M1L, M2L;

M1V = iMA(Symbol(), 0, AverageFastPeriod, 0, MODE_SMA,


PRICE_CLOSE,1); M2V = iMA(Symbol(), 0, AverageFastPeriod, 0,
MODE_SMA, PRICE_CLOSE,0); M1L = iMA(Symbol(), 0,
AverageSlowPeriod, 0, MODE_SMA, PRICE_CLOSE,1); M2L =
iMA(Symbol(), 0, AverageSlowPeriod, 0, MODE_SMA, PRICE_CLOSE,0);
if(M1V < M1L && M2V > M2L)

{ //OPEN LONG Tendenza a SALIRE return(1);


}
else if(M1V > M1L && M2V < M2L)
{ // OPEN SHORT Tendenza a SCENDERE return(-1);
}
else return(0);

//+---------------------------------------------------------------
---+

14.c Calcolo del lotto iniziale


All’interno della funzione start inseriamo le righe per calcolare i lotti e verificare di non aver ordini
aperti o chiusi sulla barra in formazione (per evitare di aprire più di un operazione sullo stesso
segnale).

//+---------------------------------------------------------------
---+ //| sdCrossAverages.mq4 | //| Copyright © 2008, SD Software
Corp. | //| http://www.sdstudiodainesi.com | //+------------------
------------------------------------------------+ #property
copyright "Copyright © 2008, SD Software Corp." #property link
"http://www.sdstudiodainesi.com"

// Lotto standard
extern double StartLot = 0.2;
extern double MaxLot = 2.5; //se fosse ZERO equivarrebbe a nessun
limite !!

// StopLoss
extern double sl = 80;
extern int MagicNumber = 3434;
extern int AverageFastPeriod = 5;
extern int AverageSlowPeriod = 21;
double Lotti = 0; //sd Variabile Globale bool bClosedOnBar;
bool bOpenedOnBar;
int prevTicket;

//+---------------------------------------------------------------
---+ //| expert initialization function | //+---------------------
---------------------------------------------+ int init()

}
//+---------------------------------------------------------------
---+ //| expert deinitialization function | //+-------------------
-----------------------------------------------+ int deinit()
{
//----
//----
return(0);

}
//| expert start function | //+-----------------------------------
-------------------------------+ int start()
{

int ticket;
int total = OrdersTotal(); int TotalOpened=0, y=0; int fool =
Tendenza();

if (Lotti==0) Lotti = lots;

//Capire se ho aperto Ordini su questa barra !


bOpenedOnBar=false;
for (y=0;y<=total;y++)

{
if (OrderSelect(y,SELECT_BY_POS,MODE_TRADES)==true)

{
if (OrderOpenTime() >=Time[0]) {bOpenedOnBar = true;break;}
}
}

for (y=0;y<total;y++)
{
OrderSelect(y, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() &&

OrderMagicNumber()==MagicNumber)
{
TotalOpened=TotalOpened + 1;
}
}

if (TotalOpened == 0 && bOpenedOnBar == false)


{
sl = MathRound((iATR(NULL,0,21,0)/Point)*3);
Lotti=MathRound(((AccountFreeMargin()/1000)*StartLot)/MarketInfo(Sym
MODE_MINLOT)) * MarketInfo(Symbol(), MODE_MINLOT);

if (MaxLot != 0) {if (Lotti>MaxLot) Lotti=MaxLot;} }


}

int Tendenza()
{
//le medie veloci e lente al momento 1 e 2 (l'ultimo) double M1V,
M2V, M1L, M2L;

M1V = iMA(Symbol(), 0, AverageFastPeriod, 0, MODE_SMA,


PRICE_CLOSE,1); M2V = iMA(Symbol(), 0, AverageFastPeriod, 0,
MODE_SMA, PRICE_CLOSE,0); M1L = iMA(Symbol(), 0,
AverageSlowPeriod, 0, MODE_SMA, PRICE_CLOSE,1); M2L =
iMA(Symbol(), 0, AverageSlowPeriod, 0, MODE_SMA, PRICE_CLOSE,0);

if(M1V < M1L && M2V > M2L)

{ //OPEN LONG Tendenza a SALIRE return(1);


}
else if(M1V > M1L && M2V < M2L)
{ // OPEN SHORT Tendenza a SCENDERE return(-1);
}
else return(0);

Il prossimo passaggio riguarda l’inserimento del codice relativo alle aperture. Si apre una posizione
quando la funzione Tendenza() ci restituisce un segnale di entrata: long o short. Inoltre si apre una
posizione se sulla stessa barra non abbiamo già aperto un’altra posizione o non ne abbiamo chiusa
una.

//+---------------------------------------------------------------
---+ //| sdCrossAverages.mq4 | //| Copyright © 2008, SD Software
Corp. | //| http://www.sdstudiodainesi.com | //+------------------
------------------------------------------------+ #property
copyright "Copyright © 2008, SD Software Corp." #property link
"http://www.sdstudiodainesi.com"

// Lotto standard
extern double StartLot = 0.2;
extern double MaxLot = 2.5; //se fosse ZERO equivarrebbe a nessun
limite !!

// StopLoss
extern double sl = 80;
extern int MagicNumber = 3434;
extern int AverageFastPeriod = 5;
extern int AverageSlowPeriod = 21;
double Lotti = 0; //sd Variabile Globale bool bClosedOnBar;
bool bOpenedOnBar;
int prevTicket;

//+---------------------------------------------------------------
---+ //| expert initialization function | //+---------------------
---------------------------------------------+ int init()

}
//+---------------------------------------------------------------
---+ //| expert deinitialization function | //+-------------------
-----------------------------------------------+ int deinit()

{
//----
//----
return(0);

}
//+---------------------------------------------------------------
---+ //| expert start function | //+------------------------------
------------------------------------+ int start()

int ticket;
int total = OrdersTotal();
int TotalOpened=0, y=0;
string NL = "\n";
int fool = Tendenza(); //aggiorno il grafico

if (Lotti==0) Lotti = lots;

//Capire se ho aperto Ordini su questa barra ! bOpenedOnBar=false;


for (y=0;y<=total;y++)

{
if (OrderSelect(y,SELECT_BY_POS,MODE_TRADES)==true) {
if (OrderOpenTime() >=Time[0]) {bOpenedOnBar = true;break;} for
(y=0;y<total;y++)

{
OrderSelect(y, SELECT_BY_POS, MODE_TRADES);
if (OrderType()<= OP_SELL && OrderSymbol()==Symbol() &&

OrderMagicNumber() == MagicNumber)
{
TotalOpened=TotalOpened + 1; }
}
if (TotalOpened == 0 && bOpenedOnBar == false) {

Lotti = MathRound(((AccountFreeMargin()/1000)*StartLot) /
MarketInfo(Symbol(), MODE_MINLOT)) * MarketInfo(Symbol(),
MODE_MINLOT);
if (MaxLot != 0) {if (Lotti>MaxLot) Lotti=MaxLot;}
if(Tendenza() > 0)
{ //OPEN LONG
ticket = OrderSend(Symbol(), OP_BUY, Lotti, Ask, 3, Bid - sl *
Point, 0, "sdCrossAverages LONG", MagicNumber, 0, Blue);
}
else if(Tendenza() < 0)
{ // OPEN SHORT
ticket = OrderSend(Symbol(), OP_SELL, Lotti, Bid, 3, Ask + sl *
Point, 0, "sdCrossAverages SHORT", MagicNumber, 0, Red);
}
}

int Tendenza()
{
//le medie veloci e lente al momento 1 e 2 (l'ultimo) double M1V,
M2V, M1L, M2L;

M1V = iMA(Symbol(), 0, AverageFastPeriod, 0, MODE_SMA,


PRICE_CLOSE,1); M2V = iMA(Symbol(), 0, AverageFastPeriod, 0,
MODE_SMA, PRICE_CLOSE,0); M1L = iMA(Symbol(), 0,
AverageSlowPeriod, 0, MODE_SMA, PRICE_CLOSE,1); M2L =
iMA(Symbol(), 0, AverageSlowPeriod, 0, MODE_SMA, PRICE_CLOSE,0);

if(M1V < M1L && M2V > M2L)

{ //OPEN LONG Tendenza a SALIRE return(1);


}
else if(M1V > M1L && M2V < M2L)
{ // OPEN SHORT Tendenza a SCENDERE return(-1);
}
else return(0);
}
//+---------------------------------------------------------------
---+

14.d Condizioni di uscita


Con un ultimo passaggio completiamo il nostro EA inserendo un controllo sulle posizioni aperte per
chiuderle se la tendenza delle quotazioni diviene contraria al segnale che ne ha generato l’entrata,
senza aspettare il raggiungimento dello stop loss. Questo accorgimento dovrebbe permette di limitare
le perdite che un inserimento di ordini “confezionati” genererebbe se una volta inseriti il sistema se
ne dimenticasse e li lasciasse al loro destino (stop loss o take profit).

//+---------------------------------------------------------------
---+ //| sdCrossAverages.mq4 | //| Copyright © 2008, SD Software
Corp. | //| http://www.sdstudiodainesi.com | //+------------------
------------------------------------------------+ #property
copyright "Copyright © 2008, SD Software Corp." #property link
"http://www.sdstudiodainesi.com"

// Lotto standard
extern double StartLot = 0.2;
extern double MaxLot = 2.5; //se fosse ZERO equivarrebbe a nessun
limite !!

// StopLoss
extern double sl = 80;
extern int MagicNumber = 3434;
extern int AverageFastPeriod = 5;
extern int AverageSlowPeriod = 21;
double Lotti = 0; //sd Variabile Globale bool bClosedOnBar;
bool bOpenedOnBar;
int prevTicket;

//+---------------------------------------------------------------
---+ //| expert initialization function | //+---------------------
---------------------------------------------+ int init()

}
//+---------------------------------------------------------------
---+ //| expert deinitialization function | //+-------------------
-----------------------------------------------+ int deinit()

{
//----
//----
return(0);

}
//+---------------------------------------------------------------
---+ //| expert start function | //+------------------------------
------------------------------------+ int start()

int ticket;
int total = OrdersTotal();
int TotalOpened=0, y=0;
string NL = "\n";
int fool = Tendenza(); //aggiorno il grafico

if (Lotti==0) Lotti = lots;

//Capire se ho aperto Ordini su questa barra ! bOpenedOnBar=false;


for (y=0;y<=total;y++)

{
if (OrderSelect(y,SELECT_BY_POS,MODE_TRADES)==true) {
if (OrderOpenTime() >=Time[0]) {bOpenedOnBar = true;break;} for
(y=0;y<total;y++)

{
OrderSelect(y, SELECT_BY_POS, MODE_TRADES);
if (OrderType()<= OP_SELL && OrderSymbol()==Symbol() &&

OrderMagicNumber() == MagicNumber)
{
TotalOpened=TotalOpened + 1; }
}
for(int i = 0; i < total; i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)


{
prevTicket = OrderTicket(); // LONG
if(OrderType() == OP_BUY)

{
// Controllo posizione finanziaria ...
if(Tendenza() < 0)
{ // Chiudo
OrderClose(OrderTicket(), OrderLots(),Bid, 3, Blue); }

}
else
{
// Controllo posizione finanziaria ...
if(Tendenza() > 0)
{ // Chiudo
OrderClose(OrderTicket(), OrderLots(),Ask, 3, Blue); }
}
}
}

if (TotalOpened == 0 && bOpenedOnBar == false) {

Lotti = MathRound(((AccountFreeMargin()/1000)*StartLot) /
MarketInfo(Symbol(), MODE_MINLOT)) * MarketInfo(Symbol(),
MODE_MINLOT);
if (MaxLot != 0) {if (Lotti>MaxLot) Lotti=MaxLot;}
if(Tendenza() > 0)
{ //OPEN LONG
ticket = OrderSend(Symbol(), OP_BUY, Lotti, Ask, 3, Bid - sl *
Point, 0, "sdCrossAverages LONG", MagicNumber, 0, Blue);
}
else if(Tendenza() < 0)
{ // OPEN SHORT
ticket = OrderSend(Symbol(), OP_SELL, Lotti, Bid, 3, Ask + sl *
Point, 0, "sdCrossAverages SHORT", MagicNumber, 0, Red);
}
}

int Tendenza()
{
//le medie veloci e lente al momento 1 e 2 (l'ultimo) double M1V,
M2V, M1L, M2L;

M1V = iMA(Symbol(), 0, AverageFastPeriod, 0, MODE_SMA,


PRICE_CLOSE,1); M2V = iMA(Symbol(), 0, AverageFastPeriod, 0,
MODE_SMA, PRICE_CLOSE,0); M1L = iMA(Symbol(), 0,
AverageSlowPeriod, 0, MODE_SMA, PRICE_CLOSE,1); M2L =
iMA(Symbol(), 0, AverageSlowPeriod, 0, MODE_SMA, PRICE_CLOSE,0);
if(M1V < M1L && M2V > M2L)
{ //OPEN LONG Tendenza a SALIRE return(1);
}
else if(M1V > M1L && M2V < M2L)
{ // OPEN SHORT Tendenza a SCENDERE return(-1);
}
else return(0);

} //+-------------------------------------------------------------
-----+

14.e Debug
Per poter testare l’EA
appena creato dobbiamo
prima compilarlo. La
compilazione controlla
la correttezza sintattica
del programma ed
eventualmente segnala
gli errori trovati con una
breve descrizione che ne
aiuta la risoluzione.
Nel riquadro si può
notare la segnalazione
della mancanza del
punto e virgola che
termina la dichiarazione
del parametro esterno
sl .

Corretti gli errori si può ricompilare e, se non sono presenti altri errori, la compilazione avrà
successo e comparirà un messaggio che ne confermerà l’esito.

Quando un EA è compilato senza errori è possibile utilizzarlo nel client (la piattaforma dove si
aprono i grafici) e attivarlo per generare ordini in automatico. Prima di applicarlo con soldi veri sarà
meglio però testarlo attraverso lo strumento chiamato “Strategy tester”. Questo strumento serve per
effettuare i backtest.
Il BackTest verrà approfondito in un capitolo successivo ma basti sapere che grazie all’uso del
backtest è possibile evidenziare errori logici e incongruenze nei segnali generati, nonché giudicare la
bontà del trading system in termini di profitti o perdite generate.

Testiamo il nostro EA appena creato utilizzando un time frame di 5 minuti su un periodo di due mesi
(ottobre e novembre 2008) sul cross EURUSD. Il risultato viene mostrato nella figura seguente.
Appare evidente che il sistema, così com’è, risulta perdente. Occorre quindi lavorarci sopra e
apportare le modifiche necessarie affinché si possano minimizzare le perdite e amplificare i profitti.

14.f Gestione degli stop


Cominciamo con la modifica dello stop loss da un valore fisso ad uno variabile pari ad un multiplo
della volatilità dello stesso time frame. Introduciamo il calcolo dell’ATR (Average True Range e lo
moltiplichiamo per un fattore che lasciamo all’utente decidere l’entità). Impostiamo anche il take
profit affinché sia la metà dello stop loss.

if (TotalOpened == 0 && bOpenedOnBar == false)


{
sl = MathRound((iATR(NULL,0,21,0)/Point)*slFactor); tp =
MathRound((iATR(NULL,0,21,0)/Point)*(slFactor/2));

Lotti=MathRound(((AccountFreeMargin()/1000)*StartLot)/
MarketInfo(Symbol(), MODE_MINLOT)) * MarketInfo(Symbol(),
MODE_MINLOT);

if (MaxLot != 0) {if (Lotti>MaxLot) Lotti=MaxLot;}


if(Tendenza() > 0)
{ //OPEN LONG

ticket = OrderSend(Symbol(), OP_BUY, Lotti, Ask, 3, Bid - sl *


Point, Ask + tp * Point, "sdCrossAverages LONG", MagicNumber, 0,
Blue);

}
else if(Tendenza() < 0)
{ // OPEN SHORT
ticket = OrderSend(Symbol(), OP_SELL, Lotti, Bid, 3, Ask + sl *
Point, Bid - tp * Point, "sdCrossAverages SHORT", MagicNumber, 0,
Red);
}
}

}
Con queste modifiche qualcosa migliora ma il risultato complessivo è sempre molto negativo.

I miglioramenti si notano sia nella longevità (aumentato numero di operazioni) che nel valore medio
sostenuto dalla equityline20.

Introduciamo adesso una martingala inversa in modo da dimezzare il lotto calcolato nel caso in cui
l’operazione precedente abbia prodotto una perdita.

if (TotalOpened == 0 && bOpenedOnBar == false)


{
sl = MathRound((iATR(NULL,0,21,0)/Point)*slFactor); tp =
MathRound((iATR(NULL,0,21,0)/Point)*(slFactor/2));

Lotti = MathRound(((AccountFreeMargin()/1000)*StartLot) /
MarketInfo(Symbol(), MODE_MINLOT)) * MarketInfo(Symbol(),
MODE_MINLOT);
if (LastResult()<0)
Lotti = MathRound((Lotti/MarketInfo(Symbol(), MODE_MINLOT))/2) *

MarketInfo(Symbol(), MODE_MINLOT);
if (MaxLot != 0) {if (Lotti>MaxLot) Lotti=MaxLot;}
if(Tendenza() > 0)

{ //OPEN LONG
ticket = OrderSend(Symbol(), OP_BUY, Lotti, Ask, 3, Bid - sl *
Point, Ask + tp * Point, "sdCrossAverages LONG", MagicNumber, 0,
Blue);

}
else if(Tendenza() < 0)
{ // OPEN SHORT
ticket = OrderSend(Symbol(), OP_SELL, Lotti, Bid, 3, Ask + sl *
Point, Bid - tp * Point, "sdCrossAverages SHORT", MagicNumber, 0,
Red);
}
}

}
..

//+---------------------------------------------------------------
---+ //| ULTIMO ESITO | //| Ritorno l'esito dell'ultima operazione
chiusa | //+------------------------------------------------------
------------+ double LastResult()

{
int i=0;
double esito=0;

for (i=OrdersHistoryTotal(); i > 0; i--) {


OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if (OrderCloseTime()> 0 && OrderMagicNumber() == MagicNumber &&

OrderSymbol() == Symbol())

{
if (OrderProfit() != 0) {esito=OrderProfit();break;}
}
}
return(esito); }
20 L’Equity line
è la rappresentazione lineare disegnata su un grafico dell’andamento del valore
complessivo del capitale di rischio.

Miglioriamo ancora un po’ la longevità (arriviamo a 796 operazioni) ma l’esito finale ancora non
cambia. Il nostro sistema è ancora troppo esposto alle fasi volatili in cui il mercato oscilla così tanto
da amplificare le perdite. Introduciamo adesso una sorta di “stato conservativo”, ovvero un riduttore
drastico di lotti in caso di perdite consecutive (nell’esempio 4 perdite nelle ultime 5 operazioni) in
grado di portare il lotto impiegato nell’operazione successiva pari al minimo possibile.

if (TotalOpened == 0 && bOpenedOnBar == false) {


sl = MathRound((iATR(NULL,0,21,0)/Point)*slFactor); tp =
MathRound((iATR(NULL,0,21,0)/Point)*(slFactor/2));

Lotti = MathRound(((AccountFreeMargin()/1000)*StartLot) /
MarketInfo(Symbol(), MODE_MINLOT)) * MarketInfo(Symbol(),
MODE_MINLOT);
if (LastResult() < 0) Lotti =
MathRound((Lotti/MarketInfo(Symbol(), MODE_MINLOT))/2) *
MarketInfo(Symbol(), MODE_MINLOT);
Lotti = LotReducer(4, Lotti);
if (MaxLot != 0) {if (Lotti>MaxLot) Lotti=MaxLot;}
if(Tendenza() > 0)
{ //OPEN LONG
ticket = OrderSend(Symbol(), OP_BUY, Lotti, Ask, 3, Bid - sl *
Point, Ask + tp * Point, "sdCrossAverages LONG", MagicNumber, 0,
Blue); }
else if(Tendenza() < 0)
{ // OPEN SHORT
ticket = OrderSend(Symbol(), OP_SELL, Lotti, Bid, 3, Ask + sl *
Point, Bid - tp * Point, "sdCrossAverages SHORT", MagicNumber, 0,
Red); }
}

}
..

//+---------------------------------------------------------------
---+ //| CONSECUTIVE LOSS LOT REDUCER | //| Se nelle ultime 4
transazioni almeno 3 sono in perdita riduco! | //+----------------
--------------------------------------------------+ double
LotReducer(int pMaxLossNr, double pLotti)
{
int i=0;
int Campione=0;
int LossCounter=0;

for (i=OrdersHistoryTotal(); i > 0; i--) {


OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if (OrderCloseTime()> 0 && OrderMagicNumber() == MagicNumber &&

OrderSymbol() == Symbol())
{
Campione++ ;
if (OrderProfit() < 0) LossCounter++;

}
if (Campione > pMaxLossNr+1) break; }

if (LossCounter < pMaxLossNr && Campione > (pMaxLossNr+1))


return(pLotti);
else return(0.2);
}

Il risultato cambia in modo impercettibile e la longevità rimane immutata. Occorre modificare le


uscite. Introduciamo allora una funzione che chiameremo Persistenza, la quale ritorna un valore
positivo se la chiusura di barra è superiore alla media veloce, mentre ritorna un valore negativo in
caso fosse inferiore.

for(int i = 0; i < total; i++)


{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)


{
prevTicket = OrderTicket(); // LONG
if(OrderType() == OP_BUY)

{
// Controllo posizione finanziaria ...
if(Persistenza() < 0)

// Chiudo
{OrderClose(OrderTicket(), OrderLots(),Bid, 3, Blue);}

}
else
{
// Controllo posizione finanziaria ...
if(Persistenza() > 0)
// Chiudo
{OrderClose(OrderTicket(), OrderLots(),Ask, 3, Blue);}
}
}
}

..

//+---------------------------------------------------------------
---+ //| PERSISTENZA | //| | //+----------------------------------
--------------------------------+ int Persistenza() {

double M1V, M2V, M1L, M2L; //le medie veloci al momento 1 e 2


(l'ultimo)
M1V = iMA(Symbol(), 0, AverageFastPeriod, 0, MODE_SMA,
PRICE_CLOSE,0); M2V = iMA(Symbol(), 0, AverageFastPeriod, 0,
MODE_SMA, PRICE_CLOSE,1);
if(Close[0]> M1V && Close[1] < M2V)

{ //OPEN LONG
return(1);
}
else if(Close[0]< M1V && Close[1] > M2V)
{ // OPEN SHORT
return(-1);
}
else return(0);

Il sistema è senz’altro migliorato in longevità (2.716 operazioni !) ma l’esito finale è sempre


negativo. Analizzando i trade (cosa che vedremo nel prossimo capitolo) notiamo che troppo spesso
le chiusure anticipate sono la causa di piccole perdite). Proviamo a togliere il controllo di
persistenza e lasciamo che le operazioni trovino la loro naturale fine (stop loss o take profit).

/* for(int i = 0; i < total; i++)


{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)


{
prevTicket = OrderTicket(); // LONG
if(OrderType() == OP_BUY)

{
// Controllo posizione finanziaria ...
if(Persistenza() < 0)
// Chiudo
{OrderClose(OrderTicket(), OrderLots(),Bid, 3, Blue);}

}
else
{
// Controllo posizione finanziaria ...
if(Persistenza() > 0)
// Chiudo
{OrderClose(OrderTicket(), OrderLots(),Ask, 3, Blue);}
}
}
}
*/

Il codice racchiuso tra /* e */ viene tramutato in un commento e quindi inerte.


Testando il sistema così semplificato otteniamo finalmente un risultato più che positivo (raddoppio
del capitale in meno di due mesi).

La riduzione di operazioni non va vista come una riduzione di longevità del capitale di rischio ma
bensì come un’accresciuta longevità delle posizioni aperte (ogni operazione rimane più aperta
tempo).
Ancora non sappiamo però se i nostri take profit hanno limitato i guadagni o, al contrario, hanno
saputo trarre il massimo profitto possibile. Per rispondere a questo quesito dovremo inserire dei
trailing stop in grado di spostare le soglie di entrambi gli stop: stop loss e take profit.

Scriviamo quindi il codice necessario per implementare un trailing stop classico.


ClassicTrailing(tp-1,sl);
..

//+---------------------------------------------------------------
---+ //| TRAILING STOP CLASSICO | //| I parametri sono il livello
di attivazione e l'ampiezza dello SL | //+------------------------
------------------------------------------+ void
ClassicTrailing(int ActivationLevel, int iSL)
{

int iTotal;
iTotal = OrdersTotal(); if (iSL == 0) iSL = sl;
for(int i = 0; i < iTotal; i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)


{
// LONG
if(OrderType() == OP_BUY)

{
if (Close[0] > OrderOpenPrice() + ActivationLevel * Point)

{
if (OrderStopLoss()<Bid - iSL * Point)
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-
iSL*Point,0,0,Blue);

}
// SHORT
else

{
if (Close[0] < OrderOpenPrice() - ActivationLevel * Point)

{
if (OrderStopLoss()> Ask - iSL * Point)
OrderModify(OrderTicket(),OrderOpenPrice(),Ask-
iSL*Point,0,0,Blue);

}
}
}
}
return(0); }

Il nostro sistema si mantiene positivo ma i rendimenti calano ed il drawdown21 aumenta. Le


operazioni si mantengono più o meno costanti ma i parametri utilizzati per il trailing evidentemente
non sono i migliori (nell’esempio abbiamo utilizzato un livello di attivazione pari al Pip precedente
il take profit ed uno stop loss ad ampiezza pari all’originale.

Sostituiamo il trailing classico con un Break Even Point22, nella speranza di veder diminuire le
posizioni in perdita.
BEPTrailing();
..

//+---------------------------------------------------------------
---+ //| BREAK EVEN STOP LOSS | //| | //+-------------------------
-----------------------------------------+ void BEPTrailing()
{

int iTotal;
iTotal = OrdersTotal();
for(int i = 0; i < iTotal; i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
21 Con il termine Drawdown si intende la maggior perdita consecutiva in relazione al capitale. Il
drawdown viene anche definito come la quantità di denaro che si perde, espressa come percentuale
del capitale totale. Graficamente il drawdown è la profondità dei ritracciamenti. Un drawdown viene
spesso visto come il valore minimo raggiunto a seguito di perdite, prima di riprendere la via dei
guadagni. Se, ad esempio due sistemi partono da 1000 Euro e arrivano dopo due mesi a 2000,
avranno le stesse performance in termini di guadagno ma differenti drawdown se il primo, ad
esempio, è sceso a 300 euro prima di recuperare e terminare a 2000, mentre il secondo è sceso al
massimo a 600 prima di terminare. A pari risultati finali, è preferibile un sistema con drawdown
minori in quanto si espone meno alle perdite. 22 In ragioneria il termine Break Event Point (BEP)
identifica il punto di pareggio di un investimento, quando cioè i profitti coprono tutte le spese. A
partire dal BEP ogni Pip è portatore di guadagno netto.
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)

{
// LONG
if(OrderType() == OP_BUY)

{
// BREAKEVEN STOP LOSS
if (Close[0]>OrderOpenPrice()+10 * Point && Volume[1] <

VolumeAverage(50,0) )
{
if (OrderStopLoss()< OrderOpenPrice() + 5 * Point)

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+5*Point,
}

}
// SHORT
else

{
// BREAKEVEN STOP LOSS
if (Close[0]<OrderOpenPrice()-10 * Point && Volume[1] <

VolumeAverage(50,0) )
{
if (OrderStopLoss()> OrderOpenPrice() - 5 * Point)
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()

5*Point,0,0,Blue);
}
}
}
}
return(0); }

//----------------------------------------------------------------
* //| Funzione che calcola i VOLUMI MEDI | //| | //---------------
-------------------------------------------------* int
VolumeAverage(int Periods, int Offset)
{
int TotVol;
int i;

for (i=1+Offset;i<Periods;i++) {

TotVol = TotVol + Volume[i]; }


return(MathRound(TotVol/Periods)); }

Il risultato è deludente. Aumentano i trade ma il sistema torna in perdita. Proviamo ora a combinare il
Break Even Stop Loss con il trailing Classico.
ClassicTrailing(tp-1,sl); BEPTrailing();
Il risultato migliora leggermente ma rimane sempre negativo. Il trailing classico, con i parametri
passati, appare deleterio. Proviamo ad applicare un altro tipo di trailing stop: il Countdown Trailing
Stop (CTS) con un ritardo di 8 barre ed un passo di 2 Pips.
Per usare questo trailing devo però dichiarare una variabile booleana23 a livello generale per tenere
traccia del fatto che è stato attivato il CTS.

//Variabile globale bool bCTS;


...
//Countdown Trailing Stop for(int i = 0; i < total; i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)


{
// LONG
if(OrderType() == OP_BUY)

{
// Controllo tendenza long ...
if(Persistenza() < 0 || bCTS==true) CTS(i,2,8,"B");

}
else
{
// Controllo tendenza short ...
if(Persistenza() > 0 || bCTS==true) CTS(i,2,8,"B");
}
}
}

...

//-----------------------------------------------------------*
//COUNTDOWN Trailing Stop | // | //Unit B = barre e Unit M =
minuti | //-------------------------------------------------------
----*

void CTS(int OrderIndex, int Step, int Delay, string Unit = "B") {
static int LastUnit; //l'ultima barra o minuto già elaborata
static int LastOrderIndex;
/*
valore dell'ultimo SL (se il terminale non accetta il nuovo SL ci
pensa il programma a chiudere per tempo)
*/
static double LastSL;
bool bActive; //se true allora posso applicare il CTS int
CurrentUnit;//la barra o minuto corrente
double NewSL; //il nuovo Stop loss
int Direction; //Long o Short ?
int MinSL; //Valore minimo dello SL per il Terminal in Points
23 Unavariabile booleana (dal nome del matematico inglese George Boole) è un valore che può
assumere solo due valori: 0 oppure 1. Data la sua natura duale si adattano anche i valori di Vero e
Falso oppure Si e No.
bActive = false; bCTS=true;
OrderSelect(OrderIndex, SELECT_BY_POS, MODE_TRADES);
if (LastOrderIndex != OrderIndex)
{LastOrderIndex = OrderIndex; LastSL = OrderStopLoss();}

if (Unit == "B")
{
if((TimeMinute(Time[0])-
TimeMinute(OrderOpenTime()))/Period()>=Delay)

bActive = true;
else
LastUnit=0;
}

if (Unit == "M")
{
if((TimeMinute(Time[0])-TimeMinute(OrderOpenTime()))>=Delay)

bActive = true;
else
LastUnit=0;
}

if (bActive==false) return(0);
if (Unit == "B")
{CurrentUnit=(TimeMinute(Time[0])- TimeMinute(OrderOpenTime()))/
Period();}
if (Unit == "M")
{CurrentUnit=(TimeMinute(Time[0])- TimeMinute(OrderOpenTime()));}
if (CurrentUnit == LastUnit) return(0);
if (OrderType() == OP_BUY)

Direction = 1;
else if (OrderType() == OP_SELL)
Direction = -1;

NewSL = LastSL + Direction*(Step * Point);


LastSL = NewSL;
MinSL = MarketInfo(Symbol(), MODE_STOPLEVEL);
if (Direction == 1)
{
if (Close[0]<= LastSL)

{OrderClose(OrderTicket(), OrderLots(), Bid, 3, Red);return(0);}


if(OrderStopLoss()>NewSL) return(0);
if (Bid - (MinSL*Point) < NewSL)

return(0);
else

OrderModify(OrderTicket(),OrderOpenPrice(),NewSL,OrderTakeProfit(),0
}
else
{
if (Close[0]>= LastSL)
{OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);return(0);}
if(OrderStopLoss()<NewSL) return(0);
if (Ask + (MinSL*Point) > NewSL)
return(0);
else
OrderModify(OrderTicket(),OrderOpenPrice(),NewSL,OrderTakeProfit(),0
}

LastUnit = CurrentUnit;
}

Il risultato si traduce in un miglioramento apprezzabile. La curva è positiva e le operazioni sono


leggermente superiori.
Bisogna sottolineare che però i risultati cambiano sensibilmente a seconda del ritardo utilizzato nella
chiamata del Countdown Trailing Stop (e naturalmente nel suo passo).

Prima di passare ad esaminare il processo di BackTest, proviamo ad applicare un ultima tecnica: il


FeTiG (FewTick&Go).
Si cercherà di prender profitto non appena il mercato esce dalle fasi direzionali e si cercherà di
ottenere una frazione (un terzo) della distanza tra massimo e minimo di periodo (un intervallo di 14
barre).

//FeTiG
for(int i = 0; i < total; i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
FeTiG(i); }
}
...

//-----------------------------------------------------------* //
FeTiG (Few Tick & Go) Trailing Stop | // | // Si usa l'ADX come
discriminante | //------------------------------------------------
-----------*

void FeTiG(int OrderIndex)


{
int Direction; //Long o Short ?

// Calcolo del valore più basso di 14 barre consecutive double L =


Low[iLowest(NULL,0,MODE_LOW,14,0)];
// Calcolo del valore più basso di 14 barre consecutive double H =
High[iHighest(NULL,0,MODE_HIGH,14,0)];
// Calcolo del terzo normalizzato dell’escursione tra Max e Min
double nTP = MathRound(((H-L)/Point)/3);
//Misurazione della forza direzionale di periodo double dTrend =
iADX(Symbol(),0,14,PRICE_CLOSE,MODE_MAIN,0);

if (dTrend > 25) return(0); //se è in trend non applico il FeTiG


OrderSelect(OrderIndex, SELECT_BY_POS, MODE_TRADES);
if (OrderType() == OP_BUY)

Direction = 1;
else if (OrderType() == OP_SELL)
Direction = -1;

if (Direc ion = 1) {
if (Bid >= OrderOpenPrice() + nTP *Point)
{OrderClose(OrderTicket(),

OrderLots(), Bid, 3, Red);return(0);}


}
else
{
if (Ask <= OrderOpenPrice() - nTP *Point)
{OrderClose(OrderTicket(),
OrderLots(), Ask, 3, Red);return(0);}
}
}

L’utilizzo del solo FeTiG è positivo, sebbene non eclatante. Le operazioni crescono di numero così
come il drawdown. Per sua stessa natura il Fetig vuole essere uno strumento “mordi e fuggi” e quindi
non bisogna aspettarsi risultati eclatanti. Probabilmente un insieme delle tecniche già viste con
parametri ottimizzati saprebbe produrre risultati maggiormente positivi.

14.g Stampa su file


Nelle fasi di costruzione di un trading system è spesso necessario avere informazioni in tempo reale
(durante il backtest visivo o in demo real time). Vorremmo sapere il valore di una variabile o il
ritorno di una funzione che misura la tendenza o semplicemente quanto sarà la misura della prossima
operazione in termini di lotti impiegati.
In questo caso ci sono tre possibili soluzioni. Mostrare le informazioni sullo schermo, scriverle sul
registro dell’expert advisor o scriverle su un file. La prima destinazione, lo schermo, la si ottiene con
l’istruzione Comment(<testo>);

Ad esempio Comment(“Tendenza a SCENDERE”); si presenta nel grafico come nella figura


seguente.
La funzione
Comment permette la pubblicazione di un contenuto abbastanza esteso per cui occorre fare attenzione
a non esagerare !

Troppe
informazioni potrebbero confondere od essere illeggibili per la sovrapposizione con il grafico.

Un output alternativo rispetto allo schermo è la funzione Print che invia i messaggi al Diario
dell’expert advisor. Questi messaggi si mischiano insieme con quelli generati dal client (esecuzione
degli stop loss, attivazione dell’EA,ecc..)
Spesso, osservando il Diario, è possibile capire perché un ordine o una sua modifica non sono stati
eseguiti e, sulla base del testo riportato, risalire all’errore.

Un'altra possibilità di output è costituita dalla scrittura su file. Questi ultimi però devono
tassativamente risiedere in una delle seguenti tre cartelle:

• HISTORY/<current broker> usata dalla funzione FileOpenHistory


• /EXPERTS/FILES – usata comunemente
• /TESTER/FILES – specifica per il testing

tutte sottocartelle della directory di installazione della piattaforma. Va da sé che nulla vieta di
leggere o scrivere questi file tramite prodotti terzi (magari creati proprio da noi per consentire la
creazione di report sintetici secondo differenti criteri).

In MQL le funzioni per manipolare i File sono

• FileClose
• FileDelete
• FileFlush
• FileIsEnding
• FileIsLineEnding
• FileOpen
• FileOpenHistory
• FileReadArray
• FileReadDouble
• FileReadInteger
• FileReadNumber
• FileReadString
• FileSeek
• FileSize
• FileTell
• FileWrite
• FileWriteArray
• FileWriteDouble
• FileWriteInteger
• FileWriteString
Le funzioni più comunemente usate sono FileOpen(), FileWrite() e FileClose().

int handle;
datetime orderOpen=OrderOpenTime();
handle=FileOpen("filename", FILE_CSV|FILE_WRITE, ';');
if(handle>0)

{
FileWrite(handle, Close[0], Open[0], High[0], Low[0],
TimeToStr(orderOpen));
FileClose(handle);
}

14.h Strategie Multiposizione e Multicurrency


Come ultima parte legata alla costruzione di un trading system affrontiamo adesso l’applicazione
pratica della possibilità di aprire più posizioni contemporanee, sia che si tratti di posizioni aperte a
seguito di segnali su pattern o modelli, sia che si tratti di rinforzi di posizione per la costruzione di
strategie piramidali.

14.h.i Strategie Multiposizione semplici

Un trading system che consenta l’apertura di più posizioni deve tenere traccia delle cartatteristiche di
ogni segnale affinché sia mantenuta l’efficacia di ogni operazione. Un EA può infatti generare segnali
per più modelli (pattern) ed ognuno di questi segnali si caratterizza anche per un target atteso ed una
oscillazione stimata (utile per un calcolo adeguato dello stop loss). Per cui lo sfruttamento di uno
Spike24 applicheremo un trailing stop cortissimo mentre per un break out o una corsa sulle bande di
Bollinger25 utilizzeremo stop più ampi in grado di adattarsi ai Pivot od altri livelli significativi. Se
questo diverso “trattamento” degli ordini è semplice in fase di generazione (l’apertura dell’ordine) lo
è decisamente meno nella successiva fase di mantenimento (il controllo ed adeguamento degli stop).
Dovremo infatti evitare di applicare lo stesso trailing a tutte le posizioni aperte. L’obiettivo atteso
per ogni operazione potrebbe essere differente così come l’orizzonte temporale di realizzazione. Per
evitare quindi di uniformare il “controllo di gestione” dovremo rendere riconoscibili le
caratteristiche di ogni posizione. Le caratteristiche che ci interessano sono:
• Obiettivo atteso (Take Profit)
• Ritracciamento consentito (Stop loss originale)
• Trailing stop (tipo, livello di attivazione e dimensione)
• Soggetto a strategia piramidale (Si/No)
24 Uno Spike è una figura dell’analisi tecnica che identifica una barra molto estesa, che generalmente
pone termine ad un movimento iniziato molte barre prima. Uno Spike in formazione assomiglia ad una
grande candela di espansione, ma verso il termine del suo time frame le quotazioni rintracciano quasi
del tutto l’estensione della barra. 25 La “corsa sulle bande di Bollinger” è un pattern “trend
following” molto apprezzato.
Per archiviare queste informazioni abbiamo solo due possibilità: o le memorizziamo in un array
contenente il ticket dell’ordine e le sue caratteristiche, o inseriamo un codice mnemonico nel
commento dell’ordine che viene creato con la funzione OrderSend(). Nella riga di codice seguente si
mostra un esempio (ma ognuno è libero di inventarsi i propri codici) che indica un ordine LONG con
obiettivo di 100 Pips dal prezzo di ingresso ed uno Stop Loss di 40, l’attivazione di un trailing stop
Classico passati 20 Pips ed una dimensione di 18. Inoltre l’ordine non fa parte di una strategia
piramidale.

ticket = OrderSend(Symbol(),OP_BUY,Lotti,Ask,3,sl,tp,"sdAI 100-40-


C20:18-N", 3451, 0, Blue);
La lettura del commento dell’ordine avviene attraverso l’utilizzo della funzione OrderComment()
previa invocazione della funzione OrderSelect().
double Target;

for (i=OrdersTotal();i>0;i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES)
if (OrderType() == OP_BUY)
Target = OrderOpenPrice + StrToInteger
(StringSubstr(OrderComment(),5,4)) * Point;
else if (OrderType() == OP_SELL)
Target = OrderOpenPrice - StrToInteger
(StringSubstr(OrderComment(),5,4)) * Point;
}

Nell’esempio precedente viene estratto il target originale scritto nel commento dell’ordine secondo
uno schema fisso26.

L’altro metodo possibile per a rchiviare i dati degli ordini è rappresentato dall’uso degli array.
Un array, essendo un contenitore di variabili semplici, conterrà tante variabili quante sono le
posizioni da monitorare e quante caratteristiche da memorizzare.

Nel caso di 10 ordini con 4 caratteristiche avremo un array di 10 posizioni per 5 (4 caratteristiche
più il ticket dell’ordine).

double aOrder[9][4];
int total = OrdersTotal(); ...
for (y=0,y<total,y++) {
26 Loschema fisso è una mappa prestabilita che identifica le posizioni nelle quali devono trovarsi
determinati valori all’interno di una stringa di testo (i valori numerici sono convertiti in testo).

OrderSelect(y, SELECT_BY_POS, MODE_TRADES);


for (i=0,i<ArrayRange(aOrder,1),i++)
{
if(aOrder[i][0] == OrderTicket())
{
//Esamino le caratteristiche e compio le azioni di controllo ...
}

}
}

14.h.ii Strategie Multiposizione Piramidali

Un trading system che preveda l’apertura di più posizioni secondo una strategia piramidale deve
tenere traccia dell’ordinale di ogni posizione e dei livelli di stop. Come abbiamo avuto infatti modo
di vedere nei capitoli precedenti dedicati all’argomento, la seconda operazione di un piramidale
viene aperta dopo un numero di Pips differente rispetto allo stop loss dinamico dell’intera
“piramide”27.

//PIRAMIDALE LINEARE
for(int i = 0; i < total; i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
PiramidaleLineare(i,1); }
}
... OPPURE
//PIRAMIDALE GEOMETRICO
for(int i = 0; i < total; i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
PiramidaleGeometrico(i,1); }
}
... OPPURE
//PIRAMIDALE ESPONENZIALE for(int i = 0; i < total; i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
27 Ad esempio, in un piramidale lineare la seconda entrata verrà aperta a 80 Pips dalla prima e lo
stop loss originale verrà spostato per tutte le posizioni a 20 Pips dall’apertura dell’ultimo ingresso.
PiramidaleEsponenziale(i,1); }
}
...

//-----------------------------------------------------------* //
PIRAMIDALE LINEARE | // | // Controllo ed implementazione | //----
-------------------------------------------------------*

void PiramidaleLineare(int OrderIndex, int MinProfit) {


//MinProfit è il guadagno minimo garantito
int iSLPiramidale;
double SLPiramidale;
double TotalLots;
double LastLots;
double FirstLots;
double TotalProfit;
int ticket;
int tp;
int i;
int total;
int Direction;

OrderSelect(OrderIndex,SELECT_BY_POS,MODE_TRADES);
if (OrderType() == OP_BUY)

Direction = 1;
else
Direction = -1;

total = OrdersTotal(); for (i=0;i<total;i++) {

OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderType()==OP_BUY
&& Direction==1) {

TotalProfit = TotalProfit + OrderProfit(); TotalLots = TotalLots +


OrderLots(); LastLots = OrderLots();
if(FirstLots==0) FirstLots = OrderLots();

if(OrderType()==OP_SELL && Direction==-1) {


TotalProfit = TotalProfit + OrderProfit(); TotalLots = TotalLots +
OrderLots(); LastLots = OrderLots();
if(FirstLots==0) FirstLots = OrderLots();
}
}

iSLPiramidale = 20 - MinProfit; tp = 22;


if (TotalProfit - 20*((TotalLots+LastLots +

FirstLots)*MarketInfo(Symbol(),MODE_TICKVALUE)) == 0 && Direction


== 1) {
SLPiramidale = Bid - iSLPiramidale * Point;
ticket = OrderSend(Symbol(), OP_BUY, LastLots + FirstLots , Ask,
3,
SLPiramidale, Ask + tp * Point, "sdCrossAverages LONG",
MagicNumber, 0, Green);

}
if (TotalProfit - 20*((TotalLots+LastLots +
FirstLots)*MarketInfo(Symbol(),MODE_TICKVALUE)) == 0 && Direction
== -1) SLPiramidale = Ask + iSLPiramidale * Point;
ticket = OrderSend(Symbol(), OP_SELL, LastLots + FirstLots , Bid,
3,

SLPiramidale, Bid - tp * Point, "sdCrossAverages SHORT",


MagicNumber, 0, Red); }
//Esco se non ci sono nuovi ingressi if(SLPiramidale == 0)
return(0);

//Modifica dello SL per tutta la piramide total = OrdersTotal();


for (i=0;i<total;i++)
{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY && Direction==1 && OrderT cket() != ticket)
{OrderModify(OrderTicket(),OrderOpenPrice(), SLPiramidale, Ask +
tp * Point, 0, Blue);}

if(OrderType()==OP_SELL && Direction==-1 && Orde Ticket() !=


ticket) {OrderModify(OrderTicket(),OrderOpenPrice(), SLPiramidale,
Bid - tp * Point, 0, Blue);}
}
}

//-----------------------------------------------------------* //
PIRAMIDALE GEOMETRICO | // | // Controllo ed implementazione | //-
----------------------------------------------------------*

void PiramidaleGeometrico(int OrderIndex, int MinProfit=0) {


//MinProfit è il guadagno minimo garantito
int PosizioniAperte;
int iNextOpen;
double pNextOpen;
int iSLPiramidale;
double SLPiramidale;
double TotalLots;
double LastLots;
double AverageOpenPrice;
double TotalProfit;
int ticket;
int tp;
int i;
int total;
int Direction;

OrderSelect(OrderIndex,SELECT_BY_POS,MODE_TRADES);
if (OrderType() == OP_BUY)

Direction = 1;
else
Direction = -1;

total = OrdersTotal(); for (i=0;i<total;i++) {

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY && Direction==1) {TotalProfit = TotalProfit
+

OrderProfit();TotalLots = TotalLots + OrderLots();LastLots =


OrderLots();} if(OrderType()==OP_SELL && Direction==-1)
{TotalProfit = TotalProfit +
OrderProfit();TotalLots = TotalLots + OrderLots();LastLots =
OrderLots();}
}

iSLPiramidale = 20 - MinProfit; tp=22;


if (TotalProfit - 20*
((TotalLots+LastLots*2)*MarketInfo(Symbol(),MODE_TICKVALUE))==0 &&
Direction == 1)

{
SLPiramidale = Bid - iSLPiramidale * Point;
ticket = OrderSend(Symbol(), OP_BUY, LastLots * 2 , Ask, 3,
SLPiramidale,

Ask + tp * Point, "sdCrossAverages LONG", MagicNumber, 0, Green);


}

if (TotalProfit - 20*
((TotalLots+LastLots*2)*MarketInfo(Symbol(),MODE_TICKVALUE))==0 &&
Direction == -1)

{
SLPiramidale = Ask + iSLPiramidale * Point;
ticket = OrderSend(Symbol(), OP_SELL, LastLots * 2 , Bid, 3,
SLPiramidale,
Bid - tp * Point, "sdCrossAverages SHORT", MagicNumber, 0, Red);
}

//Modifica dello SL per tutta la piramide total = OrdersTotal();


for (i=0;i<total;i++)
{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY && Direction==1 && OrderTicket() != ticket)
{OrderModify(OrderTicket(),OrderOpenPrice(),SLPiramidale,Ask + tp
* Point, 0, Blue);}

if(OrderType()==OP_SELL && Direction==-1 && OrderTicket() !=


ticket)
{OrderModify(OrderTicket(),OrderOpenPrice(),SLPiramidale,Bid - tp
* Point, 0, Blue);}
}

//-----------------------------------------------------------* //
PIRAMIDALE ESPONENZIALE | // | // Controllo ed implementazione |
//-----------------------------------------------------------*

void PiramidaleEsponenziale(int OrderIndex, int MinProfit=0) {


//MinProfit è il guadagno minimo garantito
int PosizioniAperte;
int iNextOpen;
double pNextOpen;
int iSLPiramidale;
double SLPiramidale;
double TotalLots;
double AverageOpenPrice;
double TotalProfit;
int ticket;
int tp;
int i;
int total;
int Direction;

OrderSelect(OrderIndex,SELECT_BY_POS,MODE_TRADES);
if (OrderType() == OP_BUY)

Direction = 1;
else
Direction = -1;
total = OrdersTotal(); for (i=0;i<total;i++) {

OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderType()==OP_BUY
&& Direction==1) {TotalProfit = TotalProfit +

OrderProfit();TotalLots = TotalLots + OrderLots();}


if(OrderType()==OP_SELL && Direction==-1) {TotalProfit =
TotalProfit +
OrderProfit();TotalLots = TotalLots + OrderLots();}
}

iSLPiramidale = 20 - MinProfit; tp=22;


if (TotalProfit - 20*
(TotalLots*2*MarketInfo(Symbol(),MODE_TICKVALUE))==0 &&

Direction == 1)
{
SLPiramidale = Bid - iSLPiramidale * Point;
ticket = OrderSend(Symbol(), OP_BUY, TotalLots *2 , Ask, 3,
SLPiramidale,

Ask + tp * Point, "sdCrossAverages LONG", MagicNumber, 0, Green);


}
if (TotalProfit - 20*
(TotalLots*2*MarketInfo(Symbol(),MODE_TICKVALUE))==0 &&
Direction == -1)
{
SLPiramidale = Ask + iSLPiramidale * Point;
ticket = OrderSend(Symbol(), OP_SELL, TotalLots *2 , Bid, 3,
SLPiramidale,
Bid - tp * Point, "sdCrossAverages SHORT", MagicNumber, 0, Red); }

//Modifica dello SL per tutta la piramide total = OrdersTotal();


for (i=0;i<total;i++)
{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY && Direction==1 && OrderTicket() != ticket)
{OrderModify(OrderTicket(),OrderOpenPrice(),SLPiramidale,Ask + tp
* Point, 0, Blue);}

if(OrderType()==OP_SELL && Direction==-1 && OrderTicket() != tic


t) {OrderModify(OrderTicket(),OrderOpenPrice(),SLPiramidale,Bid -
tp * Point, 0, Blue);}
}
}

L’utililizzo dei sistemi piramidali prevede l’utilizzo di stop loss abbastanza larghi sulla prima
operazione affinché si possa raggiungere il livello di ingresso del primo “rinforzo”.

Per poter testare i tre piramidali cambiamo il time frame, passando dai 5 minuti alla mezz’ora.

Il grafico dei rendimenti del piramidale mostra andamenti molto altalenanti ma un esito finale
negativo.
Nella pratica, a meno di take profit molto ampi, è raro assistere a piramidali superiori alle due
operazioni, rendendo di fatto identici i risultati dei tre tipi di piramidale presentati.

14.h.iii Strategie Multicurrency

In pieno rispetto della regola di diversificazione del rischio, l’applicazione di strategie multicurrency
permette di utilizzare lo stesso Export Advisors su più grafici. I sistemi che, nello stesso trading
system, aprono ordini su diversi cross non sono reali strategie multicurrency ma solo
approssimazioni rischiose. Il programma scritto nell’Expert Advisor viene infatti richiamato dalle
variazioni relative al solo cross del grafico al quale è collegato il trading system e non dalle
variazioni degli altri cross. Se dovessimo collegare il nostro EA al grafico Lira Turca contro Yen
Giapponese (TRYJPY) ed aprire da questo EA anche posizioni sull’EURUSD rischieremmo di veder
superare o saltare i nostri stop poiché la liquidità e velocità del cross primario renderebbe lenta ed
intempestiva l’azione dell’EA.

14.i Conclusioni

In questo capitolo si è cercato di mostrare al lettore come sia possibile creare un trading system e
apporre varie modifiche nel tentativo di migliorarlo. Il modello di base che origina i segnali in
questo caso era semplicissimo e, come molti sanno, poco affidabile. Al lettore si lascia intuire le
potenzialità di un sistema basato su tecniche di entrata più raffinate e con percentuali di successo
maggiori.

Il BackTest
Una volta terminato di codificare il nostro trading system è venuto il momento di testarlo per
verificare se i concetti espressi e tradotti in codice ottengono effettivamente gli effetti sperati. Per
compiere questa verifica dobbiamo fare in modo di applicare il nostro EA su un intervallo di tempo
sufficientemente lungo da ottenere risultati significativi.
Il test può avvenire in tempo reale utilizzando un conto dimostrativo (ottimo per prendere fiducia)
oppure a ritroso applicando l’EA su un periodo passato ed in questo caso si parlerà di BackTest.
La scelta del periodo è importante. Né troppo lungo né troppo corto. Un periodo troppo corto rischia
di essere poco significativo perché statisticamente tende ad escludere molte fasi del mercato.

Un periodo di backtest come quello evidenziato dal rettangolo nel grafico sopra includerebbe solo
una fase di lateralità vanificando tutti i segnali per le fasi di trend così come quelle di volatilità.
D’altronde una fase troppo lunga potrebbe includere vari cicli di mercato che di norma prevedono il
ripensamento di molti assunti per le entrate. Ad esempio è inutile testare il proprio sistema su un
periodo di vent’anni. Vent’anni fa il modo di fare trading era diversissimo e le oscillazioni erano
molto più marcate perché diversa era la liquidità. Inoltre vent’anni fa non c’erano gli strumenti di
oggi per andare a mercato. Insomma, troppe variabili di ambiente differenti che renderebbero inutile
un test.
Un periodo da un anno a qualche mese è un buon periodo di test. Abbastanza significativo affinché il
trading system possa generare un numero considerevole di ordini, dimostrare con molteplici segnali
varie entrate ed uscite.

Per effettuare il backtest è necessario che il nostro Export Advisor sia compilato (viene infatti
utilizzato il file con estensione <nome advisor>.ex4 e non <nome advisor>.mq4). Se non dovessimo
trovare l’EA nell’elenco della lista di scelta (nella figura sopra è la lista “Consigliere esperto”)
occorre andare nell’editor del codice, richiamare il file mq4 e ricompilare.
Dopo aver selezionato l’EA occorre scegliere il cross su cui effettuare il test (1), il time frame
prescelto (2) ed il periodo da esaminare (3).
Se si vuole assistere sul grafico delle quotazioni lo svolgimento del test occorre spuntare la casella
“Visualizzazione” (4).

Una volta premuto il tasto Avvio (6) il terminale raccoglie tutti i dati e comincia il backtest. Se si è
scelto di visualizzare il grafico in formazione allora si potrà assistere all’apertura delle posizioni
come se si trattasse di un collegamento in real time. E’ naturalmente possibile accelerare il flusso del
tempo agendo sulla barra del selettore velocità oppure fermare in pausa (per esaminare in dettaglio il
grafico) tramite il pulsante start stop (7). Se invece si vuol passare velocemente ad una data futura
(ma interna all’intervallo di test) è possibile premere il tasto “Saltare a” (8).

15.a Lo Storico
Ogni backtest necessita di dati storici per poter essere eseguito. Se il client è collegato in internet ai
server del broker, tutti i dati necessari sono recuperati in automatico e scaricati sul client. Se il
collegamento fosse interrotto o si decidesse di lavorare offline (a puro scopo di sviluppo non
potendo inviare a mercato gli ordini) è
prima necessario collegarsi ai server del
broker e scaricare i dati storici nei time
frame desiderati, attraverso lo strumento
Centro Storia.
Da qui è possibile selezionare il cross che
ci interessa e selezionare tutti o solo
alcuni time frame che ci occorrono (i dati
occupano memoria e più il time frame è

piccolo e più la mole di dati da scaricare e


memorizzare è grande).
Se non si riscontrano problemi o si è sempre connessi è consigliabile evitare lo scaricamento in
locale dei dati.

La finestra del Centro Storia si presenta come un elenco di gruppi al cui interno troviamo i cross e i
loro time frame. La selezione del cross indica la volontà di scaricare tutti i time frame disponibili,
viceversa la selezione di singoli Time frame limita il download alle selezioni fatte.
E’ inoltre possibile esportare od importare i dati in e da fonti diverse (file ASCII o HTML) e
apportare modifiche alle singole quotazioni (una chiusura ad esempio).
La granularità dei dati è un fattore importante per la bontà di un test. Più i dati sono dettagliati e più il
sistema è in grado di replicare fedelmente l’andamento storico delle quotazioni.

Tra le opzioni del backtest troviamo la selezione del modello di fedeltà storica da assumere:

• Solo prezzi di apertura (metodo veloce ma grossolano)


• Punti di controllo (vengono analizzati i quattro dati di ogni barra)
• Ogni tick (metodo lento ma preciso che analizza tutte le variazioni)

Solamente con l’ultima modalità potremo avere un esito molto accurato e affidabile. I primi due
verranno utilizzati solamente per una prima visione approssimativa. La seguente equity riguarda il
back test con applicato il FeTiG e un take profit pari allo stop loss /1,5.
L’esito viene quindi mostrato anche nella sezione Rapporto del Tester (Collaudatore) nel quale
vengono mostrati i risultati e tutte le informazioni necessarie per giudicare la bontà del sistema.

Il rapporto illustrato evidenzia un profitto di 8737,30 Euro ed un drawdown di 4624. Le altre


informazioni riguardano le serie di perdite e vincite consecutive oltre a dati statistici sui risultati.

Se si posiziona il mouse sul rapporto e si preme il tasto destro è possibile invocare la creazione di
un rapporto completo (con l’esito di tutte le operazioni in formato HTML).

Il rapporto è un file html dove vengono riepilogati i dati del modello, i parametri dell’Expert
Advisor (le variabili dichiarate con extern), il time frame scelto, tutto il dettaglio di tutte le
operazioni compiute e, naturalmente, il grafico della equità line.
# Data/Orario Tipo Ordine Lotti Prezzo Stop Loss Take profit Profitto Saldo
1 2008.10.01 00:25 sell 1 0.10 1.4114 1.4140 1.4098
2 2008.10.01 00:39 close 1 0.10 1.4104 1.4140 1.4098 10.00 10010.00
3 2008.10.01 00:55 buy 2 0.10 1.4142 1.4116 1.4158
4 2008.10.01 00:56 s/l 2 0.10 1.4116 1.4116 1.4158 -26.00 9984.00
5 2008.10.01 00:56 buy 3 0.10 1.4117 1.4087 1.4136
6 2008.10.01 02:12 s/l 3 0.10 1.4087 1.4087 1.4136 -30.00 9954.00
7 2008.10.01 02:55 buy 4 0.10 1.4106 1.4072 1.4127
8 2008.10.01 02:58 close 4 0.10 1.4123 1.4072 1.4127 17.00 9971.00 11 2008.10.01 05:00 sell 6
0.10 1.4116 1.4144 1.4099 12 2008.10.01 05:04 t/p 6 0.10 1.4099 1.4144 1.4099 17.00 9996.00 13
2008.10.01 05:04 sell 7 0.10 1.4097 1.4128 1.4078 14 2008.10.01 05:47 t/p 7 0.10 1.4078 1.4128
1.4078 19.00 10015.00 15 2008.10.01 06:20 buy 8 2.00 1.4118 1.4079 1.4142 16 2008.10.01 06:28
close 8 2.00 1.4139 1.4079 1.4142 420.00 10435.00 17 2008.10.01 07:05 sell 9 2.10 1.4099 1.4145
1.4070 18 2008.10.01 07:31 s/l 9 2.10 1.4145 1.4145 1.4070 -966.00 9469.00 19 2008.10.01 07:31
buy 10 1.00 1.4145 1.4094 1.4178 20 2008.10.01 09:40 close 10 1.00 1.4156 1.4094 1.4178 110.00
9579.00 21 2008.10.01 10:50 sell 11 1.90 1.4135 1.4170 1.4113 22 2008.10.01 11:51 close 11 1.90
1.4124 1.4170 1.4113 209.00 9788.00 23 2008.10.01 14:10 buy 12 2.00 1.4008 1.3948 1.4046 24
2008.10.01 15:15 close 12 2.00 1.4025 1.3948 1.4046 340.00 10128.00 25 2008.10.01 15:15 buy 13
2.00 1.4026 1.3974 1.4060 26 2008.10.01 15:41 close 13 2.00 1.4052 1.3974 1.4060 520.00
10648.00 27 2008.10.01 17:15 sell 14 2.10 1.4041 1.4089 1.4011 28 2008.10.01 17:53 s/l 14 2.10
1.4089 1.4089 1.4011 -1008.00 9640.00 29 2008.10.01 17:53 buy 15 1.00 1.4089 1.4045 1.4117 30
2008.10.01 18:34 s/l 15 1.00 1.4045 1.4045 1.4117 -440.00 9200.00 31 2008.10.01 18:45 sell 16
0.90 1.4048 1.4089 1.4022 32 2008.10.01 19:16 close 16 0.90 1.4029 1.4089 1.4022 171.00
9371.00 33 2008.10.01 21:30 buy 17 1.90 1.4025 1.3999 1.4041 34 2008.10.01 23:49 s/l 17 1.90
1.3999 1.3999 1.4041 -494.00 8877.00 35 2008.10.02 01:30 buy 18 0.90 1.3962 1.3922 1.3987 36
2008.10.02 01:33 close 18 0.90 1.3972 1.3922 1.3987 90.00 8967.00 37 2008.10.02 01:33 buy 19
1.80 1.3973 1.3932 1.3999 38 2008.10.02 01:43 t/p 19 1.80 1.3999 1.3932 1.3999 468.00 9435.00
39 2008.10.02 02:10 sell 20 1.90 1.3931 1.3978 1.3901 40 2008.10.02 02:44 s/l 20 1.90 1.3978
1.3978 1.3901 -893.00 8542.00 41 2008.10.02 02:55 buy 21 0.90 1.3969 1.3916 1.4003 42
2008.10.02 03:07 close 21 0.90 1.3988 1.3916 1.4003 171.00 8713.00 43 2008.10.02 04:40 sell 22
1.70 1.3955 1.3980 1.3940 44 2008.10.02 04:43 t/p 22 1.70 1.3940 1.3980 1.3940 255.00 8968.00
45 2008.10.02 04:43 sell 23 1.80 1.3937 1.3965 1.3920 46 2008.10.02 04:59 s/l 23 1.80 1.3965
1.3965 1.3920 -504.00 8464.00 47 2008.10.02 06:50 buy 24 0.90 1.3947 1.3901 1.3977 48
2008.10.02 07:17 s/l 24 0.90 1.3901 1.3901 1.3977 -414.00 8050.00 49 2008.10.02 08:30 buy 25
0.80 1.3918 1.3859 1.3956 50 2008.10.02 09:41 close 25 0.80 1.3929 1.3859 1.3956 88.00 8138.00
51 2008.10.02 10:10 sell 26 1.60 1.3906 1.3944 1.3882 52 2008.10.02 10:50 close 26 1.60 1.3893
1.3944 1.3882 208.00 8346.00 53 2008.10.02 12:05 buy 27 1.70 1.3912 1.3867 1.3941 54
2008.10.02 12:34 s/l 27 1.70 1.3867 1.3867 1.3941 -765.00 7581.00 55 2008.10.02 12:40 sell 28
0.80 1.3816 1.3874 1.3779 56 2008.10.02 12:50 t/p 28 0.80 1.3779 1.3874 1.3779 296.00 7877.00
57 2008.10.02 14:10 buy 29 1.60 1.3815 1.3744 1.3861 58 2008.10.02 14:41 close 29 1.60 1.3834
1.3744 1.3861 304.00 8181.00 59 2008.10.02 15:10 sell 30 1.60 1.3774 1.3822 1.3743 60
2008.10.02 15:34 s/l 30 1.60 1.3822 1.3822 1.3743 -768.00 7413.00 61 2008.10.02 15:45 buy 31
0.80 1.3829 1.3779 1.3861 62 2008.10.02 16:01 t/p 31 0.80 1.3861 1.3779 1.3861 256.00 7669.00
63 2008.10.02 17:15 sell 32 1.50 1.3832 1.3871 1.3807 64 2008.10.02 19:43 t/p 32 1.50 1.3807
1.3871 1.3807 375.00 8044.00 65 2008.10.02 20:40 buy 33 1.60 1.3831 1.3801 1.3850 66
2008.10.02 21:57 s/l 33 1.60 1.3801 1.3801 1.3850 -480.00 7564.00 67 2008.10.02 22:00 sell 34
0.80 1.3798 1.3824 1.3782 68 2008.10.02 22:24 t/p 34 0.80 1.3782 1.3824 1.3782 128.00 7692.00
69 2008.10.02 23:20 buy 35 1.50 1.3802 1.3779 1.3816 70 2008.10.02 23:50 s/l 35 1.50 1.3779
1.3779 1.3816 -345.00 7347.00 71 2008.10.02 23:55 sell 36 0.80 1.3777 1.3802 1.3762 72
2008.10.03 00:07 s/l 36 0.80 1.3802 1.3802 1.3762 -205.60 7141.40 73 2008.10.03 00:20 buy 37
0.70 1.3810 1.3782 1.3827 74 2008.10.03 01:20 close 37 0.70 1.3818 1.3782 1.3827 56.00 7197.40
75 2008.10.03 03:00 sell 38 1.40 1.3833 1.3857 1.3818 76 2008.10.03 04:09 s/l 38 1.40 1.3857
1.3857 1.3818 -336.00 6861.40 77 2008.10.03 06:35 sell 39 0.10 1.3866 1.3905 1.3841 78
2008.10.03 06:44 close 39 0.10 1.3847 1.3905 1.3841 19.00 6880.40 79 2008.10.03 08:05 buy 40
1.40 1.3856 1.3811 1.3885 80 2008.10.03 09:12 close 40 1.40 1.3864 1.3811 1.3885 112.00
6992.40 81 2008.10.03 10:05 sell 41 1.40 1.3845 1.3880 1.3823 82 2008.10.03 12:31 close 41 1.40
1.3831 1.3880 1.3823 196.00 7188.40 83 2008.10.03 14:40 buy 42 1.40 1.3763 1.3701 1.3803 84
2008.10.03 14:44 close 42 1.40 1.3786 1.3701 1.3803 322.00 7510.40 85 2008.10.03 14:44 buy 43
1.50 1.3789 1.3723 1.3831 86 2008.10.03 15:41 t/p 43 1.50 1.3831 1.3723 1.3831 630.00 8140.40
87 2008.10.03 16:50 sell 44 1.60 1.3801 1.3854 1.3767 88 2008.10.03 17:26 s/l 44 1.60 1.3854
1.3854 1.3767 -848.00 7292.40 89 2008.10.03 17:30 buy 45 0.80 1.3846 1.3792 1.3881 90
2008.10.03 18:08 close 45 0.80 1.3875 1.3792 1.3881 232.00 7524.40 91 2008.10.03 18:50 sell 46
1.50 1.3852 1.3927 1.3803 92 2008.10.03 19:44 t/p 46 1.50 1.3803 1.3927 1.3803 735.00 8259.40
93 2008.10.05 23:45 buy 47 1.70 1.3639 1.3598 1.3665 94 2008.10.06 00:07 t/p 47 1.70 1.3665
1.3598 1.3665 452.20 8711.60 95 2008.10.06 01:00 buy 48 1.70 1.3646 1.3595 1.3679 96
2008.10.06 02:45 close 48 1.70 1.3655 1.3595 1.3679 153.00 8864.60 97 2008.10.06 03:20 sell 49
1.80 1.3633 1.3659 1.3617 98 2008.10.06 03:48 t/p 49 1.80 1.3617 1.3659 1.3617 288.00 9152.60
99 2008.10.06 05:10 buy 50 1.80 1.3638 1.3591 1.3668 100 2008.10.06 05:58 s/l 50 1.80 1.3591
1.3591 1.3668 -846.00 8306.60 101 2008.10.06 07:30 buy 51 0.90 1.3593 1.3542 1.3626 102
2008.10.06 07:56 close 51 0.90 1.3614 1.3542 1.3626 189.00 8495.60 103 2008.10.06 09:00 sell 52
1.70 1.3579 1.3621 1.3553 104 2008.10.06 09:04 close 52 1.70 1.3559 1.3621 1.3553 340.00
8835.60 105 2008.10.06 09:04 sell 53 1.80 1.3556 1.3601 1.3527 106 2008.10.06 10:32 s/l 53 1.80
1.3601 1.3601 1.3527 -810.00 8025.60 107 2008.10.06 12:45 sell 54 0.80 1.3586 1.3635 1.3555
108 2008.10.06 13:55 close 54 0.80 1.3571 1.3635 1.3555 120.00 8145.60 109 2008.10.06 15:45
buy 55 1.60 1.3526 1.3452 1.3574 110 2008.10.06 19:15 s/l 55 1.60 1.3452 1.3452 1.3574 -1184.00
6961.60 111 2008.10.06 19:40 buy 56 0.70 1.3491 1.3446 1.3520 112 2008.10.06 19:46 t/p 56 0.70
1.3520 1.3446 1.3520 203.00 7164.60 113 2008.10.06 21:05 sell 57 1.40 1.3502 1.3545 1.3475 114
2008.10.06 22:10 close 57 1.40 1.3492 1.3545 1.3475 140.00 7304.60 117 2008.10.07 01:00 sell 59
1.50 1.3501 1.3527 1.3485 118 2008.10.07 01:01 t/p 59 1.50 1.3485 1.3527 1.3485 240.00 7679.60
119 2008.10.07 01:01 sell 60 1.50 1.3483 1.3512 1.3465 120 2008.10.07 01:33 s/l 60 1.50 1.3512
1.3512 1.3465 -435.00 7244.60 121 2008.10.07 03:10 buy 61 0.70 1.3512 1.3484 1.3530 122
2008.10.07 03:11 close 61 0.70 1.3525 1.3484 1.3530 91.00 7335.60 123 2008.10.07 03:11 buy 62
1.50 1.3526 1.3495 1.3545 124 2008.10.07 03:30 s/l 62 1.50 1.3495 1.3495 1.3545 -465.00 6870.60
125 2008.10.07 05:15 sell 63 0.70 1.3571 1.3635 1.3529 126 2008.10.07 08:16 t/p 63 0.70 1.3529
1.3635 1.3529 294.00 7164.60 127 2008.10.07 09:50 buy 64 1.40 1.3569 1.3513 1.3605 128
2008.10.07 11:06 close 64 1.40 1.3580 1.3513 1.3605 154.00 7318.60 129 2008.10.07 11:07 sell 65
1.50 1.3582 1.3629 1.3552 130 2008.10.07 12:04 s/l 65 1.50 1.3629 1.3629 1.3552 -705.00 6613.60
131 2008.10.07 12:45 sell 66 0.70 1.3607 1.3662 1.3572 132 2008.10.07 13:02 s/l 66 0.70 1.3662
1.3662 1.3572 -385.00 6228.60 133 2008.10.07 13:05 buy 67 0.60 1.3622 1.3558 1.3663 134
2008.10.07 13:13 t/p 67 0.60 1.3663 1.3558 1.3663 246.00 6474.60 135 2008.10.07 14:45 sell 68
1.30 1.3656 1.3729 1.3609 136 2008.10.07 15:10 t/p 68 1.30 1.3609 1.3729 1.3609 611.00 7085.60
137 2008.10.07 16:10 buy 69 1.40 1.3639 1.3583 1.3675 138 2008.10.07 17:44 s/l 69 1.40 1.3583
1.3583 1.3675 -784.00 6301.60 139 2008.10.07 18:30 buy 70 0.70 1.3617 1.3558 1.3655 140
2008.10.07 18:48 close 70 0.70 1.3643 1.3558 1.3655 182.00 6483.60 141 2008.10.07 19:50 sell 71
1.30 1.3619 1.3665 1.3590 142 2008.10.07 20:55 t/p 71 1.30 1.3590 1.3665 1.3590 377.00 6860.60
143 2008.10.07 21:40 buy 72 1.40 1.3621 1.3592 1.3639 144 2008.10.07 21:50 t/p 72 1.40 1.3639
1.3592 1.3639 252.00 7112.60 145 2008.10.07 22:50 sell 73 1.40 1.3596 1.3627 1.3577 146
2008.10.07 23:10 t/p 73 1.40 1.3577 1.3627 1.3577 266.00 7378.60 147 2008.10.08 00:30 buy 74
1.50 1.3590 1.3551 1.3615 148 2008.10.08 03:49 close 74 1.50 1.3597 1.3551 1.3615 105.00
7483.60 149 2008.10.08 05:10 sell 75 1.50 1.3600 1.3643 1.3573 150 2008.10.08 05:11 t/p 75 1.50
1.3573 1.3643 1.3573 405.00 7888.60 151 2008.10.08 05:11 sell 76 1.60 1.3570 1.3617 1.3540 152
2008.10.08 07:06 s/l 76 1.60 1.3617 1.3617 1.3540 -752.00 7136.60 153 2008.10.08 08:35 sell 77
0.70 1.3602 1.3672 1.3557 154 2008.10.08 09:25 s/l 77 0.70 1.3672 1.3672 1.3557 -490.00 6646.60
155 2008.10.08 10:00 sell 78 0.70 1.3623 1.3686 1.3582 156 2008.10.08 10:07 close 78 0.70
1.3597 1.3686 1.3582 182.00 6828.60 157 2008.10.08 11:10 buy 79 1.40 1.3672 1.3608 1.3713 158
2008.10.08 11:24 t/p 79 1.40 1.3713 1.3608 1.3713 574.00 7402.60 159 2008.10.08 12:40 sell 80
1.50 1.3659 1.3750 1.3599 160 2008.10.08 18:06 s/l 80 1.50 1.3750 1.3750 1.3599 -1365.00
6037.60 161 2008.10.08 18:50 sell 81 0.60 1.3690 1.3745 1.3655 162 2008.10.08 19:56 close 81
0.60 1.3679 1.3745 1.3655 66.00 6103.60 163 2008.10.08 23:10 buy 82 1.20 1.3630 1.3607 1.3644
164 2008.10.08 23:48 close 82 1.20 1.3638 1.3607 1.3644 96.00 6199.60 165 2008.10.08 23:50 buy
83 1.20 1.3637 1.3611 1.3653 166 2008.10.08 23:58 s/l 83 1.20 1.3611 1.3611 1.3653 -312.00
5887.60 167 2008.10.09 00:00 sell 84 0.60 1.3610 1.3639 1.3592 168 2008.10.09 00:31 s/l 84 0.60
1.3639 1.3639 1.3592 -174.00 5713.60 170 2008.10.09 00:44 s/l 85 0.60 1.3608 1.3608 1.3659 -
186.00 5527.60 171 2008.10.09 00:50 sell 86 0.10 1.3618 1.3653 1.3596 172 2008.10.09 00:53
close 86 0.10 1.3605 1.3653 1.3596 13.00 5540.60 173 2008.10.09 00:53 sell 87 1.10 1.3604
1.3642 1.3580 174 2008.10.09 00:55 close 87 1.10 1.3585 1.3642 1.3580 209.00 5749.60 175
2008.10.09 01:55 buy 88 1.10 1.3649 1.3604 1.3678 176 2008.10.09 02:38 t/p 88 1.10 1.3678
1.3604 1.3678 319.00 6068.60 177 2008.10.09 04:20 sell 89 1.20 1.3677 1.3718 1.3651 178
2008.10.09 05:13 t/p 89 1.20 1.3651 1.3718 1.3651 312.00 6380.60 179 2008.10.09 06:10 buy 90
1.30 1.3691 1.3653 1.3715 180 2008.10.09 07:32 t/p 90 1.30 1.3715 1.3653 1.3715 312.00 6692.60
181 2008.10.09 09:30 sell 91 1.30 1.3748 1.3796 1.3717 182 2008.10.09 10:26 close 91 1.30
1.3734 1.3796 1.3717 182.00 6874.60 183 2008.10.09 10:30 sell 92 1.40 1.3723 1.3770 1.3693 184
2008.10.09 10:50 t/p 92 1.40 1.3693 1.3770 1.3693 420.00 7294.60 185 2008.10.09 12:30 buy 93
1.50 1.3698 1.3650 1.3729 186 2008.10.09 12:33 close 93 1.50 1.3713 1.3650 1.3729 225.00
7519.60 187 2008.10.09 12:33 buy 94 1.50 1.3714 1.3663 1.3747 188 2008.10.09 13:37 s/l 94 1.50
1.3663 1.3663 1.3747 -765.00 6754.60 189 2008.10.09 15:55 buy 95 0.70 1.3654 1.3595 1.3692
190 2008.10.09 17:55 t/p 95 0.70 1.3692 1.3595 1.3692 266.00 7020.60 191 2008.10.09 18:55 sell
96 1.40 1.3657 1.3693 1.3634 192 2008.10.09 19:20 t/p 96 1.40 1.3634 1.3693 1.3634 322.00
7342.60 193 2008.10.09 22:15 buy 97 1.50 1.3596 1.3568 1.3613 194 2008.10.09 22:25 close 97
1.50 1.3603 1.3568 1.3613 105.00 7447.60 195 2008.10.09 23:35 sell 98 1.50 1.3573 1.3601
1.3555 196 2008.10.10 00:37 close 98 1.50 1.3563 1.3601 1.3555 139.50 7587.10 197 2008.10.10
01:20 buy 99 1.50 1.3611 1.3568 1.3639 198 2008.10.10 01:34 s/l 99 1.50 1.3568 1.3568 1.3639 -
645.00 6942.10 199 2008.10.10 01:51 sell 100 0.70 1.3582 1.3634 1.3548 200 2008.10.10 03:13
close 100 0.70 1.3569 1.3634 1.3548 91.00 7033.10 201 2008.10.10 03:20 sell 101 1.40 1.3559
1.3598 1.3534 202 2008.10.10 04:14 close 101 1.40 1.3545 1.3598 1.3534 196.00 7229.10 203
2008.10.10 05:25 buy 102 1.40 1.3548 1.3504 1.3576 204 2008.10.10 06:34 close 102 1.40 1.3569
1.3504 1.3576 294.00 7523.10 205 2008.10.10 06:40 buy 103 1.50 1.3562 1.3513 1.3594 206
2008.10.10 07:30 t/p 103 1.50 1.3594 1.3513 1.3594 480.00 8003.10 207 2008.10.10 08:50 sell 104
1.60 1.3605 1.3664 1.3567 208 2008.10.10 09:15 close 104 1.60 1.3587 1.3664 1.3567 288.00
8291.10 209 2008.10.10 09:15 sell 105 1.70 1.3586 1.3637 1.3553 210 2008.10.10 09:50 t/p 105
1.70 1.3553 1.3637 1.3553 561.00 8852.10 211 2008.10.10 11:25 buy 106 1.80 1.3554 1.3512
1.3581 212 2008.10.10 12:05 close 106 1.80 1.3565 1.3512 1.3581 198.00 9050.10 213 2008.10.10
12:50 sell 107 1.80 1.3531 1.3576 1.3502 214 2008.10.10 13:00 t/p 107 1.80 1.3502 1.3576 1.3502
522.00 9572.10 215 2008.10.10 13:55 buy 108 1.90 1.3554 1.3498 1.3590 216 2008.10.10 14:11
close 108 1.90 1.3578 1.3498 1.3590 456.00 10028.10 217 2008.10.10 14:50 sell 109 2.00 1.3536
1.3607 1.3490 218 2008.10.10 15:11 t/p 109 2.00 1.3490 1.3607 1.3490 920.00 10948.10 219
2008.10.10 16:45 buy 110 2.20 1.3474 1.3427 1.3504 220 2008.10.10 17:25 s/l 110 2.20 1.3427
1.3427 1.3504 -1034.00 9914.10 222 2008.10.10 19:35 t/p 111 1.00 1.3430 1.3300 1.3430 510.00
10424.10 223 2008.10.10 20:55 sell 112 2.10 1.3401 1.3456 1.3365 224 2008.10.12 22:00 s/l 112
2.10 1.3456 1.3456 1.3365 -1155.00 9269.10 225 2008.10.12 22:05 buy 113 1.00 1.3583 1.3508
1.3632 226 2008.10.12 23:20 close 113 1.00 1.3612 1.3508 1.3632 290.00 9559.10 227 2008.10.12
23:45 sell 114 1.90 1.3601 1.3630 1.3583 228 2008.10.13 00:44 t/p 114 1.90 1.3583 1.3630 1.3583
328.70 9887.80 229 2008.10.13 04:00 buy 115 2.00 1.3535 1.3481 1.3569 230 2008.10.13 05:16 s/l
115 2.00 1.3481 1.3481 1.3569 -1080.00 8807.80 231 2008.10.13 05:20 sell 116 0.90 1.3481
1.3521 1.3455 232 2008.10.13 05:25 s/l 116 0.90 1.3521 1.3521 1.3455 -360.00 8447.80 233
2008.10.13 05:45 buy 117 0.90 1.3560 1.3515 1.3589 234 2008.10.13 06:04 t/p 117 0.90 1.3589
1.3515 1.3589 261.00 8708.80 235 2008.10.13 08:05 sell 118 1.70 1.3628 1.3688 1.3589 236
2008.10.13 09:50 close 118 1.70 1.3616 1.3688 1.3589 204.00 8912.80 237 2008.10.13 11:45 buy
119 1.80 1.3604 1.3563 1.3630 238 2008.10.13 11:46 close 119 1.80 1.3620 1.3563 1.3630 288.00
9200.80 239 2008.10.13 11:46 buy 120 1.80 1.3621 1.3577 1.3649 240 2008.10.13 12:31 t/p 120
1.80 1.3649 1.3577 1.3649 504.00 9704.80 241 2008.10.13 13:55 sell 121 1.90 1.3628 1.3671
1.3601 242 2008.10.13 14:09 t/p 121 1.90 1.3601 1.3671 1.3601 513.00 10217.80 243 2008.10.13
17:35 buy 122 2.00 1.3526 1.3482 1.3554 244 2008.10.13 19:24 close 122 2.00 1.3539 1.3482
1.3554 260.00 10477.80 245 2008.10.13 19:30 buy 123 2.10 1.3559 1.3528 1.3578 246 2008.10.13
19:37 t/p 123 2.10 1.3578 1.3528 1.3578 399.00 10876.80 247 2008.10.13 20:50 sell 124 2.20
1.3566 1.3608 1.3539 248 2008.10.13 22:43 s/l 124 2.20 1.3608 1.3608 1.3539 -924.00 9952.80
249 2008.10.14 01:05 sell 125 1.00 1.3636 1.3675 1.3611 250 2008.10.14 01:06 t/p 125 1.00
1.3611 1.3675 1.3611 250.00 10202.80 251 2008.10.14 01:06 sell 126 2.00 1.3609 1.3652 1.3582
252 2008.10.14 01:31 s/l 126 2.00 1.3652 1.3652 1.3582 -860.00 9342.80 253 2008.10.14 01:50
buy 127 1.00 1.3684 1.3634 1.3716 254 2008.10.14 06:50 s/l 127 1.00 1.3634 1.3634 1.3716 -
500.00 8842.80 255 2008.10.14 07:45 buy 128 0.90 1.3662 1.3614 1.3693 256 2008.10.14 10:00
close 128 0.90 1.3686 1.3614 1.3693 216.00 9058.80 257 2008.10.14 13:00 sell 129 1.80 1.3726
1.3766 1.3701 258 2008.10.14 13:12 t/p 129 1.80 1.3701 1.3766 1.3701 450.00 9508.80 259
2008.10.14 15:30 buy 130 1.90 1.3670 1.3607 1.3711 260 2008.10.14 18:21 close 130 1.90 1.3684
1.3607 1.3711 266.00 9774.80 261 2008.10.14 18:50 sell 131 2.00 1.3648 1.3688 1.3623 262
2008.10.14 20:21 close 131 2.00 1.3637 1.3688 1.3623 220.00 9994.80 263 2008.10.14 22:10 buy
132 2.00 1.3643 1.3620 1.3657 264 2008.10.14 22:32 s/l 132 2.00 1.3620 1.3620 1.3657 -460.00
9534.80 265 2008.10.14 22:45 sell 133 1.00 1.3614 1.3639 1.3599 266 2008.10.14 23:15 t/p 133
1.00 1.3599 1.3639 1.3599 150.00 9684.80 267 2008.10.15 00:55 buy 134 1.90 1.3586 1.3548
1.3610 268 2008.10.15 01:39 s/l 134 1.90 1.3548 1.3548 1.3610 -722.00 8962.80 269 2008.10.15
02:55 buy 135 0.90 1.3557 1.3527 1.3576 270 2008.10.15 03:11 close 135 0.90 1.3566 1.3527
1.3576 81.00 9043.80 271 2008.10.15 04:50 sell 136 1.80 1.3570 1.3594 1.3556 272 2008.10.15
05:40 s/l 136 1.80 1.3594 1.3594 1.3556 -432.00 8611.80 273 2008.10.15 07:25 sell 137 0.90
1.3607 1.3644 1.3583 274 2008.10.15 07:38 close 137 0.90 1.3595 1.3644 1.3583 108.00 8719.80
276 2008.10.15 09:59 close 138 1.70 1.3623 1.3572 1.3628 289.00 9008.80 277 2008.10.15 11:45
sell 139 1.80 1.3643 1.3681 1.3619 278 2008.10.15 12:09 t/p 139 1.80 1.3619 1.3681 1.3619
432.00 9440.80 279 2008.10.15 14:15 buy 140 1.90 1.3596 1.3545 1.3629 280 2008.10.15 14:32
close 140 1.90 1.3616 1.3545 1.3629 380.00 9820.80 281 2008.10.15 15:15 sell 141 2.00 1.3576
1.3633 1.3539 282 2008.10.15 16:06 close 141 2.00 1.3560 1.3633 1.3539 320.00 10140.80 283
2008.10.15 18:35 buy 142 2.00 1.3533 1.3496 1.3556 284 2008.10.15 19:56 s/l 142 2.00 1.3496
1.3496 1.3556 -740.00 9400.80 285 2008.10.15 20:45 buy 143 1.00 1.3514 1.3474 1.3540 286
2008.10.15 21:06 s/l 143 1.00 1.3474 1.3474 1.3540 -400.00 9000.80 287 2008.10.15 21:06 sell
144 0.90 1.3473 1.3516 1.3446 288 2008.10.15 22:13 t/p 144 0.90 1.3446 1.3516 1.3446 243.00
9243.80 289 2008.10.15 23:25 buy 145 1.80 1.3456 1.3427 1.3474 290 2008.10.16 00:07 close 145
1.80 1.3468 1.3427 1.3474 248.40 9492.20 291 2008.10.16 00:08 buy 146 1.90 1.3471 1.3435
1.3494 292 2008.10.16 00:44 t/p 146 1.90 1.3494 1.3435 1.3494 437.00 9929.20 293 2008.10.16
03:30 sell 147 2.00 1.3477 1.3519 1.3450 294 2008.10.16 04:11 t/p 147 2.00 1.3450 1.3519 1.3450
540.00 10469.20 295 2008.10.16 06:10 buy 148 2.10 1.3398 1.3333 1.3440 296 2008.10.16 07:39
close 148 2.10 1.3418 1.3333 1.3440 420.00 10889.20 297 2008.10.16 07:45 buy 149 2.20 1.3423
1.3363 1.3461 298 2008.10.16 08:08 close 149 2.20 1.3457 1.3363 1.3461 748.00 11637.20 299
2008.10.16 09:55 sell 150 2.30 1.3450 1.3499 1.3419 300 2008.10.16 11:14 s/l 150 2.30 1.3499
1.3499 1.3419 -1127.00 10510.20 301 2008.10.16 13:10 sell 151 1.10 1.3494 1.3542 1.3463 302
2008.10.16 13:33 t/p 151 1.10 1.3463 1.3542 1.3463 341.00 10851.20 303 2008.10.16 15:55 buy
152 2.20 1.3427 1.3372 1.3462 304 2008.10.16 19:08 t/p 152 2.20 1.3462 1.3372 1.3462 770.00
11621.20 305 2008.10.16 20:45 sell 153 2.30 1.3454 1.3491 1.3430 306 2008.10.16 21:31 s/l 153
2.30 1.3491 1.3491 1.3430 -851.00 10770.20 307 2008.10.16 22:40 sell 154 1.10 1.3475 1.3501
1.3459 308 2008.10.16 23:06 s/l 154 1.10 1.3501 1.3501 1.3459 -286.00 10484.20 309 2008.10.16
23:06 buy 155 1.10 1.3501 1.3474 1.3518 310 2008.10.17 00:12 close 155 1.10 1.3510 1.3474
1.3518 105.60 10589.80 311 2008.10.17 00:45 sell 156 2.10 1.3485 1.3516 1.3466 312 2008.10.17
01:20 t/p 156 2.10 1.3466 1.3516 1.3466 399.00 10988.80 313 2008.10.17 02:55 buy 157 2.20
1.3461 1.3425 1.3484 314 2008.10.17 03:23 close 157 2.20 1.3471 1.3425 1.3484 220.00 11208.80
315 2008.10.17 03:23 sell 158 2.20 1.3470 1.3505 1.3448 316 2008.10.17 03:31 close 158 2.20
1.3460 1.3505 1.3448 220.00 11428.80 317 2008.10.17 03:35 buy 159 2.30 1.3465 1.3437 1.3482
318 2008.10.17 04:29 close 159 2.30 1.3476 1.3437 1.3482 253.00 11681.80 319 2008.10.17 05:45
sell 160 2.30 1.3465 1.3495 1.3446 320 2008.10.17 06:29 s/l 160 2.30 1.3495 1.3495 1.3446 -
690.00 10991.80 321 2008.10.17 06:30 buy 161 1.10 1.3497 1.3460 1.3520 322 2008.10.17 07:06
s/l 161 1.10 1.3460 1.3460 1.3520 -407.00 10584.80 323 2008.10.17 07:06 sell 162 1.10 1.3459
1.3499 1.3433 324 2008.10.17 08:02 t/p 162 1.10 1.3433 1.3499 1.3433 286.00 10870.80 325
2008.10.17 11:45 buy 163 2.20 1.3415 1.3382 1.3436 326 2008.10.17 12:50 close 163 2.20 1.3428
1.3382 1.3436 286.00 11156.80 327 2008.10.17 14:40 sell 164 2.20 1.3433 1.3485 1.3399 329
2008.10.17 14:50 buy 165 1.00 1.3484 1.3427 1.3520 330 2008.10.17 16:46 s/l 165 1.00 1.3427
1.3427 1.3520 -570.00 9442.80 331 2008.10.17 17:05 buy 166 0.10 1.3459 1.3418 1.3485 332
2008.10.17 17:30 close 166 0.10 1.3475 1.3418 1.3485 16.00 9458.80 333 2008.10.17 18:25 sell
167 1.90 1.3429 1.3470 1.3403 334 2008.10.17 19:22 t/p 167 1.90 1.3403 1.3470 1.3403 494.00
9952.80 335 2008.10.17 20:25 buy 168 2.00 1.3423 1.3387 1.3445 336 2008.10.19 23:48 t/p 168
2.00 1.3445 1.3387 1.3445 440.00 10392.80 337 2008.10.20 02:20 sell 169 2.10 1.3441 1.3469
1.3424 338 2008.10.20 03:41 s/l 169 2.10 1.3469 1.3469 1.3424 -588.00 9804.80 339 2008.10.20
05:35 sell 170 1.00 1.3465 1.3494 1.3447 340 2008.10.20 06:13 s/l 170 1.00 1.3494 1.3494 1.3447
-290.00 9514.80 341 2008.10.20 06:30 buy 171 1.00 1.3494 1.3462 1.3514 342 2008.10.20 06:45
t/p 171 1.00 1.3514 1.3462 1.3514 200.00 9714.80 343 2008.10.20 08:00 sell 172 1.90 1.3482
1.3526 1.3454 344 2008.10.20 10:04 close 172 1.90 1.3468 1.3526 1.3454 266.00 9980.80 345
2008.10.20 12:25 buy 173 2.00 1.3426 1.3380 1.3455 346 2008.10.20 13:25 s/l 173 2.00 1.3380
1.3380 1.3455 -920.00 9060.80 347 2008.10.20 16:05 buy 174 0.90 1.3312 1.3263 1.3344 348
2008.10.20 20:33 t/p 174 0.90 1.3344 1.3263 1.3344 288.00 9348.80 349 2008.10.20 21:58 sell 175
1.90 1.3327 1.3347 1.3315 350 2008.10.20 22:53 t/p 175 1.90 1.3315 1.3347 1.3315 228.00
9576.80 351 2008.10.20 23:45 buy 176 1.90 1.3341 1.3319 1.3354 352 2008.10.21 01:05 s/l 176
1.90 1.3319 1.3319 1.3354 -406.60 9170.20 353 2008.10.21 02:20 buy 177 0.90 1.3319 1.3297
1.3332 354 2008.10.21 02:25 close 177 0.90 1.3325 1.3297 1.3332 54.00 9224.20 355 2008.10.21
03:30 sell 178 1.80 1.3329 1.3353 1.3315 356 2008.10.21 05:19 t/p 178 1.80 1.3315 1.3353 1.3315
252.00 9476.20 357 2008.10.21 06:30 buy 179 1.90 1.3328 1.3297 1.3347 358 2008.10.21 06:41 s/l
179 1.90 1.3297 1.3297 1.3347 -589.00 8887.20 359 2008.10.21 06:41 sell 180 0.90 1.3296 1.3330
1.3275 360 2008.10.21 06:43 close 180 0.90 1.3278 1.3330 1.3275 162.00 9049.20 361 2008.10.21
06:43 sell 181 1.80 1.3274 1.3311 1.3251 362 2008.10.21 06:49 t/p 181 1.80 1.3251 1.3311 1.3251
414.00 9463.20 363 2008.10.21 09:25 buy 182 1.90 1.3252 1.3211 1.3278 364 2008.10.21 10:56 s/l
182 1.90 1.3211 1.3211 1.3278 -779.00 8684.20 365 2008.10.21 13:35 buy 183 0.90 1.3205 1.3158
1.3235 366 2008.10.21 14:17 close 183 0.90 1.3224 1.3158 1.3235 171.00 8855.20 367 2008.10.21
14:55 sell 184 1.80 1.3180 1.3223 1.3152 368 2008.10.21 15:35 t/p 184 1.80 1.3152 1.3223 1.3152
504.00 9359.20 369 2008.10.21 18:00 buy 185 1.90 1.3095 1.3059 1.3118 370 2008.10.21 18:16
close 185 1.90 1.3105 1.3059 1.3118 190.00 9549.20 371 2008.10.21 18:20 buy 186 1.90 1.3122
1.3088 1.3143 372 2008.10.21 19:21 s/l 186 1.90 1.3088 1.3088 1.3143 -646.00 8903.20 373
2008.10.21 19:25 sell 187 0.90 1.3074 1.3111 1.3051 374 2008.10.21 20:57 close 187 0.90 1.3064
1.3111 1.3051 90.00 8993.20 375 2008.10.21 20:57 buy 188 1.80 1.3065 1.3029 1.3087 376
2008.10.21 22:35 close 188 1.80 1.3073 1.3029 1.3087 144.00 9137.20 377 2008.10.21 23:15 sell
189 1.80 1.3065 1.3087 1.3052 378 2008.10.21 23:21 close 189 1.80 1.3055 1.3087 1.3052 180.00
9317.20 379 2008.10.22 06:05 buy 190 1.90 1.2861 1.2772 1.2919 380 2008.10.22 08:47 t/p 190
1.90 1.2919 1.2772 1.2919 1102.00 10419.20 381 2008.10.22 10:35 sell 191 2.10 1.2870 1.2917
1.2840 382 2008.10.22 10:50 t/p 191 2.10 1.2840 1.2917 1.2840 630.00 11049.20 383 2008.10.22
12:30 buy 192 2.20 1.2896 1.2840 1.2932 384 2008.10.22 13:53 s/l 192 2.20 1.2840 1.2840 1.2932
-1232.00 9817.20 385 2008.10.22 14:00 sell 193 1.00 1.2843 1.2906 1.2802 386 2008.10.22 14:04
t/p 193 1.00 1.2802 1.2906 1.2802 410.00 10227.20 387 2008.10.22 14:04 sell 194 2.00 1.2800
1.2871 1.2754 388 2008.10.22 14:20 s/l 194 2.00 1.2871 1.2871 1.2754 -1420.00 8807.20 389
2008.10.22 14:40 buy 195 0.90 1.2872 1.2808 1.2913 390 2008.10.22 15:00 t/p 195 0.90 1.2913
1.2808 1.2913 369.00 9176.20 391 2008.10.22 15:45 sell 196 1.80 1.2846 1.2910 1.2804 392
2008.10.22 21:29 close 196 1.80 1.2831 1.2910 1.2804 270.00 9446.20 393 2008.10.22 21:30 sell
197 1.90 1.2840 1.2873 1.2820 394 2008.10.22 22:26 t/p 197 1.90 1.2820 1.2873 1.2820 380.00
9826.20 395 2008.10.23 00:10 buy 198 2.00 1.2836 1.2787 1.2868 396 2008.10.23 00:33 s/l 198
2.00 1.2787 1.2787 1.2868 -980.00 8846.20 397 2008.10.23 02:40 sell 199 0.90 1.2816 1.2854
1.2792 398 2008.10.23 02:57 t/p 199 0.90 1.2792 1.2854 1.2792 216.00 9062.20 399 2008.10.23
04:50 buy 200 1.80 1.2767 1.2725 1.2794 400 2008.10.23 04:57 t/p 200 1.80 1.2794 1.2725 1.2794
486.00 9548.20 401 2008.10.23 07:10 sell 201 1.90 1.2807 1.2855 1.2776 402 2008.10.23 07:28
close 201 1.90 1.2783 1.2855 1.2776 456.00 10004.20 403 2008.10.23 08:10 buy 202 2.00 1.2820
1.2771 1.2852 404 2008.10.23 08:58 close 202 2.00 1.2833 1.2771 1.2852 260.00 10264.20 405
2008.10.23 10:15 sell 203 2.10 1.2830 1.2871 1.2804 406 2008.10.23 10:54 close 203 2.10 1.2815
1.2871 1.2804 315.00 10579.20 407 2008.10.23 13:05 buy 204 2.10 1.2802 1.2744 1.2839 408
2008.10.23 13:09 close 204 2.10 1.2835 1.2744 1.2839 693.00 11272.20 409 2008.10.23 13:09 buy
205 2.30 1.2836 1.2773 1.2877 410 2008.10.23 14:45 close 205 2.30 1.2860 1.2773 1.2877 552.00
11824.20 411 2008.10.23 16:15 sell 206 2.40 1.2825 1.2885 1.2786 412 2008.10.23 17:35 close
206 2.40 1.2813 1.2885 1.2786 288.00 12112.20 413 2008.10.23 17:55 buy 207 2.40 1.2855 1.2801
1.2889 414 2008.10.23 18:34 close 207 2.40 1.2877 1.2801 1.2889 528.00 12640.20 415
2008.10.23 19:10 sell 208 2.50 1.2841 1.2897 1.2805 416 2008.10.23 19:47 s/l 208 2.50 1.2897
1.2897 1.2805 -1400.00 11240.20 417 2008.10.23 19:50 buy 209 1.10 1.2896 1.2837 1.2934 418
2008.10.23 21:00 t/p 209 1.10 1.2934 1.2837 1.2934 418.00 11658.20 419 2008.10.23 22:30 sell
210 2.30 1.2952 1.2990 1.2928 420 2008.10.23 22:42 close 210 2.30 1.2936 1.2990 1.2928 368.00
12026.20 421 2008.10.24 01:45 buy 211 2.40 1.2875 1.2825 1.2907 422 2008.10.24 01:54 s/l 211
2.40 1.2825 1.2825 1.2907 -1200.00 10826.20 423 2008.10.24 01:55 sell 212 1.10 1.2810 1.2866
1.2774 424 2008.10.24 02:36 t/p 212 1.10 1.2774 1.2866 1.2774 396.00 11222.20 425 2008.10.24
04:25 buy 213 2.20 1.2792 1.2741 1.2824 426 2008.10.24 04:47 close 213 2.20 1.2810 1.2741
1.2824 396.00 11618.20 427 2008.10.24 05:30 sell 214 2.30 1.2764 1.2822 1.2727 428 2008.10.24
06:26 close 214 2.30 1.2747 1.2822 1.2727 391.00 12009.20 429 2008.10.24 10:15 buy 215 2.40
1.2571 1.2486 1.2627 430 2008.10.24 10:58 close 215 2.40 1.2598 1.2486 1.2627 648.00 12657.20
431 2008.10.24 16:05 sell 216 2.50 1.2684 1.2767 1.2630 432 2008.10.24 17:10 close 216 2.50
1.2664 1.2767 1.2630 500.00 13157.20 435 2008.10.26 23:10 sell 218 1.20 1.2572 1.2624 1.2538
436 2008.10.26 23:54 s/l 218 1.20 1.2624 1.2624 1.2538 -624.00 10708.20 437 2008.10.26 23:55
buy 219 1.10 1.2623 1.2571 1.2656 438 2008.10.27 00:02 t/p 219 1.10 1.2656 1.2571 1.2656
369.60 11077.80 439 2008.10.27 00:45 sell 220 2.20 1.2584 1.2644 1.2545 440 2008.10.27 01:36
t/p 220 2.20 1.2545 1.2644 1.2545 858.00 11935.80 441 2008.10.27 02:55 buy 221 2.40 1.2574
1.2522 1.2607 442 2008.10.27 03:20 close 221 2.40 1.2591 1.2522 1.2607 408.00 12343.80 443
2008.10.27 03:25 buy 222 2.50 1.2585 1.2539 1.2614 444 2008.10.27 03:34 close 222 2.50 1.2606
1.2539 1.2614 525.00 12868.80 445 2008.10.27 05:10 sell 223 2.50 1.2568 1.2614 1.2539 446
2008.10.27 05:14 t/p 223 2.50 1.2539 1.2614 1.2539 725.00 13593.80 447 2008.10.27 05:14 sell
224 2.50 1.2537 1.2588 1.2505 448 2008.10.27 06:48 close 224 2.50 1.2525 1.2588 1.2505 300.00
13893.80 449 2008.10.27 09:50 buy 225 2.50 1.2413 1.2331 1.2466 450 2008.10.27 10:39 t/p 225
2.50 1.2466 1.2331 1.2466 1325.00 15218.80 451 2008.10.27 11:50 sell 226 2.50 1.2433 1.2480
1.2403 452 2008.10.27 13:36 t/p 226 2.50 1.2403 1.2480 1.2403 750.00 15968.80 453 2008.10.27
13:45 sell 227 2.50 1.2451 1.2500 1.2420 454 2008.10.27 14:20 close 227 2.50 1.2426 1.2500
1.2420 625.00 16593.80 455 2008.10.27 14:25 sell 228 2.50 1.2430 1.2491 1.2391 456 2008.10.27
15:02 close 228 2.50 1.2407 1.2491 1.2391 575.00 17168.80 457 2008.10.27 16:00 buy 229 2.50
1.2448 1.2384 1.2489 458 2008.10.27 16:05 close 229 2.50 1.2476 1.2384 1.2489 700.00 17868.80
459 2008.10.27 18:35 sell 230 2.50 1.2517 1.2583 1.2475 460 2008.10.27 21:09 t/p 230 2.50
1.2475 1.2583 1.2475 1050.00 18918.80 461 2008.10.27 23:15 buy 231 2.50 1.2480 1.2453 1.2496
462 2008.10.27 23:28 s/l 231 2.50 1.2453 1.2453 1.2496 -675.00 18243.80 463 2008.10.27 23:35
sell 232 1.80 1.2441 1.2472 1.2422 464 2008.10.28 00:03 s/l 232 1.80 1.2472 1.2472 1.2422 -
570.60 17673.20 465 2008.10.28 00:10 buy 233 1.80 1.2470 1.2436 1.2492 466 2008.10.28 00:34
s/l 233 1.80 1.2436 1.2436 1.2492 -612.00 17061.20 467 2008.10.28 00:35 sell 234 1.70 1.2424
1.2467 1.2397 468 2008.10.28 01:03 t/p 234 1.70 1.2397 1.2467 1.2397 459.00 17520.20 469
2008.10.28 02:35 buy 235 2.50 1.2394 1.2339 1.2429 470 2008.10.28 02:39 t/p 235 2.50 1.2429
1.2339 1.2429 875.00 18395.20 471 2008.10.28 02:39 buy 236 2.50 1.2432 1.2371 1.2471 472
2008.10.28 04:43 t/p 236 2.50 1.2471 1.2371 1.2471 975.00 19370.20 473 2008.10.28 07:25 sell
237 2.50 1.2518 1.2591 1.2470 474 2008.10.28 07:56 t/p 237 2.50 1.2470 1.2591 1.2470 1200.00
20570.20 475 2008.10.28 09:25 buy 238 2.50 1.2514 1.2467 1.2544 476 2008.10.28 11:39 t/p 238
2.50 1.2544 1.2467 1.2544 750.00 21320.20 477 2008.10.28 12:45 sell 239 2.50 1.2522 1.2566
1.2494 478 2008.10.28 13:31 s/l 239 2.50 1.2566 1.2566 1.2494 -1100.00 20220.20 479 2008.10.28
13:45 buy 240 2.00 1.2546 1.2497 1.2578 480 2008.10.28 13:56 close 240 2.00 1.2563 1.2497
1.2578 340.00 20560.20 481 2008.10.28 14:20 sell 241 2.50 1.2505 1.2560 1.2470 482 2008.10.28
14:43 close 241 2.50 1.2475 1.2560 1.2470 750.00 21310.20 483 2008.10.28 15:50 buy 242 2.50
1.2477 1.2419 1.2515 484 2008.10.28 16:09 close 242 2.50 1.2495 1.2419 1.2515 450.00 21760.20
485 2008.10.28 17:00 sell 243 2.50 1.2468 1.2509 1.2442 487 2008.10.28 18:20 buy 244 2.10
1.2521 1.2478 1.2548 488 2008.10.28 18:28 t/p 244 2.10 1.2548 1.2478 1.2548 567.00 21302.20
489 2008.10.28 21:10 sell 245 2.50 1.2698 1.2755 1.2661 490 2008.10.28 21:42 s/l 245 2.50
1.2755 1.2755 1.2661 -1425.00 19877.20 491 2008.10.29 00:20 sell 246 2.00 1.2768 1.2815 1.2738
492 2008.10.29 00:58 close 246 2.00 1.2739 1.2815 1.2738 580.00 20457.20 493 2008.10.29 02:30
buy 247 2.50 1.2730 1.2677 1.2764 494 2008.10.29 04:14 s/l 247 2.50 1.2677 1.2677 1.2764 -
1325.00 19132.20 495 2008.10.29 05:55 buy 248 1.90 1.2708 1.2655 1.2742 496 2008.10.29 06:41
t/p 248 1.90 1.2742 1.2655 1.2742 646.00 19778.20 497 2008.10.29 07:25 sell 249 2.50 1.2710
1.2781 1.2664 498 2008.10.29 10:12 s/l 249 2.50 1.2781 1.2781 1.2664 -1775.00 18003.20 499
2008.10.29 11:50 sell 250 1.80 1.2812 1.2863 1.2779 500 2008.10.29 11:59 t/p 250 1.80 1.2779
1.2863 1.2779 594.00 18597.20 501 2008.10.29 11:59 buy 251 2.50 1.2779 1.2725 1.2814 502
2008.10.29 12:10 close 251 2.50 1.2797 1.2725 1.2814 450.00 19047.20 503 2008.10.29 13:35 buy
252 2.50 1.2786 1.2735 1.2819 504 2008.10.29 13:44 close 252 2.50 1.2812 1.2735 1.2819 650.00
19697.20 505 2008.10.29 15:35 sell 253 2.50 1.2923 1.2993 1.2878 506 2008.10.29 15:54 t/p 253
2.50 1.2878 1.2993 1.2878 1125.00 20822.20 507 2008.10.29 16:45 buy 254 2.50 1.2911 1.2844
1.2954 508 2008.10.29 18:12 t/p 254 2.50 1.2954 1.2844 1.2954 1075.00 21897.20 509 2008.10.29
18:35 sell 255 2.50 1.2829 1.2902 1.2781 510 2008.10.29 18:43 s/l 255 2.50 1.2902 1.2902 1.2781
-1825.00 20072.20 511 2008.10.29 19:30 buy 256 2.00 1.2916 1.2814 1.2982 512 2008.10.29 21:40
close 256 2.00 1.2961 1.2814 1.2982 900.00 20972.20 513 2008.10.29 22:25 sell 257 2.50 1.2946
1.2972 1.2930 514 2008.10.30 00:09 s/l 257 2.50 1.2972 1.2972 1.2930 -702.50 20269.70 515
2008.10.30 03:40 sell 258 2.10 1.3200 1.3270 1.3155 516 2008.10.30 05:13 close 258 2.10 1.3180
1.3270 1.3155 420.00 20689.70 517 2008.10.30 05:13 sell 259 2.50 1.3177 1.3239 1.3137 518
2008.10.30 05:47 s/l 259 2.50 1.3239 1.3239 1.3137 -1550.00 19139.70 519 2008.10.30 05:47 buy
260 1.90 1.3239 1.3188 1.3272 520 2008.10.30 06:07 s/l 260 1.90 1.3188 1.3188 1.3272 -969.00
18170.70 521 2008.10.30 06:15 sell 261 0.10 1.3144 1.3204 1.3105 522 2008.10.30 07:18 s/l 261
0.10 1.3204 1.3204 1.3105 -60.00 18110.70 523 2008.10.30 07:25 buy 262 0.10 1.3222 1.3149
1.3270 524 2008.10.30 08:28 s/l 262 0.10 1.3149 1.3149 1.3270 -73.00 18037.70 525 2008.10.30
10:40 buy 263 0.10 1.3136 1.3076 1.3175 526 2008.10.30 11:51 s/l 263 0.10 1.3076 1.3076 1.3175
-60.00 17977.70 527 2008.10.30 16:45 buy 264 0.10 1.2887 1.2807 1.2939 528 2008.10.30 17:09
close 264 0.10 1.2919 1.2807 1.2939 32.00 18009.70 529 2008.10.30 19:35 sell 265 0.10 1.2916
1.2982 1.2873 530 2008.10.30 21:42 t/p 265 0.10 1.2873 1.2982 1.2873 43.00 18052.70 531
2008.10.30 23:10 buy 266 0.10 1.2896 1.2862 1.2917 532 2008.10.30 23:20 s/l 266 0.10 1.2862
1.2862 1.2917 -34.00 18018.70 533 2008.10.30 23:35 sell 267 0.10 1.2841 1.2874 1.2820 534
2008.10.30 23:45 s/l 267 0.10 1.2874 1.2874 1.2820 -33.00 17985.70 535 2008.10.31 00:05 buy
268 0.10 1.2871 1.2834 1.2894 536 2008.10.31 00:06 s/l 268 0.10 1.2834 1.2834 1.2894 -37.00
17948.70 537 2008.10.31 00:06 buy 269 0.10 1.2836 1.2794 1.2862 538 2008.10.31 00:24 s/l 269
0.10 1.2794 1.2794 1.2862 -42.00 17906.70 541 2008.10.31 03:35 sell 271 0.10 1.2829 1.2893
1.2787 542 2008.10.31 04:59 close 271 0.10 1.2809 1.2893 1.2787 20.00 17947.70 543 2008.10.31
05:05 sell 272 0.10 1.2815 1.2865 1.2783 544 2008.10.31 05:08 s/l 272 0.10 1.2865 1.2865 1.2783
-50.00 17897.70 545 2008.10.31 05:08 sell 273 0.10 1.2863 1.2921 1.2825 546 2008.10.31 05:09
close 273 0.10 1.2838 1.2921 1.2825 25.00 17922.70 547 2008.10.31 05:09 sell 274 2.50 1.2834
1.2893 1.2796 548 2008.10.31 06:11 t/p 274 2.50 1.2796 1.2893 1.2796 950.00 18872.70 549
2008.10.31 08:20 buy 275 2.50 1.2698 1.2629 1.2743 550 2008.10.31 09:09 close 275 2.50 1.2715
1.2629 1.2743 425.00 19297.70 551 2008.10.31 09:09 buy 276 2.50 1.2716 1.2655 1.2756 552
2008.10.31 09:14 close 276 2.50 1.2736 1.2655 1.2756 500.00 19797.70 553 2008.10.31 10:35 sell
277 2.50 1.2731 1.2774 1.2703 554 2008.10.31 11:06 s/l 277 2.50 1.2774 1.2774 1.2703 -1075.00
18722.70 555 2008.10.31 11:55 sell 278 1.90 1.2723 1.2776 1.2689 556 2008.10.31 14:26 close
278 1.90 1.2705 1.2776 1.2689 342.00 19064.70 557 2008.10.31 15:20 buy 279 2.50 1.2745 1.2674
1.2791 558 2008.10.31 20:16 close 279 2.50 1.2755 1.2674 1.2791 250.00 19314.70 559
2008.10.31 20:40 sell 280 2.50 1.2741 1.2775 1.2720 560 2008.10.31 21:00 close 280 2.50 1.2733
1.2775 1.2720 200.00 19514.70 561 2008.11.02 21:25 buy 281 2.50 1.2760 1.2732 1.2778 562
2008.11.02 23:06 t/p 281 2.50 1.2778 1.2732 1.2778 450.00 19964.70 563 2008.11.03 00:15 sell
282 2.50 1.2764 1.2788 1.2749 564 2008.11.03 00:53 s/l 282 2.50 1.2788 1.2788 1.2749 -600.00
19364.70 565 2008.11.03 00:55 buy 283 2.00 1.2792 1.2766 1.2808 566 2008.11.03 01:27 t/p 283
2.00 1.2808 1.2766 1.2808 320.00 19684.70 567 2008.11.03 04:50 sell 284 2.50 1.2842 1.2876
1.2821 568 2008.11.03 06:01 s/l 284 2.50 1.2876 1.2876 1.2821 -850.00 18834.70 569 2008.11.03
07:15 sell 285 1.90 1.2863 1.2902 1.2838 570 2008.11.03 07:44 close 285 1.90 1.2845 1.2902
1.2838 342.00 19176.70 571 2008.11.03 09:15 buy 286 2.50 1.2844 1.2792 1.2877 572 2008.11.03
10:50 close 286 2.50 1.2852 1.2792 1.2877 200.00 19376.70 573 2008.11.03 10:55 buy 287 2.50
1.2849 1.2820 1.2867 574 2008.11.03 11:05 close 287 2.50 1.2858 1.2820 1.2867 225.00 19601.70
575 2008.11.03 11:50 sell 288 2.50 1.2850 1.2884 1.2829 576 2008.11.03 12:35 close 288 2.50
1.2843 1.2884 1.2829 175.00 19776.70 577 2008.11.03 14:55 buy 289 2.50 1.2779 1.2733 1.2808
578 2008.11.03 16:07 s/l 289 2.50 1.2733 1.2733 1.2808 -1150.00 18626.70 579 2008.11.03 20:15
buy 290 1.90 1.2643 1.2605 1.2667 580 2008.11.03 22:11 s/l 290 1.90 1.2605 1.2605 1.2667 -
722.00 17904.70 581 2008.11.04 00:05 buy 291 1.80 1.2638 1.2598 1.2663 582 2008.11.04 00:53
s/l 291 1.80 1.2598 1.2598 1.2663 -720.00 17184.70 583 2008.11.04 01:00 sell 292 1.70 1.2590
1.2630 1.2565 584 2008.11.04 01:25 t/p 292 1.70 1.2565 1.2630 1.2565 425.00 17609.70 585
2008.11.04 02:10 buy 293 2.50 1.2625 1.2571 1.2660 586 2008.11.04 03:20 s/l 293 2.50 1.2571
1.2571 1.2660 -1350.00 16259.70 587 2008.11.04 04:55 buy 294 0.10 1.2578 1.2525 1.2612 588
2008.11.04 05:21 t/p 294 0.10 1.2612 1.2525 1.2612 34.00 16293.70 589 2008.11.04 06:55 sell 295
0.10 1.2595 1.2648 1.2561 590 2008.11.04 07:30 s/l 295 0.10 1.2648 1.2648 1.2561 -53.00
16240.70 591 2008.11.04 14:00 sell 296 0.10 1.2811 1.2864 1.2777 593 2008.11.04 17:50 sell 297
0.10 1.2994 1.3041 1.2964 594 2008.11.04 18:35 t/p 297 0.10 1.2964 1.3041 1.2964 30.00
16217.70 595 2008.11.04 20:35 buy 298 2.50 1.2994 1.2958 1.3017 596 2008.11.04 21:13 t/p 298
2.50 1.3017 1.2958 1.3017 575.00 16792.70 597 2008.11.04 21:51 sell 299 2.50 1.2981 1.3026
1.2953 598 2008.11.04 22:18 s/l 299 2.50 1.3026 1.3026 1.2953 -1125.00 15667.70 599 2008.11.04
22:25 buy 300 1.60 1.3031 1.2986 1.3060 600 2008.11.04 23:40 s/l 300 1.60 1.2986 1.2986 1.3060
-720.00 14947.70 601 2008.11.04 23:45 sell 301 0.10 1.2990 1.3035 1.2962 602 2008.11.05 00:09
t/p 301 0.10 1.2962 1.3035 1.2962 27.30 14975.00 603 2008.11.05 02:35 buy 302 2.50 1.2949
1.2903 1.2978 604 2008.11.05 02:38 close 302 2.50 1.2967 1.2903 1.2978 450.00 15425.00 605
2008.11.05 02:38 buy 303 2.50 1.2970 1.2921 1.3001 606 2008.11.05 02:53 s/l 303 2.50 1.2921
1.2921 1.3001 -1225.00 14200.00 607 2008.11.05 04:15 sell 304 1.40 1.2883 1.2936 1.2849 608
2008.11.05 04:17 t/p 304 1.40 1.2849 1.2936 1.2849 476.00 14676.00 609 2008.11.05 04:17 sell
305 2.50 1.2847 1.2906 1.2809 610 2008.11.05 05:15 t/p 305 2.50 1.2809 1.2906 1.2809 950.00
15626.00 611 2008.11.05 05:50 buy 306 2.50 1.2879 1.2801 1.2930 612 2008.11.05 06:23 close
306 2.50 1.2922 1.2801 1.2930 1075.00 16701.00 613 2008.11.05 07:10 sell 307 2.50 1.2859
1.2932 1.2812 614 2008.11.05 07:45 t/p 307 2.50 1.2812 1.2932 1.2812 1175.00 17876.00 615
2008.11.05 08:55 buy 308 2.50 1.2875 1.2815 1.2914 616 2008.11.05 11:45 close 308 2.50 1.2891
1.2815 1.2914 400.00 18276.00 617 2008.11.05 13:00 sell 309 2.50 1.2909 1.2965 1.2873 618
2008.11.05 13:07 t/p 309 2.50 1.2873 1.2965 1.2873 900.00 19176.00 619 2008.11.05 14:10 buy
310 2.50 1.2901 1.2842 1.2939 620 2008.11.05 14:31 close 310 2.50 1.2928 1.2842 1.2939 675.00
19851.00 621 2008.11.05 16:30 sell 311 2.50 1.3014 1.3095 1.2961 622 2008.11.05 17:41 t/p 311
2.50 1.2961 1.3095 1.2961 1325.00 21176.00 623 2008.11.05 18:25 buy 312 2.50 1.3016 1.2951
1.3058 624 2008.11.05 20:22 s/l 312 2.50 1.2951 1.2951 1.3058 -1625.00 19551.00 625 2008.11.05
21:35 buy 313 2.00 1.2971 1.2926 1.3000 626 2008.11.05 22:11 s/l 313 2.00 1.2926 1.2926 1.3000
-900.00 18651.00 627 2008.11.05 22:20 sell 314 1.90 1.2923 1.2963 1.2897 628 2008.11.06 00:50
close 314 1.90 1.2906 1.2963 1.2897 283.10 18934.10 629 2008.11.06 04:05 buy 315 2.50 1.2867
1.2833 1.2888 630 2008.11.06 04:28 t/p 315 2.50 1.2888 1.2833 1.2888 525.00 19459.10 631
2008.11.06 05:15 sell 316 2.50 1.2858 1.2897 1.2834 632 2008.11.06 06:14 close 316 2.50 1.2841
1.2897 1.2834 425.00 19884.10 633 2008.11.06 07:20 buy 317 2.50 1.2869 1.2822 1.2899 634
2008.11.06 08:12 close 317 2.50 1.2883 1.2822 1.2899 350.00 20234.10 635 2008.11.06 10:15 sell
318 2.50 1.2892 1.2929 1.2868 636 2008.11.06 11:02 close 318 2.50 1.2874 1.2929 1.2868 450.00
20684.10 637 2008.11.06 11:50 buy 319 2.50 1.2894 1.2854 1.2919 638 2008.11.06 12:02 s/l 319
2.50 1.2854 1.2854 1.2919 -1000.00 19684.10 639 2008.11.06 12:05 sell 320 2.00 1.2833 1.2881
1.2803 640 2008.11.06 12:28 s/l 320 2.00 1.2881 1.2881 1.2803 -960.00 18724.10 641 2008.11.06
13:55 buy 321 1.90 1.2825 1.2732 1.2885 642 2008.11.06 16:17 s/l 321 1.90 1.2732 1.2732 1.2885
-1767.00 16957.10 643 2008.11.06 18:00 buy 322 1.70 1.2741 1.2684 1.2777 644 2008.11.06 21:22
s/l 322 1.70 1.2684 1.2684 1.2777 -969.00 15988.10 647 2008.11.06 22:45 sell 324 0.10 1.2683
1.2724 1.2657 648 2008.11.07 00:46 close 324 0.10 1.2672 1.2724 1.2657 10.30 16017.40 649
2008.11.07 00:50 sell 325 0.10 1.2672 1.2707 1.2650 650 2008.11.07 02:24 s/l 325 0.10 1.2707
1.2707 1.2650 -35.00 15982.40 651 2008.11.07 05:25 sell 326 0.10 1.2721 1.2773 1.2687 652
2008.11.07 07:15 s/l 326 0.10 1.2773 1.2773 1.2687 -52.00 15930.40 653 2008.11.07 10:25 sell
327 0.10 1.2812 1.2853 1.2786 654 2008.11.07 11:06 t/p 327 0.10 1.2786 1.2853 1.2786 26.00
15956.40 655 2008.11.07 12:40 buy 328 2.50 1.2790 1.2751 1.2814 656 2008.11.07 13:31 s/l 328
2.50 1.2751 1.2751 1.2814 -975.00 14981.40 657 2008.11.07 13:45 buy 329 1.50 1.2818 1.2760
1.2856 658 2008.11.07 14:01 s/l 329 1.50 1.2760 1.2760 1.2856 -870.00 14111.40 659 2008.11.07
14:45 sell 330 0.10 1.2750 1.2832 1.2697 660 2008.11.07 15:25 s/l 330 0.10 1.2832 1.2832 1.2697
-82.00 14029.40 661 2008.11.07 15:25 buy 331 0.10 1.2832 1.2755 1.2882 662 2008.11.07 16:27
s/l 331 0.10 1.2755 1.2755 1.2882 -77.00 13952.40 663 2008.11.07 16:27 sell 332 0.10 1.2755
1.2823 1.2711 664 2008.11.07 20:06 close 332 0.10 1.2739 1.2823 1.2711 16.00 13968.40 665
2008.11.10 02:20 sell 333 0.10 1.2874 1.2905 1.2855 666 2008.11.10 03:22 t/p 333 0.10 1.2855
1.2905 1.2855 19.00 13987.40 667 2008.11.10 04:10 buy 334 0.10 1.2871 1.2841 1.2889 668
2008.11.10 04:37 t/p 334 0.10 1.2889 1.2841 1.2889 18.00 14005.40 669 2008.11.10 05:35 sell 335
2.50 1.2870 1.2898 1.2853 670 2008.11.10 06:01 t/p 335 2.50 1.2853 1.2898 1.2853 425.00
14430.40 671 2008.11.10 08:40 buy 336 2.50 1.2844 1.2802 1.2871 672 2008.11.10 08:53 t/p 336
2.50 1.2871 1.2802 1.2871 675.00 15105.40 673 2008.11.10 10:10 sell 337 2.50 1.2849 1.2887
1.2825 674 2008.11.10 10:38 s/l 337 2.50 1.2887 1.2887 1.2825 -950.00 14155.40 675 2008.11.10
10:40 buy 338 1.40 1.2887 1.2855 1.2907 676 2008.11.10 11:36 t/p 338 1.40 1.2907 1.2855 1.2907
280.00 14435.40 677 2008.11.10 12:50 sell 339 2.50 1.2897 1.2928 1.2878 678 2008.11.10 14:10
close 339 2.50 1.2882 1.2928 1.2878 375.00 14810.40 679 2008.11.10 14:20 sell 340 2.50 1.2875
1.2909 1.2854 680 2008.11.10 14:38 t/p 340 2.50 1.2854 1.2909 1.2854 525.00 15335.40 681
2008.11.10 19:00 buy 341 2.50 1.2782 1.2735 1.2812 682 2008.11.10 20:27 s/l 341 2.50 1.2735
1.2735 1.2812 -1175.00 14160.40 683 2008.11.10 21:40 buy 342 1.40 1.2760 1.2727 1.2781 684
2008.11.11 00:20 s/l 342 1.40 1.2727 1.2727 1.2781 -453.60 13706.80 685 2008.11.11 02:25 buy
343 1.40 1.2714 1.2683 1.2734 686 2008.11.11 02:34 t/p 343 1.40 1.2734 1.2683 1.2734 280.00
13986.80 687 2008.11.11 05:00 sell 344 2.50 1.2739 1.2776 1.2716 688 2008.11.11 05:35 close
344 2.50 1.2723 1.2776 1.2716 400.00 14386.80 689 2008.11.11 06:20 buy 345 2.50 1.2731 1.2696
1.2753 690 2008.11.11 07:22 close 345 2.50 1.2744 1.2696 1.2753 325.00 14711.80 691
2008.11.11 07:30 buy 346 2.50 1.2745 1.2713 1.2765 692 2008.11.11 08:19 close 346 2.50 1.2760
1.2713 1.2765 375.00 15086.80 693 2008.11.11 10:00 sell 347 2.50 1.2753 1.2791 1.2729 694
2008.11.11 10:45 close 347 2.50 1.2736 1.2791 1.2729 425.00 15511.80 695 2008.11.11 12:15 buy
348 2.50 1.2742 1.2715 1.2759 696 2008.11.11 12:22 s/l 348 2.50 1.2715 1.2715 1.2759 -675.00
14836.80 697 2008.11.11 12:22 sell 349 1.50 1.2713 1.2742 1.2695 699 2008.11.11 13:10 buy 350
2.50 1.2743 1.2710 1.2764 700 2008.11.11 14:20 s/l 350 2.50 1.2710 1.2710 1.2764 -825.00
14281.80 701 2008.11.11 14:25 sell 351 1.50 1.2716 1.2755 1.2692 702 2008.11.11 14:42 t/p 351
1.50 1.2692 1.2755 1.2692 360.00 14641.80 703 2008.11.11 19:15 buy 352 2.50 1.2553 1.2503
1.2585 704 2008.11.11 19:30 t/p 352 2.50 1.2585 1.2503 1.2585 800.00 15441.80 705 2008.11.11
20:05 sell 353 2.50 1.2532 1.2591 1.2494 706 2008.11.11 21:16 close 353 2.50 1.2521 1.2591
1.2494 275.00 15716.80 707 2008.11.12 00:10 buy 354 2.50 1.2540 1.2514 1.2556 708 2008.11.12
00:26 t/p 354 2.50 1.2556 1.2514 1.2556 400.00 16116.80 709 2008.11.12 02:45 sell 355 2.50
1.2556 1.2591 1.2534 710 2008.11.12 03:31 t/p 355 2.50 1.2534 1.2591 1.2534 550.00 16666.80
711 2008.11.12 04:25 buy 356 2.50 1.2565 1.2531 1.2586 712 2008.11.12 06:06 close 356 2.50
1.2578 1.2531 1.2586 325.00 16991.80 713 2008.11.12 08:05 sell 357 2.50 1.2593 1.2632 1.2568
714 2008.11.12 08:42 t/p 357 2.50 1.2568 1.2632 1.2568 625.00 17616.80 715 2008.11.12 11:35
buy 358 2.50 1.2543 1.2499 1.2571 716 2008.11.12 11:54 t/p 358 2.50 1.2571 1.2499 1.2571
700.00 18316.80 717 2008.11.12 12:55 sell 359 2.50 1.2529 1.2575 1.2499 718 2008.11.12 14:04
close 359 2.50 1.2511 1.2575 1.2499 450.00 18766.80 719 2008.11.12 14:50 buy 360 2.50 1.2526
1.2472 1.2560 720 2008.11.12 15:48 s/l 360 2.50 1.2472 1.2472 1.2560 -1350.00 17416.80 721
2008.11.12 16:25 buy 361 1.80 1.2536 1.2455 1.2588 722 2008.11.12 17:27 close 361 1.80 1.2552
1.2455 1.2588 288.00 17704.80 723 2008.11.12 18:30 sell 362 2.50 1.2543 1.2593 1.2511 724
2008.11.12 19:07 close 362 2.50 1.2530 1.2593 1.2511 325.00 18029.80 725 2008.11.12 21:45 buy
363 2.50 1.2504 1.2468 1.2527 726 2008.11.12 22:07 s/l 363 2.50 1.2468 1.2468 1.2527 -900.00
17129.80 727 2008.11.12 22:15 sell 364 1.70 1.2451 1.2488 1.2428 728 2008.11.12 23:43 s/l 364
1.70 1.2488 1.2488 1.2428 -629.00 16500.80 729 2008.11.13 01:05 sell 365 1.70 1.2458 1.2496
1.2434 730 2008.11.13 03:27 s/l 365 1.70 1.2496 1.2496 1.2434 -646.00 15854.80 731 2008.11.13
04:15 sell 366 0.10 1.2455 1.2485 1.2437 732 2008.11.13 05:35 s/l 366 0.10 1.2485 1.2485 1.2437
-30.00 15824.80 733 2008.11.13 05:35 buy 367 0.10 1.2485 1.2451 1.2507 734 2008.11.13 07:13
s/l 367 0.10 1.2451 1.2451 1.2507 -34.00 15790.80 735 2008.11.13 07:13 sell 368 0.10 1.2451
1.2490 1.2427 736 2008.11.13 07:29 t/p 368 0.10 1.2427 1.2490 1.2427 24.00 15814.80 737
2008.11.13 08:35 buy 369 0.10 1.2471 1.2424 1.2501 738 2008.11.13 09:03 t/p 369 0.10 1.2501
1.2424 1.2501 30.00 15844.80 739 2008.11.13 10:10 sell 370 0.10 1.2487 1.2536 1.2455 740
2008.11.13 12:02 s/l 370 0.10 1.2536 1.2536 1.2455 -49.00 15795.80 741 2008.11.13 13:05 sell
371 0.10 1.2524 1.2577 1.2490 742 2008.11.13 13:58 t/p 371 0.10 1.2490 1.2577 1.2490 34.00
15829.80 743 2008.11.13 14:40 buy 372 2.50 1.2542 1.2490 1.2575 744 2008.11.13 15:20 close
372 2.50 1.2566 1.2490 1.2575 600.00 16429.80 745 2008.11.13 15:20 buy 373 2.50 1.2570 1.2512
1.2607 746 2008.11.13 16:08 s/l 373 2.50 1.2512 1.2512 1.2607 -1450.00 14979.80 747 2008.11.13
16:30 sell 374 1.50 1.2561 1.2631 1.2516 748 2008.11.13 16:37 close 374 1.50 1.2539 1.2631
1.2516 330.00 15309.80 749 2008.11.13 16:37 buy 375 2.50 1.2538 1.2467 1.2584 750 2008.11.13
17:48 s/l 375 2.50 1.2467 1.2467 1.2584 -1775.00 13534.80 752 2008.11.13 19:27 t/p 376 1.40
1.2565 1.2457 1.2565 588.00 14122.80 753 2008.11.13 22:00 sell 377 2.50 1.2767 1.2843 1.2718
754 2008.11.14 00:58 close 377 2.50 1.2738 1.2843 1.2718 707.50 14830.30 755 2008.11.14 02:30
buy 378 2.50 1.2749 1.2713 1.2772 756 2008.11.14 02:57 close 378 2.50 1.2756 1.2713 1.2772
175.00 15005.30 757 2008.11.14 02:57 sell 379 2.50 1.2757 1.2789 1.2737 758 2008.11.14 03:58
s/l 379 2.50 1.2789 1.2789 1.2737 -800.00 14205.30 759 2008.11.14 04:25 sell 380 1.40 1.2730
1.2768 1.2706 760 2008.11.14 06:17 close 380 1.40 1.2713 1.2768 1.2706 238.00 14443.30 761
2008.11.14 06:25 sell 381 2.50 1.2718 1.2752 1.2697 762 2008.11.14 07:14 s/l 381 2.50 1.2752
1.2752 1.2697 -850.00 13593.30 763 2008.11.14 07:14 buy 382 1.40 1.2752 1.2716 1.2774 764
2008.11.14 07:17 t/p 382 1.40 1.2774 1.2716 1.2774 308.00 13901.30 765 2008.11.14 08:00 sell
383 2.50 1.2709 1.2753 1.2681 766 2008.11.14 08:57 close 383 2.50 1.2693 1.2753 1.2681 400.00
14301.30 767 2008.11.14 10:25 buy 384 2.50 1.2690 1.2651 1.2715 768 2008.11.14 10:33 t/p 384
2.50 1.2715 1.2651 1.2715 625.00 14926.30 769 2008.11.14 11:25 sell 385 2.50 1.2683 1.2718
1.2661 770 2008.11.14 12:05 s/l 385 2.50 1.2718 1.2718 1.2661 -875.00 14051.30 771 2008.11.14
12:05 buy 386 1.40 1.2719 1.2685 1.2740 772 2008.11.14 12:22 s/l 386 1.40 1.2685 1.2685 1.2740
-476.00 13575.30 773 2008.11.14 12:35 sell 387 1.40 1.2683 1.2721 1.2659 774 2008.11.14 13:18
t/p 387 1.40 1.2659 1.2721 1.2659 336.00 13911.30 775 2008.11.14 13:18 sell 388 2.50 1.2657
1.2706 1.2626 776 2008.11.14 13:30 t/p 388 2.50 1.2626 1.2706 1.2626 775.00 14686.30 777
2008.11.14 14:40 buy 389 2.50 1.2670 1.2610 1.2709 778 2008.11.14 14:43 close 389 2.50 1.2686
1.2610 1.2709 400.00 15086.30 779 2008.11.14 14:43 buy 390 2.50 1.2689 1.2625 1.2730 780
2008.11.14 14:57 t/p 390 2.50 1.2730 1.2625 1.2730 1025.00 16111.30 781 2008.11.14 15:35 sell
391 2.50 1.2662 1.2725 1.2621 782 2008.11.14 16:47 s/l 391 2.50 1.2725 1.2725 1.2621 -1575.00
14536.30 783 2008.11.14 17:20 sell 392 1.50 1.2675 1.2733 1.2638 784 2008.11.14 17:33 s/l 392
1.50 1.2733 1.2733 1.2638 -870.00 13666.30 785 2008.11.14 17:35 buy 393 1.40 1.2721 1.2663
1.2759 786 2008.11.14 18:31 close 393 1.40 1.2735 1.2663 1.2759 196.00 13862.30 787
2008.11.14 18:31 buy 394 2.50 1.2738 1.2677 1.2777 788 2008.11.14 19:25 t/p 394 2.50 1.2777
1.2677 1.2777 975.00 14837.30 789 2008.11.14 20:45 sell 395 2.50 1.2725 1.2798 1.2678 790
2008.11.16 21:15 t/p 395 2.50 1.2678 1.2798 1.2678 1175.00 16012.30 791 2008.11.16 22:50 buy
396 2.50 1.2555 1.2508 1.2585 792 2008.11.17 02:05 t/p 396 2.50 1.2585 1.2508 1.2585 765.00
16777.30 793 2008.11.17 02:45 sell 397 2.50 1.2542 1.2583 1.2516 794 2008.11.17 03:37 s/l 397
2.50 1.2583 1.2583 1.2516 -1025.00 15752.30 795 2008.11.17 03:37 buy 398 1.60 1.2583 1.2543
1.2609 796 2008.11.17 08:06 t/p 398 1.60 1.2609 1.2543 1.2609 416.00 16168.30 797 2008.11.17
11:05 sell 399 2.50 1.2659 1.2705 1.2629 798 2008.11.17 11:59 close 399 2.50 1.2642 1.2705
1.2629 425.00 16593.30 799 2008.11.17 13:10 buy 400 2.50 1.2661 1.2626 1.2683 800 2008.11.17
14:18 close 400 2.50 1.2675 1.2626 1.2683 350.00 16943.30 801 2008.11.17 14:25 buy 401 2.50
1.2670 1.2626 1.2698 802 2008.11.17 16:11 close 401 2.50 1.2688 1.2626 1.2698 450.00 17393.30
803 2008.11.17 16:11 buy 402 2.50 1.2691 1.2639 1.2724 805 2008.11.17 18:20 sell 403 2.50
1.2710 1.2757 1.2680 806 2008.11.17 19:33 close 403 2.50 1.2695 1.2757 1.2680 375.00 18593.30
807 2008.11.17 23:20 buy 404 2.50 1.2654 1.2635 1.2665 808 2008.11.18 00:15 t/p 404 2.50
1.2665 1.2635 1.2665 290.00 18883.30 809 2008.11.18 00:40 sell 405 2.50 1.2624 1.2652 1.2607
810 2008.11.18 01:03 t/p 405 2.50 1.2607 1.2652 1.2607 425.00 19308.30 811 2008.11.18 02:05
buy 406 2.50 1.2633 1.2597 1.2656 812 2008.11.18 06:07 s/l 406 2.50 1.2597 1.2597 1.2656 -
900.00 18408.30 813 2008.11.18 06:10 sell 407 1.90 1.2594 1.2612 1.2583 814 2008.11.18 06:20
t/p 407 1.90 1.2583 1.2612 1.2583 209.00 18617.30 815 2008.11.18 07:15 buy 408 2.50 1.2613
1.2577 1.2636 816 2008.11.18 07:33 close 408 2.50 1.2628 1.2577 1.2636 375.00 18992.30 817
2008.11.18 08:30 sell 409 2.50 1.2616 1.2664 1.2585 818 2008.11.18 08:55 t/p 409 2.50 1.2585
1.2664 1.2585 775.00 19767.30 819 2008.11.18 10:10 buy 410 2.50 1.2611 1.2563 1.2642 820
2008.11.18 10:21 close 410 2.50 1.2626 1.2563 1.2642 375.00 20142.30 821 2008.11.18 14:10 sell
411 2.50 1.2634 1.2681 1.2604 822 2008.11.18 16:48 s/l 411 2.50 1.2681 1.2681 1.2604 -1175.00
18967.30 823 2008.11.18 17:50 sell 412 1.90 1.2655 1.2697 1.2629 824 2008.11.18 18:13 t/p 412
1.90 1.2629 1.2697 1.2629 494.00 19461.30 825 2008.11.18 20:40 buy 413 2.50 1.2604 1.2555
1.2636 826 2008.11.18 22:18 t/p 413 2.50 1.2636 1.2555 1.2636 800.00 20261.30 827 2008.11.19
00:25 sell 414 2.50 1.2629 1.2649 1.2617 828 2008.11.19 00:39 close 414 2.50 1.2623 1.2649
1.2617 150.00 20411.30 829 2008.11.19 02:15 buy 415 2.50 1.2624 1.2604 1.2636 830 2008.11.19
06:02 close 415 2.50 1.2631 1.2604 1.2636 175.00 20586.30 831 2008.11.19 08:50 sell 416 2.50
1.2618 1.2650 1.2598 832 2008.11.19 09:18 t/p 416 2.50 1.2598 1.2650 1.2598 500.00 21086.30
833 2008.11.19 10:20 buy 417 2.50 1.2621 1.2589 1.2641 834 2008.11.19 11:50 close 417 2.50
1.2627 1.2589 1.2641 150.00 21236.30 835 2008.11.19 13:15 sell 418 2.50 1.2632 1.2656 1.2617
836 2008.11.19 14:06 s/l 418 2.50 1.2656 1.2656 1.2617 -600.00 20636.30 837 2008.11.19 14:10
buy 419 2.10 1.2683 1.2648 1.2705 838 2008.11.19 14:10 t/p 419 2.10 1.2705 1.2648 1.2705
462.00 21098.30 839 2008.11.19 14:10 buy 420 2.50 1.2707 1.2668 1.2731 840 2008.11.19 14:12
t/p 420 2.50 1.2731 1.2668 1.2731 600.00 21698.30 841 2008.11.19 14:12 buy 421 2.50 1.2734
1.2691 1.2761 842 2008.11.19 14:18 t/p 421 2.50 1.2761 1.2691 1.2761 675.00 22373.30 843
2008.11.19 15:40 sell 422 2.50 1.2691 1.2781 1.2632 844 2008.11.19 16:21 t/p 422 2.50 1.2632
1.2781 1.2632 1475.00 23848.30 845 2008.11.19 18:15 buy 423 2.50 1.2593 1.2536 1.2630 846
2008.11.19 20:22 s/l 423 2.50 1.2536 1.2536 1.2630 -1425.00 22423.30 847 2008.11.19 20:25 sell
424 2.30 1.2538 1.2597 1.2500 848 2008.11.19 21:51 t/p 424 2.30 1.2500 1.2597 1.2500 874.00
23297.30 849 2008.11.20 00:05 buy 425 2.50 1.2503 1.2475 1.2520 850 2008.11.20 00:41 close
425 2.50 1.2516 1.2475 1.2520 325.00 23622.30 851 2008.11.20 01:55 sell 426 2.50 1.2512 1.2539
1.2495 852 2008.11.20 02:58 close 426 2.50 1.2507 1.2539 1.2495 125.00 23747.30 853
2008.11.20 03:06 buy 427 2.50 1.2513 1.2489 1.2527 854 2008.11.20 04:17 s/l 427 2.50 1.2489
1.2489 1.2527 -600.00 23147.30 855 2008.11.20 05:35 buy 428 2.30 1.2498 1.2469 1.2516 856
2008.11.20 06:54 close 428 2.30 1.2510 1.2469 1.2516 276.00 23423.30 857 2008.11.20 08:15 sell
429 2.50 1.2493 1.2533 1.2467 858 2008.11.20 08:56 s/l 429 2.50 1.2533 1.2533 1.2467 -1000.00
22423.30 859 2008.11.20 09:05 buy 430 2.30 1.2523 1.2484 1.2548 860 2008.11.20 10:55 close
430 2.30 1.2532 1.2484 1.2548 207.00 22630.30 861 2008.11.20 11:15 buy 431 2.50 1.2526 1.2496
1.2545 862 2008.11.20 11:55 close 431 2.50 1.2532 1.2496 1.2545 150.00 22780.30 863
2008.11.20 13:30 sell 432 2.50 1.2523 1.2565 1.2497 864 2008.11.20 13:32 t/p 432 2.50 1.2497
1.2565 1.2497 650.00 23430.30 865 2008.11.20 13:32 sell 433 2.50 1.2495 1.2541 1.2466 866
2008.11.20 14:08 s/l 433 2.50 1.2541 1.2541 1.2466 -1150.00 22280.30 867 2008.11.20 14:25 buy
434 2.30 1.2570 1.2518 1.2603 868 2008.11.20 14:43 s/l 434 2.30 1.2518 1.2518 1.2603 -1196.00
21084.30 869 2008.11.20 15:00 sell 435 2.10 1.2521 1.2583 1.2481 870 2008.11.20 15:05 close
435 2.10 1.2487 1.2583 1.2481 714.00 21798.30 871 2008.11.20 16:05 buy 436 2.50 1.2540 1.2474
1.2583 872 2008.11.20 17:50 t/p 436 2.50 1.2583 1.2474 1.2583 1075.00 22873.30 873 2008.11.20
18:40 sell 437 2.50 1.2528 1.2587 1.2490 874 2008.11.20 20:00 close 437 2.50 1.2508 1.2587
1.2490 500.00 23373.30 875 2008.11.20 22:25 buy 438 2.50 1.2479 1.2432 1.2509 876 2008.11.20
23:45 s/l 438 2.50 1.2432 1.2432 1.2509 -1175.00 22198.30 877 2008.11.21 00:40 buy 439 2.20
1.2449 1.2419 1.2468 878 2008.11.21 03:35 close 439 2.20 1.2462 1.2419 1.2468 286.00 22484.30
879 2008.11.21 03:35 buy 440 2.50 1.2463 1.2443 1.2475 880 2008.11.21 04:03 close 440 2.50
1.2471 1.2443 1.2475 200.00 22684.30 881 2008.11.21 07:25 sell 441 2.50 1.2520 1.2559 1.2496
882 2008.11.21 07:42 close 441 2.50 1.2508 1.2559 1.2496 300.00 22984.30 883 2008.11.21 08:00
buy 442 2.50 1.2538 1.2502 1.2561 884 2008.11.21 09:34 t/p 442 2.50 1.2561 1.2502 1.2561
575.00 23559.30 885 2008.11.21 11:50 sell 443 2.50 1.2571 1.2607 1.2548 886 2008.11.21 12:44
s/l 443 2.50 1.2607 1.2607 1.2548 -900.00 22659.30 887 2008.11.21 13:00 buy 444 2.30 1.2587
1.2546 1.2613 888 2008.11.21 13:08 close 444 2.30 1.2604 1.2546 1.2613 391.00 23050.30 889
2008.11.21 14:05 sell 445 2.50 1.2568 1.2626 1.2531 890 2008.11.21 15:25 close 445 2.50 1.2552
1.2626 1.2531 400.00 23450.30 891 2008.11.21 17:05 buy 446 2.50 1.2550 1.2473 1.2600 892
2008.11.21 17:31 close 446 2.50 1.2572 1.2473 1.2600 550.00 24000.30 893 2008.11.21 18:15 sell
447 2.50 1.2545 1.2598 1.2511 894 2008.11.21 18:23 close 447 2.50 1.2527 1.2598 1.2511 450.00
24450.30 895 2008.11.21 18:55 buy 448 2.50 1.2545 1.2492 1.2579 896 2008.11.21 19:43 s/l 448
2.50 1.2492 1.2492 1.2579 -1325.00 23125.30 897 2008.11.21 20:20 buy 449 2.30 1.2544 1.2489
1.2579 898 2008.11.21 20:33 close 449 2.30 1.2572 1.2489 1.2579 644.00 23769.30 899
2008.11.24 00:25 sell 450 2.50 1.2623 1.2651 1.2605 900 2008.11.24 00:47 t/p 450 2.50 1.2605
1.2651 1.2605 450.00 24219.30 901 2008.11.24 02:40 buy 451 2.50 1.2610 1.2582 1.2627 902
2008.11.24 02:51 t/p 451 2.50 1.2627 1.2582 1.2627 425.00 24644.30 903 2008.11.24 03:35 sell
452 2.50 1.2608 1.2639 1.2589 904 2008.11.24 04:33 s/l 452 2.50 1.2639 1.2639 1.2589 -775.00
23869.30 905 2008.11.24 05:55 sell 453 2.40 1.2620 1.2653 1.2599 906 2008.11.24 06:18 s/l 453
2.40 1.2653 1.2653 1.2599 -792.00 23077.30 907 2008.11.24 06:20 buy 454 2.30 1.2660 1.2627
1.2681 908 2008.11.24 07:20 s/l 454 2.30 1.2627 1.2627 1.2681 -759.00 22318.30 909 2008.11.24
07:25 sell 455 2.30 1.2619 1.2658 1.2595 911 2008.11.24 09:30 buy 456 2.50 1.2615 1.2573
1.2641 912 2008.11.24 10:02 t/p 456 2.50 1.2641 1.2573 1.2641 650.00 23520.30 913 2008.11.24
17:35 sell 457 2.50 1.2849 1.2915 1.2807 914 2008.11.24 20:26 s/l 457 2.50 1.2915 1.2915 1.2807
-1650.00 21870.30 915 2008.11.24 23:25 sell 458 0.10 1.2935 1.2964 1.2917 916 2008.11.24 23:57
t/p 458 0.10 1.2917 1.2964 1.2917 18.00 21888.30 917 2008.11.25 02:15 buy 459 2.50 1.2885
1.2853 1.2905 918 2008.11.25 03:29 s/l 459 2.50 1.2853 1.2853 1.2905 -800.00 21088.30 919
2008.11.25 05:05 buy 460 2.10 1.2856 1.2823 1.2876 920 2008.11.25 06:11 close 460 2.10 1.2865
1.2823 1.2876 189.00 21277.30 921 2008.11.25 06:40 sell 461 2.50 1.2858 1.2889 1.2839 922
2008.11.25 07:04 close 461 2.50 1.2845 1.2889 1.2839 325.00 21602.30 923 2008.11.25 07:40 buy
462 2.50 1.2879 1.2836 1.2906 924 2008.11.25 10:08 s/l 462 2.50 1.2836 1.2836 1.2906 -1075.00
20527.30 925 2008.11.25 11:30 buy 463 2.10 1.2849 1.2806 1.2876 926 2008.11.25 11:46 close
463 2.10 1.2858 1.2806 1.2876 189.00 20716.30 927 2008.11.25 12:45 sell 464 2.50 1.2834 1.2871
1.2811 928 2008.11.25 12:48 t/p 464 2.50 1.2811 1.2871 1.2811 575.00 21291.30 929 2008.11.25
12:48 sell 465 2.50 1.2807 1.2848 1.2781 930 2008.11.25 13:16 s/l 465 2.50 1.2848 1.2848 1.2781
-1025.00 20266.30 931 2008.11.25 13:35 buy 466 2.10 1.2904 1.2852 1.2938 932 2008.11.25 13:37
t/p 466 2.10 1.2938 1.2852 1.2938 714.00 20980.30 933 2008.11.25 13:37 buy 467 2.50 1.2940
1.2883 1.2977 934 2008.11.25 13:41 t/p 467 2.50 1.2977 1.2883 1.2977 925.00 21905.30 935
2008.11.25 15:30 sell 468 2.50 1.3033 1.3106 1.2985 936 2008.11.25 15:38 close 468 2.50 1.3017
1.3106 1.2985 400.00 22305.30 937 2008.11.25 16:50 buy 469 2.50 1.3029 1.2964 1.3071 938
2008.11.25 17:50 s/l 469 2.50 1.2964 1.2964 1.3071 -1625.00 20680.30 939 2008.11.25 18:30 buy
470 2.10 1.3038 1.2977 1.3077 940 2008.11.25 19:16 s/l 470 2.10 1.2977 1.2977 1.3077 -1281.00
19399.30 941 2008.11.25 19:25 sell 471 2.00 1.2993 1.3058 1.2951 942 2008.11.25 20:05 s/l 471
2.00 1.3058 1.3058 1.2951 -1300.00 18099.30 943 2008.11.25 20:05 buy 472 1.80 1.3058 1.3002
1.3094 944 2008.11.25 21:40 close 472 1.80 1.3066 1.3002 1.3094 144.00 18243.30 945
2008.11.25 22:15 sell 473 2.50 1.3058 1.3079 1.3045 946 2008.11.25 22:18 close 473 2.50 1.3051
1.3079 1.3045 175.00 18418.30 947 2008.11.25 22:18 sell 474 2.50 1.3050 1.3072 1.3037 948
2008.11.25 23:24 t/p 474 2.50 1.3037 1.3072 1.3037 325.00 18743.30 949 2008.11.26 01:35 buy
475 2.50 1.3018 1.2987 1.3037 950 2008.11.26 01:54 close 475 2.50 1.3025 1.2987 1.3037 175.00
18918.30 951 2008.11.26 02:05 buy 476 2.50 1.3019 1.2991 1.3036 952 2008.11.26 02:20 close
476 2.50 1.3024 1.2991 1.3036 125.00 19043.30 953 2008.11.26 04:35 buy 477 2.50 1.2987 1.2952
1.3009 954 2008.11.26 05:14 s/l 477 2.50 1.2952 1.2952 1.3009 -875.00 18168.30 955 2008.11.26
05:15 sell 478 1.80 1.2952 1.2983 1.2933 956 2008.11.26 05:58 s/l 478 1.80 1.2983 1.2983 1.2933
-558.00 17610.30 957 2008.11.26 06:05 buy 479 1.80 1.2976 1.2946 1.2995 958 2008.11.26 06:34
close 479 1.80 1.2992 1.2946 1.2995 288.00 17898.30 959 2008.11.26 06:35 buy 480 2.50 1.2992
1.2958 1.3014 960 2008.11.26 07:51 s/l 480 2.50 1.2958 1.2958 1.3014 -850.00 17048.30 961
2008.11.26 07:51 sell 481 1.70 1.2958 1.2998 1.2933 962 2008.11.26 08:10 close 481 1.70 1.2938
1.2998 1.2933 340.00 17388.30 963 2008.11.26 08:45 buy 482 2.50 1.2976 1.2928 1.3006 964
2008.11.26 09:01 t/p 482 2.50 1.3006 1.2928 1.3006 750.00 18138.30 965 2008.11.26 10:05 sell
483 2.50 1.2975 1.3027 1.2942 966 2008.11.26 11:08 close 483 2.50 1.2964 1.3027 1.2942 275.00
18413.30 967 2008.11.26 13:50 buy 484 2.50 1.2973 1.2923 1.3005 968 2008.11.26 15:35 s/l 484
2.50 1.2923 1.2923 1.3005 -1250.00 17163.30 969 2008.11.26 15:40 sell 485 1.70 1.2911 1.2967
1.2875 970 2008.11.26 16:01 t/p 485 1.70 1.2875 1.2967 1.2875 612.00 17775.30 971 2008.11.26
17:35 buy 486 2.50 1.2880 1.2815 1.2922 972 2008.11.26 19:46 close 486 2.50 1.2888 1.2815
1.2922 200.00 17975.30 973 2008.11.26 21:15 sell 487 2.50 1.2892 1.2922 1.2873 974 2008.11.26
23:06 t/p 487 2.50 1.2873 1.2922 1.2873 475.00 18450.30 975 2008.11.26 23:25 buy 488 2.50
1.2893 1.2872 1.2906 976 2008.11.27 00:04 close 488 2.50 1.2904 1.2872 1.2906 320.00 18770.30
977 2008.11.27 00:55 sell 489 2.50 1.2888 1.2914 1.2872 978 2008.11.27 01:35 s/l 489 2.50
1.2914 1.2914 1.2872 -650.00 18120.30 979 2008.11.27 03:55 sell 490 1.80 1.2916 1.2934 1.2905
980 2008.11.27 06:37 s/l 490 1.80 1.2934 1.2934 1.2905 -324.00 17796.30 981 2008.11.27 07:05
sell 491 1.80 1.2911 1.2932 1.2898 982 2008.11.27 07:26 t/p 491 1.80 1.2898 1.2932 1.2898
234.00 18030.30 983 2008.11.27 08:30 buy 492 2.50 1.2912 1.2874 1.2936 984 2008.11.27 09:34
close 492 2.50 1.2921 1.2874 1.2936 225.00 18255.30 985 2008.11.27 11:20 sell 493 2.50 1.2912
1.2953 1.2886 986 2008.11.27 12:01 t/p 493 2.50 1.2886 1.2953 1.2886 650.00 18905.30 987
2008.11.27 13:20 buy 494 2.50 1.2903 1.2873 1.2921 988 2008.11.27 13:29 close 494 2.50 1.2912
1.2873 1.2921 225.00 19130.30 989 2008.11.27 14:45 sell 495 2.50 1.2905 1.2938 1.2884 990
2008.11.27 15:07 t/p 495 2.50 1.2884 1.2938 1.2884 525.00 19655.30 991 2008.11.27 17:10 buy
496 2.50 1.2885 1.2848 1.2908 992 2008.11.27 17:49 close 496 2.50 1.2893 1.2848 1.2908 200.00
19855.30 993 2008.11.27 18:40 sell 497 2.50 1.2885 1.2906 1.2872 994 2008.11.27 19:41 s/l 497
2.50 1.2906 1.2906 1.2872 -525.00 19330.30 995 2008.11.27 21:06 sell 498 2.00 1.2900 1.2916
1.2891 996 2008.11.27 21:16 t/p 498 2.00 1.2891 1.2916 1.2891 180.00 19510.30 997 2008.11.27
21:50 buy 499 2.50 1.2907 1.2889 1.2918 998 2008.11.27 22:37 s/l 499 2.50 1.2889 1.2889 1.2918
-450.00 19060.30 999 2008.11.27 22:40 sell 500 1.90 1.2892 1.2909 1.2882 1000 2008.11.27 23:06
s/l 500 1.90 1.2909 1.2909 1.2882 -323.00 18737.30

Il rapporto non evidenzia le modifiche effettuate per adeguare gli stop loss ma solo le aperture e le
chiusure con il relativo profitto o perdita e saldo cumulato.

Tutti gli eventi che ritroviamo nel Diario del tester li ritroviamo nel file di log che ritroviamo nella
cartella <Unità>:\Programmi\<Broker>\tester\logs
All’interno del log si ritrovano anche i messaggi inviati tramite la funzione Print() da parte dell’EA.

15.b Ottimizzazione
Ogni sistema si basa su modelli visualizzati nella mente dei propri creatori. Le funzioni, gli studi e
gli indicatori che si utilizzano adottano dei parametri standard che però si possono modificare. Il
nostro trading system sviluppato in questo libro, ad esempio, utilizza due medie mobili, il calcolo
dell’ATR e un moltiplicatore dello stesso ATR come parametro per calcolare lo stop loss. Tutti
questi parametri possono essere lasciati scegliere all’utente (l’utente potrebbe essere lo stesso
sviluppatore trader così come un trader che ha acquistato dallo sviluppatore il trading system già
compilato).

15.b.i Le variabili nei Trading System

Tutte le variabili dichiarate con l’identificatore extern diventano delle proprietà del consigliere
esperto e liberamente modificabili tramite la finestra proprietà (richiamabile con l’apposito
pulsante).

15.b.ii Impostazione di una Ottimizzazione

Quando i risultati di un back test non sono entusiasmanti spesso ci si chiede “ma se i concetti sono
corretti come mai il sistema perde ? Quali impostazioni sono sbagliate ?”.
Se il modello di base è corretto il problema risiede solo nel fatto che i parametri sono disallineati.
Uno stop loss potrebbe essere troppo stretto e chiude le operazioni troppo presto. Un take profit è
troppo lontano e non viene mai raggiunto prima di rimbalzi che attivano gli stop loss. Le lunghezze
delle medie sono mal assortiti ed i segnali avvengono con troppo anticipo o troppo ritardo.
Gli effetti sono molteplici ma il risultato di parametri disallineati è sempre lo stesso. Equità tendente
a zero!
Il processo di ottimizzazione nasce apporta per ricercare la combinazione più soddisfacente di tutti i
parametri del trading system (o di quelli che vogliamo ottimizzare).
Nel quadro superiore sottoponiamo ad ottimizzazione due parametri: il moltiplicatore dell’ATR (per
calcolare dinamicamente lo stop loss) e la lunghezza della media lenta. Viene specificato, per ogni
parametro, il valore di partenza, quello di fine ed il suo passo di incremento.

si spunta la casella di ottimizzazione e si preme Avvio. Il sistema calcola le combinazioni possibili


ed inizia il test indicando un tempo approssimativo della durata dell’ottimizzazione (nell’esempio
illustrato sono 1280 combinazioni da completare in 4 ore e 37 minuti). Da notare che le sezioni solite
del tester si arricchiscono di quelle relative a

• Risultati dell’ottimizzazione
• Grafico dell’ottimizzazione

Dai risultati si evidenzia come l’utilizzo di una media lenta a 26 periodi e un fattore di 6,5
massimizzino i risultati portando i 10.000 euro di partenza a ben 29.681!

Proviamo quindi ad impostare i parametri ottimizzati e ripetiamo il backtest.


Come si può notare dal report, il risulato finale è decisamente migliore. Occore però notare che il
drawdown del 55,92% indica che per arrivare a questo guadagno (+ 19.681 Euro) il nostro capitale
iniziale è sceso sino a 6.280 euro (in occasione della 14° operazione). Altre alternative offerte dai
risultati dell’ottimizzazione permettono di scendere meno, anche se i risultati sono meno positivi.

Nella lista restituita dall’ottimizzatore ritroviamo un insieme di parametri che permette un drawdown
del 49,05% utilizzando un SlFactor di 3 e una media lenta a 18 periodi. Oltre ad avere una perdita
massima inferiore, ha un calo inferiore del capitale iniziale sebbene possa vantare ancora un profitto
di 8.344 euro.
Il trader deve solo decidere quale è il livello di rischio accettabile e quindi applicare il modello sul
trading reale nella speranza che i risultati passati siano una garanzia per il futuro.

15.b.iii Scegliere il risultato ottimizzato più adatto

Una volta selezionati i possibili candidati a diventare il nostro trading system per operazioni reali
(con soldi veri) è opportuno sottolineare un concetto e ad effettuare un ultima prova supplementare.

Il concetto da chiarire è che la validità dei risultati delle ottimizzazioni deve essere vista come la
capacità di un modello di superare le avversità del mercato ed esser capace di aumentare il proprio
capitale. Più l’intervallo temporale analizzato è ampio e più i risultati sono rassicuranti. Il futuro è
però un incognita, per tutti. Spesso gli investitori in Fondi comuni d’investimento motivano la scelta
di questo o quel fondo sulla base dei rendimenti passati quale garanzia per quelli futuri (una specie di
indicatore di direzione). Da quei dati sappiamo invece che questo o quel gestore hanno saputo o
meno gestire gli andamenti del mercato perseguendo gli obiettivi di profitto.
Come possiamo avere una riprova a conferma che le nostre scelte siano correttamente motivate?
Il metodo è più semplice di quanto si pensi. Occorre utilizzare un periodo di backtest che termini
qualche giorno prima della data odierna. Si ottimizza il modello e si estraggono i parametri
“finalisti”.
Con i modelli finalisti si ripete il backtest portando il periodo sino ad oggi (o all’ultimo giorno di
contrattazioni aperte). In alternativa si fa partire il backtest dal giorno finale del primo backtest e si
termina ad oggi.

In pratica, se il risultato dell’ottimizzazione è valido, i modelli dovrebbero continuare a descrivere


una equity line in linea con la precedente. Se invece si utilizza un back test dell’ultimo periodo (fine
backtest principale sino ad oggi) si può osservare come sarebbe andata se avessimo dato fiducia al
modello sulla base dei risultati della prima ottimizzazione/selezione.

Testiamo ora i risultati dei due candidati (slFactor = 6,5 con media lenta a 26 periodi e slFactor = 3
e media lenta a 18 periodi) con entrambi i metodi.

La prosecuzione dal 28 Novembre al 5 Dicembre è decisamente promettente. Il profitto è salito sino


a 25.174 euro dai 19.681 precedenti, e le operazioni compiute in più sono 32, un numero
sufficientemente significativo.
Il secondo candidato si dimostra meno promettente, anzi. L’estensione del backtest ha peggiorato il
risultato finale abbassando il profitto a 5.583 euro dagli 8.344 precedenti. Le operazioni poste in
essere nel periodo finale sono 62 (anch’esse sufficienti per essere significative).

Onde evitare di essere impressionati da questi risultati, ripetiamo il test sul solo periodo finale, come
se partissimo dal 28 Novembre con entrambi i modelli alla pari. I risultati potrebbero cambiare in
quanto non avendo storia alle spalle il trading system non può modulare i lotti in conseguenza delle
precedenti perdite.

Iniziamo con il primo sistema.


Le operazioni compiute sono 34 (e non 32 come suggerito dal backtest esteso) ed il profitto raggiunto
è di 3.000 euro. Il capitale iniziale ha una bassa riduzione nel corso del test (cala sino a 9.648, poco
più del 3,5%).
Il secondo candidato conferma la tendenza manifestata nel backtest “esteso”: il modello è altalenante
con una tendenza di fondo negativa. Le operazioni eseguite sono 62, esattamente come quelle
mostrate nel backtest esteso, ed il capitale iniziale si erode sino a 7.461 euro prima di tentare il
recupero.

Dopo aver ottimizzato il modello, estratto i candidati più promettenti (il più performante ed il meno
rischioso), effettuato un backtest esteso ed uno della sola estensione, è possibile confermare la scelta
sul primo modello e passare dalle statistiche ai fatti. Siamo pronti per attivare il consigliere esperto
con soldi veri!

Conclusioni
In questo testo ho cercato di introdurre il lettore al mercato delle valute e ad insegnargli come creare
un programma in grado di gestire autonomamente l’attività di acquisto e vendita dei contratti Forex.
Sebbene sia una pratica che si possa adattare a molti mercati, la creazione di trading system per il
mercato dei cambi ha delle peculiarità proprie e, soprattutto, una liquidità senza eguali.
La creazione dei trading system parte dalla stesura in codice di concetti astratti legati all’analisi
tecnica o ad altri algoritmi che ogni trader può crearsi (alcuni addirittura utilizzano i dati astrologici
per costruire i propri sistemi).

In questo libro ho volutamente optato per un concetto centrale molto semplice per la creazione del
trading system di esempio (l’incrocio delle medie mobili) ed ho dimostrato come anche un trading
system molto semplice possa diventare profittevole se “confezionato” intelligentemente con tecniche
di money management adeguate e uscite realistiche.

Un difetto comune a molti trader è l’avidità. Si tende a non acontentarsi mai dei risultati raggiunti e si
mantiene la posizione oltre il dovuto rischiando il tutto per tutto. E solitamente si perde.
La gestione del rischio è quella disciplina che permette di differenzire una professione dal gioco
d’azzardo. Tutti coloro che definiscono l’attività di trading come il “gioco in Borsa” idealizzano
l’attività dell’investitore come una pura scommessa contro il destino. Noi sappiamo che in realtà
dietro gli investimenti troviamo l’applicazione di tecniche di analisi per la scoperta dei punti di
entrata e diverse metodologie per seguire e scegliere i punti di uscita.

Con la gestione degli Stop ho introdotto queste tecniche di uscita ed ne ho dato un esempio concreto.

Nulla è casuale sebbene possa sembrarlo. Anche i fenomeni più caotici possono essere spiegati
componendo gli elementi che li compongono. I modelli, o pattern, di analisi tecnica offrono una
casistica di evoluzioni probabili che di norma è corretta. Se accettiamo il fatto che alle volte la
norma viene infranta da eventi “casuali” ecco che una gestione dell’esposizione permette di filtrare
gli andamenti anomali ed accettarli come “perdite preventivate”.

Non bisogna pensare che i trading system siano quei sistemi in grado di azzerare le perdite. Se un
sistema è fallimentare lo sarà anche se condotto in maniera automatica. L’unica differenza esistente
tra un trading discrezionale ed uno automatico è l’emozione.

L’emozione è quel sentimento umano che fa sì che le reazioni davanti ad una situazione di ansia si
stravolgano. Molti trader tardano ad uscire da posizioni in perdita perché continuano a sperare in un
“rimbalzo” che non avverrà. L’avidità poi permette di rimandare la presa di profitto sino a che le
quotazioni invertono ribaltando un profitto in una perdita.

Le perdite inoltre abbattono il morale calando il livello di attenzione verso la scoperta di nuove
opportunità. Un trading sistematico non ha questi difetti. Agisce meccanicamente e su più scenari
contemporanei.

Quale trader sarebbe capace di gestire contemporaneamente l’operatività su centinaia di strumenti


finanziari?

Questo libro si è concentrato sul Forex e sulla piattaforma MetaTrader con il suo linguaggio MQL4.
Ogni teoria deve essere tradotta in pratica e questa piattaforma con il suo linguaggio ne è il mezzo.

Mi prefiggo, tempo ed impegni permettendo, di affrontare questi argomenti con altri prodotti ed altri
linguaggi.
Invito tutti coloro che vogliono sottopormi quesiti ed opinioni a scrivermi al mio indirizzo di posta
elettronica dainesi@sdstudiodainesi.com Daniele Livio Dainesi

Esercizi accademici: i Campionati per Trading System


Una volta impadroniti della tecnica e della pratica nella creazion e di trading system è il momento di
cimentarsi sia con i propri soldi, sia confrontandosi con altri trader sviluppatori.
Esistono in tutto il mondo dei campionati di trading ove si misurano le performance all’interno di un
dato intervallo temporale secondo determinate regole.
Da qualche anno alle solite categorie di trading discrezionale si è aggiunta la categoria del trading
sistematico. Grazie alla sua particolare natura, unito alla scelta della natura dello strumento
finanziario oggetto del trade questo tipo di confronto può avvenire anche con investimenti virtuali
(questo è il caso del FOREX).

Il campionato più famoso è l’Automatic Trading Championship di MetaQuotes (ATC) dove si


partecipa con un trading system scritto in linguaggio MQL. Questa gara si svolge ogni anno da ottobre
a dicembre ed è un ottima palestra per testare i sistemi su piattaforme server e per confrontarsi con
trader programmatori provenienti da tutto il mondo.

Non bisogna trarre conclusioni sbagliate sull’esito del proprio EA nella classifica. Spesso errori di
sistema o malfunzionamenti dei server possono pregiudicare l’esito dei nostri sistemi e questo
generalmente produce due possibili effetti negativi: un aumento delle perdite e la generazione di
errori che comportano la squalifica. Nella realtà queste anomalie verrebbero corrette dall’utente
trader che notata l’insorgenza di errori di sistema (disconnessione dai server dati o errata
informativa circa la composizione del portafoglio ordini in essere) interverrebbe manualmente per
ripristinare le corrette condizioni operative.

Eventi ricorrenti (fiere e manifestazioni periodiche)


Ogni anno, nel mondo, si svolgono centinaia di manifestazioni, fiere o congressi allo scopo di
promuovere e diffondere la conoscenza e la pratica dell’investimento on line.
Molte di queste manifestazioni sono monotematiche, concentrandosi su particolari metodologie o
mercati.
In Italia due eventi ricorrenti coprono un certo interesse per la varietà dei contenuti e la quantità degli
sponsor presenti:

• l’Italian Trading Forum (ITF) che si tiene due volte all’anno di cui l’edizione principale e storica è
quella di Rimini a cavallo di Aprile e Maggio di ogni anno
• Il Trading Online Expo (TOL Expo), manifestazione patrocinata ed ospitata dalla Borsa valori di
Milano

Entrambe le manifestazioni hanno sembianze di fiere in quanto si presentano come padiglioni pieni di
stand nei quali i visitatori possono conoscere ed entrare in contatto con broker, organi di
informazione, editori e scuole di formazione del settore nonché emittenti. Entrambe le manifestazioni
inoltre affiancano la parte per così dire “espositiva” ad una formativa in quanto offrono conferenze di
noti trader o esperti di finanza, nonché minicorsi formativi sull’uso delle diverse tecniche di trading.
Accanto a questi eventi, broker, banche ed altri enti pubblici o privati organizzano, in tutto l’arco
dell’anno, eventi gratuiti nei quali ogni partecipante può ampliare le proprie conoscenze ed
apprendere nuove tecniche o concetti utili alla propria formazione professionale di trader e
conoscitore dei mercati.

Borsa Italiana, in occasione dell’introduzione di nuove tipologie di strumenti finanziari e solita


organizzare congressi gratuiti di informazione e promozione.

Invito chiunque sia interessato a fare del trading la sua professione la partecipazione a questi eventi
(a costo zero), almeno nelle fasi iniziali della propria formazione economico finanziaria.

: codice completo dell'EA del libro


Il trading system creato nei capitoli 12, 13, 14 e 15 viene riportato integralmente in quest’appendice.
Si rammenta che l’utilizzo dello stesso deve essere inteso a solo scopo accademico. Si declina ogni
responsabilità per eventuali perdite che possano essere causate da un uso non autorizzato dell’Expert
Advisor pubblicato. Lo scopo della pubblicazione del presente trading system vuole essere un
incentivo al lettore ad approfondire i concetti trasmessi basandosi sul presente listato come punto di
partenza per ulteriori sviluppi.

Sarò ben lieto di rispondere alle domande dei lettori o dare un parere agli EA sviluppati dai lettori
che avran fatto tesoro della mia conoscenza che ho cercato di trasmettere loro scrivendo questo libro.

//+---------------------------------------------------------------
---+ //| sdCrossAverages.mq4 | //| Copyright © 2008, SD Software
Corp. | //| http://www.sdstudiodainesi.com | //+------------------
------------------------------------------------+ #property
copyright "Copyright © 2008, SD Software Corp." #property link
"http://www.sdstudiodainesi.com"

// Lotto standard
extern double StartLot = 0.2;
extern double MaxLot = 2.5; //se fosse ZERO equivarrebbe a nessun
limite !! // StopLoss e Take Profit
//extern double sl = 28;
//extern double tp = 5;
double sl;
double tp;
extern double slFactor = 3;
extern double lots = 0.1;
extern int MagicNumber = 3434;
extern int AverageFastPeriod = 5;
extern int AverageSlowPeriod = 21;
double Lotti = 0; //sd Variabile Globale bool bClosedOnBar;
bool bOpenedOnBar;
bool bCTS;
int prevTicket;

//+---------------------------------------------------------------
---+ //| expert initialization function | //+---------------------
---------------------------------------------+ int init()

}
//+---------------------------------------------------------------
---+ //| expert deinitialization function | //+-------------------
-----------------------------------------------+ int deinit()

{
//----
//----
return(0);

}
//+---------------------------------------------------------------
---+ //| expert start function | //+------------------------------
------------------------------------+ int start()

int ticket;
int total = OrdersTotal();
int TotalOpened=0, y=0;
string NL = "\n";
int fool = Tendenza(); //aggiorno il grafico

if (Lotti==0) Lotti = lots;

//Capire se ho aperto Ordini su questa barra ! bOpenedOnBar=false;


for (y=0;y<=total;y++)

{
if (OrderSelect(y,SELECT_BY_POS,MODE_TRADES)==true)

{
if (OrderOpenTime() >=Time[0]) {bOpenedOnBar = true;break;}
}
}
for (y=0;y<total;y++) {
OrderSelect(y, SELECT_BY_POS, MODE_TRADES);
if (OrderType()<= OP_SELL && OrderSymbol()==Symbol() &&

OrderMagicNumber() == MagicNumber)
{
TotalOpened=TotalOpened + 1; }
}

//ClassicTrailing(tp-1,sl); //BEPTrailing();
/*
//Countdown Trailing Stop for(int i = 0; i < total; i++)

{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)


{
// LONG
if(OrderType() == OP_BUY)

{
// Controllo posizione finanziaria ... if(Persistenza() < 0 ||
bCTS==true) CTS(i,2,8,"B");

}
else
{
// Controllo posizione finanziaria ... if(Persistenza() > 0 ||
bCTS==true) CTS(i,2,8,"B");
}
}
}
*/

//FeTiG
for(int i = 0; i < total; i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
FeTiG(i); }
}

/*
//PIRAMIDALE
for(int i = 0; i < total; i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
PiramidaleLineare(i,2); }
}
*/
/* for(int i = 0; i < total; i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)


{
prevTicket = OrderTicket(); // LONG
if(OrderType() == OP_BUY)

{
// Controllo posizione finanziaria ...
if(Persistenza() < 0)
//if(Tendenza() < 0)

{ // Chiudo
OrderClose(OrderTicket(), OrderLots(),Bid, 3, Blue); }

}
else
{
// Controllo posizione finanziaria ...
if(Persistenza() > 0)
//if(Tendenza() > 0)
{ // Chiudo
OrderClose(OrderTicket(), OrderLots(),Ask, 3, Blue);
}
}
}
}
*/

if (TotalOpened == 0 && bOpenedOnBar == false) {


sl = MathRound((iATR(NULL,0,21,0)/Point)*slFactor); tp =
MathRound((iATR(NULL,0,21,0)/Point)*(slFactor/1.5)); //tp =
MathRound((iATR(NULL,0,21,0)/Point)*(slFactor*1.5)); //tp=80;

Lotti = MathRound(((AccountFreeMargin()/1000)*StartLot) /
MarketInfo(Symbol(), MODE_MINLOT)) * MarketInfo(Symbol(),
MODE_MINLOT);
if (LastResult() < 0) Lotti =
MathRound((Lotti/MarketInfo(Symbol(), MODE_MINLOT))/2) *
MarketInfo(Symbol(), MODE_MINLOT);
Lotti = LotReducer(4, Lotti);

if (MaxLot != 0) {if (Lotti>MaxLot) Lotti=MaxLot;}


if(Tendenza() > 0)
{ //OPEN LONG

bCTS = false;
ticket = OrderSend(Symbol(), OP_BUY, Lotti, Ask, 3, Bid - sl *
Point, Ask + tp * Point, "sdCrossAverages LONG", MagicNumber, 0,
Blue);

}
else if(Tendenza() < 0)
{ // OPEN SHORT
bCTS = false;
ticket = OrderSend(Symbol(), OP_SELL, Lotti, Bid, 3, Ask + sl *
Point, Bid - tp * Point, "sdCrossAverages SHORT", MagicNumber, 0,
Red);
}
}

}
int Tendenza()

{
double M1V, M2V, M1L, M2L; //le medie veloci e lente al momento 1
e 2
(l'ultimo)

M1V = iMA(Symbol(), 0, AverageFastPeriod, 0, MODE_SMA,


PRICE_CLOSE,2); M2V = iMA(Symbol(), 0, AverageFastPeriod, 0,
MODE_SMA, PRICE_CLOSE,1); M1L = iMA(Symbol(), 0,
AverageSlowPeriod, 0, MODE_SMA, PRICE_CLOSE,2); M2L =
iMA(Symbol(), 0, AverageSlowPeriod, 0, MODE_SMA, PRICE_CLOSE,1);

if(M1V < M1L && M2V > M2L)


{ //OPEN LONG
Comment("Lotti = " + DoubleToStr(Lotti,2) + " Tendenza a SALIRE");
return(1);

}
else if(M1V > M1L && M2V < M2L)
{ // OPEN SHORT
Comment("Lotti = " + DoubleToStr(Lotti,2) + " Tendenza a
SCENDERE"); return(-1);
}
else return(0);

//+---------------------------------------------------------------
---+ //| PERSISTENZA | //| | int Persistenza() {

double M1V, M2V, M1L, M2L; //le medie veloci al momento 1 e 2


(l'ultimo)
M1V = iMA(Symbol(), 0, AverageFastPeriod, 0, MODE_SMA,
PRICE_CLOSE,0); M2V = iMA(Symbol(), 0, AverageFastPeriod, 0,
MODE_SMA, PRICE_CLOSE,1);
if(Close[0]> M1V && Close[1] < M2V)

{ //OPEN LONG
return(1);
}
else if(Close[0]< M1V && Close[1] > M2V)
{ // OPEN SHORT
return(-1);
}
else return(0);

}
//+---------------------------------------------------------------
---+

//+---------------------------------------------------------------
---+ //| CONSECUTIVE LOSS LOT REDUCER | //| Se nelle ultime 4
transazioni almeno 3 sono in perdita riduco! | //+----------------
--------------------------------------------------+ double
LotReducer(int pMaxLossNr, double pLotti)

{
int i=0;
int Campione=0;
int LossCounter=0;

for (i=OrdersHistoryTotal(); i > 0; i--) {


OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if (OrderCloseTime()> 0 && OrderMagicNumber() == MagicNumber &&

OrderSymbol() == Symbol())
{
Campione++ ;
if (OrderProfit() < 0) LossCounter++;

}
if (Campione > pMaxLossNr+1) break; }
if (LossCounter < pMaxLossNr && Campione > (pMaxLossNr+1))
return(pLotti); else return(0.1);
}

//+---------------------------------------------------------------
---+ //| ULTIMO ESITO | //| Ritorno l'esito dell'ultima operazione
chiusa | //+------------------------------------------------------
------------+ double LastResult()
{
int i=0;
double esito=0;

for (i=OrdersHistoryTotal(); i > 0; i--) {


OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if (OrderCloseTime()> 0 && OrderMagicNumber() == MagicNumber &&

OrderSymbol() == Symbol())

{
if (OrderProfit() != 0) {esito=OrderProfit();break;}
}
}
return(esito);
}
//| TRAILING STOP CLASSICO | //| I parametri sono il livello di
attivazione e l'ampiezza dello SL | //+---------------------------
---------------------------------------+ void ClassicTrailing(int
ActivationLevel, int iSL)
{

int iTotal;
iTotal = OrdersTotal(); if (iSL == 0) iSL = sl;
for(int i = 0; i < iTotal; i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)


{
// LONG
if(OrderType() == OP_BUY)
{
if (Close[0] > OrderOpenPrice() + ActivationLevel * Point)

{
if (OrderStopLoss() < Bid - iSL * Point)
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - iSL *

Point, 0, 0, Blue);
}

}
// SHORT
else

{
if (Close[0] < OrderOpenPrice() - ActivationLevel * Point)

{
if (OrderStopLoss() > Ask + iSL * Point)
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + iSL *

Point, 0, 0, Blue);
}
}
}
}
return(0); }

//+---------------------------------------------------------------
---+ //| BREAK EVEN STOP LOSS | //| I parametri sono il livello di
attivazione e l'ampiezza dello SL | //+---------------------------
---------------------------------------+ void BEPTrailing()
{

int iTotal;
iTotal = OrdersTotal();
for(int i = 0; i < iTotal; i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)


{
// LONG
if(OrderType() == OP_BUY)

{
// BREAKEVEN STOP LOSS
if (Close[0]>OrderOpenPrice() + 10 * Point && Volume[1] <

VolumeAverage(50,0) )
{
if (OrderStopLoss()< OrderOpenPrice() + 5 * Point)
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+ 5 *

Point,OrderTakeProfit(),0,Blue);
}

}
// SHORT
else

{
// BREAKEVEN STOP LOSS
if (Close[0]< OrderOpenPrice() - 10 * Point && Volume[1] <

VolumeAverage(50,0) )
{
if (OrderStopLoss()> OrderOpenPrice() - 5 * Point)
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice() -

5*Point,OrderTakeProfit(),0,Blue);
}
}
}
}
return(0); }

//----------------------------------------------------------------
* //Funzione che calcola i VOLUMI MEDI | // | //------------------
----------------------------------------------* int
VolumeAverage(int Periods, int Offset)
{
int TotVol;
int i;

for (i=1+Offset;i<Periods;i++) {

TotVol = TotVol + Volume[i]; }


return(MathRound(TotVol/Periods)); }

//-----------------------------------------------------------*
//COUNTDOWN Trailing Stop | // | //Unit B = barre e Unit M =
minuti | //-------------------------------------------------------
----*

void CTS(int OrderIndex, int Step, int Delay, string Unit = "B") {
static int LastUnit; //l'ultima barra o minuto già elaborata
static int LastOrderIndex;
static double LastSL; //valore dell'ultimo SL (se il terminale non
accetta il nuovo SL ci pensa il programma a chiudere per tempo)
bool bActive; //se true allora posso applicare il CTS int
CurrentUnit;//la barra o minuto corrente
double NewSL; //il nuovo Stop loss
int Direction; //Long o Short ?
int MinSL; //Valore minimo dello SL per il Terminal in Points

bActive = false; bCTS=true;

OrderSelect(OrderIndex, SELECT_BY_POS, MODE_TRADES); if


(LastOrderIndex != OrderIndex) {LastOrderIndex = OrderIndex;
LastSL = OrderStopLoss();}

if (Unit == "B")
{
if((TimeMinute(Time[0])-
TimeMinute(OrderOpenTime()))/Period()>=Delay)

bActive = true;
else
LastUnit=0;
}

if (Unit == "M")
{
if((TimeMinute(Time[0])-TimeMinute(OrderOpenTime()))>=Delay)

bActive = true;
else
LastUnit=0;
}

if (bActive==false) return(0);
if (Unit == "B")
{CurrentUnit=(TimeMinute(Time[0])- TimeMinute(OrderOpenTime()))/
Period();}
if (Unit == "M")
{CurrentUnit=(TimeMinute(Time[0])- TimeMinute(OrderOpenTime()));}
if (CurrentUnit == LastUnit) return(0);
if (OrderType() == OP_BUY)
Direction = 1;
else if (OrderType() == OP_SELL)
Direction = -1;

NewSL = LastSL + Direction*(Step * Point);


LastSL = NewSL;
MinSL = MarketInfo(Symbol(), MODE_STOPLEVEL);
if (Direction == 1) {
if (Close[0]<= LastSL) {OrderClose(OrderTicket(), OrderLots(),
Bid, 3, Red);return(0);}
if(OrderStopLoss()>NewSL)
return(0);
else if (Bid - (MinSL*Point) < NewSL) return(0);
else
OrderModify(OrderTicket(),OrderOpenPrice(),NewSL,OrderTakeProfit(),0

} else
{ if (Close[0]>= LastSL) {OrderClose(OrderTicket(), OrderLots(),
Ask, 3, Red);return(0);}
if(OrderStopLoss()<NewSL)
return(0);
else if (Ask + (MinSL*Point) > NewSL) return(0);
else
OrderModify(OrderTicket(),OrderOpenPrice(),NewSL,OrderTakeProfit(),0

}
LastUnit = CurrentUnit;
}

//-----------------------------------------------------------* //
FeTiG (Few Tick & Go) Trailing Stop | // | // Si usa l'ADX come
discriminante | //------------------------------------------------
-----------*

void FeTiG(int OrderIndex)


{
int Direction; //Long o Short ?

// Calcolo del valore più basso di 14 barre consecutive double L =


Low[iLowest(NULL,0,MODE_LOW,14,0)];
// Calcolo del valore più basso di 14 barre consecutive double H =
High[iHighest(NULL,0,MODE_HIGH,14,0)]; double nTP = MathRound(((H-
L)/Point)/3);
double dTrend = iADX(Symbol(),0,14,PRICE_CLOSE,MODE_MAIN,0);

if (dTrend > 25) return(0); //se è in trend non applico il FeTiG


OrderSelect(OrderIndex, SELECT_BY_POS, MODE_TRADES);
if (OrderType() == OP_BUY)

Direction = 1;
else if (OrderType() == OP_SELL)
Direction = -1;

if (Direction == 1) {
if (Bid >= OrderOpenPrice() + nTP *Point)
{OrderClose(OrderTicket(),

OrderLots(), Bid, 3, Red);return(0);}


}
else
{
if (Ask <= OrderOpenPrice() - nTP *Point)
{OrderClose(OrderTicket(),
OrderLots(), Ask, 3, Red);return(0);}
}
}

//-----------------------------------------------------------* //
PIRAMIDALE ESPONENZIALE | // | // Controllo ed implementazione |
//-----------------------------------------------------------*

void PiramidaleEsponenziale(int OrderIndex, int MinProfit=0) {


//MinProfit è il guadagno minimo garantito
int PosizioniAperte;
int iNextOpen;
double pNextOpen;
int iSLPiramidale;
double SLPiramidale;
double TotalLots;
double AverageOpenPrice;
double TotalProfit;
int ticket;
int tp;
int i;
int total;
int Direction;

OrderSelect(OrderIndex,SELECT_BY_POS,MODE_TRADES);
if (OrderType() == OP_BUY)

Direction = 1;
else
Direction = -1;

total = OrdersTotal(); for (i=0;i<total;i++) {

OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderType()==OP_BUY
&& Direction==1) {TotalProfit = TotalProfit +

OrderProfit();TotalLots = TotalLots + OrderLots();}


if(OrderType()==OP_SELL && Direction==-1) {TotalProfit =
TotalProfit +
OrderProfit();TotalLots = TotalLots + OrderLots();}
}

iSLPiramidale = 20 - MinProfit; tp=22;


if (TotalProfit - 20*
(TotalLots*2*MarketInfo(Symbol(),MODE_TICKVALUE))==0 &&

Direction == 1)
{
SLPiramidale = Bid - iSLPiramidale * Point;
ticket = OrderSend(Symbol(), OP_BUY, TotalLots *2 , Ask, 3,
SLPiramidale,

Ask + tp * Point, "sdCrossAverages LONG", MagicNumber, 0, Green);


}
if (TotalProfit - 20*
(TotalLots*2*MarketInfo(Symbol(),MODE_TICKVALUE))==0 &&
Direction == -1)
{
SLPiramidale = Ask + iSLPiramidale * Point;
ticket = OrderSend(Symbol(), OP_SELL, TotalLots *2 , Bid, 3,
SLPiramidale,
Bid - tp * Point, "sdCrossAverages SHORT", MagicNumber, 0, Red); }

//Esco se non ci sono nuovi ingressi if(SLPiramidale == 0)


return(0);

//Modifica dello SL per tutta la piramide total = OrdersTotal();


for (i=0;i<total;i++)
{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY && Direction==1 && OrderTicket() != ticket)
{OrderModify(OrderTicket(),OrderOpenPrice(),SLPiramidale,Ask + tp
* Point, 0, Blue);}
if(OrderType()==OP_SELL && Direction==-1 && OrderTicket() !=
ticket)
{OrderModify(OrderTicket(),OrderOpenPrice(),SLPiramidale,Bid - tp
* Point, 0, Blue);}
}

//-----------------------------------------------------------* //
PIRAMIDALE GEOMETRICO | // | // Controllo ed implementazione | //-
----------------------------------------------------------*

void PiramidaleGeometrico(int OrderIndex, int MinProfit=0) {


//MinProfit è il guadagno minimo garantito
int PosizioniAperte;
int iNextOpen;
double pNextOpen;
int iSLPiramidale;
double SLPiramidale;
double TotalLots;
double LastLots;
double AverageOpenPrice;
double TotalProfit;
int ticket;
int tp;
int i;
int total;
int Direction;

OrderSelect(OrderIndex,SELECT_BY_POS,MODE_TRADES); if (OrderType()
== OP_BUY)

Direction = 1;
else
Direction = -1;

total = OrdersTotal(); for (i=0;i<total;i++) {

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY && Direction==1) {TotalProfit = TotalProfit
+

OrderProfit();TotalLots = TotalLots + OrderLots();LastLots =


OrderLots();} if(OrderType()==OP_SELL && Direction==-1)
{TotalProfit = TotalProfit +
OrderProfit();TotalLots = TotalLots + OrderLots();LastLots =
OrderLots();}
}

iSLPiramidale = 20 - MinProfit; tp=22;

if (TotalProfit - 20*
((TotalLots+LastLots*2)*MarketInfo(Symbol(),MODE_TICKVALUE))==0 &&
Direction == 1)

{
SLPiramidale = Bid - iSLPiramidale * Point;
ticket = OrderSend(Symbol(), OP_BUY, LastLots * 2 , Ask, 3,
SLPiramidale,

Ask + tp * Point, "sdCrossAverages LONG", MagicNumber, 0, Green);


}

if (TotalProfit - 20*
((TotalLots+LastLots*2)*MarketInfo(Symbol(),MODE_TICKVALUE))==0 &&
Direction == -1)

{
SLPiramidale = Ask + iSLPiramidale * Point;
ticket = OrderSend(Symbol(), OP_SELL, LastLots * 2 , Bid, 3,
SLPiramidale,

Bid - tp * Point, "sdCrossAverages SHORT", MagicNumber, 0, Red);


}
//Esco se non ci sono nuovi ingressi if(SLPiramidale == 0)
return(0);

//Modifica dello SL per tutta la piramide total = OrdersTotal();


for (i=0;i<total;i++)
{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY && Direction==1 && OrderTicket() != ticket)
{OrderModify(OrderTicket(),OrderOpenPrice(),SLPiramidale,Ask + tp
* Point, 0, Blue);}

if(OrderType()==OP_SELL && Direction==-1 && OrderTicket() !=


ticket)
{OrderModify(OrderTicket(),OrderOpenPrice(),SLPiramidale,Bid - tp
* Point, 0, Blue);}
}
}

//-----------------------------------------------------------* //
PIRAMIDALE LINEARE | // | // Controllo ed implementazione | //----
-------------------------------------------------------*

void PiramidaleLineare(int OrderIndex, int MinProfit) {


//MinProfit è il guadagno minimo garantito
int iSLPiramidale;
double SLPiramidale;
double TotalLots;
double LastLots;
double FirstLots; double TotalProfit; int ticket;
int tp;
int i;
int total;
int Direction;

OrderSelect(OrderIndex,SELECT_BY_POS,MODE_TRADES);
if (OrderType() == OP_BUY)

Direction = 1;
else
Direction = -1;

total = OrdersTotal();

for (i=0;i<total;i++) {
OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderType()==OP_BUY
&& Direction==1) {
TotalProfit = TotalProfit + OrderProfit(); TotalLots = TotalLots +
OrderLots(); LastLots = OrderLots();
if(FirstLots==0) FirstLots = OrderLots(); }

if(OrderType()==OP_SELL && Direction==-1) {


TotalProfit = TotalProfit + OrderProfit(); TotalLots = TotalLots +
OrderLots(); LastLots = OrderLots();
if(FirstLots==0) FirstLots = OrderLots();
}
}

iSLPiramidale = 20 - MinProfit; tp = 22;


if (TotalProfit - 20*((TotalLots+LastLots +

FirstLots)*MarketInfo(Symbol(),MODE_TICKVALUE)) == 0 && Direction


== 1) {
SLPiramidale = Bid - iSLPiramidale * Point;
ticket = OrderSend(Symbol(), OP_BUY, LastLots + FirstLots , Ask,
3,

SLPiramidale, Ask + tp * Point, "sdCrossAverages LONG",


MagicNumber, 0, Green);

}
if (TotalProfit - 20*((TotalLots+LastLots +
FirstLots)*MarketInfo(Symbol(),MODE_TICKVALUE)) == 0 && Direction
== -1)

{
SLPiramidale = Ask + iSLPiramidale * Point;
ticket = OrderSend(Symbol(), OP_SELL, LastLots + FirstLots , Bid,
3,

SLPiramidale, Bid - tp * Point, "sdCrossAverages SHORT",


MagicNumber, 0, Red); }
//Esco se non ci sono nuovi ingressi if(SLPiramidale == 0)
return(0);

//Modifica dello SL per tutta la piramide total = OrdersTotal();


for (i=0;i<total;i++)
{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY && Direction==1 && OrderTicket() != ticket)
{OrderModify(OrderTicket(),OrderOpenPrice(), SLPiramidale, Ask +
tp * Point, 0, Blue);}
if(OrderType()==OP_SELL && Direction==-1 && OrderTicket() !=
ticket)

{OrderModify(OrderTicket(),OrderOpenPrice(), SLPiramidale, Bid -


tp * Point, 0, Blue);}
}
}

: operatività con le Bande di Bollinger


Le Bande di Bollinger sono un ottimo strumento di supporto per prendere decisioni di entrata od
uscita da un trade.
Tramite questo studio possiamo misurare la volatilità di uno strumento finanziario e valutare il
momento più opportuno per entrare in posizione.

Le bande segnano il confine ipotetico entro le quali dovrebbero, statisticamente parlando, ricadere la
maggioranza delle quotazioni (circa il 89%).

A differenza di molti altri studi, le bande sono la base per ulteriori analisi e spunti di strategie di
trading.
Nate per misurare la volatilità, le bande si presentano molto distanti nelle fasi volatili e molto
ravvicinate nelle fasi di consolidamento.

Accanto alla rappresentazione grafica delle bande è possibile calcolare il coefficiente %b che indica
la posizione delle quotazioni rispetto alle bande. Il valore 0,5 indica la posizione della linea
mediana, 1 la banda superiore e 0 la banda inferiore. Va da sé che valori esterni alle bande andranno
sotto lo zero o superiori all’unità.
L’ampiezza delle bande rappresenta la volatilità in atto e la misura di questa ampiezza è data dal
BandWidth.
Nella figura sopra ho evidenziato i valori del %b in relazione al valore delle quotazioni sulle bande.

Il %b ricopre una notevole importanza per chi costruisce trading system in quanto è l’unico modo per
leggere i grafici attraverso il codice.
double UpperBand; double LowerBand;

//Calcolo dei %b di Bollinger


UpperBand = iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_UPPER,0);
LowerBand = iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_LOWER,0);

//E’ importante il %b degli estremi e del Close che è l’ultimo


prezzo //mentre è ininfluente il valore dell’Open
BBClose = ((Close[0]-LowerBand)/(UpperBand - LowerBand)); BBHigh =
((High[0]-LowerBand)/(UpperBand - LowerBand)); BBLow = ((Low[0]-
LowerBand)/(UpperBand - LowerBand));

Ma passiamo agli utilizzi delle bande ed alle tecniche ed ai segnali che esse suggeriscono.
Squeeze: Esplosione di volatilità (break out)

Quando la volatilità si restringe e siamo in presenza di una ridotta ampiezza di banda ecco che ci si
può aspettare una fase di compressione e successiva esplosione di volatilità che praticamente si
traduce in un movimento brusco ed ampio delle quotazioni.

I libri e la teoria dello stesso Bollinger indicano che l’ampiezza di banda deve essere pari od
inferiore a quella minima registrata negli ultimi 120 periodi (sei mesi nel time frame giornaliero).
L’analisi tecnica indica che, generalmente, l’espansione a seguito di un consolidamento avviene nella
stessa direzione del trend prima che iniziasse il consolidamento. Questi modelli sono generalmente
chiamati Pennant (Pennoni) o Flags (bandiere) e sono considerati pattern di continuazione.

Il consolidamento del quale parla Bollinger è invece legato alla volatilità, sia essa derivante da una
fase laterale, volatile o in trend. E’ ovvio che se la provenienza del marcato consolidamento
(chiamato Squeeze da Bollinger) è una fase di trend allora sarà facile intuire la direzione di breakout.
Se invece la provenienza è una lunga fase laterale o un incerta fase volatile, allora occorrerà
verificare altri segnali prima di entrare in posizione e ignorare i falsi segnali che possono maturare
(fake).
Generalmente le uscite da una squeeze sono potenti e veloci, in quanto accompagnate da volumi
importanti. Quando invece le uscite dalle bande sono timide e sorrette da bassi volumi è meglio
attendere ed astenersi dall’aprire posizioni.

Se si volesse comunque “confezionare” un entrata su di un pattern Squeeze conclamato, allora


sarebbe consigliabile inserire un ordine condizionato multiplo che apre una posizione long nel caso
di volumi superiori alla media e quotazioni al di sopra della banda superiore. Apertura short in caso
di quotazioni al di sotto della banda inferiore e volumi altrettanto sostenuti, oltre la media.

Rimbalzo sui livelli

Nelle fasi laterali è facile imbattersi in quotazioni che rimbalzano sui livelli importanti.
Generalmente questi livelli ricalcano la linea mediana e le due bande. La probabilità che indica
come i prezzi ricadano nel 90% dei casi all’interno delle bande ci fa supporre che, in assenza di
trend, uno sconfinamento all’esterno debba concludersi con un rapido rientro. In questo contesto si
inseriscono i pattern a doppio massimo e quelli a doppio minimo. In entrambi i casi il secondo picco
è, in relazione alle bande, più debole affinché ci si possa aspettare un rimbalzo.
In altre parole, in un doppio minimo non è importante se il secondo minimo sia in assoluto più
elevato o più basso rispetto al primo, è importante che il suo %b sia maggiore. Stesso discorso,
rovesciato, per la figura del doppio massimo.

Corsa sulle bande

A seguito di un esplosione di volatilità i prezzi tendono a muoversi con decisione. Nel loro incedere
spesso effettuano dei ritracciamenti (pull back) e, graficamente, superano e successivamente
rientrano nelle bande. Questo andamento è noto come “Bands riding” (corsa sulle bande).
L’aumentata volatilità si evidenzia con un aumento vistoso dell’ampiezza di banda tale per cui la
banda inferiore in un movimento rialzista è inclinata negativamente, mentre in un movimento
ribassista la banda superiore è inclinata positivamente. Il movimento volge al termine quando la
banda opposta al movimento “gira” e intraprende la stessa direzione del movimento. Da questo
momento la volatilità diminuisce, segno che il movimento si stà esaurendo e si preannuncia o un altro
consolidamento o un inversione.
Un trading system può valutare i parametri rivelatori testando il valore del BandWidth, la posizione
assoluta delle bande ed il %b delle quotazioni. Quando il punto di flesso è raggiunto (le bande
“girano” all’apice della volatilità) occorre restringere gli stop (Panic Stop & Go ad esempio) o
affrettarsi ad uscire se la liquidità non fosse consistente.
L’entrata sarebbe invece segnalata dai breakout (squeeze) oppure da un aumento della volatilità
accompagnata da valori del %b a cavallo degli estremi di una banda in sintonia con l’andamento
della media (media in aumento e %b intorno al valore 1 per le posizioni long e media a scendere con
%b intorno allo zero per l’apertura di posizioni short).

Tutti i segnali fin qui usati devono essere confermati dagli indicatori di Volume i quali anticipano i
movimenti.
Si acquista sulla forza e si vende sulla debolezza. Gli indicatori che lo stesso Bollinger indica più
frequentemente sono il Money Flow Index e l’Intraday Intensity.

Se il %b è superiore a 0,8 e l’MFI(10) (Money flow index a 10 periodi) è superiore a 80 allora si


può comperare, egualmente si può vendere se l’MFI(10) è inferiore a 20 ed il %b è inferiore o pari a
0,2.

Si lascia il lettore approfondire ulteriormente questi aspetti delle teorie legate alle bande di
Bollinger e, naturalmente, a crearsi un trading system ad esse ispirato.

Buon trading !

: bibliografia
MetaQuotes, MetaQuotes Language 4 Reference guide, 2008 John J.Murphy, Analisi tecnica dei
mercati finanziari, Hoepli, 2002 John Bollinger, Il trading con le bande di Bollinger, Trading
Library, 2003 Borsa Italiana, Calendario delle negoziazioni 2008
Wikipedia, http://it.wikipedia.org, definizioni

%B; 205

A CCOUNTFREEMARGIN; 112
ACCOUNTLEVERAGE; 111
ACTIVATIONLEVEL; 89
ALGORITMO; 69
AMBIENTI DI SVILUPPO (IDE); 21
ANALISI FONDAMENTALE; 29
ANALISI TECNICA; 29
APPLICAZIONE CONTAINER; 71

ARRAY; 144
ARRAY; 69
ARRAY BIDIMENSIONALE; 69
ASK; 15
ATR (AVERAGE TRUE RANGE); 44 AUTOMATIC TRADING CHAMPIONSHIP; 187
BACKTEST; 139; 151

B ANCHE CENTRALI; 10
BANDE DI BOLLINGER; 45; 205
BANDA CENTRALE; 46
BANDA INFERIORE; 46
BANDA SUPERIORE; 46
BANDIERE; 206
BANDS RIDING; 208

BANDWIDTH; 208
BASE CURRENCY; 13

B ASIC; 20
BCE; 13
BEP; 90
BID; 15; 68
BOOK; 24; 56

ORIZZONTALE ; 57
PROFONDO; 57
VERTICALE; 57

BOSTIAN; 40

BREAK ; 81
BREAK EVEN POINT; 135
BREAK EVEN STOP LOSS; 89
BREAK-OUT; 48

BROKER; 15; 57
C/C++; 20
C ALCOLO DEI LOTTI; 110
CARRY TRADE; 12
CASSETTISTA; 52

CBOE (CHICAGO BOARD OF TRADE); 44


CENTRO STORIA; 153
CICLO FOR; 81
CLOSE; 68
COMMENT; 141

C OMMISSIONI APPLICATE; 58 COMMODITIES; 51


CONDIZIONI DI INGRESSO; 121 CONDIZIONI DI USCITA; 125 CONSOLIDAMENTO; 14; 79
CONTRATTO STANDARD; 111 CONTROLLO DI FLUSSO; 70 COPERTURA ECONOMICA; 51
CORSA SULLE BANDE; 208
COSTANTI; 69
COUNTDOWN TRAILING STOP; 91

CROSS; 11; 75

C ROSS VOLUME; 49
CURVA DI APPRENDIMENTO; 20 DAILY VOLUME INDICATOR; 40 DATA FEED; 68
DAYTRADING; 53

D EBUG; 72; 128


DEINIT; 119
DENARO; 57

DERIVATI; 98
DEVIAZIONE STANDARD; 45
DIARIO; 141

D ISTRIBUTION LEVEL; 49
DISTRIBUZIONE DEL RISCHIO; 98 DIVERSIFICAZIONE; 99
DO/WHILE UNTIL; 70
DOPPIO MASSIMO; 207
DOPPIO MINIMO; 207
DOWNTICK; 40
DRAWDOWN; 135
EA O EXPORT ADVISORS; 76 EASY LANGUAGE; 67; 73
ENTRATE PIRAMIDALI; 101
EQUITYLINE; 130

ERRORI; 128
EXPERT ADVISOR; 117
EXTERN; 113; 120; 175
FAKE; 207
FASI DI MERCATO ; 41
FASI LATERALI; 54
FAST MARKET; 57
FAST MARKET; 15

FED; 13
FETIG; 139
FEW TICK AND GO; 95
FEWTICK&GO; 139
FILE DI LOG; 174

F ILECLOSE; 143
FILEOPEN; 143
FILEWRITE; 143
FLAGS; 206
FLAT; 94
FOR; 70

FOREIGN EXCHANGE MARKET; 9


FOREX; 7; 9
FRAZIONAMENTO; 55
GAP; 26; 43; 81

GAP DOWN ; 43
GLOBALVARIABLEGET; 95
GLOBALVARIABLESET; 95
GRANULARITÀ DEI DATI; 154
GRANVILLE; 39

H IGH; 68
IADX; 95
IATR; 85
IF; 70

I HIGHEST; 96
ILOWEST; 96
INDICATORI; 35
INDICATORI DI PREZZO; 36
INDICATORI DI VOLUME; 39
INGESSATO; 25

INIT; 119

I NTEREST SWAP; 11
INTRADAY; 25
INTRADAY INTENSITY; 40; 209
INVESTIMENTO PIRAMIDALE

CON PROGRESSIONE ESPONENZIALE; 107 CON PROGRESSIONE GEOMETRICA; 105 CON


PROGRESSIONE LINEARE; 103

INVESTITORI ISTITUZIONALI; 94
IPERCOMPRATO/IPERVENDUTO; 36
ISOLE; 43
ITALIAN TRADING FORUM; 189
KAUFMAN; 34
L’ASK; 68

L ATERALE, FASE; 42
LATERALITÀ; 42
LETTERA; 57

LEVA FINANZIARIA; 53; 61; 111


LEVERAGE; 111
LIBOR; 13

L IMIT ORDER; 80
LINGUAGGI 4GL; 20
LINGUAGGIO C LIKE; 20
LIQUIDITÀ; 24
LIQUIDO; 25
LIVELLI DI PREZZO; 47
LIVELLI IMPORTANTI; 47
LIVELLO MASSIMO DI PERDITA ACCETTABILE; 47 LONDON INTERBANK OFFERED RATE.
VEDI LIBOR LONGEVITÀ; 131

LOTTI; 111; 122

LOTTO MINIMO ; 111


LOTTO STANDARD; 111
MICROLOTTI; 111
MINILOTTI; 111

LOW; 68
MACD; 35

MACD (MOVING AVERAGE CONVERGENCE DIVERGENCE); 37


MAGIC NUMBER; 80
MARGINE DISPONIBILE; 111
MARGINI DI GARANZIA; 54

MARKET MAKER; 15; 57


M ARKETINFO; 111
MARTINGALA CLASSICA; 114
MARTINGALA INVERSA; 113
MASSIMA PERDITA ACCETTABILE; 84
MASSIMIZZAZIONE DEI PROFITTI; 101
MATHROUND; 85
MEDIA MOBILE ADATTIVA; 34
MEDIA MOBILE ESPONENZIALE; 34
MEDIA MOBILE PONDERATA; 33
MEDIA MOBILE SEMPLICE; 32
MEDIA PESATA CON I VOLUMI; 35
MEDIE MOBILI; 30
MEDIE MOBILI; 32
METAEDITOR; 73
METAQUOTES; 19

M ETATRADER; 19; 67
MFI (MONEY FLOW INDEX); 40
MODE_LOTSIZE; 111
MODE_MINLOT; 111
MOMENTUM; 36; 90

M ONEY FLOW INDEX; 35; 209


MONEY FLOW, ACCUMULATION-DISTRIBUTION; 40 MONEY MANAGEMENT; 97

MQL; 71
MQL4; 67
OBV (ON BALANCE VOLUME); 39

OFFSET; 68
OMEGARESEARCH; 19
OPEN; 68
OPERATIVITÀ; 25; 51

OPERATIVITÀ DI SCALPING ; 26
OPERATIVITÀ DI SWING TRADING; 26 OPERATIVITÀ IN LEVA; 63
OPERATIVITÀ INTRADAY; 26
OPERATIVITÀ ORDINARIA; 64

OPERAZIONE LONG; 75
OPERAZIONE SHORT; 75

ORARI DEL FOREX; 24


ORDERCLOSEBY; 82
ORDERCOMMENT; 144
ORDERMAGICNUMBER; 80
ORDERSELECT; 77; 144
ORDERSEND; 76
ORDERTYPE; 78

ORDINI “CONFEZIONATI”; 126


ORDINI AD ALBERO; 80
ORDINI CONDIZIONATI; 55
OSCILLATORI; 35
OTTIMIZZAZIONE; 175; 176
PANIC STOP AND GO; 94
PANIC STOP AND GO (PASTGO); 94 PASSO PIRAMIDALE; 102

P ATTERN; 26; 97
PENNANT; 206
PENNONI; 206

PERSISTENZA; 132
PIATTAFORME DI TRADING; 53
PIPS; 15
PIPS (PERCENTAGE IN POINT); 15 PIRAMIDALI CLASSICI; 102
PIVOT HIGH; 48
PIVOT LOW; 48

P IVOT POINT; 48
PIVOT, PERFORAMENTO DEI; 49
POLITICA MONETARIA; 10
POLITICHE MONETARIE E VALUTARIE; 10 POSITION TRADING; 52
POWEREDITOR; 74

PRINT; 141
PROFITTO; 51
PROPOSTE DI NEGOZIAZIONE (PDN); 57
PULL; 56

PULL BACK ; 208


PUNTATORI; 69
PUNTI FORWARD; 14

PUSH; 56
R.O.C. (RATE-OF-CHANGE); 38

RANGE DI CONSOLIDAMENTO ; 80
REGOLE DI INGRESSO; 7
RESISTENZA; 47
RIMBALZO; 207
RSI (RELATIVE STRENGTH INDEX); 36 SCALPER; 52
SCALPING; 26; 56

SCRITTURA SU FILE ; 142


SEGNALE DI ACQUISTO; 30
SEGNALE DI FORZA; 54

S EGNALI; 73
SENTIMENT; 36; 44
SETUP; 80

SETUP LONG; 80
SETUP SHORT; 80

S HOWME; 74
SIGNAL; 74
SLEEP; 82

SOTTILE; 25
SPIKE; 43; 143
SPREAD; 83
SPREAD; 11; 15; 57
SQUEEZE; 206
STAMPA SU FILE; 140
START; 119

STATIC ; 93
STATO CONSERVATIVO; 131
STOP AND REVERSE; 56; 81

STOP LOSS; 53; 63; 83; 125

STOP LOSS PROSSIMALE ; 94


STRATEGIE DI INVESTIMENTO; 51
STRATEGIE MULTICURRENCY; 150
STRATEGIE MULTIPOSIZIONE PIRAMIDALI; 145 STRATEGIE MULTIPOSIZIONE SEMPLICI;
143 STRATEGY TESTER; 128
SUPPORTO; 47
SWAP; 76

SWAP; 14
SWICH/SELECT; 70
SWING TRADING; 54
SYMBOL; 80
TAKE PROFIT; 53; 86

TASSO DI SCONTO ; 10
TECNICA CONSERVATIVA; 114
TENDENZA; 121

TICK; 56
TICK BY TICK; 72
TICKET; 82
TIME FRAME; 24; 68

T IME FRAME; 23
TITOLO SOTTILE; 24
TOKEN; 68
TRADER RETAIL; 9

TRADESTATION; 19; 67

T RADING DISCREZIONALE; 17 TRADING INTRADAY; 55 TRADING MULTIDAY; 53 TRADING


ONLINE EXPO; 189 TRADING RANGE; 54
TRADING SISTEMATICO; 17

TRADING SYSTEM; 7; 17; 42


TRAILING MULTISTOP; 88
TRAILING STOP; 55; 87; 134
CLASSICO; 87

T REND; 42
DOWN TREND; 29; 42 UP TREND; 29; 42

UPTICK; 40

V ALUTA BASE O CERTA; 13


VALUTA INCERTA; 13
VARIABILE BOOLEANA; 137
VARIABILI; 69
VENDITE ALLO SCOPERTO; 75 VISUAL BASIC; 20

VIX; 44
VOLATILITÀ; 43
WATCHLIST; 55

Potrebbero piacerti anche