Hola,
Prueba estas líneas de código
#include <Indicators\Trend.mqh> CiMA short_ma, media_largo_1, media_largo_2, media_largo_3; int OnInit() { CrearMedias(); return(INIT_SUCCEEDED); } void OnTick() { string TipoDeTendencia = Tipo_De_Tendencia_Muy_Largo_Plazo(); ... } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CrearMedias() { short_ma.Create(Symbol(), PERIOD_H1, 10, 0, MODE_SMA, 0); media_largo_1.Create(Symbol(), PERIOD_D1, 10, 0, MODE_SMA, 0); media_largo_2.Create(Symbol(), PERIOD_D1, 50, 0, MODE_SMA, 0); media_largo_3.Create(Symbol(), PERIOD_D1, 100, 0, MODE_SMA, 0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ string Tipo_De_Tendencia_Muy_Largo_Plazo() { //Actualizamos los datos de los indicadores short_ma.Refresh(); media_largo_1.Refresh(); media_largo_2.Refresh(); media_largo_3.Refresh(); if(short_ma.Main(0) > media_largo_1.Main(0) && media_largo_1.Main(0) > media_largo_2.Main(0) && media_largo_2.Main(0) > media_largo_3.Main(0)) return "Alcista"; if(short_ma.Main(0) < media_largo_1.Main(0) && media_largo_1.Main(0) < media_largo_2.Main(0) && media_largo_2.Main(0) < media_largo_3.Main(0)) return "Bajista"; else return "Lateral"; }
Antonio muchas gracias por tu respuesta. He probado tu código, y funciona bien pero sigo teniendo esos retrasos de tiempo, y el EA no corre bien. Lo he solucionado poniendo esta función en otro EA en otra gráfica, y envío el resultado por variables globales del terminal, así no ralentizo mi EA. Gracias.
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Hola! esta función se ejecuta y necesita demasiado tiempo.. unos 15 segundos, cuando debería ser algo de milisegundos. Simplemente compara unas medias móviles. El problema debe tener algo que ver con que la media es para marco temporal DIARIO, porque esta misma función para marcos temporales menores, como 15M, etc. sí funciona rápidamente. En mql5 estamos creando el array con la serie temporal de las medias móviles, aunque en verdad mi función sólo necesita utilizar el primer valor del array, no uso el resto del array. ¿Existe una forma más eficiente de hacer esto para que no sea un proceso lento?. ¡¿Por qué no funciona rápida esta función?. Gracias.