English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Türkçe
preview
Un'analisi del motivo per cui gli Expert Advisor falliscono

Un'analisi del motivo per cui gli Expert Advisor falliscono

MetaTrader 5Expert Advisors | 2 agosto 2022, 16:19
394 0
Richard Poster
Richard Poster

Introduzione

Gli Expert Advisor (EA) possono ottenere buoni risultati nell’arco di mesi o anche di pochi anni, ma ricorrono sempre periodi in cui le loro prestazioni diventano scadenti. Gli EA generano raramente un livello di profitto costante per un periodo di tempo prolungato, ad esempio dieci anni. Quando sappiamo che un EA ha attraversato periodi di scarso rendimento, è lecito chiedersi come ci si possa aspettare che funzioni sempre bene in futuro?

In questa analisi sorgono due domande: Quali cambiamenti si verificano nei dati delle serie temporali che influiscono fortemente sulle prestazioni dell'EA? Esiste un indicatore tecnico in grado di prevedere quando un EA registrerà prestazioni scarse e quando buone? Un indicatore del genere sarebbe estremamente prezioso!


Trigger di Incrocio di Medie Mobili

Per studiare questi problemi, vengono utilizzati dati del mercato forex di 15 minuti su un periodo di sedici anni insieme a una strategia di prova, l’Incrocio di Medie Mobili. Il trigger MAC (Incrocio di Medie Mobili), consiste nella generazione di un segnale d’acquisto quando la Media Mobile Semplice (SMA) veloce incrocia al rialzo la SMA lenta. Un segnale di vendita viene generato quando la SMA veloce incrocia al ribasso la SMA lenta. La strategia MAC dovrebbe fornire un buon banco di prova per lo studio. I parametri chiave di input per la strategia MAC sono i periodi attribuiti alle SMA, veloce e lenta. Il periodo della SMA veloce è in genere compreso tra 1 e 4 in questi studi e il periodo della SMA lenta è compreso tra 10 e 150. Si assume che entrambi i valori siano costanti durante il periodo di test.

La figura 1 mostra il comportamento di rendimento del profitto del trigger SMA Crossover per la coppia di valute EURUSD da gennaio 2006 a dicembre 2021. Per i periodi ottimizzati delle SMA veloce e lenta di 2 e 80, l'EA ha un ritorno positivo in alcuni intervalli e uno negativo per altri. Nel periodo 1/2008 – 6/2013 la strategia registra una crescita costante degli utili. La Figura 2 mostra l’andamento del rendimento del trigger SMA Crossover per la coppia valutaria GBPUSD nello stesso intervallo temporale. I periodi ottimizzati delle SMA sono di 1 e 80. Il grafico di GBPUSD mostra solo brevi periodi di rendimento positivo.

Fig_1_EURUSD_SMACross

Figura 1.  EURUSD SMA Cross Trigger Profit (0.1 Lot)


     

Fig_2_GBPUSD_SMACross

  Figura 2. GBPUSD SMA Cross Trigger Profit (0.1 Lot)

Dati gli andamenti nel tempo mostrati nelle Figure 1 e 2, possiamo esaminare il comportamento di indicatori tecnici comuni per determinare se esiste una relazione tra il comportamento dell'indicatore tecnico nel tempo e i rendimenti generati dal pattern di incrocio delle medie mobili, nel tempo. 


Comportamento degli indicatori tecnici tradizionali

È possibile esaminare diversi indicatori tecnici standard per vedere se il loro comportamento è diverso in intervalli temporali di rendimento positivo e negativo. La figura 3 mostra l'indicatore ATR (Average True Range) mensile su un periodo di sedici anni per EURUSD. L'indicatore ATR fornisce una misura della volatilità della coppia valutaria. Mostra un comportamento dipendente dall’intervallo temporale definito. Non c’è invece corrispondenza con l’andamento dei profitti nel tempo (Figura 1). È interessante notare che la figura 3 mostra l'estrema volatilità nel periodo della crisi economica alla fine del 2008 e di nuovo all'inizio del 2020. Suggerisce inoltre che utilizzare soglie assolute di variazione dei prezzi per attivare la logica non è saggio e che dovrebbe essere considerato un valore ATR smoothed. Un altro indicatore tecnico comune è il Bollinger Bands. Questo indicatore dovrebbe essere influenzato sia dalla volatilità che dalla forza del trend. Sorprendentemente, il suo comportamento mensile a lungo termine, come mostrato nella Figura 4, è quasi identico a quello dell'indicatore ATR. Come l'indicatore ATR, non ha un andamento corrispondente agli intervalli temporali di rendimento positivo e negativo su EURUSD (Figura 1). Risultati simili si vedono su GBPUSD. La volatilità a lungo termine non tiene conto dell'andamento nel tempo che osserviamo nelle figure 1 e 2.


