Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
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.
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).
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é).
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
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.
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
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).
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:
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.
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
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 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.
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.
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:
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.
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.
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 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.
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.
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.
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 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
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:
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.
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”.
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:
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).
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
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.
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”.
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.
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.
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).
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.
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.
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.
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.
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:
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.
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.
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).
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
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)
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).
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);
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.
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).
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:
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.
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
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).
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.
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:
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.
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.
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:
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à).
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.
//-----------------------------------------------------------*
//COUNTDOWN Trailing Stop | // | //Unit B = barre e Unit M =
minuti | //-------------------------------------------------------
----*
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;
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).
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
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.
{
//Applicazione del Panic Stop and Go
}
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.
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.
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.
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:
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.
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
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:
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.
Total = OrdersTotal();
for (y=0;y<Total;y++)
{
OrderSelect(y, SELECT_BY_POS, MODE_TRADES); if (OrderType()<=
OP_SELL){ OrdersOpen++;}
}
P = 6 - OrdersOpen;
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%.
La tabella che segue mostra invece gli effetti di una Martingala classica che parte da 0,10 lotti
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 | //+-------------------------------
-----------------------------------+
…
//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;
{
if (OrderProfit() != 0) {esito=OrderProfit();break;}
}
}
return(esito);
}
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.
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.
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.
//+---------------------------------------------------------------
---+ //| 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); }
//+---------------------------------------------------------------
---+ //| 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;
//+---------------------------------------------------------------
---+
//+---------------------------------------------------------------
---+ //| 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 (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;
}
}
int Tendenza()
{
//le medie veloci e lente al momento 1 e 2 (l'ultimo) double M1V,
M2V, M1L, M2L;
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 (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;
//+---------------------------------------------------------------
---+ //| 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 (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);
{
// 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); }
}
}
}
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;
} //+-------------------------------------------------------------
-----+
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.
Lotti=MathRound(((AccountFreeMargin()/1000)*StartLot)/
MarketInfo(Symbol(), MODE_MINLOT)) * MarketInfo(Symbol(),
MODE_MINLOT);
}
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.
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;
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.
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;
OrderSymbol() == Symbol())
{
Campione++ ;
if (OrderProfit() < 0) LossCounter++;
}
if (Campione > pMaxLossNr+1) break; }
{
// 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() {
{ //OPEN LONG
return(1);
}
else if(Close[0]< M1V && Close[1] > M2V)
{ // OPEN SHORT
return(-1);
}
else return(0);
{
// 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);}
}
}
}
*/
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.
//+---------------------------------------------------------------
---+ //| 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 (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); }
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++) {
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.
{
// 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;
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;
}
//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 | //------------------------------------------------
-----------*
Direction = 1;
else if (OrderType() == OP_SELL)
Direction = -1;
if (Direc ion = 1) {
if (Bid >= OrderOpenPrice() + nTP *Point)
{OrderClose(OrderTicket(),
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.
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:
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).
• 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);
}
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.
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).
}
}
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 | //----
-------------------------------------------------------*
OrderSelect(OrderIndex,SELECT_BY_POS,MODE_TRADES);
if (OrderType() == OP_BUY)
Direction = 1;
else
Direction = -1;
OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderType()==OP_BUY
&& Direction==1) {
}
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,
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);}
//-----------------------------------------------------------* //
PIRAMIDALE GEOMETRICO | // | // Controllo ed implementazione | //-
----------------------------------------------------------*
OrderSelect(OrderIndex,SELECT_BY_POS,MODE_TRADES);
if (OrderType() == OP_BUY)
Direction = 1;
else
Direction = -1;
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY && Direction==1) {TotalProfit = TotalProfit
+
{
SLPiramidale = Bid - iSLPiramidale * Point;
ticket = OrderSend(Symbol(), OP_BUY, LastLots * 2 , Ask, 3,
SLPiramidale,
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);
}
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY && Direction==1 && OrderTicket() != ticket)
{OrderModify(OrderTicket(),OrderOpenPrice(),SLPiramidale,Ask + tp
* Point, 0, Blue);}
//-----------------------------------------------------------* //
PIRAMIDALE ESPONENZIALE | // | // Controllo ed implementazione |
//-----------------------------------------------------------*
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 +
Direction == 1)
{
SLPiramidale = Bid - iSLPiramidale * Point;
ticket = OrderSend(Symbol(), OP_BUY, TotalLots *2 , Ask, 3,
SLPiramidale,
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY && Direction==1 && OrderTicket() != ticket)
{OrderModify(OrderTicket(),OrderOpenPrice(),SLPiramidale,Ask + 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.
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 è
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:
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.
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).
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).
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.
• 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!
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.
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.
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.
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.
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.
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
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.
• 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.
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.
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 (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);
{
// 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);
{
// 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);
}
}
}
}
*/
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);
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)
}
else if(M1V > M1L && M2V < M2L)
{ // OPEN SHORT
Comment("Lotti = " + DoubleToStr(Lotti,2) + " Tendenza a
SCENDERE"); return(-1);
}
else return(0);
//+---------------------------------------------------------------
---+ //| PERSISTENZA | //| | int Persistenza() {
{ //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;
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;
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 (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);
{
// 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++) {
//-----------------------------------------------------------*
//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
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;
} 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 | //------------------------------------------------
-----------*
Direction = 1;
else if (OrderType() == OP_SELL)
Direction = -1;
if (Direction == 1) {
if (Bid >= OrderOpenPrice() + nTP *Point)
{OrderClose(OrderTicket(),
//-----------------------------------------------------------* //
PIRAMIDALE ESPONENZIALE | // | // Controllo ed implementazione |
//-----------------------------------------------------------*
OrderSelect(OrderIndex,SELECT_BY_POS,MODE_TRADES);
if (OrderType() == OP_BUY)
Direction = 1;
else
Direction = -1;
OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderType()==OP_BUY
&& Direction==1) {TotalProfit = TotalProfit +
Direction == 1)
{
SLPiramidale = Bid - iSLPiramidale * Point;
ticket = OrderSend(Symbol(), OP_BUY, TotalLots *2 , Ask, 3,
SLPiramidale,
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 | //-
----------------------------------------------------------*
OrderSelect(OrderIndex,SELECT_BY_POS,MODE_TRADES); if (OrderType()
== OP_BUY)
Direction = 1;
else
Direction = -1;
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY && Direction==1) {TotalProfit = TotalProfit
+
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,
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,
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY && Direction==1 && OrderTicket() != ticket)
{OrderModify(OrderTicket(),OrderOpenPrice(),SLPiramidale,Ask + tp
* Point, 0, Blue);}
//-----------------------------------------------------------* //
PIRAMIDALE LINEARE | // | // Controllo ed implementazione | //----
-------------------------------------------------------*
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 (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,
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)
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;
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.
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.
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.
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
CROSS; 11; 75
C ROSS VOLUME; 49
CURVA DI APPRENDIMENTO; 20 DAILY VOLUME INDICATOR; 40 DATA FEED; 68
DAYTRADING; 53
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
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
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
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
LOW; 68
MACD; 35
M ETATRADER; 19; 67
MFI (MONEY FLOW INDEX); 40
MODE_LOTSIZE; 111
MODE_MINLOT; 111
MOMENTUM; 36; 90
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
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
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
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
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 REND; 42
DOWN TREND; 29; 42 UP TREND; 29; 42
UPTICK; 40
VIX; 44
VOLATILITÀ; 43
WATCHLIST; 55