L'indicatore MACD con Backtrader

L’indicatore MACD con Backtrader

In questo articolo descriviamo come applicare l’indicatore MACD con backtrader per creare e verificare strategie di trading algoritmico.

Introduzione

La popolarità dell’indicatore Moving Average C nvergence Divergence (MACD) lo rende un buon candidato da testare. È stato sviluppato per la prima volta alla fine degli anni ’70 da Gerald Appel e fornisce a un trader un’indicazione della forza, della direzione e del momentum di uno strumento. In generale, mostra la relazione tra due medie mobili, ma a prima vista potrebbe sembrare che ci sia dell’altro. Analizziamo le diverse parti.

Backtrader-MACD-Overview-trading
  • Linea MACD: questa linea è creata sottraendo il valore di una media mobile esponenziale veloce (EMA) da una seconda EMA più lenta. Pertanto, la linea MACD indica la differenza tra i due valori. Quando la linea è sopra lo zero significa che l’EMA veloce è sopra l’EMA lenta (in altre parole, in un trend rialzista)Al contrario, quando la linea è sotto lo zero, il valore dell’EMA veloce è inferiore all’EMA lenta. Infine, quando la linea incrocia lo zero, significa che si è verificato un crossover EMA.
  • Linea di segnale: la linea di segnale è una media mobile esponenziale dei valori della linea MACD. Quindi è una linea in ritardo rispetto alla linea MACD. I segnali di acquisto/vendita possono essere generati dal crossover tra la linea MACD e la linea di segnale.
  • Istogramma: l’istogramma mostra la relazione tra la linea MACD e la linea del segnale. Proprio come la linea MACD mostra la relazione tra due EMA, l’istogramma attraversa la linea zero quando la linea del segnale attraversa la linea MACD.

Segnali MACD

È possibile generare una serie di segnali di entrata e uscita tramite l’indicatore MACD. Alcuni esempi sono:

  • Incrocio della linea di segnale: compriamo su un incrocio al rialzo e vendiamo su un incrocio al ribasso.
  • MACD line zero crossover: Essenzialmente un crossover EMA. Anche in questo caso, acquistiamo al cross up e vendiamo al cross down.
  • Divergenza rialzista: quando il prezzo sui grafici fa un nuovo minimo ma la linea MACD fa un minimo più alto.
  • Divergenza ribassista: è l’opposto del caso precedente. Si verifica quando il  grafico dei prezzi fa un nuovo massimo ma la linea MACD fa un massimo decrescente.

Strategia di test

Poiché esistono diverse interpretazioni del segnale, eseguiremo un test per ciascun tipo di segnale dell’indicatore MACD con backtrader. In questi test, apriamo una posizione long quando si verifica il segnale e chiudiamo la posizione quando si verifica il segnale opposto. Inoltre, creiamo una strategia più complessa che richiede la conferma tra 2 dei possibili segnali che possono essere generati.

Questo articolo fa parte della serie che confronta gli indicatori presenti nella libreria integrata di Backtrader. L’introduzione della serie, alcune note sulla metodologia dei test e la tabella riepilogativa dei risultati è disponibile in questo articolo.

Nota: i risultati mostrati in questo articolo non riflettono le prestazioni del mondo reale. Come accennato nell’introduzione e nell’articolo riepilogativo, i test non includo le commissioni, le leva e il margine. Lo scopo di questi test è confrontare gli indicatori l’uno con l’altro dove tutti gli altri fattori sono uguali. Per ulteriori informazioni su come sono eseguite tutte le analisi degli indicatori, fare riferimento all’articolo riepilogativo. 

Ottimizzazione

L’indicatore MACD con backtrader ha diversi parametri di input. Per motivi di tempo e efficienza, non sono state testate tutte le possibili combinazione di parametri. L’ottimizzazione è stata eseguita usando i valori classici che si trovano in letteratura (12,26,9) come punto di partenza e quindi:

  • Effettuare test con valori multipli dei parametri (Ad es. 24,52,18).
  • Una “popolare” configurazione (5,35,5) secondo Wikipedia .
  • I valori comuni per i crossover della media mobile.

La lista dei valori risultanti dall’ottimizzazione è disponibile al seguente link: Lista Ottimizzazione MACD

Nota: abbiamo inserito alcune ottimizzazioni aggiuntive per i test di divergenza e confluenza e sono descritti di seguito. 

Risultati dell’indicatore MACD con backtrader 

Per chi non è interessato all’analisi e alle note dei test, cominciamo con un riepilogo dei risultati

