Sei sulla pagina 1di 59

Filippo A.

Diodovich & Vincenzo Longo

COME FUNZIONANO
I TRADING SYSTEM
PROGRAMMAZIONE E STRATEGIE
AUTORI

Filippo A. Diodovich

Filippo A. Diodovich, Market Strategist per IG, è un


esperto di analisi fondamentale e tecnica, applicata
ai mercati finanziari (azionari, valutari, obbligazionari,
delle commodities e dei derivati). Dopo aver conseguito
una laurea in Economia Politica all’Università Bocconi
di Milano inizia il proprio percorso professionale nel
2002 presso l’ufficio studi di una delle maggiori banche
d’affari statunitensi per poi passare nel 2003 a lavorare
per un’azienda italiana specializzata nell’utilizzo delle
metodologie dell’analisi tecnica per valutare l’andamento
delle piazze finanziarie. E’ entrato a far parte del team IG
nel 2012.

Puoi seguirlo su Twitter (@FADiodovich_IG)


e sul canale YouTube IG Italia.
Vincenzo Longo

Vincenzo Longo, Market Strategist per IG, è specializzato


nell’analisi tecnica e fondamentale dei mercati finanziari
(equity, forex, bond e commodity). Cura ogni giorno la
sezione di news e analisi di IG, oltre a rilasciare interviste
alla stampa e in tv. Dopo aver conseguito con lode la laurea
specialistica in Risk Management all’Università degli Studi
di Siena, ha iniziato il proprio percorso professionale presso
il desk di Market Strategy di una primaria banca italiana.
Nelle sue precedenti esperienze presso istituti bancari
internazionali ha sviluppato importanti competenze di
risk management, in particolare nella gestione dei rischi
di credito.

I suoi commenti sono disponibili anche su Twitter


(@VLongo_IG) e sul canale YouTube IG Italia.
INDICE

CAPITOLO 1 | TRADING SYSTEM - CONCETTI DI BASE


1.1. INTRODUZIONE

1.2. COSA SONO I TRADING SYSTEM?

1.3. PROGRAMMAZIONE PROBUILDER - ELEMENTI DI BASE

1.4. STOP E TARGET

1.5. ALTRI COMANDI IMPORTANTI

1.6. COSTRUIAMO UN TRADING SYSTEM CON LA

PROGRAMMAZIONE ASSISTITA

APPENDICE: DOMANDE DI COMPRENSIONE DEL TESTO

CAPITOLO 2 | BACKTESTING E TRADING AUTOMATICO


2.1. BACKTESTING

2.1.1. CAPITALE INIZIALE

2.1.2. I PARAMETRI DI INTERMEDIAZIONE

2.1.3. OTTIMIZZAZIONE DELLE VARIABILI

2.1.4. INTERVALLO TEMPORALE

2.1.5. PERSONALIZZAZIONE DEGLI ORARI DI TRADING

2.1.6. AVVIO DEL BACKTEST

2.2. LANCIO DI PROORDER

2.2.1. PREFERENZE DI TRADING

2.2.2. SISTEMI DI TRADING MULTIPLI SULLO STESSO

MERCATO

APPENDICE: DOMANDE DI COMPRENSIONE DEL TESTO

CAPITOLO 3 | STRATEGIE DI TRADING


3.1. INTRODUZIONE

3.2. STRATEGIA EMA CROSS ADX

3.3. EASY MACD

3.4. STRATEGIA TURTLE CLASSIC 2.0

3.5. STRATEGIA DELPHIC PHENOMENON 2.0

APPENDICE
RISPOSTE ALLE DOMANDE DI COMPRENSIONE DEL TESTO

• CAPITOLO 1

• CAPITOLO 2

GLOSSARIO
CAPITOLO 1
TRADING SYSTEM - CONCETTI DI BASE
CAPITOLO 1
1.1. INTRODUZIONE

Ti è mai capitato di leggere su internet di trader che guadagnano tantissimi


soldi con un sistema automatizzato vincente? Vorresti avere un programma che
possa fare trading per te mentre te ne stai comodamente sdraiato sul divano
a guardarti Inter-Juve o la tua serie televisiva preferita? Sei già appassionato
di trading e vuoi maggiori informazioni sul funzionamento dei Trading System
(o ‘TS’)?

Se hai risposto sì ad almeno una di queste domande allora questa è la guida


giusta per te, per capire come muoverti nel mondo dei Trading System di Pro-
RealTime.

La prima parte sarà prettamente teorica, con la spiegazione dei concetti base
della programmazione dei Trading System, mentre la seconda parte sarà più
pratica e riguarderà la costruzione dei Trading System in modo automatico e
la verifica dei risultati con il BackTest. Infine, nell’ultima parte illustreremo una
serie di TS sviluppati da noi che possono essere efficaci.

Buona lettura!

1.2. COSA SONO I TRADING SYSTEM?

Un Trading System, in italiano sistema automatizzato di trading,


consiste in un insieme di regole operative, dette anche istruzioni, che per-
mettono di fare trading in modo automatico quando vengono soddisfatti
determinati requisiti impostati attraverso un linguaggio di programmazione.

Sembra complicato? Probabilmente all’inizio la curva di apprendimento sarà


molto ripida, ma al termine della guida, i TS ti diventeranno familiari quasi come
le tue tasche.

In parole povere, il Trading System inserisce ordini di acquisto/vendita, piazza


stop loss e target, chiude le posizioni. Insomma, compie tutte queste opera-
zioni in modo autonomo senza l’intervento e/o il monitoraggio di una persona
fisica.1 Solitamente, si utilizzano regole di analisi tecnica 2 per impostare i
Trading System.

Quali sono i principali vantaggi di usare i Trading System?

1 Il nostro consiglio è comunque quello di monitorare attentamente le proprie posizioni con l’uso dei Trading System.
Solamente grazie a una gestione del rischio molto avanzata è possibile disinteressarsi totalmente della gestione dei TS.
2 L’Analisi Tecnica attiene allo studio dei grafici e dei cicli finanziari.
CAPITOLO 1
Proviamo a elencarne i principali:

1. ASSENZA DELL’EMOTIVITÀ
Con i TS viene eliminata una delle principali cause di perdita legate al
trading, ovvero la difficoltà di gestire le proprie emozioni. Questo aspetto
altera, soprattutto nei momenti di forte volatilità sui mercati, la no-
stra operatività discrezionale. Troppo spesso siamo così euforici quando
siamo in profitto che cerchiamo di ottenere sempre qualcosa in più, e
siamo così depressi quando siamo in perdita che vogliamo recuperare
il prima possibile quanto perso. Il Trading System è come un robot, non
prova emozioni. Ha delle regole e le applica senza paura o entusiasmo.

2. VERIFICA DELL’EFFICIENZA DELLE STRATEGIE ATTRAVERSO


IL BACKTEST
È possibile fare un backtest delle strategie in modo tale da verificarne
l’efficienza su una serie di dati passati. I risultati che otteniamo, in termini di
potenziali profitti (o perdite) e il massimo drawdown, sono solo alcuni degli
elementi3 che ci aiutano a capire se la nostra strategia può essere vincente
o meno.

3. DISCIPLINA
Il Trading System segue un piano di trading ben definito, con una
gestione del rischio decisa a priori. Ciò assicura al trader un grado di
disciplina e rigore impossibile da raggiungere con il trading discrezionale.

4. ORDINI DI ESECUZIONE PIÙ VELOCI


Rispetto al trading discrezionale, il trading automatico ha tempi molto ri-
dotti per l’esecuzione degli ordini, dato che manca l’elemento soggettivo
dell’operazione.

5. DIVERSIFICAZIONE
L’utilizzo contemporaneo di più Trading System permette di dedicarci al
monitoraggio di più mercati e strumenti, aumentando così la diversifica-
zione del nostro trading.

1.3. PROGRAMMAZIONE PROBUILDER - ELEMENTI DI BASE

Per programmare con ProRealTime è necessario utilizzare ProBuilder, un


linguaggio di tipo “basic” che permette di costruire indicatori personalizzati

3 Riprenderemo questi concetti nel corso del secondo capitolo.


CAPITOLO 1
di analisi tecnica, di implementare strategie di trading, di effettuare backtest
(ProBackTest) o di fare ricerche personalizzate (ProScreener).
Linguaggio di programmazione? ProBuilder? Non spaventarti, cercheremo di
spiegarti passo per passo i concetti fondamentali della programmazione.

ProBuilder è il linguaggio di programmazione usato nella piattaforma di Pro-


RealTime. È abbastanza semplice da utilizzare, molto più semplice rispetto
a quello usato per costruire gli Expert Advisor di MetaTrader. È basato sui
seguenti principi:

1. L’unità di base è la candela (o la barra) e l’unità di tempo è la stessa del


grafico sottostante. Questo vuol dire che se stiamo osservando il grafico
giornaliero il Trading System darà segnali con candele giornaliere, mentre
se siamo su un timeframe a 5 minuti le regole operative considereranno le
barre a 5 minuti;

2. Tutte le istruzioni per piazzare ordini sono attivate dopo che i calcoli sulla
candela (o la barra) corrente sono terminati. In altre parole, gli ordini saran-
no eseguiti all’apertura della candela successiva.

ISTRUZIONI DI BASE

