PROREALTIME - PROBACKTEST

I REPORTS DI BACKTEST


1 - I REPORTS DI BACKTEST

 

Ora che abbiamo visto le istruzioni essenziali per scrivere un sistema di trading, vediamo tramite 2 semplici esempi di sistema, cosa ci dicono i risultati del backtest.

Per prima cosa va specificato che, come in probuilder, è possibile inserire le variabili nei valori degli indicatori e dei parametri.

Facendo così, il sistema ottimizzerà le variabili e ci dirà quali sono quelle migliori in termini di performance.

 

Lo vedremo meglio nell'esempio sul cross EUR/USD.

 

Il primo sistema di esempio, è un semplice sistema di incrocio di medie mobili esponenziali, con variabili i periodi delle 2 medie mobili.

 

Nel secondo sistema, sempre con lo stesso incrocio di medie mobili esponenziali, aggiungeremo anche lo stop loss ed il trailing profit a parte, basati entrambi sull'ATR moltiplicato per N periodi.

In questo caso aggiungiamo come variabile il valore del moltiplicatore dell'ATR.

 

Il sistema è sia long che short e prevede che all'incrocio a rialzo della media mobile a breve termine con quella a lungo termine, si generi un segnale di acquisto, mentre all'incrocio ribassista si generi un segnale di vendita.

Quindi, se siamo long ed avviene un incrocio a ribasso, il sistema chiuderà la posizione long ed aprirà simulataneamente una posizione short.

Lo stesso accadrà quando verrà chiusa la posizione short e si aprirà simultaneamente una posizione long.

 

Questo sistema può essere fatto anche solo per trades long o short, basta modificare le condizioni.

Inoltre, nelle condizioni ho specificato che la media mobile lunga deve essere almeno più grande di 1,5 volte quella breve (C3).

Questo per evitare, come può accadere, di avere parametri contrari ed illogici, cioè che quella lunga sia più piccola di quella breve.

 

Vedremo quindi la differenza tra i due sistemi.

 


2 - PRIMO SISTEMA: INCROCIO DI MEDIE MOBILI PURO

 

Scriviamo il codice del sistema puro d'incrocio di medie mobili esponenziali:

 

DEFPARAM CumulateOrders = false
// definizione indicatori
emabreve= exponentialaverage[breve](close)
emalunga= exponentialaverage[lunga](close)

// condizioni di acquisto e di vendita
C1=emabreve crosses over emalunga
C2=emabreve crosses under emalunga

C3=lunga>(breve*1.5)

// entrata in posizione long
if C1 and C3 then
buy 1 shares at market
endif
// chiusura long
if longonmarket and C2 then
Sell at market
endif
// vendita allo scoperto
if C2 and C3 then
sellshort 1 shares at market
endif
// chiusura short
if shortonmarket and C1 then
exitshort at market
endif

 

Quindi copiamo il codice nella finestra di programmazione e lo nominiamo per esempio CROSSOVER EXPONENTIALS.

Nella sezione di destra inseriamo i dati relativi al money management:

 

CAPITALE INIZIALE: 10000 $

MISURA PER LOTTO: 10000 $ (1 minilotto per trade)

SPREAD: 4 pips (sto sempre più alto negli spreads).

PERIODO DI SIMULAZIONE: da settembre 2006 ad oggi (10 anni)

 

Flaggo l'opzione mantieni la finestra aperta, in modo che se devo apportare delle modifiche non la devo riaprire ogni volta.

 

 

Inseriamo le variabili (segnalate in blu) cliccando sul simbolo della chiave inglese - ottimizzazione variabili, in alto a sinistra.

Dobbiamo inserire i valori minimi, massimi ed il passo da utilizzare:

 

Le variabili da inserire sono:

breve = parametri per la ema a breve periodo (da 5 a 100 con passo ogni 5)

lunga = parametri per la ema a lungo periodo (da 10 a 300 con passo ogni 10).

 

 

Una volta settato il tutto, lanciamo il comando probacktesta il mio sistema e vediamo cosa succede.

 

In base al numero di variabili impostate ed alla lunghezza del periodo di analisi, il sistema avvierà la fase di ottimizzazione che può durare da pochi secondi ad alcuni minuti.

Quando è arrivato al 100% si apriranno 2 diverse finestre:

 

- il rapporto di ottimizzazione.

- il rapporto dettagliato.

 

Il rapporto di ottimizzazione (a sinistra) è un elenco con tutte le variabili messe automaticamente in ordine di performance ed automaticamente sul grafico verranno rappresentati i dati relativi al risultato migliore.

Cliccando su un altro risultato verrà aggiornato il grafico con i dati relativi.

 

In questa finestra vengono visualizzati i dati principali:

il guadagno totale,

la % di guadagno,

