Mira cómo descargar robots gratis
¡Búscanos en Twitter!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Asesores Expertos

Asistente MQL5 - señales de trade basadas en el cruce de líneas del indicador Alligator - Asesor Experto para MetaTrader 5

Visualizaciones:
2077
Ranking:
(33)
Publicado:
2014.01.07 10:54
Actualizado:
2016.11.22 07:33
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

El asistente MQL5 proporciona creación automática de EAs (ver asistente MQL5: crear EAs sin necesidad de programación).

Es hora de considerar las señales de trading, basadas en el indicador técnico Alligator, presentado por B.Williams en el "Caos del Trading". La estrategia denominada "Señales basadas en el Alligator" (cuando se crean el EA automáticamente con el asistente MQL5).

El sistema se basa en tres MAs (Lips, Teeth y líneas Jaw lines) y los osciladores, calculados mediante la diferencia entre ellos. Las señales de trading se generan tras el cruce de las líneas del Alligator, según tendencia, determinado por el orden de estas líneas. En el caso de tendencia al alza del la línea Lips (con período mínimo) fuera el más alto, la siguiente es la línea Teeth, y el más bajo es la línea Jaw. El proceso similar, pero al contrario en el caso de tendencia a la baja.

Las señales de trade:

  • Posición larga: cruce de las líneas de Alligator y aumento de la distancia entre ellos en el caso de la tendencia al alza;
  • Cierre de posición larga: cruce hacia arriba de la línea Lips con la línea Jaw;
  • Apertura de posición corta: cruce de las líneas Alligator y aumento de la distancia entre ellos en el caso de la tendencia a la baja;
  • Cierre de posición corta: cruce hacia abajo de la línea Lips con la línea Jaw;

Esta estrategia se implementa en la clase CSignalAlligator.

Figure 1. Señales de Trade, basadas en el indicador técnico Alligator

Figure 1. Señales de Trade, basadas en el indicador técnico Alligator


Señales de Trade

La estrategia de trading que está implementada en CSignalAlligator, tiene algunos métodos protegidos para simplificar el acceso a los valores del indicador:

double   Jaw(int ind)              // returns the value of Jaw line of the bar
double   Teeth(int ind)            // returns the value of Teeth line of the bar
double   Lips(int ind)             // returns the value of Lips line of the bar
double   LipsTeethDiff(int ind)    // returns the difference between the Lips and Teeth lines
double   TeethJawDiff(int ind)     // returns the difference between the Teeth and Jaw lines
double   LipsJawDiff(int ind)      // returns the difference between the Lips and Jaw lines
bool     CheckCross();             // used to check the crossover of Alligator lines


1. Apertura de posición larga

La comprobación de las condiciones de trade tienen algunas características, causadas por el cambio wn las líneas Lips, Teeth y Jaw.

Condiciones para la apertura de posición larga:

  • El CheckCross se utiliza para determinar el cruce y mayor aumento de la diferencia entre las líneas;
  • LipsTeethDiff(-2)>=LipsTeethDiff(-1) y LipsTeethDiff(-1)>=LipsTeethDiff(0); comprobar para el aumento de la diferencia entre las líneas Lips y Teeth;
  • LipsTeethDiff(0)>=0.0;  la línea Lips es superior a la línea Teeth;
  • TeethJawDiff(-2) >=TeethJawDiff(-1)  y TeethJawDiff(-1) >=TeethJawDiff(0) ; Compruebar para el aumento de la diferencia entre líneas Teen y Jaw;
  • TeethJawDiff(0) >=0.0; La línea Teeth es superior a la línea Jaw.
//+------------------------------------------------------------------+
//| Comprobar condiciones de apertura de posición larga (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. Cierre de posición largan

Condiciones de cierre de posición larga (notar el cambio de las líneas):

  • LipsTeethDiff(-1)<0; la línea Lips de la siguiente barra (debido al cambio) es menor que la línea de Teeth;
  • LipsTeethDiff(0)>=0; la línea Line de la barra actual es mayor o igual a la línea Teeth;
  • LipsTeethDiff(1)>0; la línea Lips de la barra anterior (completada) es mayor que la línea Teeth.
//+------------------------------------------------------------------+
//| Comprobar condiciones de cierre de posiciones largas             |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckCloseLong(double& price)
  {
   price=0.0;
//---
   return(LipsTeethDiff(-1)<0 && LipsTeethDiff(0)>=0 && LipsTeethDiff(1)>0);
  }


3. Apertura de posición corta

