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

MQL5 Wizard - Señales de trading basadas en el cruce del precio con el Indicador de Media Móvil - Asesor Experto para MetaTrader 5
- Visualizaciones:
- 2676
- Ranking:
- Publicado:
- 2014.01.14 12:02
- 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
MQL5 Wizard permite crear el código de Asesores Expertos automáticamente. Vea Crear Asesores Expertos listos para usar con el MQL5 Wizard para más detalles.
Aquí vamos a considerar la estrategia basada en el cruce del precio con el indicador de Media Móvil. La estrategia llamada "Signals based on price crossover with MA" (al crear el Asesor Experto automáticamente con el MQL5 Wizard).
Señales de trading:
- Compra: cruce ascendente del precio con la media móvil.
- Venta: cruce descendente del precio con la media móvil.
- La comprobación del incremento/decremento de la media móvil se usará para filtrar señales falsas.
Esta estrategia se implementa en la clase CSignalMA de las Clases de Estrategia de Trading de la biblioteca estándar MQL5 (ubicada en MQL5\Include\Expert\Signal\SignalMA.mqh).
Figura 1. Señales de trading basadas en el cruce del precio con la media móvil
Señales de Trade
La estrategia de trading se implementa en la clase CSignalMA, contiene algunos métodos protected para simplificar el acceso a los valores de indicadores y precios:
double MA(int ind) // devuelve el valor de la media móvil de la barra double Open(int ind) // devuelve el precio de apertura de la barra double Close(int ind) // devuelve el precio de cierre de la barra double StateMA(int ind) // devuelve un valor positivo si la media aumenta y negativo si disminuye double StateOpen(int ind) // devuelve la diferencia entre el precio de apertura y la media móvil double StateClose(int ind) // devuelve la diferencia entre el precio de cierre y la media móvil
1. Apertura de una posición larga
Condiciones para abrir posiciones largas (cruce del precio con MA y comprobación del aumento de la MA), MA=Media Móvil:
- Open(1)<MA(1): precio de apertura es inferior a la media móvil;
- Close(1)>MA(1): precio de cierre es superior a la media móvil;
- MA(1)>MA(2): Comprueba aumento de la media móvil (para filtrar las señales falsas).
//+------------------------------------------------------------------+ //| Comprueba condiciones de apertura de posición larga (compra) | //+------------------------------------------------------------------+ bool CSignalMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =0.0; tp =0.0; //--- precio ha cruzado de manera ascendente la MA y la MA aumenta return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0); }
2. Cierre de posición larga
Condiciones para cerrar posición larga (cruce del precio con la MA y comprobación de la disminución de la MA), MA=Media Móvil:
- Open(1)>MA(1): precio de apertura es superior a la media móvil;
- Close(1)<MA(1): precio de cierre es inferior a la media móvil;
- MA(1)<MA(2): comprueba el descenso de media móvil (para filtrar las señales falsas).
//+------------------------------------------------------------------+ //| Comprueba condiciones de cierre de posición larga | //+------------------------------------------------------------------+ bool CSignalMA::CheckCloseLong(double& price) { price=0.0; //--- precio ha cruzado de manera descendente la MA y la MA disminuye return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0); }
3. Apertura de posición corta
Las condiciones para abrir una posición corta son las mismas que las condiciones de cierre de una posición larga.
//+------------------------------------------------------------------+ //| Comprueba condiciones de apertura de posición corta (venta) | //+------------------------------------------------------------------+ bool CSignalMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =0.0; tp =0.0; //--- precio ha cruzado de manera descendente la MA y la MA disminuye return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0); }
4. Cierre de posición corta
Las condiciones para cerrar una posición corta son las mismas que las condiciones de apertura de una posición larga.
//+------------------------------------------------------------------+ //| Comprueba condiciones de cierre de posición corta | //+------------------------------------------------------------------+ bool CSignalMA::CheckCloseShort(double& price) { price=0.0; //--- precio ha cruzado de manera ascendente la MA y la MA aumenta return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0); } //+------------------------------------------------------------------+
Creando el Asesor Experto con el MQL5 Wizard
Para crear un robot de trading basado en esta estrategia debe seleccionar "Signals based on price crossover with MA" para las propiedades de señal del Expert Advisor en la opción "Expert Advisor (generate)" de MQL5 Wizard:
Figura 2. Seleccionar "Signals based on price crossover with MA" en MQL5 Wizard
Lo próximo que debe especificar es el algoritmo necesario para trailing stop y el sistema de gestión de capital. El código del Asesor Experto será creado automáticamente, puede compilarlo y verificarlo en el Probador de Estrategias del terminal de cliente MetaTrader 5.
Resultados de las pruebas
Vamos a considerar una simulación del asesor experto con datos históricos (EURUSD H1, periodo personalizado: 2010.01.01-2011.01.05, MA_Period = 12, MA_Shift = 0).
En la creación del Asesor Experto se seleccionó una gestión de capital con volumen fijo de 0.1 lotes (Trading with fixed trade volume, 0.1), y sin algoritmo de Trailing Stop (Trailing Stop not used).
Figura 3. Resultados de la simulación histórica del Asesor Experto, basada en el cruce del precio con la MA (Media Móvil)
Adjuntos: El fichero SignalMA.mqh con la clase CSignalMA (incluida en la biblioteca estándar MQL5) se encuentra en la carpeta MQL5\Include\Expert\Signal. El fichero crossoverma.mq5 contiene el código, del Asesor Experto, creado con MQL5 Wizard.
Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/248

Este código es una plantilla para un Asesor Experto, fue escrito por Valery Mazurenko (notused) para el ATC-2010.

Ejemplo de un gráfico de ticks.

Vamos a examinar las señales de trading basadas en tres medias móviles. El código del Asesor Experto basado en esta estrategia se puede generar automáticamente mediante el Asistente para MQL5 (MQL5 Wizard).

Vamos a examinar las señales de trading basadas en el cruce del precio con el indicador de media móvil y confirmadas con ADX. El código del Asesor Experto basado en esta estrategia se puede generar automáticamente mediante el Asistente para MQL5 (MQL5 Wizard).