Caso di TestPNL migliorePNL peggiorePnL medio dei parametri standardPnL medioMiglior tasso di strikePeggior tasso di strikeTasso di strike medioParametri migliori (media di tutti i mercati)Parametri peggiori (media di tutti i mercati)PnL medio per i parametri miglioriPnL medio per i parametri peggiori
MACD - Incrocio linea zero239,95-204.3416.8738.1246.1521.7431.18fast_ema: 7
slow_ema: 21 signal_period: 7
fast_ema: 12
slow_ema: 26
signal_period: 9
151.715-29.1275
MACD - Incrocio linea di segnale285.2-211,6656.667531.3443.6225.6835.19fast_ema: 7
slow ema: 21
signal_period: 5
fast_ema: 50
slow_ema: 100
signal_period: 10
129.2925-96.7375
MACD - Divergenza con Entry per crossover zero e Exit per crossover segnale197,54-110,8345.5152.06100038.28fast_ema: 12
slow_ema: 26
signal_period: 12
swing_period: 7
fast_ema: 36
slow_ema: 78
signal_period: 36
swing_period: 7
48.945-50.8125
MACD - Divergenza con conferma per crossover zero217.1-118,3617.797510.49100034,89fast_ema: 6
slow_ema: 13
signal_period: 4
swing_period: 14
fast_ema: 24
slow_ema: 52
signal_period: 18
swing_period: 5
70.32-42.22
MACD - Divergenza con conferma per crossover segnale270,48-178,7334.117511.568,759.0936.3fast_ema: 40
slow_ema: 200
signal_period: 10
swing_period: 14
fast_ema: 20
slow_ema: 50
signal_period: 10
swing_period: 5
96.955-59.995
MACD - Divergenza517,83-447,88112.737554.7364.7123.8149.42fast_ema: 7
slow_ema: 21
signal_period: 14
swing_period: 7
fast_ema: 40
slow_ema: 200
signal_period: 40
swing_period: 21
201.9425-137.465

La tabella precedente segue lo stesso formato della tabella presente nell’articolo riepilogativo dei migliori indicatori Forex, quindi  riportiamo le stesse note.

  1. PNL medio per i valori medi: viene calcolato dal PNL medio registrato in tutti e quattro i mercati sotto test.
  2. Il migliore tasso di strike potrebbe non provenire dallo stesso test con PnL migliore. In alcuni casi potrebbe provenire da un test con parametri o mercati diversi.
  3. I parametri migliori e peggiori considerano il PnL medio per specifici parametri in tutti e quattro i mercati e si riportano i migliori e peggiori Pnl.

Dopo aver esaminato i risultati, possiamo rimanere sorpresi nel vedere che il trading sui semplici segnali di divergenza del MACD è il più redditizio quando si usano i parametri con le migliori prestazioni medie in tutti i mercati (invece di concentrarsi solo su una configurazione di parametri che può essere quella fortunata per un mercato).

Incrocio della linea di segnale

Il primo test che abbiamo effettuato per l’indicatore MACD con backtrader prevede di generare i segnali di acquisto/vendita quando la linea MACD incrocia la linea  di segnale.

Criteri di ingresso/uscita

  • Entry Long:  quando la linea MACD incrocia verso l’altro la linea di segnale .
  • Entry Short: quando la linea MACD incrocia verso il basso la linea di segnale.
  • Exit Long: quando la linea MACD incrocia verso il basso la linea di segnale.
  • Exit Short: quando la linea MACD incrocia verso l’altro la linea di segnale.

Risultati

PnL migliorePnL peggiorePnL Medio con parametri standardPnL medioStrike Rate miglioreStrike Rate peggioreStrike Rate medioParametri migliori (medio per tutti i mecarti)Parametri peggiori (medio per tutti i mecarti)PnL medio con i parametri miglioriPnL medio con i parametri peggiori
285.2-211.6656.667531.3443.6225.6835.19fast_ema: 7
slow ema: 21
signal_period: 5
fast_ema: 50
slow_ema: 100
signal_period: 10
129.2925-96.7375

Il crossover della linea del segnale favorisce i parametri che usano EMA più brevi. I migliori parametri in assoluto su tutti i mercati sono di durata inferiore rispetto ai valori predefiniti per .l’indicatore. Per quanto riguarda le prestazioni, questa strategia si è posizionata a metà classifica  per i migliori parametri medi in tutti i mercati.

Incrocio della linea zero