Entriamo nel vivo della programmazione. Non spaventarti, ma fai attenzione a


quello che ti illustreremo. È molto più semplice di quanto sembri.
Partiamo dalle istruzioni di base di ProBuilder:

• L’apertura di ogni candela/barra : Open


• La chiusura di ogni candela/barra : Close
• Il massimo di ogni candela/barra : High
• Il minimo di ogni candela/barra : Low
• La quantità di titoli scambiati : Volume

Quando queste istruzioni sono precedute dalla lettera “D”, stiamo facendo
riferimento a n sedute prima di quella odierna. In particolare:

• DOpen(n): si riferisce all’apertura della n-esima seduta precedente a quella in corso


• DHigh(n): si riferisce al massimo della n-esima seduta precedente a quella in corso
• DLow(n): si riferisce al minimo della n-esima seduta precedente a quella in corso
• DClose(n): si riferisce alla chiusura della n-esima seduta precedente a quella in corso
CAPITOLO 1
La stessa istruzione senza la “D”, invece, indica rispettivamente l’apertura, il
massimo, il minimo e la chiusura dell’ennesimo periodo precedente.

ESEMPI

Se voglio indicare l’apertura di 3 periodi precedenti, scriverò


Open(3)

Se voglio inserire il massimo di 20 periodi precedenti, scriverò


High(20)

Se voglio indicare il minimo di 10 giorni/sedute precedenti, scriverò


DLow(10)

Attenzione a non fare confusione con le istruzioni HIGHEST/LOWEST che


indicano il prezzo massimo/minimo di un insieme di periodi.

ESEMPIO

Se voglio indicare il minimo degli ultimi 5 periodi, l’istruzione sarà


Lowest(3)

ENTRARE E USCIRE DAL MERCATO

Per entrare o uscire dal mercato è necessario differenziare le istruzioni a secon-


da del tipo di posizione che si vuole prendere. Più in dettaglio:

• Per le posizioni lunghe, l’acquisto è dato dall’istruzione BUY (entra-


ta long), mentre l’istruzione di vendita è data da SELL (uscita long).
Il comando BUY permette anche di incrementare una posizione lunga già in
essere. Allo stesso modo, il comando SELL permette chiudere parzialmente
una posizione in essere. L’istruzione SELL non ha alcun effetto se non esiste
una posizione lunga già aperta;

• Per le posizione corte, l’istruzione di vendita allo scoperto è SELLSHORT


(entrata short), mentre l’istruzione di riacquisto (uscita short) è EXITSHORT.
Queste due istruzioni funzionano in maniera simmetrica con BUY e SELL.
L’istruzione EXITSHORT non ha nessun effetto se non c’è alcuna posizione
corta aperta.

Non è possibile prendere una posizione lunga e corta allo stesso tempo sullo
stesso mercato. Ciò significa che una posizione lunga verrà chiusa con l’istruzi-
one SELLSHORT, mentre una posizione corta verrà chiusa con l’istruzione BUY.
CAPITOLO 1
ESEMPI

Ho intenzione di far comprare al mio trading system un contratto di GERMANY 30 CASH,


scriverò
BUY 1 CONTRACT AT MARKET

Desidero entrare in posizione short su EURUSD, scriverò


SELLSHORT 1 CONTRACT AT MARKET

Ho una posizione long aperta su US LIGHT CRUDE e voglio chiuderla, scriverò


SELL 1 CONTRACT AT MARKET

INSERIRE LE QUANTITÀ

Esistono due modi per definire la quantità nel linguaggio di programmazione:

1. SHARES che corrisponde ad una unità dello strumento: “1 Share” può rap-
presentare un’azione, un contratto future o un lotto forex. Possono essere
utilizzati indifferentemente SHARE, CONTRACT, CONTRACTS, LOT o LOTS
su tutti i tipi di strumenti. Ricordiamo come il TS opera sullo strumento in
esame. Pertanto, se siamo sul grafico dell’eurodollaro, inserire l’istruzione di
acquisto di 1 CONTRACT vuol dire che il TS comprerà un lotto standard.
Se vogliamo comprare un lotto mini sull’eurodollaro dovremo lanciare il TS
avendo come sottostante il grafico del mini eurodollaro.

2. CASH corrisponde all’importo effettivo (nella valuta dello strumento in


esame). Questa istruzione può essere usata unicamente per acquistare o
vendere azioni. La quantità dell’ordine sarà calcolata durante la chiusura
della barra e arrotondata per default all’unità inferiore. Le spese di interme-
diazione non sono prese in considerazione nel calcolo della quantità corris-
pondente all’importo da comprare o vendere.

ESEMPIO

Desideriamo acquistare 1000€ dell’azione x, scriverò


BUY 1000 CASH AT MARKET

É possibile utilizzare l’istruzione ROUNDEDUP per arrotondare questa quantità all’unità


superiore.
BUY 1000 CASH ROUNDEDUP AT MARKET

Se non indicate la quantità, o ve ne dimenticate, vengono utilizzati i seguenti


valori predefiniti:
CAPITOLO 1
• Un’unità per una posizione di entrata (Es: BUY AT MARKET, acquista un’unità
dello strumento oggetto del TS al prezzo di mercato);

• L’intera quantità di una posizione per un’uscita (Es: SELL AT MARKET vende
l’intera posizione lunga).

TIPOLOGIA DI ORDINI

Non rimane che spiegare le tipologie di ordini. Ne esistono tre tipi diversi:

• AT MARKET, l’ordine sarà piazzato al prezzo di mercato all’apertura della


barra successiva;

• AT <price> LIMIT: un ordine limite sarà posizionato al prezzo indicato;

• AT <price> STOP: un ordine stop sarà posizionato al prezzo indicato.

Gli ordini limite e stop con livelli specifici sono validi per la durata di una
candela (o barra) a partire dall’apertura della candela (o barra) successiva. Sono
quindi annullati ed eliminati se non eseguiti durante quella candela (o barra).

Fai attenzione a non confondere gli ordini al limite o gli ordini stop con gli stop
loss e i limiti/target di una posizione. I primi sono una tipologia di ordine, men-
tre i secondi sono dei livelli validi per una posizione aperta.

Riassumendo, sinora abbiamo imparato i concetti di base utile per la program-


mazione, ovvero <Ordine> <Quantità> AT <Tipo>. Di seguito alcuni esempi.

ESEMPI

Vuoi acquistare mille euro di azioni UNICREDIT al prezzo di mercato, allora la


programmazione sarà
BUY 1000 CASH AT MARKET

Vuoi vendere 1 azione di UNICREDIT con un ordine al limite a 4,80 euro, allora le
istruzioni per il Trading System saranno
SELL 1 SHARE AT 4.80 LIMIT
CAPITOLO 1
1.4. STOP E TARGET

Facciamo un passettino oltre. ProBuilder ti permette di definire dei target e


degli stop di protezione. In questo caso le istruzioni da utilizzare sono rispetti-
vamente, SET TARGET <tipo> <valore> o SET STOP <tipo> <valore>.
Ricordiamo come queste istruzioni servono per uscire da una posizione già
aperta e non vanno confusi con gli ordini limite o gli ordini stop.

STOP DI PROTEZIONE

Gli stop di protezione permettono di limitare le perdite di una posizione in


essere. Possono essere definiti in termini percentuali, assoluti, in punti o in unità
a seconda dell’istruzione data. In particolare:

• SET STOP LOSS x: La posizione sarà chiusa quando le perdite saranno pari
a x unità del prezzo di entrata;

• SET STOP pLOSS x: La posizione sarà chiusa quando la perdita sarà pari a
x punti del prezzo di entrata;

• SET STOP %LOSS x: La posizione sarà chiusa non appena la perdita rag-
giungerà x%;

• SET STOP $LOSS x: La posizione sarà chiusa non appena la perdita rag-
giungerà il valore di x euro o dollari (a seconda della valuta dello strumento).
Le spese di intermediazione sono escluse da questo valore.

La quantità e la direzione (uscita dalla posizione lunga o corta) dell’ordine


stop di protezione sono automaticamente adattate al tipo di posizione aperta.
Gli stop di protezione sono collegati ad una posizione. Se non c’è una posizione
aperta, gli stop loss non saranno attivati.

ESEMPI

Per impostare uno stop loss del 2%


SET STOP %LOSS 2

Voglio fissare una perdita massima di 100 euro


SET STOP $LOSS 100
CAPITOLO 1
TARGET PROFIT

L’istruzione target profit permette di uscire dalla posizione quando i guadagni


raggiungono il valore da noi desiderato. Anche in questo caso, possono essere
impostati in termini percentuali, assoluti, in punti o in unità.
Di seguito i dettagli:

• SET TARGET PROFIT x: La posizione sarà chiusa quando il guadagno sarà


pari a x unità del prezzo di entrata;

• SET TARGET pPROFIT x: La posizione sarà chiusa quando il guadagno sarà


pari a x punti dal prezzo di entrata in posizione;

• SET TARGET %PROFIT x: La posizione sarà chiusa quando il guadagno


raggiungerà x%, escluse le spese di intermediazione;

• SET TARGET $PROFIT x: La posizione sarà chiusa quando il guada-


gno raggiungerà il valore di x euro o dollari (a seconda della valuta dello
strumento).