Fig_3_ATRvsMth

Figura 3. EURUSD ATR, Media Mensile

FIG_4_BBSpreadVsMth

Figura 4. EURUSD Bollinger Band Spread, Media Mensile


Funzione di autocorrelazione come indicatore

A differenza degli indicatori ATR e Bollinger Bands, l'AutoCorrelation Function (ACF) non dipende dalla volatilità. L'ACF è uno strumento utile per trovare pattern nei dati delle serie temporali. L'ACF misura la correlazione di elementi in una serie temporale, in cui alcuni elementi sono intervallati da un lasso di tempo. Quando nei dati è presente un trend, l'ACF, per piccoli ritardi, avrà valori positivi. In questa analisi, l'elemento Yi della serie storica è definito come il (Prezzo di chiusura - Prezzo di apertura) della barra i.

Per una serie temporale di N elementi Yi , i =1...N, l'ACF è definito come:

ACF_EquationV2

La funzione di autocorrelazione per una serie di dati di prezzo è molto diversa dall'autocorrelazione di una serie di dati di variazione dei prezzi da barra a barra. Ad esempio, per una serie di numeri {1,2,3..14} l'ACF è 0,786. Per una serie di differenze tra elementi consecutivi di quell'array, l'ACF sarà vicino allo zero (assumendo un piccolo rumore nei valori per evitare la divisione per zero).

Il calcolo dell'ACF è implementato nel seguente frammento di codice:

 double GetAtCorrVal(double &ClsOpn[],int CorrPer, int LagPer,int joff ) {
   double corr;
   double AIn[],BIn[];
   double XMean,XNum,XDen;
   int jj;
   ArrayResize(AIn,CorrPer);
   ArrayResize(BIn,CorrPer);
   XMean = 0.;
   XNum = 0.;
   XDen = 0.;
   corr = 0.;
   if(CorrPer<2)
    {
     Print("No AutoCorr Processing Allowed ");
     return(corr);
    }
   // mean
   for(jj=0;jj<CorrPer;jj++)
    {
     XMean +=ClsOpn[jj+joff];
    }
   XMean = XMean/CorrPer;
  // variances
   for(jj=0;jj<CorrPer;jj++)
    {
     if(jj<(CorrPer-LagPer))
       XNum  += (ClsOpn[jj+joff]-XMean)*(ClsOpn[jj+LagPer+joff]-XMean);
     XDen += (ClsOpn[jj+joff]-XMean)*(ClsOpn[jj+joff]-XMean);
    }  
    if(XDen==0.)
     {
      corr = 0.;
     }
    else
    corr = XNum/XDen;
   return(corr);
  }
//----------------------------------------------------------------

  

La figura 5 mostra la media mensile dell'ACF in un periodo di sedici anni per i dati di EURUSD, con un periodo di smoothing di sei mesi. La Figura 1 mostra un rendimento positivo tra il 2008 e la fine del 2012, mentre la Figura 5 mostra anche un valore ACF leggermente più alto in questo intervallo temporale, suggerendo una possibile relazione tra l’andamento dei profitti della strategia MAC e il valore dell'ACF.


Fig_5_EURUSD_ACFvsMth

Figura 5. EURUSD AutoCorrelation Function Monthly Average


Nei dati di GBUUSD mostrati nella Figura 6, è possibile notare una debole correlazione tra l’andamento dei profitti (esibito nella Figura 2) e il valore ACF.

Fig_6_GBPUSD_ACFvsMth


 Figura 6. GBPUSD AutoCorrelation Function Monthly Average

