Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
Asistente MQL5 - señales de trade basadas en el cruce de líneas del indicador Alligator - Asesor Experto para MetaTrader 5
- Visualizaciones:
- 2100
- Ranking:
- Publicado:
- 2014.01.07 10:54
- Actualizado:
- 2016.11.22 07:33
- ¿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
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
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
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, Índice de Facilitación del Mercado) es el indicador que muestra el cambio del precio en un tick.
MACDMoving 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.
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)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.