Come per gli stop loss, la quantità e la direzione del profit target sono auto-
maticamente adattate al tipo di posizione in essere. Tutti i profit target sono
collegati alla posizione in essere. Pertanto, se non c’è una posizione aperta,
l’ordine profit target non sarà attivo.

TRAILING STOP

Un trailing stop è un ordine stop il cui prezzo cambia in funzione dell’evolu-


zione del prezzo. Per le posizioni lunghe, quando il prezzo aumenta, il livello di
trailing stop aumenta, ma se il prezzo diminuisce, il livello del trailing stop
rimane costante. I trailing stop su posizioni corte funzionano in maniera
diametralmente opposta: quando il prezzo diminuisce, il livello di trailing stop
diminuisce, ma se il prezzo aumenta, il livello del trailing stop rimane costante.

Uso di “Set Target” e “Set Stop” con istruzioni condizionali “IF”.

É possibile cambiare il tipo di target o stop impostati nel vostro codice sulla
base di condizioni personalizzate usando le istruzioni condizionali IF.
CAPITOLO 1
ESEMPIO

Voglio usare uno stop loss di 10% se il guadagno del trade precedente era almeno 10%,
altrimenti uno stop loss del 5%.
IF PositionPerf(1) > 0.1 THEN
SET STOP %LOSS 10
ELSE
SET STOP %LOSS 5
ENDIF

1.5. ALTRI COMANDI IMPORTANTI

Passiamo ora a illustrare altre istruzioni di ProBuilder, utili ai fini della program-
mazione di un TS.

• Istruzione QUIT, consente di sospendere un Trading System dopo una


perdita elevata o dopo una certa data.

ESEMPIO

IF Date > 20160620 THEN // Sospendi la strategia dopo il 20 giugno 2016


QUIT
ENDIF

• Istruzione DEFPARAM, permette di aggiungere altre istruzioni al Trading


System. Per esempio, se associato all’istruzione CumulateOrders impe-
disce di aumentare notevolmente le dimensioni di una posizione già aperta.

ESEMPIO

DEFPARAM Cumulate Orders = False


In questo caso il sistema non accumula nuove posizioni se c’è già una posizione aperta.

• DEFPARAM si può associare anche con le istruzioni FLATAFTER e


FLATBEFORE, che chiudono le posizioni prima o dopo determinati orari.

ESEMPIO

DEFPARAM FlatAfter = 200000


FlatBefore = 083000

Prima delle 8:30 e dopo le 20:00, non ci saranno posizioni aperte.


CAPITOLO 1
1 .6. COSTRUIAMO UN TRADING SYSTEM CON L A
PROGRAMMAZIONE ASSISTITA

Dopo aver visto i concetti base della programmazione, passiamo a costruire un


Trading System con la programmazione assistita che permette di utilizzare mol-
ti strumenti di analisi tecnica. Questa metodologia è semplificata rispetto alla
programmazione manuale, che, invece, richiede una conoscenza approfondita
delle istruzioni di ProBuilder. Di seguito, i passi da seguire.

1° PASSO

Scelta dello strumento finanziario e del time frame e della strategia da adottare.
Nel nostro esempio sceglieremo il cambio EUR/USD con timeframe giorna-
liero. La strategia che adotteremo sarà molto semplice. Utilizzeremo, infatti, i
segnali derivanti dall’incrocio di medie mobili.
Per semplicità utilizzeremo un grafico giornaliero. Inseriamo nel nostro grafico
una media mobile veloce a 8 periodi e una media mobile lenta a 21 periodi.
Cliccare su Indicatori e Sistemi di Trading come mostrato nella figura seguente:

IMG. 1

2° PASSO

Selezionare “Backtesting e Trading Automatico” (vedi 1 IMG. 2) e poi cliccare su


“Nuovo” (vedi 2 IMG. 2).
CAPITOLO 1
IMG. 2

3° PASSO

Scriviamo il nome del nostro Trading System.


Nel nostro esempio lo chiameremo TS Semplice (vedi 1 IMG. 3).

4° PASSO

Passiamo alla “Creazione Semplificata” (vedi 2 IMG. 3).


Tralasciamo la parte sulla destra della finestra (vedi 4 IMG. 3) che sarà oggetto
di trattazione nel Capitolo 2.

5° PASSO

Inseriamo le regole operative del nostro sistema.


Decidiamo di adottare un sistema di trading automatico molto semplice che
consiste nell’acquistare in caso di incrocio rialzista di una media mobile veloce
(Exponential Moving Average con pochi periodi nel nostro caso a 8 giorni)
rispetto a una lenta (Exponential Moving Average a tanti periodi nell’esempio
a 21 giorni).
Passiamo a vedere la creazione del TS inserendo inizialmente le condizioni di
acquisto per le posizioni long (vedi 3 IMG. 3).
CAPITOLO 1
IMG. 3

6° PASSO

Inseriamo le regole operative del nostro sistema.

IMG. 4

7° PASSO

Torniamo sul grafico dell’EuroDollaro e clicchiamo su una delle due medie


mobili. La condizione che vogliamo mettere nella finestra è la seguente:
Media Mobile Esponenziale a 8 periodi | Incrocio Rialzista | Media Mobile
Esponenziale a 21 periodi
CAPITOLO 1
Utilizziamo quindi il menù a tendina per trovare le condizioni richieste.
Lasciamo la condizione “Barra in Corso” (per default) e non modifichiamo
neppure il numero di contratti da acquistare.
Clicchiamo “Ok“ per aggiungere la condizione.

IMG. 5

8° PASSO

Aggiungiamo una condizione per la chiusura delle eventuali posizioni long aperte.
Clicchiamo su “Vendita” nella Pagina di Impostazione del TS Semplice. Si aprirà
ancora la finestra per aggiungere una condizione. Per semplicità, utilizziamo
come condizione di uscita della posizione, l’incrocio ribassista tra la EMA8 e la
EMA21.

IMG. 6
CAPITOLO 1
9° PASSO

Passiamo a immettere nel sistema le condizioni per la vendita allo scoperto.


La condizione che voglio mettere nella finestra è la seguente:
Media Mobile Esponenziale a 8 periodi | Incrocio Ribassista | Media Mobile
Esponenziale a 21 periodi
Utilizzeriamo il menù a tendina per trovare le condizioni richieste.
Lasciamo la condizione “Barra in Corso” (per default) e non modifichiamo
neppure il numero di contratti da vendere.
Clicchiamo “Ok” per aggiungere la condizione.

10° PASSO

Aggiungiamo una condizione per la chiusura delle eventuali posizioni short ap-
erte. Clicchiamo su “Riacquisto” nella Pagina di Impostazione del TS Semplice.
Si aprirà ancora la finestra per aggiungere una condizione. Per semplicità, utiliz-
ziamo come condizione di uscita della posizione, l’incrocio rialzista tra la EMA8
e la EMA21.

11° PASSO

È il momento di inserire gli stop loss e i target di profitto.


Clicchiamo su “Stops & Limits”.

IMG. 7
CAPITOLO 1
Si aprirà una finestra dove possiamo inserire gli stop loss e i limiti.
Iniziamo con inserire gli Stop Loss mettendo una perdita massima di 40 pips
(usando il menù a tendina).
Stesso processo lo faremo con i limiti mettendo un target profit a 100 pips.
Per semplicità non inseriremo il trailing stop.

IMG. 8

12° PASSO

Dopo aver immesso tutti i requisiti del nostro Trading System, possiamo
cliccare su “Genera Codice”.

ESEMPIO CODICE TS SEMPLICE

// Definizione dei parametri del codice


DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate

// Condizioni per entrare su posizioni long


indicator1 = ExponentialAverage[8](close)
indicator2 = ExponentialAverage[21](close)
c1 = (indicator1 CROSSES OVER indicator2)
IF c1 THEN
BUY 1 CONTRACT AT MARKET
ENDIF

// Condizioni per uscire da posizioni long


indicator3 = ExponentialAverage[8](close)
indicator4 = ExponentialAverage[21](close)
c2 = (indicator3 CROSSES UNDER indicator4)
IF c2 THEN
SELL AT MARKET
ENDIF

// Condizioni per entrare su posizioni short


indicator5 = ExponentialAverage[8](close)
indicator6 = ExponentialAverage[21](close)
c3 = (indicator5 CROSSES UNDER indicator6)
IF c3 THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF

// Condizioni per uscire da posizioni short


indicator7 = ExponentialAverage[8](close)
indicator8 = ExponentialAverage[21](close)
c4 = (indicator7 CROSSES OVER indicator8)
CAPITOLO 1
IF c4 THEN
EXITSHORT AT MARKET
ENDIF

// Stop e target
SET STOP pLOSS 40
SET TARGET pPROFIT 100
CAPITOLO 1
APPENDICE:
DOMANDE DI COMPRENSIONE DEL TESTO

1. Quale dei seguenti non è un vantaggio del trading automatico?


• Verifica efficienza strategie con il Backtest
• Assenza emotività
• No spread
• Disciplina

2. Come si chiama il linguaggio di programmazione utilizzato da ProReal-
Time?
• ProLanguage
• ProBasic
• ProBuilder
• ProTimer

3. L’istruzione SELL nel linguaggio di programmazione di ProBuilder cosa


