Sei sulla pagina 1di 14

PROREALTIME - PROBACKTEST

IMPLEMENTAZIONI AI SISTEMI CON MEDIE MOBILI

Nel capitolo precedente abbiamo visto come impostare i sistemi per ricercare i periodi dominanti delle
medie mobili e degli oscillatori.

Se volete utilizzarli come veri sistemi di trading e definire inoltre una % di rischio sul capitale per il
dimensionamento della posizione, basta combinare i  sistemi a medie mobili descritti visti con il supertrend
e/o altre condizioni impostate come filtri.

In questo modo, quando avviene un segnale di entrata per l'incrocio del prezzo con la media o sull'incrocio
di due medie, definiamo lo stop loss e se necessario il trailing profit basato sull'ATR.

Vediamo ora alcune implementazioni sui sistemi con le medie mobili che vi possano tornare utili per i vostri
sistemi di trading.

Definiremo la dimension sizing con la formula del rischio come % sul capitale del conto.

1 - INCROCIO PREZZO-MEDIA MOBILE CON STOP LOSS INIZIALE E DIMENSIONAMENTO POSIZIONE

Se vogliamo definire la dimension sizing di un sistema a medie mobili, possiamo utilizzare lo stop loss di
probacktest costruito con l'ATR nel seguente modo, con variabili il moltiplicatore dell'ATR e A il periodo
della media mobile da inserire a scelta.

Il dimensionamento della posizione viene definito come % sul capitale (2%=200 $) e calcolato sulla distanza
tra il prezzo di chiusura dopo l'incrocio ed il supertrend che fa da stoploss.

Consiglio per le variabili:

X=10-300 passo 10

Y=1,5-3 passo 0,25 (partire almeno da 1,5 per tenere una distanza sensata dall'entrata in posizione,
altrimenti il sistema sceglierà la distanza minore).

 
DEFPARAM CumulateOrders = false
// definizione indicatori
sma=average[X](close)

prezzo= close

SL=averagetruerange[20](close)*Y

SLlong=prezzo-SL

SLshort=prezzo+SL

// definizione condizioni

C1=prezzo crosses over sma


C2=prezzo crosses under sma

ordersizelong=200/(prezzo-SLlong)

ordersizeshort=200/(SLshort-prezzo)

// apertura long
if C1 then
buy ordersizelong shares at market
endif
// chiusura long
If longonmarket and C2 then
Sell at market
Endif

// vendita allo scoperto


if C2 then
sellshort ordersizeshort shares at market
endif
// chiusura short
if shortonmarket and C1 then
exitshort at market
endif

set stop loss SL

Per vedere lo stop loss e verificare il dimensionamento della posizione potete utilizzare l'indicatore
mostrato negli esempi di probuilder.

In quel caso, l'ATR era calcolato dal massimo e dal minimo della candela, in questo caso è calcolato dalla
chiusura.

Il codice pertanto è questo:

 
//definizione indicatori
A=close
b=close
c=averagetruerange[periodoATR](close)
d=moltiplicatore
// calcolo stop loss posizione long
e=b-(c*d)
// calcolo stop loss posizione short
f=a+(c*d)
return e, f

In questo modo potete plottare l'indicatore (che io ho chiamato stop loss+-ATR) sul grafico e vedere dove è
posizionato lo stop loss iniziale.

Il calcolo viene fatto sulla barra precedente (chiusura e ATR stop loss) all'entrata in posizione.

I puntini blu sopra le candele sono gli stop loss per i trades short, quelli rossi sotto le candele per i trades
long.

Notate che appena la candela chiude al di sotto la media mobile, si genera il segnale short (e di chisura long
precedente). All'apertura della candela successiva (che corrisponde alla chiusura della candela in cui
avviene l'incrocio) viene aperto il trade short.

 
Quando si apre la finestra dei risultati dei sistemi verranno visualizzati in ordine di performance, cioè il
primo sistema sarà quello che avrà ottenuto il miglior profitto.

Potete a vostra scelta, scegliere di elencare i risultati in ordine di % di trades vincenti.

Per esempio questo sistema ha dato i seguenti risultati:

 
 

Come vedete il risultato migliore è 160 - 1,5 con il 117,81% di profitto e con una % di trades vincenti pari a
16,78.

Mettiamo in ordine i risultati in base a quest'ultimo dato e vediamo che:

 
 

