MQL5 Wizard è uno strumento fantastico che ti permette di generare il codice per gli Expert Advisor in modo automatico. Se vuoi approfondire, dai un'occhiata a Creare Expert Advisor Pronti in MQL5 Wizard per ulteriori dettagli.
In questo articolo, parleremo di una strategia basata sui segnali di trading generati dal crossover dei prezzi con l'indicatore Moving Average. Questa strategia è conosciuta come "Segnali basati sul crossover dei prezzi con MA" (quando crei un EA automaticamente in MQL5 Wizard).
Segnali di Trading
I segnali di trading sono i seguenti:
- Acquisto: crossover rialzista del prezzo con la Moving Average.
- Vendita: crossover ribassista del prezzo con la Moving Average.
- Il controllo dell'aumento/diminuzione della MA viene utilizzato per filtrare i segnali falsi.
Questa strategia è implementata nella classe CSignalMA della Libreria Standard di MQL5 (si trova in MQL5\Include\Expert\Signal\SignalMA.mqh).

Figure 1. Segnali di trading basati sul crossover dei prezzi con Moving Average
Implementazione della Strategia
La strategia di trading è implementata nella classe CSignalMA, che comprende metodi protetti per semplificare l'accesso agli indicatori e ai valori dei prezzi:
double MA(int ind) // restituisce il valore della moving average della barra double Open(int ind) // restituisce il prezzo di apertura della barra double Close(int ind) // restituisce il prezzo di chiusura della barra double StateMA(int ind) // restituisce valore positivo se la media aumenta e negativo se diminuisce double StateOpen(int ind) // restituisce la differenza tra il prezzo di apertura e la moving average double StateClose(int ind) // restituisce la differenza tra il prezzo di chiusura e la moving average
1. Aprire una posizione long
Condizioni per aprire una posizione long (crossover dei prezzi con MA e controllo dell'aumento della MA):
- Open(1)<MA(1): il prezzo di apertura è inferiore alla moving average;
- Close(1)>MA(1): il prezzo di chiusura è superiore alla moving average;
- MA(1)>MA(2): controllo dell'aumento della moving average (per filtrare segnali falsi).
//+------------------------------------------------------------------+ //| Controlla le condizioni per aprire una posizione long (acquisto) | //+------------------------------------------------------------------+ bool CSignalMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =0.0; tp =0.0; //--- il prezzo ha incrociato verso l'alto la MA e la MA aumenta return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0); }
2. Chiudere una posizione long
Condizioni per chiudere una posizione long (crossover dei prezzi con MA e controllo della diminuzione della MA):
- Open(1)>MA(1): il prezzo di apertura è superiore alla moving average;
- Close(1)<MA(1): il prezzo di chiusura è inferiore alla moving average;
- MA(1)<MA(2): controllo della diminuzione della moving average (per filtrare segnali falsi).
//+------------------------------------------------------------------+ //| Controlla le condizioni per chiudere una posizione long | //+------------------------------------------------------------------+ bool CSignalMA::CheckCloseLong(double& price) { price=0.0; //--- il prezzo ha incrociato la moving average verso il basso e la moving average diminuisce return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0); }
3. Aprire una posizione short
Le condizioni per aprire una posizione short sono le stesse delle condizioni di chiusura delle posizioni long.
//+------------------------------------------------------------------+ //| Controlla le condizioni per aprire una posizione short (vendita) | //+------------------------------------------------------------------+ bool CSignalMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =0.0; tp =0.0; //--- il prezzo ha incrociato la moving average verso l'alto e la moving average diminuisce return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0); }
4. Chiudere una posizione short
Le condizioni per chiudere una posizione short sono le stesse delle condizioni di apertura delle posizioni long.
//+------------------------------------------------------------------+ //| Controlla le condizioni per chiudere una posizione short | //+------------------------------------------------------------------+ bool CSignalMA::CheckCloseShort(double& price) { price=0.0; //--- il prezzo ha incrociato la moving average verso l'alto e la moving average aumenta return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0); } //+------------------------------------------------------------------+
Creare un Expert Advisor utilizzando MQL5 Wizard
Per creare un robot di trading basato su questa strategia, devi scegliere le proprietà del segnale come "Segnali basati sul crossover dei prezzi con MA" nell'opzione "Creazione di Expert Advisor Pronti" in MQL5 Wizard:

Figure 2. Scegli "Segnali basati sul crossover dei prezzi con MA" in MQL5 Wizard
Successivamente, dovrai specificare l'algoritmo di trailing stop necessario e il sistema di gestione del denaro e del rischio. Il codice dell'Expert Advisor verrà creato automaticamente, puoi compilarlo e testarlo nel Strategy Tester del terminale client di MetaTrader 5.
Risultati del Test
Esaminiamo il backtesting dell'Expert Advisor su dati storici (EURUSD H1, periodo personalizzato: 1.1.2010-05.01.2011, MA_period=12, MA_Shift=0).
Nella creazione dell'Expert Advisor abbiamo utilizzato un volume fisso (Trading Fixed Lot, 0.1), l'algoritmo Trailing Stop non è stato utilizzato (Trailing non utilizzato).

Figure 3. Risultati del backtesting storico dell'Expert Advisor, basato sul crossover dei prezzi con MA
Allegati: Il file SignalMA.mqh con la classe CSignalMA (incluso nella Libreria Standard di MQL5) si trova nella cartella MQL5\Include\Expert\Signal. Il file crossoverma.mq5 contiene il codice dell'Expert Advisor, creato utilizzando MQL5 Wizard.
Post correlati
- RRS Impulse: Il Tuo Esperto per MetaTrader 4
- Rilevare il Venerdì della Prima Settimana del Mese: La Guida per il Giorno NFP
- EA Efficiente: Come Aggiungere la Chiusura del Venerdì per Migliorare le Performance
- MQL5 Wizard: Creare Trading Signals con Morning/Evening Stars e MFI per MetaTrader 5
- Utilizzare MQL5 Wizard per Trading con Dark Cloud Cover e Piercing Line