significa?
• É un’istruzione di vendita allo scoperto (entrata short)
• É un’istruzione di riacquisto di titoli venduti allo scoperto (uscita short)
• Non è un’istruzione valida di ProBuilder
• É un’istruzione di vendita di strumenti acquistati (uscita long)

4. Quali istruzioni bisogna inserire nel Trading System per comprare un


ammontare di azioni di Eni per un controvalore pari a 2200 euro con un
ordine al limite a 13 euro?
• BUY 2200 SHARES AT MARKET
• BUY 2200 CASH AT 13 LIMIT
• BUY 2200 SHARES AT 13 LIMIT
• BUY 2200 CASH AT MARKET

5. Quali istruzioni bisogna immettere nel Trading System per entrare in


posizione SHORT con 2 contratti sul cable ai prezzi di mercato?
• SELL 2 CONTRACTS AT MARKET
• SELLSHORT 2 LOTS AT MARKET
• SELL SHARES AT MARKET
• SELLSHORT CONTRACTS AT 2 LIMIT
CAPITOLO 1
6. Come immettere uno STOP LOSS di 40 pips?
• SET STOP LOSS 40
• SET STOP pLOSS 40
• SET STOPLOSS 40
• SET STOP LOSS 40

7. Come inserire un target profit del 3%?


• SET TARGET PROFIT 3%
• SET TARGET PROFIT 0.3
• SET TARGET %PROFIT 3
• SET TARGETPROFIT 3%

8. Per creare un Trading System con la programmazione assistita quale


serie di menù dobbiamo cliccare?
• Sistemi di Trading > Programmazione Assistita > Nuovo
• Sistemi di Trading > Imposta Nuovo Trading System > Programmazione
Assistita
• Indicatori e Sistemi di Trading > Backtesting e Trading Automatico
> Nuovo
• Indicatori > Sistemi di Trading e Back Test > Nuovo TS

9. L’istruzione DEFPARAM CumulateOrders = False che significa?


• Elimina i falsi segnali di un Trading System
• Nel caso ci fosse una posizione aperta il sistema non inserisce altre
nuove posizioni su quello strumento
• Gli ordini non vengono archiviati nel sistema
• Tutte le posizioni aperte a fine seduta vengono chiuse
CAPITOLO 2
BACKTESTING E TRADING AUTOMATICO
CAPITOLO 2
2.1. BACKTESTING

Una volta che abbiamo imparato a programmare la nostra strategia, non resta
che sottoporla a un test per verificarne l’efficacia. Introduciamo il concetto di
Backtesting, ovvero il processo attraverso il quale un trader può verificare il
funzionamento di una determinata strategia di trading nel passato. In parole
povere, si tratta di applicare la strategia in un preciso intervallo temporale per
vedere come avrebbe funzionato e i risultati che avrebbe ottenuto. La logica
alla base di questo ragionamento è che, se una strategia avesse funzionato
bene nel passato, potrebbe dare buoni risultati anche in futuro.

Non sempre, però, le performance future sono del tutto prevedibili a partire
dai risultati ottenuti in passato, dato che gli operatori non rispondono allo stes-
so modo agli eventi che si verificano di volta in volta. Risulta chiaro quindi che
il backtest potrebbe risultare in talune circostanze anche fuorviante.
Vi chiederete a cosa possa servire allora utilizzarlo...
Possiamo dire che il backtest rappresenta certamente un utile strumento che
può indicare se e in che misura la nostra strategia di trading sia vincente o
meno. Una strategia che ha ottenuto ottime performance nel passato, difficil-
mente darà pessimi risultati nel futuro.

Ritorniamo al backtest. Dopo aver terminato la programmazione della nostra


strategia ci troveremo di fronte una schermata di questo tipo (IMG. 9).

IMG. 9

PAGINA 06 | COME FARE TRADING SUL FOREX


CAPITOLO 2
Ci concentriamo sulla parte di destra. Come si può vedere dall’IMG. 10, per
procedere con il backtest bisogna impostare una serie di variabili:

• Il capitale iniziale;
• Le commissioni e lo spread di intermediazione;
• L’ottimizzazione delle variabili;
• L’intervallo temporale.

Nella schermata che segue potete trovare tutte le variabili che possono essere
modificate. Le spiegheremo passo per passo a partire dal prossimo paragrafo.

IMG. 10
CAPITOLO 2
2.1. 1. CAPITALE INIZIALE

Il primo passo è stabilire quanto capitale desideriamo utilizzare per il backtest.


Dobbiamo fare attenzione a non impostare un valore troppo basso, altrimenti
il sistema non riesce piazzare ordini durante l’esecuzione del backtest su de-
terminati strumenti. Di solito, trovate impostato come capitale iniziale il va-
lore di 10.000 dollari. Questo valore si aggiornerà durante l’esecuzione del
backtest a seconda dei guadagni e delle perdite realizzate e delle commis-
sioni pagate. Questa funzione, di norma, la trovate impostata di default nel
vostro sistema. È possibile, però, bloccarla scrivendo nella schermata del codice
DEFPARAM NoCashUpdate = True.

IMG. 11
CAPITOLO 2
Per rendere più realistici i risultati del backtest occorre tenere in considerazione
il fattore rischio. Non si può approcciare il trading senza valutare attentamente
la propria propensione al rischio. Un strategia che rappresenta una interessante
opportunità per una persona può sembrare rischiosa e stressante per un’altra.
È importante sentirsi a proprio agio con il livello di rischio assunto e il capitale
investito. Introdurremo nei prossimi paragrafi dei concetti utili nella scelta del
capitale iniziale.

2.1.2. I PARAMETRI DI INTERMEDIAZIONE

Il passo successivo è di impostare i parametri riguardanti i costi e le commissio-


ni offerte dal broker con cui si opera. È importante tenere conto di questi costi
quando si procede con il backtest, poiché in questo modo i risultati saranno
più verosimili possibili.
Esistono due tipologie di costi che vengono sostenuti con il trading: la
commissione e lo spread.

Le commissioni riguardano principalmente l’operatività con azioni e indici.


Su ProOrder è possibile impostarle sotto forma di:

• Importo fisso applicato ad ogni ordine eseguito;


• Percentuale (%) rispetto alla transazione;
• Importo fisso per ogni lotto o contratto eseguito.

Tutte queste forme di commissioni sono riportate nella valuta dello strumen-
to oggetto di backtest. Inoltre è possibile anche impostare delle commissioni
minime e massime.

Alcuni mercati, come quello forex, non prevedono il pagamento di una com-
missione, bensì lo spread, che rappresenta la differenza del prezzo bid-ask di
un determinato cross valutario. Lo spread viene espresso in pips, ovvero la
quarta cifra decimale dopo la virgola.
CAPITOLO 2
IMG. 12

2.1.3. OTTIMIZZAZIONE DELLE VARIABILI

Una volta impostato il capitale iniziale e i costi di intermediazione arriviamo


al processo di ottimizzazione delle variabili. L’ottimizzazione consiste nel te-
stare le diverse combinazioni dei parametri utilizzati nella strategia in modo
da ricavarne i valori ottimali per il mercato selezionato e nell’intervallo tem-
porale scelto. In pratica, attraverso l’ottimizzazione stiamo chiedendo al
programma di selezionarci la combinazione di parametri che possa fornire
i risultati migliori. Nel caso in cui la strategia avesse dei parametri specifici,
l’ottimizzazione non sarebbe strettamente necessaria.
Il nostro consiglio è sempre quello di sperimentare anche strategie con
parametri definiti. Per alcuni mercati, per determinati timeframe, una strategia
CAPITOLO 2
potrebbe dare buoni risultati anche con valori diversi delle variabili rispetto a
quelli suggeriti.
IMG. 13

Per procedere occorre cliccare sul tasto “Aggiungi” nella sezione “Ottimiz-
zazione delle variabili” (IMG. 13). Comparirà la finestra riportata di seguito
(IMG. 14). Da qui potrete impostare i parametri della vostra strategia che
intendete ottimizzare.
Prima di tutto bisogna inserire nella casella “Nome utilizzato nel programma”
il parametro così come presente nel codice di programmazione, rispettando le
maiuscole e le minuscole. È possibile rinominarlo per renderlo più riconoscibi-
le nell’interfaccia dell’ottimizzazione e restringere la variazione del parametro
ai soli valori positivi o negativi. Una volta impostata la variabile è possibile
definire il valore minimo e massimo entro i quali il parametro deve oscillare.
CAPITOLO 2
Il passo, invece, è l’intervallo di variazione del parametro nel range prefissato.

IMG. 14

Per esempio, la variabile n, che chiameremo media mobile semplice, vogliamo


che sia testata nel range compreso tra 5 e 25, con passo 2. In questo caso, i
valori della variabile che verranno sottoposti a verifica saranno 5, 7, 9, 11, 13,
15 e così via sino a 25. Potremmo decidere di ottimizzare anche una seconda
variabile, m (che chiameremo media mobile esponenziale), facendola variare tra
22 e 44, con passo 2.

Non resta a questo punto che avviare l’ottimizzazione. La strategia verrà te-
stata con tutte le combinazioni possibili delle variabili che abbiamo deciso di
ottimizzare. Al termine del processo, la cui durata può variare da pochi secondi
a qualche minuto, comparirà il cosiddetto “Rapporto ottimizzazione” (IMG. 15),
che racchiude tutte le combinazioni delle variabili sottoposte al test.

