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.

 



Scrivi commento

Commenti: 0