Unisciti alla nostra fan page
MQL5 Wizard - Segnali di trading basati sull'incrocio dei prezzi con l'indicatore della media mobile - sistema esperto per MetaTrader 5
- Visualizzazioni:
- 463
- Valutazioni:
- Pubblicato:
- 2021.11.11 16:18
- Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance
MQL5 Wizard permette di creare automaticamente il codice di Expert Advisors. See Creazione di Expert Advisors già pronti in MQL5 Wizard per i dettagli.
Qui considereremo la strategia basata sull'incrocio dei prezzi con l'indicatore della media mobile. La strategia chiamata "Segnali basati sull'incrocio dei prezzi con la MA" (quando si crea automaticamente l'EA in MQL5 Wizard).
I segnali di trading:
- Comprare: incrocio in salita del prezzo con la media mobile.
- Vendere: incrocio in discesa del prezzo con la media mobile.
- Il controllo dell'aumento/diminuzione della MA serve a filtrare i falsi segnali.
Questa strategia è implementata in CSignalMA classe del Trading Strategy classes della libreria standard MQL5 (located in MQL5\Include\Expert\Signal\SignalMA.mqh).
Figura 1. Segnali di trading basati sull'incrocio dei prezzi con la media mobile
Segnali di trading
La strategia di trading è implementata nella classe CSignalMA, ha alcuni metodi protetti per semplificare l'accesso agli indicatori e ai valori dei prezzi:
double MA(int ind) // restituisce il valore della media mobile 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 un valore positivo se la media aumenta e negativo se diminuisce double StateOpen(int ind) // restituisce la differenza tra il prezzo di apertura e la media mobile double StateClose(int ind) // restituisce la differenza tra il prezzo di chiusura e la media mobile
1. Aprire una posizione lunga
Condizioni per aprire una posizione lunga (incrocio dei prezzi con la MA e controllo dell'aumento della MA):
- Open(1)<MA(1): Il prezzo di apertura è inferiore alla media mobile;
- Close(1)>MA(1): il prezzo di chiusura è superiore alla media mobile;
- MA(1)>MA(2): controllare l'aumento della media mobile (per filtrare i falsi segnali).
//+------------------------------------------------------------------+ //| Checks conditions to open long position (buy) | //+------------------------------------------------------------------+ bool CSignalMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =0.0; tp =0.0; //--- price has crossed upward the MA and MA increases return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0); }
2. Chiudere la posizione lunga
Condizioni per chiudere la posizione lunga (incrocio del prezzo con la MA e controllo della diminuzione della MA):
- Open(1)>MA(1): il prezzo di apertura è superiore alla media mobile;
- Close(1)<MA(1): il prezzo di chiusura è inferiore alla media mobile;
- MA(1)<MA(2): controllare la diminuzione della media mobile (per filtrare i falsi segnali).
//+------------------------------------------------------------------+ //| Checks conditions to close long position | //+------------------------------------------------------------------+ bool CSignalMA::CheckCloseLong(double& price) { price=0.0; //--- price has crossed moving average downward and moving average decreases return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0); }
3. Aprire una posizione corta
Le condizioni per aprire una posizione corta sono le stesse delle condizioni di chiusura delle posizioni lunghe.
//+------------------------------------------------------------------+ //| Checks conditions to open short position (sell) | //+------------------------------------------------------------------+ bool CSignalMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =0.0; tp =0.0; //--- price has crossed moving average upward and moving average decreases return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0); }
4. Chiudere la posizione corta
Le condizioni per chiudere una posizione corta sono le stesse di quelle di apertura di una posizione lunga.
//+------------------------------------------------------------------+ //| Checks conditions to close short position | //+------------------------------------------------------------------+ bool CSignalMA::CheckCloseShort(double& price) { price=0.0; //--- price has crossed moving average upward and moving average increases return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0); } //+------------------------------------------------------------------+
Creazione di Expert Advisor usando la procedura guidata MQL5
Per creare un robot di trading basato sulla strategia è necessario scegliere le proprietà del segnale come "Segnali basati sull'incrocio dei prezzi con la MA" nell'opzione "Creating Ready-Made Expert Advisors" dell MQL5 Wizard:
Figura 2. Choose "Signals based on price crossing with MA" in MQL5 Wizard
La prossima volta dovrete specificare l'algoritmo di trailing stop ed il sistema di gestione dei soldi e del rischio . Il codice di Expert Advisor sarà creato automaticamente, puoi compilarlo e testarlo in Strategy Tester del terminale client del MetaTrader 5.
Risultati dei test
Consideriamo il backtesting dell'Expert Advisor su dati storici (EURUSD H1, periodo: 1.1.2010-05.01.2011, MA_period=12, MA_Shift=0).
Nella creazione di Expert Advisor abbiamo usato il volume fisso (Trading Fixed Lot, 0.1), (L'algoritmo Trailing Stop non viene utilizzato).
Figura 3. Risultati storici di backtesting dell'Expert Advisor, basati sull'incrocio dei prezzi con la MA
Allegati: The SignalMA.mqh con classe CSignalMA (inclusi nella MQL5 Standard Library) sono nella cartella MQL5\Include\Expert\Signal . Il file crossoverma.mq5 contiene il codice dell'Expert Advisor, creato utilizzando MQL5 Wizard.
Tradotto dal russo da MetaQuotes Ltd.
Codice originale https://www.mql5.com/ru/code/248
Questo codice è un modello di Expert Advisor, scritto da Valery Mazurenko (non utilizzato) per ATC-2010.
TicksEsempio di grafico tick.
Vengono presi in considerazione i segnali di trading basati su tre medie mobili. Il codice dell'Expert Advisor basato su questa strategia può essere generato automaticamente utilizzando il Wizard MQL5.
Procedura guidata MQL5 - Segnali di trading basati su crossover di prezzo con media mobile, confermati da ADXVengono presi in considerazione i segnali di trading basati sul crossover dei prezzi con l'indicatore della media mobile confermato da ADX. Il codice dell'Expert Advisor basato su questa strategia può essere generato automaticamente utilizzando il Wizard MQL5.