Guarda come scaricare robot di trading gratuitamente
Ci trovi su Twitter!
Unisciti alla nostra fan page
Script interessante?
Pubblica il link!
lasciare che altri lo valutino
Ti è piaciuto lo script? Provalo nel Terminale MetaTrader 5
Sistemi Esperti

MQL5 Wizard - Segnali di trading basati sull'incrocio dei prezzi con l'indicatore della media mobile - sistema esperto per MetaTrader 5

Visualizzazioni:
463
Valutazioni:
(34)
Pubblicato:
2021.11.11 16:18
Freelance MQL5 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

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
I valori del prezzo e dell'indicatore della barra corrente (non completata) possono cambiare, quindi è necessario eseguire il controllo delle condizioni di trading utilizzando i dati delle barre completate (chiuse).

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

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).

Crossover con media mobile

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

Un modello di consulente esperto Un modello di consulente esperto

Questo codice è un modello di Expert Advisor, scritto da Valery Mazurenko (non utilizzato) per ATC-2010.

Ticks Ticks

Esempio di grafico tick.

Procedura guidata MQL5 - Segnali di trading basati su tre medie mobili Procedura guidata MQL5 - Segnali di trading basati su tre medie mobili

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 ADX Procedura guidata MQL5 - Segnali di trading basati su crossover di prezzo con media mobile, confermati da ADX

Vengono 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.