Guarda come scaricare robot di trading gratuitamente
Ci trovi su Telegram!
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 sul crossover delle linee dell'indicatore Alligator - sistema esperto per MetaTrader 5

Visualizzazioni:
280
Valutazioni:
(33)
Pubblicato:
2021.11.11 16:20
Freelance MQL5 Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance

MQL5 Wizard fornisce la creazione automatica di Expert Advisors (vediMQL5 Wizard: Creating Expert Advisors without Programming).

È il momento di considerare i segnali di trading, basati sull'indicatore tecnico Alligator, presentati da B.Williams in "Trading Chaos". La strategia si chiama "Signals based on the Alligator" (quando si crea EA automaticamente in MQL5 Wizard).

Il sistema si basa su tre medie mobili (linee Lips, Teeth e Jaw), e oscillatori, calcolati utilizzando la differenza tra loro. I segnali di trading sono generati dopo il crossover delle linee dell'Alligatore, a seconda del trend, determinato dall'ordine di queste linee. In caso di trend al rialzo la linea Lips (con periodo minimo) è la più alta, la successiva è la linea Teeth, e la più bassa è la linea Jaw. Il caso simile ma opposto nel caso del trend al ribasso.

Segnali di trading:

  • Aprire una posizione long: incrocio delle linee dell'Alligatore e aumento della distanza tra di esse nel caso della tendenza al rialzo;
  • Chiudere la posizione long: incrocio verso l'alto della linea Lips con la linea Jaw;
  • Aprire una posizione short: incrocio delle linee dell'Alligatore e aumento della distanza tra di esse in caso di trend al ribasso;
  • Chiudere la posizione short: crossover verso il basso della linea Lips con la linea Jaw;

Questa strategia è implementata nella classe CSignalAlligator.

Figura 1. Segnali di trading, basati sull'indicatore tecnico Alligator

Figura 1. Segnali di trading, basati sull'indicatore tecnico Alligator


Segnali di trading

La strategia di trading è implementata in CSignalAlligator, ha alcuni metodi protetti per semplificare l'accesso ai valori degli indicatori:

double   Jaw(int ind)              // restituisce il valore di Jaw line della barra
double   Teeth(int ind)            // restituisce il valore della linea Teeth della barra
double   Lips(int ind)             // restituisce il valore della linea Lips della barra
double   LipsTeethDiff(int ind)    // restituisce la differenza tra le linee Lips e Teeth
double   TeethJawDiff(int ind)     // restituisce la differenza tra le linee Teeth e Jaw
double   LipsJawDiff(int ind)      // restituisce la differenza tra le linee Lips e Jaw
bool     CheckCross();             // usato per controllare il crossover delle linee Alligator


1. Aprire una posizione long

Il controllo delle condizioni di trading ha alcune caratteristiche, causate dallo spostamento delle linee Lips, Teeth e Jaw.

Condizioni per aprire una posizione long:

  • CheckCross è usato per determinare il crossover e l'ulteriore aumento della differenza tra le linee;
  • LipsTeethDiff(-2)>=LipsTeethDiff(-1) and LipsTeethDiff(-1)>=LipsTeethDiff(0); controllare l'aumento della differenza tra le linee Lips e Teeth;
  • LipsTeethDiff(0)>=0.0;  la linea Lips è più alta della linea Teeth;
  • TeethJawDiff(-2) >=TeethJawDiff(-1)  and TeethJawDiff(-1) >=TeethJawDiff(0) ; controlla l'aumento della differenza tra le linee Teeth e Jaw;
  • TeethJawDiff(0) >=0.0;la linea Teeth è più alta della linea Jaw.
//+------------------------------------------------------------------+
//| Checks conditions to open long position (buy)                    |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(CheckCross()) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   if(LipsTeethDiff(-2)>=LipsTeethDiff(-1) && LipsTeethDiff(-1)>=LipsTeethDiff(0) && LipsTeethDiff(0)>=0.0 &&
      TeethJawDiff(-2) >=TeethJawDiff(-1)  && TeethJawDiff(-1) >=TeethJawDiff(0)  && TeethJawDiff(0) >=0.0)
      m_crossed=true;
//---
   return(m_crossed);
  }


2. Chiudere la posizione long

Condizioni per chiudere la posizione di long (notare lo spostamento delle linee)

  • LipsTeethDiff(-1)<0; la linea Lips della barra successiva (a causa dello spostamento) è più bassa della linea Teeth;
  • LipsTeethDiff(0)>=0;la linea Lips della barra corrente è superiore/uguale alla linea Teeth;
  • LipsTeethDiff(1)>0; la linea Lips della barra precedente (completata) è più alta della linea Teeth.
//+------------------------------------------------------------------+
//| Checks conditions to close long position                         |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckCloseLong(double& price)
  {
   price=0.0;
//---
   return(LipsTeethDiff(-1)<0 && LipsTeethDiff(0)>=0 && LipsTeethDiff(1)>0);
  }


3. Aprire una posizione short

Condizioni per aprire una posizione corta:

  • CheckCross è usato per determinare il crossover e l'ulteriore aumento della differenza tra le linee;
  • LipsTeethDiff(-2)<=LipsTeethDiff(-1) and LipsTeethDiff(-1)<=LipsTeethDiff(0); controllare l'aumento della differenza tra le linee Lips e Teeth;
  • LipsTeethDiff(0)<=0.0; la linea Lips della barra corrente è più bassa della linea Teeth;
  • TeethJawDiff(-2)<=TeethJawDiff(-1) and TeethJawDiff(-1)<=TeethJawDiff(0); controllare l'aumento della differenza tra le linee Teeth e Jaw;
  • TeethJawDiff(0) <=0.0; la linea Teeth della barra corrente è inferiore alla linea Jaw;
