Vediamo ora alcuni esempi di SISTEMI AUTOMATICI BASE con cui svolgere i backtest.
Inoltre, possono servire anche per determinare i parametri degli indicatori dominanti di uno strumento.
Per la grandezza della posizione potete decidere se utilizzare il comando CASH, determinando l'ammontare
dei contratti in base ad un dato capitale.
Oppure potete utilizzare SHARES, per il forex defininendo la grandezza del contratto.
In questi sistemi definisco il contratto di compravendita di 1 shares come default pari a 10.000 $ (1
minilotto) e con un capitale totale di 10.000 $.
Le variabili (segnate in blu) sono da impostare con i range dei valori ed i passi che potete scegliere a vostro
piacimento.
Questo sistema è utile per trovare la media mobile dominante, cioè quella media mobile che restituisce la
miglior performance quando incrocia il prezzo.
Io ho impostato la media mobile semplice, ma potete utilizzare una qualsiasi altra media mobile, basta
cambiare l'indicatore.
Se volete utilizzare il sistema per trovare il periodo dominante non v'interessa impostare il rischio con la %
sul capitale. Vi interessa sapere solamente quale sia il periodo più performante.
Se volete analizzarlo come sistema di trading consiglio di utilizzare la % di rischio, cioè impostando uno stop
loss con il quale calcolarlo medianto la formula: lotti=rischio/(entry -stoploss) o rischio/(stoploss-+entry).
Lo vedremo meglio nella pagina successiva.
// definizione condizioni
C1=prezzo crosses over sma
C2=prezzo crosses under sma
// apertura long
if C1 then
buy 1 shares at market
endif
// chiusura long
If longonmarket and C2 then
Sell at market
Endif
Ecco la media mobile semplice giornaliera dominante di EUR/USD degli ultimi 10 anni.
Ho settato i parametri della variabile tra i valori 10 e 300 con un passo di 10.
Ricordatevi però che più si va nel piccolo, più il risultato è influenzato dai diversi prezzi dello strumento
forniti dai vari brokers.
Notate come la media mobile segua bene le fasi bull e bear del mercato, e che nell'ultimo periodo di
trading range è quasi perfettamente piatta!
Abbiamo già visto come funziona questo sistema nella pagina precedente.
Riproponiamolo questa volta come esempio di incrocio tra due medie mobili semplici.
Come l'incrocio tra prezzo e media mobile determina una media mobile dominante di uno strumento,
l'incrocio tra due medie mobili determina le due medie mobili dominanti, cioè quelle che determinano i
trend stessi.
Quando avviene un incrocio si ha il segnale di acquisto o di vendita e quando la media mobile breve è sopra
la media mobile lunga, siamo in presenza di un trend rialzista mentre quando è sotto siamo in presenza di
un trend ribassista.
Quindi facendo girare questo sistema possiamo determinare le medie mobili che utilizzeremo per orientarci
in ogni singolo mercato.
C3=lunga>=(breve*1.5)
Trova quale è la media mobile di lungo periodo e quella di breve periodo la quale, 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.
Ho chiamato questa strategia swing trading perchè il prezzo, per incrociare con la media mobile breve deve
trovarsi necessariamente tra questa e quella di più lungo periodo.
prezzo=close
C5=lunga>=(breve*1.5)
Variabili
4 - OSCILLATORI
Questo sistema trova quali sono i più efficienti livelli di ipercomprato, ipervenduto ed il periodo
dell'oscillatore dominante.
Lo stesso codice può essere utilizzato per altri oscillatori come l'RSI, lo stocastico od il commodity channel
index.
Le condizioni per l'entrata long prevedono un incrocio a rialzo del livello di ipervenduto e per l'entrata short
un incrocio a ribasso del livello di ipercomprato.
DEFPARAM CUMULATEORDERS=false
// definizione indicatore
MYWILLIAMS=WILLIAMS[X](close)
// definizione condizioni
C1=MYWILLIAMS[1]<ipervenduto
C2=MYWILLIAMS[0]>=ipervenduto
C3=MYWILLIAMS[0]>MYWILLIAMS[1]
C4=MYWILLIAMS[1]>ipercomprato
C5=MYWILLIAMS[0]<=ipercomprato
C6=MYWILLIAMS[0]<MYWILLIAMS[1]
// apertura long
If C1 and C2 and c3 then
BUY 1 shares AT MARKET
ENDIF
// chiusura long
If C4 and C5 and C6 and LONGONMARKET THEN
SELL AT MARKET
ENDIF
// apertura short
If C4 and C5 and C6 THEN
SELLSHORT 1 shares AT MARKET
ENDIF
// chiusura short
If C1 and C2 and C3 and SHORTONMARKET THEN
EXITSHORT AT MARKET
ENDIF
Questi parametri possono essere ulteriormente ristretti con passo a 2 per esempio.
Consiglio di impostare i livelli con valori simili a quelli di default per non snaturare e sviare troppo le
funzioni dell'oscillatore, cioè quelle di determinare due bande opposte di prezzo.
5 - MACD
Questo sistema trova i parametri più adatti dell'indicatore MACD per un determinato mercato.
Si basa sulla miglior performance data dall'incrocio delle 2 linee del MACD:
la linea MACD data dalla differenza tra 2 medie mobili esponenziali e la linea SIGNAL, che è la media mobile
esponenziale della linea MACD.
Entra in posizione long quando la linea MACD incrocia a rialzo la SIGNAL ed entrambe si trovano sotto lo 0
(ipervenduto), mentre entra in posizione short quando la MACD incrocia a ribasso la SIGNAL ed entrambe si
trovano sopra lo 0 (ipercomprato).
Escono di posizione quando avviene un incrocio inverso sia che le linee siano sopra o sotto lo 0.
Per fare questo si è reso necessario scomporre l'indicatore nelle sue componenti, e cioè le due medie
mobili esponenziali a breve e lungo periodo e la media mobile di lisciatura della differenza tra le due.
Risultato: MACD (8,35,6) con un profitto pari solo all' 36,71% del conto.
DEFPARAM CUMULATEORDERS=false
// definizione indicatori
A=exponentialaverage[breve](close)
B= exponentialaverage[lunga](close)
LINEAMACD=A-B
SIGNAL=exponentialaverage[liscia](MACD)
// definizione condizioni
C5=lunga>(breve*1.5)
// apertura long
endif
sell at market
endif
// apertura short
endif
// chiusura posizione short
exitshort at market
endif
6 - SUPERTREND
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.
Questo sistema ha lo scopo di definire i parametri ideali sia del sistema supertrend che nella sua funzione di
stop loss/trailing profit.
Il risultato è stato 1,4 per il moltiplicatore e 15 per il periodo con un profitto pari al 80,24 % del conto.
DEFPARAM CUMULATEORDERS=false
// definizione indicatori
stoploss=supertrend[X,Y]
prezzo=close[0]
// definizione condizioni
C1=prezzo>stoploss
C2=prezzo<stoploss
// apertura long
If C1 then
BUY 1 shares AT MARKET
ENDIF
// chiusura long
If C2 and LONGONMARKET THEN
SELL AT MARKET
ENDIF
// apertura short
If C2 THEN
SELLSHORT 1 shares AT MARKET
ENDIF
// chiusura short
If C1 and SHORTONMARKET THEN
EXITSHORT AT MARKET
ENDIF
7 - DOPPIO SUPERTREND
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
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)
// apertura long
If C1 and C3 and C5 then
BUY 1 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 1 shares AT MARKET
ENDIF
// chiusura short
If C3 and SHORTONMARKET THEN
EXITSHORT AT MARKET
ENDIF
8 - NUOVI MASSIMI/MINIMI CON STOP LOSS E TARGET PROFIT
Mediante questo esempio, vogliamo impostare un sistema che ad un nuovo massimo di prezzo di N periodi
apre una posizione long, mentre ad ogni nuovo minimo di N periodi apre una posizione short, posizionando
uno STOP LOSS ed un TARGET PROFIT a determinate distanze dal prezzo di entrata.
La candela deve chiudere sopra il massimo storico e sotto il minimo storico di periodo.
Vediamo quindi come determinare lo stop loss e take profit nei 2 seguenti modi:
1) SL e TP con le ottimizzazioni del sistema, cioè vedere quale quantità di $ è quella ideale con i dati storici e
la statistica,
2) posizionare lo stop loss automaticamente a livello del minimo della candela di nuovo massimo per un
trade long o a livello del massimo della candela di nuovo minimo per un trade short ed un target profit da
ottimizzare il base al rapporto rischio-rendimento.
In entrambi i casi possiamo tralasciare le istruzioni di chiusura long e chiusura short poichè impostiamo
stop loss e take profit all'interno delle istruzioni di BUY e SELLSHORT.
Il codice per determinare un nuovo massimo o minimo sono quelli che vedremo successivamente con i
Canali di Donchian è molto semplice:
DEFPARAM CUMULATEORDERS=false
// definizione indicatori
massimo=highest[X](high)[1]
minimo=lowest[X](low)[1]
// definizione condizioni
C1=close>massimo
C2=close<minimo
// apertura long
If C1 then
BUY 1 shares AT MARKET
// apertura short
If C2 THEN
SELLSHORT 1 shares AT MARKET
ENDIF
Come potete vedere abbiamo impostato la variabile X per i periodi di massimo e minimo (10-200; 10), e le
variabili SL (50-200;10) e TP (50-1000;50) per lo stop loss ed il target profit, che in questo caso, verranno
calcolati come quantità di $ di perdita e profitto.
Potete anche settarli come unità, pips o % di distanza dal prezzo entry.
Allo stesso modo può essere impostato una variabile di trailing profit con il comando:
Vediamo ora i codici del 2° esempio, cioè impostando lo stop loss automaticamente a livello del minimo
della candela di nuovo massimo per un trade long e a livello del massimo della candela di nuovo minimo
per un trade short con un target profit da ottimizzare il base al rapporto rischio-rendimento.
Quindi impostiamo gli stop loss come differenza tra il livello di entry trade, cioè l'apertura della successiva
che corrisponde alla chiusura del giorno in cui avviene il segnale, salvo aperture in gap.
DEFPARAM CUMULATEORDERS=false
// definizione indicatori
massimo=highest[X](high)[1]
minimo=lowest[X](low)[1]
// definizione condizioni
C1=close>massimo
C2=close<minimo
C3=close[0]-low[0]
C4=high[0]-close[0]
// apertura long
If C1 then
BUY 1 shares AT MARKET
// apertura short
If C2 THEN
SELLSHORT 1 shares AT MARKET
ENDIF
Il risultato è stato: X=60 e Y=6,8 per un profitto pari al 58,78 % del conto.