MQL5 Wizard è uno strumento fantastico che ti permette di generare automaticamente il codice per i tuoi Expert Advisor. Se vuoi approfondire, dai un'occhiata a Come Creare Expert Advisors Pronti all'uso con MQL5 Wizard.
In questo articolo, ci concentreremo su una strategia di trading basata sul crossover di due medie mobili esponenziali (fast EMA e slow EMA). La strategia è denominata "Segnali basati sul crossover di due EMA" (quando crei un EA automaticamente in MQL5 Wizard).
Ecco i segnali di trading:
- Acquista: il Fast EMA incrocia verso l'alto il Slow EMA
- Vendi: il Fast EMA incrocia verso il basso il Slow EMA
Questa strategia è implementata nella classe CSignalCrossEMA.

Figura 1. Segnali di trading, basati sul crossover di due medie mobili esponenziali
Segnali di Trading
La strategia di trading è implementata nella classe CSignalCrossEMA, la quale contiene alcuni metodi protetti per semplificare l'accesso ai valori degli indicatori:
double FastEMA(int ind) // restituisce il valore della media mobile veloce della barra double SlowEMA(int ind) // restituisce il valore della media mobile lenta della barra double StateEMA(int ind) // restituisce la differenza tra le medie mobili veloce e lenta della barra
1. Apertura di una posizione long
Condizioni per aprire una posizione long:
- StateEMA(1)>0 e StateEMA(2)<0: il Fast EMA ha incrociato verso l'alto il Slow EMA nell'ultima barra completata.
//+------------------------------------------------------------------+ //| Controlla le condizioni per aprire una posizione long (buy) | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false); //--- price=0.0; sl =0.0; tp =0.0; //--- return(true); }
2. Chiusura di una posizione long
Condizioni per chiudere una posizione long:
- StateEMA(1)<0 e StateEMA(2)>0: il Fast EMA ha incrociato verso il basso il Slow EMA nell'ultima barra completata.
//+------------------------------------------------------------------+ //| Controlla le condizioni per chiudere una posizione long | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckCloseLong(double& price) { if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false); //--- price=0.0; //--- return(true); }
3. Apertura di una posizione short
Le condizioni per aprire una posizione short sono le stesse delle condizioni di chiusura della posizione long.
//+------------------------------------------------------------------+ //| Controlla le condizioni per aprire una posizione short (sell) | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false); //--- price=0.0; sl =0.0; tp =0.0; //--- return(true); }
4. Chiusura di una posizione short
Le condizioni per chiudere una posizione short sono le stesse delle condizioni di apertura della posizione long.
//+------------------------------------------------------------------+ //| Controlla le condizioni per chiudere una posizione short | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckCloseShort(double& price) { if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false); //--- price=0.0; //--- return(true); }
Creazione di un Expert Advisor con MQL5 Wizard
Per creare un robot di trading basato sulla strategia, devi selezionare le proprietà del segnale come "Segnali basati sul crossover di due EMA" nell'opzione "Creazione di Expert Advisors Pronti all'uso" di MQL5 Wizard:

Figura 2. Scegli "Segnali basati sul crossover di due EMA" in MQL5 Wizard
Dopo, dovrai specificare il necessario algoritmo di trailing stop e il sistema di gestione della denaro e dei rischi. Il codice dell'Expert Advisor verrà creato automaticamente, potrai compilarlo e testarlo nel Strategy Tester del terminale client MetaTrader 5.
Inoltre, le classi della libreria standard contengono i "Segnali basati sul crossover di due MA", implementati nella classe CSignalCrossMA. L'idea di trading è simile, ma offre molte funzionalità aggiuntive (specificare tipi, spostamenti e metodi di media e utilizzare livelli di Take Profit e Stop Loss).

Figura 3. "Segnali basati sul crossover di due MA" in MQL5 Wizard
Risultati dei Test
Analizziamo il backtesting dell'Expert Advisor su dati storici (EURUSD H1, periodo di test: 1.1.2010-05.01.2011, FastPeriod=12, SlowPeriod=24).
Nella creazione dell'Expert Advisor abbiamo utilizzato un volume fisso (Trading Fixed Lot, 0.1), l'algoritmo di Trailing Stop non è stato utilizzato (Trailing non utilizzato).

Figura 4. Risultati storici del backtesting dell'Expert Advisor, basato sul crossover di due EMA
Allegati: Il SignalCrossEMA.mqh con la classe CSignalCrossEMA deve essere posizionato nella cartella terminal_data_folder\MQL5\Include\Expert\Signal.
Il crossover_2ema.mq5 contiene il codice dell'Expert Advisor, creato utilizzando MQL5 Wizard.
Commento 0