Condiciones para la apertura de posición corta:

  • El CheckCross se utiliza para determinar el cruce y mayor aumento de la diferencia entre las líneas;
  • LipsTeethDiff(-2)<=LipsTeethDiff(-1) y LipsTeethDiff(-1)<=LipsTeethDiff(0); comprobar para el aumento de la diferencia entre las líneas Lips y Teeth;
  • LipsTeethDiff(0)<=0.0; la línea Lips de la barra actual es menor que la línea de Teeth;
  • TeethJawDiff(-2)<=TeethJawDiff(-1) y TeethJawDiff(-1)<=TeethJawDiff(0); Compruebar para el aumento de la diferencia entre las líneas Teeth y Jaw;
  • TeethJawDiff(0) <=0.0; La Línea Teeth de la barra actual is inferior a la línea Jaw;
//+------------------------------------------------------------------+
//| Comprobar condiciones de apertura de posición corta (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. Cierre de posición corta

Comdiciones de cierre de posición corta:

  • LipsTeethDiff(-1)>0; la línea Lips de la siguiente barra (debido al cambio) es superior a la línea Teeth;
  • LipsTeethDiff(0)<=0; la línea Lips de la barra actual es menor o igual línea Teeth;
  • LipsTeethDiff(1) < 0; la línea Lips de la barra anterior (completada) es menor que la línea Teeth.
//+------------------------------------------------------------------+
//| Comprobar condiciones de cierre de posiciones cortas             |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckCloseShort(double& price)
  {
   price=0.0;
//---
   return(LipsTeethDiff(-1)>0 && LipsTeethDiff(0)<=0 && LipsTeethDiff(1)<0);
  }

Creación de EA utilizando el Asistente MQL5

Para crear un robot de trading basado en la estrategia, debes elegir propiedades de señal tales como "Señal basada en Alligator" en la opción "Crear EA ready-made" del Asistente MQL5:

Figure 2. Seleccionar "Señales basadas en Alligator" en el Asistente MQL5

Figure 2. Seleccionar "Señales basadas en Alligator" en el Asistente MQL5

Seguidamente hay que especificar el sistema necesario de algoritmo de trailing stop y money y risk management. El código del EA será creado automáticamente, se puede compilar y probar en el Probador de estrategias del terminal de cliente MetaTrader 5.


Resultados de la prueba

Consideremos backtesting del EA con los datos históricos (EURUSD H1, testing period: 1.1.2010-05.01.2011, JawPeriod=13, JawShift=8, TeethPeriod=8, TeethShift=5, LipsPeriod=5, LipsShift=3, MaMethod=2, Applied=5, CrossMeasure=5).

En la creación del EA utilizamos volumen fijo (Trading Fixed Lot, 0.1), Trailing Stop algorithm is not used (Trailing not used).

Figura 3. Comprobando resultados del EA con señales de trading, basados en el indicador Alligator

Figura 3. Comprobando resultados del EA con señales de trading, basados en el indicador Alligator


El beneficio puede incrementarse si se utiliza filtro del deal y tener en cuenta las características del mercado, dependiendo del tiempo. La clase CSignalITF permitirá agregar el filtro de tiempo intradía. Se pueden encontrar los mejores tiempos con el Probador de estrategias del terminal de cliente MetaTrader 5. Ver ejemplo en Asistente MQL5 - señales de trading basadas en cruce de dos EMA con filtro de tiempo intradía.


Attachments: The SignalAlligator.mqh with CSignalAlligator class localizada en la carpeta terminal_data_folder\MQL5\Include\Expert\Signal.

El expert_alligator.mq5 contiene el código del EA, creado mediante el Asistente MQL5.


Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/267

Market Facilitation Index (BW MFI) Market Facilitation Index (BW MFI)

Market Facilitation Index (BW MFI, Índice de Facilitación del Mercado) es el indicador que muestra el cambio del precio en un tick.

MACD MACD

Moving Average Convergence/Divergence (MACD, Convergencia/Divergencia del Promedio Móvil) es un indicador dinámico seguidor de tendencia. Indica la correlación entre dos Medias Móviles de un precio.

Mass Index Mass Index

El Mass Index (Índice de Masa) se ha desarrollado para capturar los puntos de inversión de la tendencia. Se basa en los cambios que existen entre los precios máximos y mínimos. Si la amplitud se ensancha, el índice de masa crece, y si se hace más estrecha, el índice se hace más pequeño. El Mass Index fue creado por Donald Dorcy.

Money Flow Index (MFI) Money Flow Index (MFI)

El Money Flow Index (MFI, Índice de Flujo de Dinero) es un indicador técnico que indica la velocidad a la que el dinero se invierte en un valor y luego se retira del mismo.