IMG. 15
CAPITOLO 2
Il rapporto di ottimizzazione può essere classificato secondo ben 5 diverse
statistiche:

• “Guadagno” indica il profitto o la perdita realizzata in termini assoluti con


una specifica combinazione di variabili (riportati nell’ IMG. 15 nelle ultime due
colonne di destra);
• “%Guadagno”, come sopra, indica il profitto o la perdita realizzata in
termini percentuali;
• “N posizioni” indica il numero di posizioni aperte su un determinato perio-
do selezionato con una specifica combinazione di variabili. In questo caso è
possibile classificare la combinazione di variabili che permettere di aprire il
numero maggiore/minore di posizioni;
• “% Posizioni vincenti” indica la percentuale delle posizioni chiuse in profitto
rispetto al sul totale con una data combinazione di variabili;
• “Guad. medio per posizione” rappresenta il guadagno medio per posizione
aperta secondo quella specifica combinazioni di variabili.

Una volta eseguita l’ottimizzazione delle variabili, non resta che sostituire la
combinazione di parametri che soddisfa i nostri requisiti, secondo una delle
statistiche sopra indicate, nel codice di programmazione.
Riprendendo l’esempio precedente, e classificando i risultati dell’ottimizzazione
sulla base del miglior guadagno percentuale, la combinazione ottimale delle
nostre variabili risulta essere n (media mobile semplice) = 9 e m (media mobile
esponenziale) = 38.
Bisogna puntualizzare, però, che i risultati derivanti dal processo di ottimiz-
zazione possono cambiare in base all’intervallo temporale selezionato e al
timeframe di esecuzione.

2.1.4. INTERVALLO TEMPORALE

L’ultimo passo, ma non meno importante, è definire l’intervallo temporale


da utilizzare per il backtest della nostra strategia. Questo passaggio è molto
importante e andrebbe selezionato con attenzione. Fare il backtest su inter-
valli temporali troppo brevi rischierebbe di comprometterne l’efficacia. Inoltre
sarebbe opportuno testare la strategia sia in periodi di forte volatilità che in
periodi di minore volatilità per vedere i risultati che si sarebbero ottenuti.

Come si può vedere dall’IMG. 16, è possibile selezionare un periodo che va da


una data passata sino ad arrivare al presente, oppure se si vuole delimitare il
CAPITOLO 2
test a un determinato intervallo temporale occorre selezionare le date specifi-
che. In tal caso, se viene impostata una specifica data di fine del backtest, le
posizioni ancora aperte a quella data saranno chiuse automaticamente.

IMG. 16

Se il backtest dovesse impiegare troppo tempo a mostrare i risultati, probabil-


mente dovremmo scegliere un intervallo temporale più breve. In linea genera-
le, infatti, vale la regola che il tempo necessario per eseguire un backtest di una
strategia di trading è proporzionale alla lunghezza dell’intervallo selezionato
per uno specifico timeframe. Riducendo il timeframe conviene anche ridurre
l’intervallo selezionato.
CAPITOLO 2
2.1.5. PERSONALIZZAZIONE DEGLI ORARI DI TRADING

È possibile, per vari motivi legati soprattutto alla scarsa liquidità di alcuni mer-
cati, che a volte vogliamo restringere la nostra operatività solo a determinati
orari durante la seduta. Con ProRealTime è possibile impostare degli orari di
trading personalizzati per il mercato di nostra preferenza. Nel menù “Opzioni”
> “Fuso orario & Orari di trading” possiamo impostare gli orari di trading di
nostra preferenza. Ovviamente una simile scelta implica che sui grafici saran-
no visibili solo i prezzi relativi agli orari impostati. Nello specifico, è possibile
selezionare un intervallo temporale solo nel periodo compreso nell’arco di una
giornata (dalle ore 00 alle 24). Per esempio, se un mercato è aperto 24 ore su
24 è possibile scegliere di visualizzare solo le quotazioni tra le 9:00 e le 15:00,
ma non è possibile visualizzare le quotazioni tra le 20:00 di un giorno e le 10:00
del giorno successivo.

Pertanto, se un ordine è collocato a chiusura dell’ultima candela di una determi-


nata seduta con orari di trading personalizzati, l’esecuzione ci sarà all’apertura
della candela del giorno successivo. Per esempio, ipotizziamo di visualizzare
solo le candele tra le 10:00 e le 19:00. Se il nostro trading system dovesse lan-
ciare un ordine alla chiusura della candela delle 19:00, l’ordine sarà eseguito
all’apertura della candela delle 10:00 del giorno successivo.

Alcuni mercati, tra cui il forex, scambiano anche durante il week-end. Le nego-
ziazioni, di norma, partono la domenica sera, come accade anche per gli indici
che IG quota 24 ore su 24. Sebbene con ProRealTime si possano escludere dal
grafico i dati del week end, questi valori sono comunque presi in considera-
zione durante il backtest. Per il mercato forex, che apre alle 22:00 (CET) della
domenica, le quotazioni sono incluse nella candela giornaliera del lunedì.

Infine, qualche precisazione merita anche il fuso orario. La strategia viene ese-
guita sempre secondo il fuso orario impostato sulla piattaforma4. In alternativa
è possibile personalizzare il fuso orario dal menù “Opzioni” > “Fuso orario &
Orari di trading”. Se modifichiamo il fuso orario, sarà necessario eseguire nuo-
vamente il ProBackTest affinché le modifiche effettuate siano operative.

2.1.6. AVVIO DEL BACKTEST

Ci siamo. Una volta che abbiamo imparato il linguaggio di programmazione


e dopo aver impostato tutti i parametri necessari, siamo finalmente pronti

4 Il fuso orario dello strumento finanziario è quello predefinito sul suo computer.
CAPITOLO 2
ad eseguire il backtest. Come già ricordato, il tempo di esecuzione potreb-
be variare in base all’intervallo temporale selezionato. Più ampio è l’intervallo,
maggiore sarà il tempo di esecuzione.

Dopo l’esecuzione, sul grafico del mercato oggetto di test, compariranno due
sezioni aggiuntive, ovvero:

• La curva dei guadagni e delle perdite;


• L’istogramma delle posizioni aperte.

La curva dei guadagni/perdite mostra semplicemente l’evoluzione dei profitti,


espressi in valore assoluto (asse verticale a destra), nel corso del tempo (asse
orizzontale). La linea orizzontale presente in tale grafico rappresenta il livel-
lo di capitale iniziale preimpostato. Pertanto se in un determinato istante la
curva giace sotto tale linea stiamo realizzando delle perdite, al contrario, nel-
la parte superiore saremo in profitto. Graficamente le aree associate a una
performance positiva sono colorate di grigio chiaro, mentre quelle associate a una
performance negativa sono grigio scuro . Non solo, anche il tratto della curva
che definisce i guadagni e le perdite può essere di colore grigio chiaro o scuro5
a seconda che la posizione in essere in quel momento sia stata chiusa, rispetti-
vamente, in profitto o in perdita.

IMG. 17

L’istogramma delle posizioni, invece, mostra le posizioni aperte durante la


fase di test. L’apertura di una posizione long viene rappresentata da una barra
grigio chiaro, mentre una posizione short viene rappresentata da una barra
grigio scuro. Se non ci sono barre, vuol dire che non ci sono posizioni aperte sul

5 È possibile cambiare i colori a vostro piacimento. Potete associare ai profitti il colore verde e alle perdite il colore rosso.
CAPITOLO 2
mercato, mentre una serie di barre continue indicano che la posizione è ancora
aperta. In questo grafico, la scala riportata sull’asse di destra rappresenta il nu-
mero di contratti aperti, mentre sull’asse orizzontale vi è l’orizzonte temporale.

Una serie di statistiche circa i risultati del backtest sono disponibili in una
finestra denominata “Rapporto dettagliato”.

IMG. 18

Nella finestra sono presenti diverse cartelle, ognuna con dati del backtest:

• Panoramica
• Statistiche delle posizioni chiuse
• Lista ordini
• Lista posizioni chiuse

La sezione Panoramica è una sorta di quadro generale dei risultati del nostro
backtest. Sotto forma di grafici vengono riportate diverse informazioni come il
guadagno/perdita potenziale espressi sia in valore assoluto che in percentuale;
il numero di operazioni vincenti e perdenti; il profitto della migliore operazione,
la perdita della peggiore operazione; il profitto/perdita media delle posizioni
vincenti (o perdenti) e il guadagno medio per operazione.
CAPITOLO 2
Sempre in questa sezione, è possibile trovare una prima indicazione circa il Max
Drawdown e il Max Runup, così come la media di ordini eseguiti al giorno e il
tempo di azione della strategia sul mercato nell’intervallo temporale selezionato.

Nella seconda cartella (IMG. 19) sono disponibili le informazioni sulle posizioni
chiuse (non vengono considerate le posizioni aperte nel momento in cui vie-
ne eseguito il backtest). Vengono riprese e approfondite alcune informazioni
riportare nella panoramica generale.

IMG. 19

La terza sezione riguarda la “Lista ordini” e raccoglie tutte le informazioni ri-