il numero di posizioni,(compresa l'eventuale posizione aperta finale)

la % di trades vincenti,

il guadagno medio per posizione.

 

Il rapporto dettagliato (a destra) visualizza tutti i dati dei trades e le varie statistiche relative al risultato migliore:

 

Una panoramica generale,

le statistiche delle posizioni chiuse,

la lista degli ordini,

la lista delle posizioni chiuse.

 

In alto a destra vediamo il riepilogo del periodo di simulazione, il capitale iniziale ed il guadagno finale.

 

 

Mentre sul grafico del prezzo vedremo:

- i segnali di trading, entrate, uscite, stop loss, ecc..

- una finestra superiore con la curva dei guadagni e delle perdite,

- una finestra in mezzo con l'istogramma delle posizioni e la grandezza delle stesse.

 

 

Di default i colori saranno grigi, possiamo comunque personalizzarli, (io ho messo blu per i dati relativi ai trades long e rossi per quelli short) cliccando come sempre sull'icona della chiave inglese sul grafico delle curve.

Le personalizzazioni rimarranno solo per quel sistema salvato.

 

Anche i segnali di default delle entrate ed uscite dai trades sono personalizzabili:

 


 

Vediamo che risultati ci da questo sistema con incrocio di ema breve a 45 periodi ed ema lunga a 70 periodi:

 

guadagno totale: 6.087 $

% di guadagno: +60,87 % 

numero di posizioni: 20 (2 trades di media all'anno).

la % di trades vincenti : 45%

il guadagno medio per posizione: 304,35 $

 

Inoltre nel rapporto dettagliato possiamo vedere:

guadagno totale: 9.637,00 $

perdita totale: - 3.463,00 $

guadagni/perdite (profit factory): 2,78

% trades vincenti: 47,37% (vincenti 9 trades, perdenti 10 trades)

miglior guadagno: 2.161,00 $

media trades vincenti: 1.070,78 $

perdita del peggior trade: -596,30 $

media trades perdenti: - 346,30 $

max drowdown: 2.427,00 $

max runup: 8.809,00 $

 

le posizioni in questo caso sono 19 perchè vengono analizzate solo le posizioni chiuse.

 

Tirando le somme, il sistema si rivela essere abbastanza equilibrato con circa il 50 % di trades vincenti e perdenti e con un rapporto di profit factory o fattore di profittabilità pari a 2,78.

Quindi, per ogni perdita c'è quasi un gudagno superiore a 2,5 volte.

 


3 - SECONDO SISTEMA: INCROCIO DI 2 MEDIE MOBILI CON STOP LOSS E TRAILING PROFIT

 

Inseriamo ora il codice del secondo sistema, dove aggiungiamo anche le variabili di stop loss (x) e trailing profit (y).

L'obiettivo dell'inserimento di queste variabili è quello di trovare i valori più vantaggiosi di stop loss e trailing profit basati sul moltiplicatore dell'ATR (average true range) e vedere se ho ulteriori vantaggi da questo sistema rispetto a quello puro.

 

Per inserire le variabili, prima definisco l'algoritmo di stop loss (SL) e quello di trailing profit (TP) basato sulla moltiplicazione dell'ATR.

Infine li inserisco nei comandi finali di richiamo.

 

DEFPARAM CumulateOrders = false
// definizione indicatori
emabreve= exponentialaverage[breve](close)
emalunga= exponentialaverage[lunga](close)

SL = averagetruerange[14](close)*x

TP = averagetruerange[14](close)*y

// condizioni di acquisto e di vendita
C1=emabreve crosses over emalunga
C2=emabreve crosses under emalunga

C3=lunga> (breve*1.5)

// entrata in posizione long
if C1 and C3 then
buy 1 shares at market
endif
// chiusura long
if longonmarket and C2 then
Sell at market
endif
// vendita allo scoperto
if C2 and C3 then
sellshort 1 shares at market
endif
// chiusura short
if shortonmarket and C1 then
exitshort at market
endif// definizione si stop loss e trailing profit

set stop loss SL

set stop trailing TP

 

Copiamo il codice nella finestra di programmazione ed inseriamo le variabili.

 

Purtroppo, la versione free, al contrario della versione premium (abbonamento) ha dei limiti per l'inserimento delle variabili.

Nel senso che, possiamo inserire tutte le variabili che vogliamo, ma la grandezza ed i passi sono limitati per attuare un certo numero di combinazioni.

 

Per esempio in questo caso settiamo le seguenti variabili, mantenendo le stesse del sistema precedente ed aggiungendo quelle realtive a X e Y :

 

 

Se clicchiamo su backtesta il mio sistema, e le variabili sono troppe da combinare, si aprirà la finestra del limite di ottimizzazione, in cui si invita a sfoltire i parametri delle variabili oppure a sottoscrivere la versione premium.

Se vogliamo possiamo regolarlo automaticamente facendolo fare a probacktest, ma i valori ed i passi potrebbero essere irregolari.

Oppure li regoliamo noi stessi cambiando i parametri delle variabili, utilizzando come base i risultati del precedente sistema.

 

 

In questo caso restringo il campo delle variabili delle medie mobili, modificando i valori minimi ed i massimi in base ai risultati precedentemente ottenuti.

 

Come vedete il risultato del sistema è lo stesso di prima, settando uno stop loss con ATR*2,5 e nessun trailing profit (valore 0).

Vuol dire che, nel caso del sistema puro, il prezzo non ha mai ritracciato oltre quel valore e che inoltre, non si ha nessuna convenienza a settare un trailing profit per questo tipo di sistema.

 


4 - SEGNALI DI ERRORI SUL GRAFICO DEL PREZZO.



Scrivi commento

Commenti: 0