La funzione di correlazione automatica può essere utilizzata come indicatore (AutoCorr.mq5) ma, come si vede in Figura 7, non è un buon indicatore per identificare il trend.


Fig_7_EURUSD_ACFIndicator

Figura 7. ACF Indicator, Lag=1

Comportamento nel tempo dell’ACF e strategia di Incrocio delle SMA

Ulteriori informazioni possono essere trovate osservando l’andamento nel tempo dell'ACF appena prima del punto incui avviene l’incrocio delle SMA (Trigger ACF) e anche, subito dopo il punto l’incrocio, mentre l’operazione è ancora aperta (Trade ACF). I due tipi di ACF, Trade ACF e Trigger ACF hanno proprietà distinte. Le figure 8 e 9 mostrano l'ACF commerciale per i dati EURUSD e GBPUSD. Utilizzando il Tester di strategia, il valore ACF può essere tracciato separatamente per le operazioni in profitto e in perdita, in funzione del tempo. Entrambi i grafici mostrano una separazione variabile nel tempo dell'ACF tra operazioni in profitto e perdita. L’intervallo in profitto 1/2008-6/2013 della figura 1 (EURUSD) corrisponde grosso modo a un intervallo della figura 8 in cui anche la separazione dell'ACF è ampia. A partire dal 1/2018, c'è poca separazione tra i valori ACF per le operazioni di profitti e perdite. Nella Figura 1, questo corrisponde a un intervallo di rendimenti piatti.


Fig_8_EURUSD_TradeACF

  Figura 8.  Trade AutoCorrelation for EURUSD for SMA Cross Triggers


Fig_9_GBPUSD_TradeACF

Figura 9. Trade AutoCorrelation for GBPUSD for SMA Cross Triggers

Le Figure 10 e 11 mostrano il Trigger ACF per i dati di EURUSD e GBPUSD. Lo scopo di questi due grafici è indagare se il valore Trigger ACF può essere utilizzato come filtro in un Expert Advisor per migliorare la redditività della strategia Incrocio delle SMA. Rispetto ai dati Trade ACF, i dati trigger ACF mostrano una minore separazione tra rendimenti positivi e negativi. Questo ridimensiona il suo valore come filtro trigger. Tuttavia, il valore dell'ACF è sostanzialmente piatto nel tempo, indicando che una soglia costante dell'ACF potrebbe essere utilizzata come filtro per l’indicazione operativa. Le curve profitto/perdita rimbalzano in gran parte l'una sull'altra, il che significa che ci sono intervalli temporali in cui le operazioni non sarebbero profittevoli.


Fig_10_EURUSD_TriggerCF

 Figura 10.  Trigger AutoCorrelation for EURUSD for SMA Cross Triggers


Fig_11_GBPUSD_TriggerACF

Figura 11. Trigger AutoCorrelation for GBPUSD for SMA Cross Triggers


Filtro ACF per il Trigger dell’incrocio delle SMA

Nonostante le piccole differenze ACF tra le operazioni con rendimenti positivi e negativi (Figure 10 e 11), se al trigger dell’incrocio delle SMA viene aggiunto una soglia di autocorrelazione, la performance dell'expert advisor migliora negli intervalli con scarso rendimento. Le figure 12 e 13 mostrano l’andamento dei profitti dell'EA con un filtro ACF aggiuntivo per i dati di EURUSD e GBPUSD. Viene utilizzata l'intero periodo di sedici anni. Confrontando le figure 1 e 2 con le figure 12 e 13, l’andamento dei rendimenti per i dati EURUSD e GBPUSD è notevolmente migliorato dopo l’applicazione di una soglia di autocorrelazione.


Fig_12_EURUSD_SMACrossCorr

Figura 12. EURUSD Crossover Trigger With ACF Filter

Fig_13_GBPUSD_SMACrossCorr

Figura 13. GBPUSD Crossover Trigger With ACF Filter


La Figura 14 mostra una tabella dei risultati delle prestazioni del Tester di strategia. Si osserva un miglioramento significativo sia per i dati EURUSD che per quelli GBPUSD. In entrambi i casi, il profitto totale aumenta di circa il 50% quando il filtro ACF è abilitato e anche il profitto per trade (PO) viene notevolmente migliorato.

