Strategia di Trading con Tre Medie Mobili: Guida all'Utilizzo di MQL5 Wizard

Mike 2011.01.10 19:41 30 0 0
Allegato

MQL5 Wizard è uno strumento che ti permette di generare automaticamente il codice per i tuoi Expert Advisor. Per maggiori dettagli, puoi consultare l'articolo su Creazione di Expert Advisor Pronti in MQL5 Wizard.

Oggi parliamo di una strategia di trend che si basa su tre medie mobili. Questa strategia si chiama "Segnali basati su tre EMA". Per determinare il trend, utilizziamo tre medie mobili esponenziali: FastEMA, MediumEMA e SlowEMA.

Segnali di Trading:

  • Segnale di acquisto: FastEMA > MediumEMA > SlowEMA (trend rialzista).
  • Segnale di vendita: FastEMA < MediumEMA < SlowEMA (trend ribassista).

Questa strategia è implementata nella classe CSignal3EMA (il file signal3ema.mqh deve essere posizionato in terminal_data_folder\MQL5\Include\Expert\Signal\Signal3EMA.mqh).

Figura 1. Segnali di Trading basati su tre medie mobili

Figura 1. Segnali di Trading basati su tre medie mobili

Dettagli sui Segnali di Trading

La strategia di trading è implementata nella classe CSignal3EMA, che dispone di alcuni metodi protetti per semplificare l'accesso ai valori delle tre medie mobili (Fast, Medium, Slow):

double FastEMA(int ind)       // restituisce il valore della Fast EMA della barra
double MediumEMA(int ind)     // restituisce il valore della Medium EMA della barra
double SlowEMA(int ind)       // restituisce il valore della Slow EMA della barra
I valori dell'indicatore della barra 0 (non completata) possono cambiare, quindi è necessario controllare le condizioni di trading utilizzando i dati delle barre completate.

1. Apertura di una posizione long

Il trend rialzista è determinato dalla seguente condizione: FastEMA > MediumEMA > SlowEMA:

  • FastEMA(1) > MediumEMA(1): la Fast EMA è superiore alla Medium EMA (ultima barra completata);
  • MediumEMA(2) > SlowEMA(1): la Medium EMA è superiore alla Slow EMA (ultima barra completata);
//+------------------------------------------------------------------+
//| Controlla le condizioni per aprire una posizione long (buy)       |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
   sl   =m_symbol.Ask()-m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Ask()+m_take_profit*m_adjusted_point;
//--- controlla il trend rialzista (sull'ultima barra completata): FastEMA(1)>MediumEMA(1)>SlowEMA(1)
    return(FastEMA(1)>medium && medium>SlowEMA(1));
  }

2. Chiusura della posizione long

Il trend ribassista è determinato dalla seguente condizione: FastEMA < MediumEMA < SlowEMA:

  • FastEMA(1) < MediumEMA(1): la Fast EMA è inferiore alla Medium EMA (ultima barra completata);
  • MediumEMA(2) < SlowEMA(1): la Medium EMA è inferiore alla Slow EMA (ultima barra completata);
//+------------------------------------------------------------------+
//| Controlla le condizioni per chiudere una posizione long            |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckCloseLong(double& price)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
//--- controlla il trend ribassista (sull'ultima barra completata): FastEMA(1)<MediumEMA(1)<SlowEMA(1)
   return(FastEMA(1)<medium && medium<SlowEMA(1));
  }
Puoi migliorare la chiusura della posizione long: non è necessario attendere il trend ribassista, puoi chiudere le posizioni long anche quando il trend è piatto, il che può essere determinato dalle seguenti condizioni: FastEMA < MediumEMA > SlowEMA.

3. Apertura di una posizione short

//+------------------------------------------------------------------+
//| Controlla le condizioni per aprire una posizione short (sell)     |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
   sl   =m_symbol.Bid()+m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Bid()-m_take_profit*m_adjusted_point;
//--- controlla il trend ribassista (sull'ultima barra completata): FastEMA(1)<MediumEMA(1)<SlowEMA(1)
   return(FastEMA(1)<medium && medium<SlowEMA(1));
  }

4. Chiusura della posizione short

//+------------------------------------------------------------------+
//| Controlla le condizioni per chiudere una posizione short           |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckCloseShort(double& price)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
//--- controlla il trend rialzista (sull'ultima barra completata): FastEMA(1)>MediumEMA(1)>SlowEMA(1)
   return(FastEMA(1)>medium && medium>SlowEMA(1));
  }

Puoi migliorare la chiusura della posizione short: non è necessario attendere il trend rialzista, puoi chiudere le posizioni short anche quando il trend è piatto, il che può essere determinato dalle seguenti condizioni: FastEMA > MediumEMA < SlowEMA.


Creazione dell'Expert Advisor utilizzando MQL5 Wizard

Per creare un robot di trading basato sulla strategia, devi selezionare le proprietà del segnale come "Segnali basati su tre EMA" nell'opzione "Creazione di Expert Advisor Pronti" di MQL5 Wizard:

Figura 2. Scegli

Figura 2. Scegli "Segnali basati su tre EMA" in MQL5 Wizard

Poi dovrai specificare l'algoritmo di trailing stop e il sistema di gestione del denaro e del rischio necessari. Il codice dell'Expert Advisor verrà creato automaticamente, potrai compilarlo e testarlo nel Tester di Strategia del terminale MetaTrader 5.


Risultati dei Test

Esaminiamo il backtesting dell'Expert Advisor su dati storici (EURUSD H1, periodo di test: 1.1.2010-05.01.2011, FastPeriod=5, MediumPeriod=12, SlowPeriod=24, StopLoss=400, TakeProfit=900).

Per la creazione dell'Expert Advisor abbiamo utilizzato un volume fisso (Trading a Lotto Fisso, 0.1), l'algoritmo di Trailing Stop non è stato utilizzato (Trailing non utilizzato).

Figura 3. Risultati storici del backtesting dell'Expert Advisor, basato su tre EMA

Figura 3. Risultati storici del backtesting dell'Expert Advisor, basato su tre EMA

Allegati: Il file Signal3EMA.mqh con la classe CSignal3EMA deve essere posizionato in terminal_data_folder\MQL5\Include\Expert\Signal.
Il file threeema.mq5 contiene il codice dell'Expert Advisor, creato utilizzando MQL5 Wizard.


Elenco
Commento 0