guardo agli ordini eseguiti. È, inoltre, possibile classificarli in base: all’ordine
cronologico di esecuzione, alla tipologia (acquisto/vendita), al prezzo di esecu-
zione (crescente/decrescente), alla quantità di lotti acquistati, al profitto/perdita
e alle commissioni di brokeraggio6.

6 Nelle immagini riportate, le spese di intermediazione sono pari a 0 dato che non sono state impostate nell’esecuzione del
backtest.
CAPITOLO 2
IMG. 20

Infine, nella sezione “Lista posizioni chiuse” sono elencate tutte le posizio-
ni aperte e chiuse che possono essere classificate anch’esse per cronologia,
tipologia, durata, performance assoluta (e relativa) e spese di intermediazione.

IMG. 21
CAPITOLO 2
2.2. LANCIO DI PROORDER

Abbiamo imparato a programmare una strategia di trading, l’abbiamo sottopo-


sta a backtest, non resta che passa all’azione vera e propria.
I passi per prepararsi all’esecuzione di un sistema di trading automatico sono sem-
plici e veloci. Innanzitutto occorre abilitare, qualora non lo sia già, la funzione per
poter operare in maniera automatica. Una volta effettuato l’accesso in piattaforma,
bisogna entrare nella sezione “Il mio conto” in alto a destra e selezionare
“Impostazioni” > “Preferenze” e spuntare l’apposita casella “Abilita ProOrder
in ProRealTime”. Una volta salvate queste impostazioni sulla finestra principale
di ProOrder apparirà la sezione “Trading”. A questo punto non resta che sele-
zionare dal menù “Trading” > “ProOrder Autotrading”.

IMG. 22

Vi apparirà la seguente finestra di ProOrder. Seguite le informazioni riportate in essa.

IMG. 23
CAPITOLO 2
Quindi andate sul mercato su cui desiderate eseguire il trading system,
facendo attenzione al timeframe su cui volete operare e cliccate sull’icona
(vedi 1 IMG. 24).
Si aprirà una nuova finestra, con due sezioni “Indicatori” e “Backtesting e
Trading Automatico” (vedi 2 IMG. 24). Selezionate quest’ultimo e vi apparirà la
lista dei vostri sistemi di trading che avete precedentemente salvato e testato.

IMG. 24

Una volta scelto il trading system cliccate sul tasto “Preparati per il trading
automatico” (vedi 3 IMG. 24). Il sistema di trading apparirà sulla finestra di Pro-
Order apertasi in precedenza come “in attesa” di esecuzione.
Cliccando su “Start” (vedi 1 IMG. 25) si aprirà una nuova finestra di conferma,
dove sono presenti le preferenze di trading7, nonché i dettagli del nostro tra-
ding system (il mercato su cui si desidera attivarlo con il relativo timeframe, il
fuso orario, il codice di programmazione).
L’ultimo step riguarda la grandezza massima della posizione per questo siste-
ma. Badate bene, la “Grandezza massima posizione” presente su ProOrder non
va assolutamente confusa con il numero di contratti presenti nel codice della
strategia. Sebbene entrambi riguardino l’entità della posizione che su cui ci si
vuole esporre, la “Grandezza massima posizione” qui riportata (vedi 2 IMG. 25)
ha sempre la precedenza sulle istruzioni del codice.

7 Per ulteriori dettagli, vedere il paragrafo successivo.


CAPITOLO 2
In soldoni, questo vuol dire che se il codice è programmato per comprare 2
lotti, ma la grandezza massima della posizione è limitata a un solo lotto, l’ordine
di acquisto sarà ignorato. Come già ricordato nel capitolo 1, la grandezza mas-
sima della posizione per il mercato future e quello forex è definita in numero di
contratti o in lotti. Discorso diverso riguarda le azioni, la cui grandezza massima
della posizione corrisponde all’importo effettivo che si intende investire. At-
tenzione, questo importo non include le spese di intermediazione. Per questo
motivo suggeriamo sempre di verificare la grandezza massima della posizione
prima di procedere con l’avvio del trading automatico. Per semplicità qui sotto
abbiamo riportato un contratto come grandezza massima della posizione.

IMG. 25
CAPITOLO 2
Cliccando su “Esegui il sistema di trading” (vedi 1 IMG. 26) il nostro sistema
automatico sarà finalmente attivo e sarà visualizzato nella sezione “In corso di
esecuzione” (vedi 2 IMG. 26) della finestra di ProOrder.

IMG. 26

Nella parte a destra dell’immagine sopra troverete una serie di informazioni


circa la posizione in essere sul mercato, il guadagno istantaneo e il guadagno
totale. Inoltre, cliccando su “Vedere performance” è possibile visualizzare il
grafico dello strumento su cui si sta eseguendo il sistema di trading, nonché il
rapporto dettagliato così come la curva dei guadagni e delle perdite (vedi 3
IMG. 26).
CAPITOLO 2
2.2.1. PREFERENZE DI TRADING

Prima di procedere con qualsiasi sistema di trading, è opportuno verificare


le condizioni di esecuzione del trading system. Per farlo potete andare sulla
finestra di ProRealTime e cliccare su “Opzioni” e poi selezionare “Opzioni di
Trading” (IMG. 27).

IMG. 27

Si aprirà una nuova finestra dove dovrete selezionare “Trading automatico”.


Diverse sono le varie opzioni che è possibile decidere in questa fase (IMG. 28).

IMG. 28

In primo luogo, se un ordine viene rigettato di norma il sistema di trading viene


arrestato. È possibile modificare questa impostazione, permettendo al siste-
ma di effettuare un numero predeterminato di tentativi. Possiamo decidere di
aumentare o diminuire il numero di tentativi o anche modificare l’intervallo di
tempo tra un tentativo e l’altro. Una situazione potrebbe verificarsi nelle fasi
molto volatili di mercato, quando i prezzi si muovono rapidamente e in maniera
erratica. In tal caso può accadere che il prezzo d’ingresso sia diverso da quello
previsto dalla strategia. Tali impostazioni possono essere cambiate solo prima
di avviare un sistema di trading, non quando è in corso di esecuzione.
CAPITOLO 2
In secondo luogo, ProOrder può decidere di interrompere qualsiasi sistema di
trading8 se la somma degli ordini in attesa di esecuzione e quelli già eseguiti
dall’apertura del mercato (00:00 GMT per il mercato del forex) è superiore o
uguale alla quantità presente nella sezione “Trading automatico“ nella fine-
stra “Preferenze del trading” (vedi immagine sopra). Immaginiamo di avere,
per esempio, un livello di stop a 8 ordini e dall’apertura del mercato 5 ordini
sono stati eseguiti con un dato sistema di trading. Se il sistema ha una posi-
zione aperta e 2 ordini in attesa (uno per il target “Set Target” e uno per lo
stop “Set Stop”) e ha bisogno di inviare un ordine supplementare a mercato,
questo non sarà inviato, dato che si raggiungerebbe il livello di stop degli ordini
(5+2+1). A questo punto il sistema di trading sarà arrestato, gli ordini in attesa
saranno cancellati e la posizione aperta sarà chiusa.

Infine, tutti i sistemi di trading in corso di esecuzione hanno una data di validità
unica, raggiunta la quale ProOrder li interromperà automaticamente. È possi-
bile, però, prolungarne la validità cliccando su “Prolunga” in basso alla finestra
in corso di esecuzione. Nelle preferenze di trading è possibile modificare il
numero di giorni di prolungamento.

Se un sistema di trading è in corso di esecuzione su un mercato, non sarà più


possibile operare manualmente su quest’ultimo. Per questo motivo sui mercati
sui quali ci sono dei sistemi di trading in esecuzione, gli strumenti di trading
manuale vengono sostituiti da un tasto che mostra il trading automatico atti-
vato.

2.2.2. SISTEMI DI TRADING MULTIPLI SULLO STESSO MERCATO

ProOrder dà la possibilità di eseguire fino a 5 trading system diversi contempo-


ranei su ogni mercato. In questo caso, la posizione netta è determinata su tutti
questi sistemi di trading. Se, per esempio, ci sono 3 trading system, di cui due
comprano un lotto ciascuno, e l’altro vende un lotto, la posizione netta sarà pari
a +1 lotto. Attenzione, però, la posizione di un sistema di trading individuale
su un mercato può essere diverso dalla vostra posizione netta su questo valo-
re dato che ci sono altri sistemi di trading in corso di esecuzione sullo stesso
mercato.

8 Per definizione un ordine è in attesa di esecuzione se è stato inviato al broker e non è eseguito, rigettato o cancellato.
CAPITOLO 2
APPENDICE:
DOMANDE DI COMPRENSIONE DEL TESTO

1. Cosa si intende per BackTesting?


• É il processo di attraverso il quale un trader da avvio al trading automa-
tico della propria strategia
• É il processo attraverso il quale un trader può verificare il funzionamento
di una determinata strategia di trading nel passato
• É il processo attraverso il quale un trader può verificare il funzionamento
di una determinata strategia di trading nel futuro
• É il processo attraverso il quale un trader può calcolare esattamente
quali saranno le performance future

2. Quale di questi non è parametro del backtest?


• L’intervallo temporale
• Le commissioni e lo spread di intermediazione
• Lo stop loss
• Il capitale iniziale

3. Quale istruzione permette di non aggiornare il livello di capitale