Il sistema con la miglior % di trades vincenti è 23,90 con la media mobile a 30 periodi ed il moltiplicatore
ATR pari a 1,75.

La performance risulta molto più ridotta rispetto al precedente sistema.

Una via di mezzo tra i due sistemi risulta essere quello evidenziato, 190-1,5 con una performance pari a
70,81% ed una % di trades vincenti pari al 22,22%.

In sintesi questo sistema risulta essere molto spericolato in termini di % di riuscita.

 
2 - INCROCIO DI 2 MEDIE MOBILI CON STOP LOSS INIZIALE E DIMENSIONAMENTO POSIZIONE

Vediamo il secondo sistema di incrocio di medie mobili.

Impostiamo sempre gli ordersize long e short dati dalla differenza tra stop loss ed il prezzo di entrata in
posizione.

In questo caso ho utilizzato i seguenti parametri per le variabili:

media mobile breve: 5 - 50, passo 5.

media mobile lunga: 50 - 300, passo 5.

X=1,5 -3  passo 0,25.

DEFPARAM CumulateOrders = false


// definizione indicatori
smabreve= average[breve](close)
smalunga= average[lunga](close)

SL=averagetruerange[20](close)*X

SLlong=prezzo-SL

SLshort=prezzo+SL

ordersizelong=200/(prezzo-SLlong)

ordersizeshort=200/(SLshort-prezzo)

prezzo=close

// condizioni di acquisto e di vendita


C1=smabreve crosses over smalunga
C2=smabreve crosses under smalunga

C3=lunga>=(breve*1.5)

// entrata in posizione long


if C1 and C3 then
buy ordersizelong shares at market
endif
// chiusura long
if longonmarket and C2 then
Sell at market
endif
// vendita allo scoperto
if C2 and C3 then
sellshort ordersizeshort shares at market
endif
// chiusura short
if shortonmarket and C1 then
exitshort at market
endif

set stop loss SL

Anche per questo sistema visualizziamo i risultati.


 

Il miglior sistema in termini di profitto risulta essere il 20-105-1,5.

Tuttavia la % di trades vincenti risulta essere solo il 31%, quindi solo 1 su 3.

Tuttavia se scorriamo la tabella vediamo che un sistema con ambedue i risultati interessanti risulta essere
quello evidenziato, con l'85 % di performance ed il 48% di trades vincenti, quindi la metà.

3 - SWING TRADING: 3 MEDIE MOBILI E STOP LOSS INIZIALE CON DIMENSIONAMENTO POSIZIONE

Questo sistema è una via di mezzo dei due precedenti.

Trova quale è la media mobile di lungo periodo e quella di breve periodo che all'incrocio con il prezzo da la
migliore performance.

La media mobile di lungo periodo definisce il trend sottostante, mentre quella a breve periodo i
ritracciamenti secondari.

Il risultato mi da i parametri relativi alla strategia di swing trading.

DEFPARAM CumulateOrders = false


// definizione indicatori
smabreve= average[breve](close)
smalunga= average[lunga](close)

prezzo=close

SL=averagetruerange[20](close)*X

SLlong=prezzo-SL

SLshort=prezzo+SL

// condizioni di acquisto e di vendita


C1=smabreve>smalunga
C2=smabreve<smalunga

C3=prezzo crosses over smabreve

C4= prezzo crosses under smabreve

C5=lunga>=(breve*1.5)
ordersizelong=200/(prezzo-SLlong)

ordersizeshort=200/(SLshort-prezzo)

// entrata in posizione long


if C1 and C3 and C5 then
buy ordersizelong shares at market
endif
// chiusura long
if longonmarket and C4 then
Sell at market
endif
// vendita allo scoperto
if C2 and C4 and C5 then
sellshort ordersizeshort shares at market
endif
// chiusura short
if shortonmarket and C3 then
exitshort at market
endif

set stop loss SL

Variabili

emabreve: 5-50 passo 5

emalunga: 20-300 passo 10

X=1.5 - 3, passo 0.25

4 - SUPERTREND CON DIMENSIONAMENTO POSIZIONE

Può essere utilizzato anche con il volatility stop o gli indicatori di Abraham visti nella sezione Probuilder,
basta richiamarli con la funzione MYFUCTION una volta salvati come indicatori personalizzati.

Variabili:

X=1.5 - 3 passo 0.25

Y=5 - 30 passo 2.5


 

DEFPARAM CUMULATEORDERS=false

// definizione indicatori
stoploss=supertrend[X,Y]