La logica della strategia del crossover della linea zero è essenzialmente la stessa della strategia del crossover della media mobile esponenziale. In altre parole, se imposti due medie mobili esponenziali e compri e vendi sui crossover, i risultati dovrebbero essere gli stessi a parità dei valori dei parametri (periodi delle EMA). Da notare che, a causa della logica della strategia, la linea di segnale non ha alcun effetto sul PnL finale. Pertanto, le migliori configurazioni dei parametri indicate di seguito producono gli stessi risultati indipendentemente dal valore del parametro del livello del segnale.

Criteri di ingresso/uscita

  • Long: Quando la linea MACD incrocia al rialzo la linea dello zero.
  • Short: Quando la linea MACD incrocia al ribasso la linea dello zero.
  • Exit Long: Quando la linea MACD incrocia al ribasso la linea dello zero.
  • Exit Short: Quando la linea MACD incrocia al rialzo la linea dello zero.

Risultati

PnL migliorePnL peggiorePnL Medio con parametri standardPnL medioStrike Rate miglioreStrike Rate peggioreStrike Rate medioParametri migliori (medio per tutti i mecarti)Parametri peggiori (medio per tutti i mecarti)PnL medio con i parametri miglioriPnL medio con i parametri peggiori
239,95-204.3416.8738.1246.1521.7431.18fast_ema: 7
slow_ema: 21
signal_period: 7
fast_ema:12
slow_ema: 26
signal_period:9
151.715-29.1275

Dato che il crossover dello zero è semplicemente l’incrocio di due medie mobili, i risultati sono molto simili a quelli descritti nell’articolo Crossover della Media Mobile Semplice con Backtrader. Tuttavia, sembra che le strategie basate sull’EMA preferiscano periodi di rolling più brevi. Possiamo approfondire questo aspetto in un ulteriormente  articolo.

Divergenza rialzista/ribassista

Per eseguire correttamente questo test dobbiamo applicare un indicatore di pivot alla strategia in modo da identificare i pivot/swing. I parametri di  questo indicatore aggiuntivo possono influenzare l’esito dei test. L’indicatore pivot prevede semplicemente un periodo  di lookback, dove  considerare le candele storiche e verificare se è presente un massimo più alto o un minimo più basso. In tal caso, generiamo un segnale per indicare che abbiamo trovato un pivot/swing.

Questo indicatore di pivot/swing identifica i possibili cambi di trend in modo semplice. Guarderà indietro una candela storica e verificherà se quella candela era il massimo più alto o il minimo più basso per un dato periodo. Nel testare questa strategia, durante l’ottimizzazione sono stati utilizzati periodi di lookback brevi e lunghi (5,7,9,13,21 giorni). Un periodo di 7, ad esempio, verificherà 7 candele prima e dopo la candela in esame.

Criteri di ingresso/uscita

La strategia verifica i prezzi degli ultimi due swing massimi/minimi e li confronta con i valori della linea MACD per la stessa barra/candela. Se il prezzo è in aumento ma il MACD è in calo, abbiamo una divergenza.

  • Long: quando si verifica una divergenza rialzista
  • Short: quando si verifica una divergenza ribassista
  • Exit Long: quando si verifica una divergenza ribassista
  • Exit Short: quando si verifica una divergenza rialzista

Infine, se non abbiamo posizioni aperte e si verificano divergenze rialziste e ribassiste allo stesso tempo, non apriamo posizioni poiché il segnale è inconcludente. Si può verificare questo scenario perchè gli swing dei massimi e i minimi sono controllati separatamente.

Risultati

PnL migliorePnL peggiorePnL Medio con parametri standardPnL medioStrike Rate miglioreStrike Rate peggioreStrike Rate medioParametri migliori (medio per tutti i mecarti)Parametri peggiori (medio per tutti i mecarti)PnL medio con i parametri miglioriPnL medio con i parametri peggiori
517.83-447.88112.737554.7364.7123.8149.42fast_ema: 7
slow_ema: 21
signal_period: 14
swing_period: 7
fast_ema: 40
slow_ema: 200
signal_period: 40
swing_period: 21
201.9425-137.465

Tra tutte le strategie testate in questo articolo, questa è la più avanzata. Sia in termini di migliori prestazioni complessive che in termini di migliori  parametri medie. Il tasso di strike medio è di circa il 50%, che può essere abbastanza buono se lo stesso tasso di strike può essere raggiunto con uno stop loss ragionevole e un buon rapporto rischio/rendimento. Possiamo approfondire questi aspetti in un futuro articolo.

Come descritto per il test di crossover della linea zero, il parametro della linea di segnale non ha alcuna influenza sul PnL finale.

Confluenza MACD