durante il backtest?
• DEFPARAM CashUpdate = True
• DEFPARAM CashUpdate = False
• DEFPARAM NoCashUpdate = True
• DEFPARAM NoCashUpdate = False

4. Quale di queste commissioni non rientrano tra i parametri di backtest?


• Commissione di deposito
• Importo fisso applicato ad ogni ordine eseguito
• Percentuale (%) rispetto alla transazione
• Importo fisso per ogni lotto o contratto eseguito

5. In cosa consiste il processo di ottimizzazione delle variabili?


• consiste nel migliorare la performance di trading futura
• consiste nel testare le diverse combinazioni dei parametri al fine di
ottenere risultati migliori nel periodo selezionato
• consiste nell’ottimizzare i tempi di esecuzione del trading system
• consiste nel testare le diverse strategie di trading al fine di selezionare
quella che garantisce migliori performance
CAPITOLO 2
6. Quale di queste non è una statistica del processo di ottimizzazione?
• “% Guadagno”
• “N posizioni”
• “MaxDrawdown”
• “Guad. medio per posizione”

7. Quale di queste sezioni non rientra nel Rapporto dettagliato?


• Lista ordini
• Statistiche delle posizioni chiuse
• Lista posizioni aperte
• Panoramica

8. Cos’è la “Grandezza massima posizione”?


• Il numero di contratti (o lotti) presenti nel codice della strategia su cui ci
si espone
• La massima perdita che può essere sostenuta
• Il numero di contratti (o lotti) presenti in ProOrder su cui ci si espone
• Il profitto massimo realizzabile su una singola posizione

9. È possibile prolungare la scadenza di un trading system? È possibile


modificare il numero di giorni di prolungamento?
• NO - NO
• SI - NO
• SI – SI
• NO - SI

10. Qual è il numero massimo di trading system che possono essere esegui-
ti sullo stesso mercato?
• Solo 1
• <5
• >5
• 5
CAPITOLO 3
STRATEGIE DI TRADING
CAPITOLO 3
3.1. INTRODUZIONE

Dopo aver imparato ad utilizzare i trading system, la programmazione auto-


matica, i backtest, le variabili di ottimizzazione, siamo finalmente arrivati alle
strategie.
Ne illustreremo qualcuna di seguito che abbiamo sperimentato sui mercati
(soprattutto forex e indici), evidenziando risultati molto interessanti. Tre delle
seguenti strategie si basano sulle medie mobili, una invece si basa sul breakout
dei prezzi.

3.2. STRATEGIA EMA CROSS ADX

La strategia EMA Cross ADX (Incrocio di Medie Mobili con ADX) è una strategia
molto semplice che anche il più neofita del trading potrebbe utilizzare. È una
strategia trend following che manda segnali attraverso gli incroci delle medie
mobili esponenziali, utilizzando l’indicatore ADX per individuare situazioni di
mercato in cui vi sia un trend (positivo o negativo).

Utilizzeremo due medie mobili esponenziali (per comodità le chiameremo


EMA – exponential moving average):

1. EMA a 7 periodi
2. EMA a 20 periodi

Oltre alle due medie mobili impiegheremo anche l’indicatore ADX (Average
Directional Index) a 20 periodi, cercando di entrare in posizione (long o short)
solamente quando l’indicatore è superiore ai 20 punti.

Avremo un segnale di acquisto (BUY, posizione long) quando l’EMA a 7 periodi


incrocia al rialzo la EMA a 20 periodi con ADX superiore ai 20 punti.

Avremo un segnale di vendita (SELLSHORT, posizione short) quando l’EMA a


7 periodi incrocia al ribasso la EMA a 20 periodi con ADX inferiore ai 20 punti.

Fissiamo stop loss e target profit a 40 e 100 punti (consiglio: utilizzare i mini
contratti per evitare esposizioni troppo grandi).

Timeframe migliori per tale strategia: 15 min, 30 min, 1h, 4h


Strumenti: forex e indici

PAGINA 06 | COME FARE TRADING SUL FOREX


CAPITOLO 3
CODICE DA COPIARE

// Definizione dei parametri del codice


DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate

// Condizioni per entrare su posizioni long


indicator1 = ExponentialAverage[7](close)
indicator2 = ExponentialAverage[20](close)
c1 = (indicator1 CROSSES OVER indicator2)
indicator3 = ADX[20]
c2 = (indicator3 > 20)
IF c1 AND c2 THEN
BUY 1 CONTRACT AT MARKET
ENDIF

// Condizioni per entrare su posizioni short


indicator4 = ExponentialAverage[7](close)
indicator5 = ExponentialAverage[20](close)
c3 = (indicator4 CROSSES UNDER indicator5)
indicator6 = ADX[20]
c4 = (indicator6 > 20)
IF c3 AND c4 THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF

// Stop e target
SET STOP pLOSS 40
SET TARGET pPROFIT 100

3.3. EASY MACD

Questa strategia è molto semplice ma efficace allo stesso tempo e si fonda


sull’oscillatore MACD (Moving Average Convergence Divergence). La costru-
zione del MACD è piuttosto facile dato che si basa sulla differenza tra due
medie mobili esponenziali a 12 (che indicheremo con x) e 26 periodi (che in-
dicheremo con y). Quando la media più veloce (x) incrocia al rialzo quella più
lenta (y), il MACD assume un valore positivo, implicando che sul mercato sta
nascendo un trend rialzista. Sul grafico, la linea del MACD attraversa la linea
dello 0. Viceversa, se il MACD vira in negativo (incrocia sotto la linea dello 0)
vuol dire che la media più veloce ha incrociato al ribasso quella più lenta y. Nel
trading system il MACD lo indicheremo con AA.

Vi è poi un’altra linea, detta Signal Line, ottenuta dalla media a 9 periodi del
MACD, che indicheremo con z. La Signal Line ha una funzione di anticipare l’en-
trata sul mercato rispetto all’inizio del trend. Il segnale in questo caso si ha nel
momento in cui il MACD incrocia la signal line. Ovviamente il segnale rialzista
scatta quando il MACD incrocia al rialzo la signal line, e viceversa.
CAPITOLO 3
Questa è la strategia di default utilizzata da molti operatori. Noi facciamo un
passo oltre e chiediamo al sistema per quali valori di x, y e z il Trading System
riesce a dare risultati migliori. Possiamo quindi mettere i parametri p1, p2, p3,
per le varie medie esponenziali e procedere con l’ottimizzazione.

CODICE DA COPIARE

// Definizione dei parametri del codice


DEFPARAM CumulateOrders = False
x = ExponentialAverage[12](close)
y = ExponentialAverage[26](close)
AA = x-y
z = ExponentialAverage[9](close)
c1 = (z crosses over AA)
c2 = (z crosses over AA)
IF c1 THEN
BUY 1 SHARES AT MARKET nextbaropen
ENDIF
IF c2 THEN
SELLSHORT 1 SHARES AT MARKET nextbaropen
ENDIF

3.4. STRATEGIA TURTLE CLASSIC 2.0

Una delle strategie più famose e performanti è quella del Turtle Classic. Nel
1980 un gruppo di traders conosciuti con il nome di «Tartarughe» utilizzava un
sistema che fondamentalmente impiegava il breakout dei prezzi negli ultimi 20
giorni. Ovvero se i prezzi realizzavano un nuovo massimo degli ultimi 20 giorni,
segnale di acquisto; se i prezzi avessero fatto un nuovo minimo degli ultimi 20
giorni, segnale di vendita. Abbiamo modificato il Turtle Classic in modo da es-
sere utilizzato un po’ su tutti i time frame e su molti strumenti (inizialmente era
utilizzato solo su indici e commodities).

Abbiamo modificato per tale strategia l’ampiezza degli stop loss e dei target
profit in modo da avere un rapporto rischio rendimento di 1 a 3.
Rischiando 1 unità di rischio avremo sempre 3 unità di rendimento. In tale modo
anche se i nostri trade sono al 50% vincenti avremo un saldo di profitto a fine
mese molto interessante.

CODICE DA COPIARE

// Definizione dei parametri del codice


DEFPARAM CumulateOrders = False
ncontratti = 1
tickstop = 8
tickprofit = 8
CAPITOLO 3
length=20
ampiezzastop = tickstop*Ticksize
ampiezzaprofit = tickprofit*Ticksize
c1 = 0
c2 = 0
indicator1 = close
indicator2 = HIGHEST[length]
c1 = (indicator1 >= indicator2[1])
IF c1 THEN
BUY ncontratti CONTRACTS AT MARKET
ENDIF
indicator3 = close
indicator4 = LOWEST[length]
c2 = (indicator3 <= indicator4[1])
IF c2 THEN
SELLSHORT ncontratti CONTRACTS AT MARKET
ENDIF

SET STOP LOSS 3*ampiezzastop


SET TARGET PROFIT 9*ampiezzaprofit

3.5. STRATEGIA DELPHIC PHENOMENON 2.0

Il Delphic Phenomenon è una strategia di trading ideata da Scot Lowry nel suo
libro “The Magic of Moving Averages” (tradotto in italiano “Il Trading facile con
le medie mobili”). Il trader statunitense ha scelto di inserire nel sistema basato
sulle medie mobili degli accorgimenti in modo da limitare i falsi segnali derivan-
ti dalle fasi laterali del mercato.