//+------------------------------------------------------------------+
//| Checks conditions to open short position (sell)                  |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(CheckCross()) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   if(LipsTeethDiff(-2)<=LipsTeethDiff(-1) && LipsTeethDiff(-1)<=LipsTeethDiff(0) && LipsTeethDiff(0)<=0.0 &&
      TeethJawDiff(-2) <=TeethJawDiff(-1)  && TeethJawDiff(-1) <=TeethJawDiff(0)  && TeethJawDiff(0) <=0.0)
      m_crossed=true;
//---
   return(m_crossed);
  }


4. Chiudere la posizione short

Condizioni per chiudere la posizione short:

  • LipsTeethDiff(-1)>0; la linea Lips della barra successiva (a causa dello spostamento) è più alta della linea Teeth;
  • LipsTeethDiff(0)<=0; la linea Lips della barra corrente è inferiore/uguale alla linea Teeth;
  • LipsTeethDiff(1)<0; la linea Lips della barra precedente (completata) è più bassa della linea Teeth.
//+------------------------------------------------------------------+
//| Checks conditions to close short position                        |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckCloseShort(double& price)
  {
   price=0.0;
//---
   return(LipsTeethDiff(-1)>0 && LipsTeethDiff(0)<=0 && LipsTeethDiff(1)<0);
  }

Creating Expert Advisor using MQL5 Wizard

To create a trading robot based on the strategy you need to choose the signal properties as "Signals based on the Alligator" in "Creating Ready-Made Expert Advisors" option of MQL5 Wizard:

Figura 2. Selezionare "Segnali basati sull'Alligatore" in MQL5 Wizard

Figura 2. Selezionare "Segnali basati sull'Alligatore" in MQL5 Wizard

Successivamente dovrete specificare l'algoritmo di trailing stop necessario ed il sistema di money and risk management. Il codice di Expert Advisor sarà creato automaticamente, puoi compilarlo e testarlo in Strategy Tester del terminale MetaTrader 5.


Risultati dei test

Consideriamo il backtesting dell'Expert Advisor su dati storici (EURUSD H1, periodo di test: 1.1.2010-05.01.2011, JawPeriod=13, JawShift=8, TeethPeriod=8, TeethShift=5, LipsPeriod=5, LipsShift=3, MaMethod=2, Applied=5, CrossMeasure=5).

Nella creazione di Expert Advisor abbiamo usato il lotto fisso (Trading Fixed Lot, 0.1), l'algoritmo Trailing Stop non viene usato (Trailing not used).

Figura 3. Risultati dei test dell'Expert Advisor con segnali di trading, basati sul Alligator indicator

Figura 3. Risultati dei test dell'Expert Advisor con segnali di trading, basati sul Alligator indicator


Il profitto può essere aumentato se userete il filtraggio dell'operazione di trading e prenderete in considerazione le caratteristiche del mercato, a seconda del tempo. La classe CSignalITF vi permetterà di aggiungere il filtro temporale intraday. I migliori risultati si possono trovare usando Strategy Tester del terminale MetaTrader 5. Vedi l'esempio in MQL5 Wizard - Trade Signals Based on Crossover of Two EMA with intraday time filter.


Allegati: Il file SignalAlligator.mqh con la classe CSignalAlligator deve essere messo nella cartella terminal_data_folder\MQL5\Include\Expert\Signal .

Il file expert_alligator.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/267

MQL5 Wizard - Segnali commerciali basati sul crossover di due EMA con filtro temporale intraday MQL5 Wizard - Segnali commerciali basati sul crossover di due EMA con filtro temporale intraday

Vengono considerati i segnali di trading basati sull'incrocio dei prezzi di due medie mobili lisciate esponenzialmente con filtro intraday. Il codice dell'Expert Advisor basato su questa strategia può essere generato automaticamente utilizzando il Wizard MQL5.

MQL5 Wizard - Segnali di trading basati sul crossover delle linee principali e di segnale dell'indicatore MACD MQL5 Wizard - Segnali di trading basati sul crossover delle linee principali e di segnale dell'indicatore MACD

Si considerano i segnali di trading basati sull'incrocio delle linee principali e di segnale dell'indicatore MACD (CSignalMACD da MQL5 Standard Library). 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 modelli di candele di inversione Procedura guidata MQL5 - Segnali di trading basati su modelli di candele di inversione

Vengono presi in considerazione i segnali di trading basati su modelli di candele di inversione. Il codice dell'Expert Advisor basato su questa strategia può essere generato automaticamente utilizzando il Wizard MQL5.

MQL5 Wizard - Trade Signals Based on 3 Black Crows/3 White Soldiers + Stochastic MQL5 Wizard - Trade Signals Based on 3 Black Crows/3 White Soldiers + Stochastic

Vengono considerati i segnali di trading basati sul pattern di candele "3 Black Crows/3 White Soldiers", confermato dall'indicatore stocastico. Il codice dell'Expert Advisor basato su questa strategia può essere generato automaticamente utilizzando il Wizard MQL5.