Gli ultimi test effettuati combinano il segnale di divergenza con una seconda conferma prima di aprire  una posizione. Spesso ai trader piace aspettare la conferma di un segnale prima di fare  operazioni. Pertanto, può essere utili verificare se uno degli altri segnali del MACD possono essere usati per una buona conferma.

Criteri di ingresso/uscita

  • Long: quando si verifica una divergenza rialzista e un incrocio al rialzo della linea MACD con la linea di segnale.
  • Short: quando si verifica una divergenza ribassista e un incrocio al ribasso della linea MACD con la linea di segnale.
  • Exit Long: quando si verifica una divergenza ribassista OPPURE un incrocio al ribasso della linea MACD con la linea di segnale.
  • Exit Short: quando si verifica una divergenza rialzista OPPURE un incrocio al rialzo della linea MACD con la linea di segnale.

Per completezza, lo stesso test è stato eseguito sostituendo il crossover della linea di segnale con  il crossover della linea di zero e poi, infine, un mix dei due.

Confluenza con il Crossover del Signale

PnL migliorePnL peggiorePnL Medio con parametri standardPnL medioStrike Rate miglioreStrike Rate peggioreStrike Rate medioParametri migliori (medio per tutti i mecarti)Parametri peggiori (medio per tutti i mecarti)PnL medio con i parametri miglioriPnL medio con i parametri peggiori
270,48-178,7334.117511.568,759.0936.3fast_ema: 40
slow_ema: 200
signal_period: 10
swing_period: 14
fast_ema: 20
slow_ema: 50
signal_period: 10
swing_period: 5
96.955-59.995

Nell’immagine seguente è interessante notare che l’aggiunta della seconda conferma ha in realtà ridotto marginalmente il tasso di strike medio rispetto alla sola divergenza. La conferma tramite il crossover della linea di segnale è stata la migliore dei 3 test sui metodi di conferma. Tuttavia, le prestazioni impallidiscono rispetto ai test senza conferma.

Confluenza con il Crossover delle Zero

PnL migliorePnL peggiorePnL Medio con parametri standardPnL medioStrike Rate miglioreStrike Rate peggioreStrike Rate medioParametri migliori (medio per tutti i mecarti)Parametri peggiori (medio per tutti i mecarti)PnL medio con i parametri miglioriPnL medio con i parametri peggiori
217.1-118.3617.797510.49100034.89fast_ema: 6 slow_ema: 13 signal_period: 4 swing_period: 14fast_ema: 24 slow_ema: 52 signal_period: 18 swing_period: 570.32-42.22

Il test della divergenza MACD con una conferma tramite il crossover della linea dello zero mostra un  estremo range di strike rate. Sono stati registrati strike rate sia del 0% che del 100%. Dopo aver verificato i risultati, abbiamo notato che questo è stato causato dalle combinazioni di parametri che non generavano segnali abbastanza validi nel tempo. In altre parole, avevamo una configurazione valida e una vittoria/sconfitta. Le prestazioni complessive sono state leggermente peggiori rispetto alla variante del crossover della linea di segnale. Detto questo, si può notare che questa strategia è un po’ più sicura in quanto le perdite sono generalmente inferiori anche per i parametri peggiori.

Confluenza con mix del Crossover del Segnale e dello Zero

Il test finale tenta di sintonizzare ulteriormente il MACD utilizzando il crossover dello zero per le entrate e il crossover del segnale per le uscite in modo da intercettare le uscite più vicine al massimo/minimo di un movimento swing.

PnL migliorePnL peggiorePnL Medio con parametri standardPnL medioStrike Rate miglioreStrike Rate peggioreStrike Rate medioParametri migliori (medio per tutti i mecarti)Parametri peggiori (medio per tutti i mecarti)PnL medio con i parametri miglioriPnL medio con i parametri peggiori
197.54-110.8345.5152.06100038.28fast_ema: 12
slow_ema: 26
signal_period: 12
swing_period: 7
fast_ema: 36
slow_ema: 78
signal_period: 36
swing_period: 7
48.945-50.8125

In questo test abbiamo lo stesso problema con lo strike rate che abbiamo riscontrato con il test precedente. L’analisi dei rendimenti su un periodo di 12 anni mostra che le performance dei migliori parametri sono state distorte da un anno con una significativa sovraperformance. A causa di questo, la strategia avrebbe richiesto un po’ di fiducia per restare fedele negli anni successivi.

Codice completo

In questo articolo abbiamo descritto come applicare l’indicatore MACD con backtrader per creare e verificare strategie di trading algoritmico. Per il codice completo riportato in questo articolo, si può consultare il seguente repository di github:
https://github.com/datatrading-info/BackTrader

Scroll to Top