La tecnica è stata ideata su candele giornaliere ma ottiene ottimi risultati anche


nel trading intraday.

Il primo passo è quello di aspettare che la media mobile a 18 giorni (SMA18)


incroci al rialzo quella a 40 giorni (SMA40), condizione che costituisce il segnale
di allerta e che ci indica di un potenziale scenario rialzista.

Dopodichè verifichiamo che il prezzo si trovi sopra la media mobile a 18 giorni


(se si trova sotto occorre attendere che la superi) e che quindi torni a scendere
al di sotto di essa per la prima volta. A questo punto avremo un segnale di
acquisto non appena il prezzo si riporta al di sopra della media mobile a 18
giorni.

Il sistema si basa, quindi, sul movimento di pullback che i prezzi evidenziano


prima di riprendere il movimento rialzista di fondo.
CAPITOLO 3
In pratica, si entra in acquisto solo in presenza di un chiaro segnale di forza
costituito dai prezzi che spingono la media a 18 giorni a superare quella a 40 e
che, nonostante la reazione iniziale sono in grado di confermare il trend man-
tenendosi al di sopra della linea della media a 18 giorni.

Per la posizione short vale l’inverso.

Timeframe: 15min, 30min, 1H, 4H, 1D

CODICE DA COPIARE

// Definizione dei parametri del codice


DEFPARAM CumulateOrders = False
Once CrossUP = 0
Once PullDN = 0
Once Long = 0
Once CrossDN = 0
Once PullUP = 0
Once Short = 0

ncontratti = 1
TickProfitto = 30
TickStopLoss = 10
length2 = 40

mm2 = Average[length2](close)
TickProfitto = TickProfitto*Ticksize
TickStopLoss = TickStopLoss*Ticksize

Ind1 = Average[18](close)
Ind2 = Average[40](close)

IF Ind1 CROSSES OVER Ind2 THEN


CrossUP = 1
ENDIF

IF Ind1 CROSSES UNDER Ind2 THEN


CrossDN = 1
ENDIF

IF Low CROSSES UNDER Ind1 and CrossUP = 1 THEN


PullDN = 1
ENDIF

IF High CROSSES OVER Ind1 and CrossDN = 1 THEN


PullUP = 1
ENDIF

IF CLOSE CROSSES OVER Ind1 AND PullDN = 1 THEN


Long = 1
ENDIF
CAPITOLO 3
IF CLOSE CROSSES UNDER Ind1 AND PuLLUP = 1 THEN
Short = -1
ENDIF

IF Ind1 CROSSES UNDER Ind2 OR CLOSE CROSSES UNDER Ind2 THEN


CrossUP = 0
PullDN = 0
Long = 0
ENDIF

IF Ind1 CROSSES OVER Ind2 OR CLOSE CROSSES OVER Ind2 THEN


CrossDN = 0
PullUP = 0
Short = 0
ENDIF

filter=Long+Short
IF filter<>filter[1] THEN
con = 1
ELSE
con = 0
ENDIF

IF NOT LongOnMarket AND filter = 1 AND con THEN


BUY ncontratti CONTRACTS AT market
ENDIF

IF NOT ShortOnMarket AND filter = -1 AND con THEN


SELLSHORT ncontratti CONTRACTS AT market
ENDIF

IF LongOnMarket AND close<mm2 THEN


SELL ncontratti CONTRACTS AT market
ENDIF

IF ShortOnMarket AND close>mm2 THEN


EXITSHORT ncontratti CONTRACTS AT MARKET
ENDIF

SET TARGET PROFIT TickProfitto


SET STOP LOSS TickStopLoss
APPENDICE
APPENDICE
APPENDICE:
DOMANDE DI COMPRENSIONE DEL TESTO

CAPITOLO 1

1. No spread
Lo spread sarà presente anche usando i trading system. Non è possibile
fare trading senza spread.

2. ProBuilder
Il linguaggio “basic” di ProRealTime si chiama ProBuilder.

3. É un’istruzione di vendita di strumenti acquistati (uscita long)


In ProBuilder l’istruzione SELL serve per chiudere le posizioni long già
aperte.

4. BUY 2200 CASH AT 13 LIMIT

5. SELLSHORT 2 LOTS AT MARKET

6. STOP pLOSS 40

7. SET TARGET %PROFIT 3

8. Indicatori e Sistemi di Trading > Backtesting e Trading Automatico >


Nuovo

9. Nel caso ci fosse una posizione aperta il sistema non inserisce altre nuo-
ve posizioni su quello strumento
APPENDICE
CAPITOLO 2

1. É il processo attraverso il quale un trader può verificare il funzionamen-


to di una determinata strategia di trading nel passato

2. Lo stop loss
È un parametro della strategia inserito nel codice di programmazione.
Gli altri sono parametri definiti per eseguire il backtest.

3. DEFPARAM NoCashUpdate = True

4. Commissione di deposito

5. Consiste nel testare le diverse combinazioni dei parametri al fine di ot-


tenere risultati migliori nel periodo selezionato

6. MaxDrawdown

7. Lista posizioni aperte

8. Il numero di contratti (o lotti) presenti in ProOrder su cui ci si espone

9. SI - SI
Su ProOrder è possibile slittare la scadenza di un trading system. Inoltre
possiamo anche decidere di quanti giorni prolungarne la scadenza.

10. 5
Sullo stesso mercato possono essere eseguiti fino a 5 trading system con-
temporaneamente.
GLOSSARIO
TERMINOLOGIA DEFINIZIONE

ADX Indicatore Average Directional Index

AT Usato con i prezzi AT (prezzo)

Average Media Mobile Semplice

Indicatore Average True Range, solitamente


AverageTrueRange
nella forma AverageTrueRange[N]

BollingerDown Curva Inferiore delle Bande di Bollinger

BollingerUp Curva Superiore delle Bande di Bollinger

BUY Istruzione per entrare in posizione long

Istruzione da inserire per fare riferimento


CASH
all’importo (es. BUY 1000 CASH)

Close Prezzo di chiusura

CONTRACT Contratto

CROSSES OVER Incrocio rialzista

CROSSES UNDER Incrocio ribassista

É un’istruzione per accumulare posizioni.


Se impostate CumulateOrders=False
CumulateOrders
chiederete al sistema di non accumulare
nuove posizioni.

Prezzo di chiusura della seduta,


DClose[n] = prezzo di chiusura dell’enne-
DClose
sima seduta precedente rispetto a quella
corrente

Massimo della seduta,


DHigh DHigh[n] = massimo dell’ennesima seduta
precedente rispetto a quella corrente

Minimo della seduta,


DLow DLow[n] = minimo dell’ennesima seduta
precedente rispetto a quella corrente

Prezzo di apertura della seduta,


DOpen[n] = prezzo di apertura dell’enne-
DOpen
sima seduta precedente rispetto a quella
corrente
Istruzione per introdurre la seconda
ELSE
condizione

ENDIF Istruzione di chiusura per le condizioni

Istruzione per chiudere una posizione


EXITSHORT
short

ExponentialAverage Media Mobile Esponenziale

Massimo del periodo, High[n] massimo di


High
n periodi precedenti

Highest Prezzo massimo di un insieme di periodi

IF Introduce le condizioni

Istruzione per gli ordini al limite,


LIMIT
es. BUY AT 4 LIMIT

Minimo del periodo, Low[n] minimo di n


Low
periodi precedenti

Lowest Prezzo minimo di un insieme di periodi

Lotto usato indifferentemente con


LOT
CONTRACT e SHARE

MACD Indicatore MACD

Funzione matematica “Massimo”


MAX
es. MAX (a, b)

Funzione matematica “Minimo”


MIN
es. MIN (a, b)

Momentum Indicatore Momentum

Ordine eseguito all’apertura della barra


NextBarOpen
successiva

Open Prezzo di apertura

Position Perf[n] indica la percentuale di


PositionPerf guadagno o di perdita dell’ennesima
posizione chiusa

Istruzione per interrompere un sistema di


QUIT
trading

RSI Indicatore Relative Strength Index


ROUNDEDUP Arrotondamento all’unità superiore

ROUNDEDDOWN Arrotondamento all’unità inferiore

SAR Indicatore Parabolic Sar

Istruzione per chiudere una posizione


SELL
long

SELLSHORT Istruzione per aprire una posizione short

Introduce stop loss o target profit,


SET
es. SET STOP LOSS

Indica il numero di azioni da comprare/


SHARES
vendere

Istruzione per impostare uno stop loss,


STOP LOSS
es. SET STOP LOSS

Istruzione per impostare un target,


TARGET PROFIT
es. SET TARGET PROFIT

Indicatore Triple Exponential Moving


TEMA
Average

Istruzione che segue la prima condizione


THEN
introdotta da IF

Dimensioni del Tick (più piccola


TICKSIZE
variazione di prezzo)

Indica un ordine eseguito all’apertura


TomorrowOpen
della seduta successiva

TR Indicatore True Range

Indica la possibilità di inserire un trailing


TRAILING
stop, es. SET TRAILING 20

TriangularAverage Media Mobile Triangolare

Volatility Indica la volatilità di Chaikin

Volume Indicatore di volume

WeightedAverage Media Mobile Ponderata

WilderAverage Media Mobile di Wilder