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.
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.
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à.
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
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
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
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
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