prezzo=close[0]

// definizione condizioni
C1=prezzo>stoploss
C2=prezzo<stoploss

ordersizelong=200/(prezzo-stoploss)

ordersizeshort=200/(stoploss-prezzo)

// apertura long
If C1 then
BUY ordersizelong shares AT MARKET
ENDIF

// chiusura long
If C2 and LONGONMARKET THEN
SELL AT MARKET
ENDIF

// vendita allo scoperto

If C2 THEN
SELLSHORT ordersizeshort shares AT MARKET
ENDIF

// chiusura short
If C1 and SHORTONMARKET THEN
EXITSHORT AT MARKET
ENDIF

5 - DOPPIO SUPERTREND CON DIMENSIONAMENTO POSIZIONE

Questo sistema utilizza 2 supertrend, uno maggiore, per determinare il trend a lungo termine, e l'altro
minore, per determinare entrate ed uscite.

E' simile ai sistemi con i canali di Donchian che vredremo nel capitolo successivo.

Anche per questo sistema possono essere utilizzati altri indicatori di trend lineari simili.
 

Per il settaggio delle variabili, manteniamo il periodo 20 per tutti e due i supetrend, mentre variamo solo i
coefficienti moltiplicatori X e Y

X=1-4, passo 0.1

Y=1-3 passo 0.1

DEFPARAM CUMULATEORDERS=false

// definizione indicatori

majortrend=supertrend[X,20]

stoploss=supertrend[Y,20]

prezzo=close[0]

// definizione condizioni
C1=prezzo>majortrend

C2=prezzo<majortrend

C3=prezzo>stoploss
C4=prezzo<stoploss

C5=X>(Y*2)

ordersizelong=200/(prezzo-stoploss)

ordersizeshort=200/(stoploss-prezzo)

// apertura long
If C1 and C3 and C5 then
BUY ordersizelong shares AT MARKET
ENDIF

// chiusura long
If C4 and LONGONMARKET THEN
SELL AT MARKET
ENDIF

// apertura short
If C2 and C4 and C5 THEN
SELLSHORT ordersizeshort shares AT MARKET
ENDIF
// chiusura short
If C3 and SHORTONMARKET THEN
EXITSHORT AT MARKET
ENDIF

6 - MEDIA MOBILE + SUPERTREND COME STOP LOSS/TRAILING PROFIT E DIMENSIONAMENTO POSIZIONE

Questo sistema prevede una media mobile come definitore di trend, mentre il supertrend fa da stop loss
iniziale e da trailing profit.

Ogni volta che il prezzo si trova sopra la media mobile ed il supertrend apre una posizione di acquisto e
quando il supertrend si sposta sopra il prezzo viene chiusa.

Viceversa, quando media mobile e supertrend sono sopra il prezzo viene aperta una posizione short e
quando il supertrend scatta sotto il prezzo viene chiusa.

Il dimensionamento della posizione viene definito come % sul capitale (2%=200 $) e calcolato sulla distanza
tra il prezzo di chiusura relativo all'entrata in posizione ed il supertrend che fa da stoploss.

DEFPARAM CumulateOrders = false


// definizione indicatori
sma=average[A](close)

prezzo= close

stoploss=supertrend[X,20]

// definizione condizioni

C1=prezzo>stoploss

C2=prezzo<stoploss

C3=prezzo>sma

C4=prezzo<sma

ordersizelong=200/(prezzo-stoploss)

ordersizeshort=200/(stoploss-prezzo)

// apertura long
if C1 and C3 then
buy ordersizelong shares at market
endif
// chiusura long
If longonmarket and C2 then
Sell at market
Endif

// vendita allo scoperto


if C2 and C4 then
sellshort ordersizeshort shares at market
endif
// chiusura short
if shortonmarket and C1 then
exitshort at market
endif

7 - AGGIUNTE DI CONDIZIONI FILTRO PER TREND

Quando costruite un sistema trend following potrebbe farvi comodo aggiungere delle condizioni che fanno
da filtro per la determinazione del trend.

In questo caso potreste utilizzare l'indicatore ADX, inserendo la condizione

C1=ADX[14]>20 o 25.

Mediante questo filtro, entrerete in posizione solo quando il livello dell'ADX supererà la soglia del trading
range.

Oppure potreste utilizzare il ROC o qualsiasi altro indicatore di trend a vostro piacere.

Potrebbero piacerti anche