Trigger Type

# Trades

Profit $

(0.1 Lot)

Profit/Loss (PF)

Prof/Trade (PO)

EURUSD SMA Cross

3160

5830.

1.10

1.85

EURUSD SMA Cross + ACF

1548

8511.

1.33

5.50

GBPUSD SMA Cross

3672

5352.

1.07

1.46

GBPUSD SMA Cross + ACF

3096

8317.

1.13

2.69

Figura 14. Test Performance Table for EURUSD and GBPUSD Data


Dipendenza dell’ACF dal periodo della SMA lenta per la strategia di incrocio delle SMA


È anche interessante esaminare la dipendenza della funzione di autocorrelazione media dalla scelta del periodo della SMA lenta per le operazioni vincenti e perdenti. Questo è mostrato per i dati di EURUSD M15 nella Figura 15. Nessuna soglia di correlazione viene utilizzata come parte della strategia di apertura dell’operazione. Indipendentemente dal valore dell’ACF, il periodo ottimale per la strategia di Incrocio delle SMA è stato fissato a 80. La Figura 15 mostra che la più grande separazione del valore medio dell'ACF, tra operazioni vincenti e perdenti, si verifica per periodi della SMA lenta compresi tra 65 e 80. Ulteriori analisi potrebbero portare all'utilizzo delle informazioni dell’ACF per determinare il periodo ottimale della SMA lenta in base al valore di autocorrelazione misurato al momento dell'apertura dell'operazione. 


Fig_15_AvgACVvsSlowPeriod

Figura 15. Average ACF versus SMA Slow Period for EURUSD

Conclusione

La funzione di autocorrelazione è uno strumento prezioso per migliorare le prestazioni degli Expert Advisor. Migliora l’efficacia del trigger nel test, filtrando gli intervalli in cui le performance sono deludenti.

In generale, i coefficienti di correlazione, inclusa la funzione di autocorrelazione, rappresentano un’interessante area di ricerca per migliorare l'efficienza del trading. Sono immuni agli effetti della volatilità e sono sensibili ai pattern di prezzo, inclusi il trend e l'inversione del trend.



Tradotto dall’inglese da MetaQuotes Ltd.
Articolo originale: https://www.mql5.com/en/articles/3299

File allegati |
AutoCorr.mq5 (4.12 KB)
Indicatori multipli su un grafico (Parte 04): Passiamo a un Expert Advisor Indicatori multipli su un grafico (Parte 04): Passiamo a un Expert Advisor
Nei miei articoli precedenti, ho spiegato come creare un indicatore con più finestre secondarie, cosa che diventa molto utile quando si utilizzano indicatori personalizzati. Qui vedremo invece come aggiungere più finestre a un Expert Advisor.
Scopri come creare un sistema di trading con l’indicatore Momentum Scopri come creare un sistema di trading con l’indicatore Momentum
Nel mio precedente articolo ho parlato dell'importanza di identificare la tendenza di mercato, ovvero la direzione dei prezzi. In questo articolo esaminerò uno dei indicatori tecnici più importanti: l'indicatore Momentum. Vedremo insieme come progettare un sistema di trading basato sul Momentum.
Scopriamo come creare un sistema di trading con l'indicatore RSI Scopriamo come creare un sistema di trading con l'indicatore RSI
In questo articolo, vi parlerò di uno degli indicatori più popolari e utilizzati nel mondo del trading, ovvero l’RSI. Vedremo insieme come mettere in piedi un sistema di trading con questo indicatore.
Indicatori multipli su un grafico (Parte 03): Sviluppo di definizioni per gli utenti Indicatori multipli su un grafico (Parte 03): Sviluppo di definizioni per gli utenti
Oggi aggiorneremo per la prima volta la funzionalità del sistema di indicatori. Nel precedente articolo "Indicatori multipli su un grafico" abbiamo esaminato il codice di base che permette di utilizzare più di un indicatore in una sottofinestra del grafico. Quanto ho presentato è però solo la base di partenza di un sistema molto più ampio.