¿Por qué falla el probador de estrategias?

Jose Ignacio Gomez Nunez  

Buenas noches. 

Es algo que me desaspera y no se que se puede hacer.

Estoy probando una estrategia, con una condiciones, testeando cada tick, en el EURUSD.

Una de la condiciones es que si en H4, dos medias (150 y 300) estan cruzadas a la baja ; y en H1 están también cruzadas a la baja, pues que me abra una venta.

Para hacer un largo, sería la inversa.

Pues bien, en H4 esta cruzada al alza, en H1 está cruzada a la baja, y me abre una compra....

Claro esto fastidia totalmente el test y la estadística. No entiendo porque falla de esa manera tan estripitosa. En otros pares funciona (por lo que he visto) correctamente y en este no.

Alguna sugerencia, algún consejo. O hay que aceptarlo porque eso es bastante corriente???

Gracias por vuestros comentarios.

Enrique Enguix  
NachoMau:

Buenas noches. 

Es algo que me desaspera y no se que se puede hacer.

Estoy probando una estrategia, con una condiciones, testeando cada tick, en el EURUSD.

Una de la condiciones es que si en H4, dos medias (150 y 300) estan cruzadas a la baja ; y en H1 están también cruzadas a la baja, pues que me abra una venta.

Para hacer un largo, sería la inversa.

Pues bien, en H4 esta cruzada al alza, en H1 está cruzada a la baja, y me abre una compra....

Claro esto fastidia totalmente el test y la estadística. No entiendo porque falla de esa manera tan estripitosa. En otros pares funciona (por lo que he visto) correctamente y en este no.

Alguna sugerencia, algún consejo. O hay que aceptarlo porque eso es bastante corriente???

Gracias por vuestros comentarios.

Eso depende del código, seguramente no lo has tenido en cuenta y has considerado que el cruce de las dos condiciones sea en la misma barra.

Puesto que lo más probable (100% casi seguro) es que en H1 se hayan cruzado antes que en H4 puedes decirle al código:

Si en H1 la media de 150 esté por debajo de la de 300 y en H4 la media móvil de 150 cruza la de 300, entonces venta.

Es un "truco", aunque no es la manera más "profesional".

Jose Ignacio Gomez Nunez  
Trabaja en vela cerrada, en la vela 1.
	if (                        
               Trend150H1 > Trend300H1       
               && Trend150H4 > Trend300H4
               && RSI > LevelOversoldRSI
               && RSIPrevius < LevelOversoldRSI                           
           )

Esta condición es para abrir largos. La tendencia en H1 tiene que ser alcista en barra cerrada, la tendencia H4 tiene que ser alcista en barra cerrada  y  el RSI cuando sale de sobreventa en barra abierta y en la vela 1 en barra cerrada estaba dentro de sobreventa.

Ya digo que en otros pares me funciona correctamente, porque ademas yo reviso las operaciones manualmente, por eso he descubierto ese fallo en el EURUSD.

Y no lo entiendo, las condiciones son simples. Voy a intentar subir dos capturas de imagen con dicho fallo....

Jose Ignacio Gomez Nunez  

Hay lo tienes, la primera imagen en H1, del testeo, con la operación abierta. La media verde es la de 150 y la roja la de 300 (Cruzado al alza).

En lasegunda imagen, mismo día, misma hora en H4. La medias cruzadas a la baja, y no es que sea por unos pips, en H1 la diferencia entre las medias es de 16 pips, y en H4 hay 40 pips...

No entienco como en una situación así de clara me abra una operación, cuando la condición es que las dos tendencias tienen que ser iguales... 

Miguel Antonio Rojas Martinez  
NachoMau:
Trabaja en vela cerrada, en la vela 1.

Esta condición es para abrir largos. La tendencia en H1 tiene que ser alcista en barra cerrada, la tendencia H4 tiene que ser alcista en barra cerrada  y  el RSI cuando sale de sobreventa en barra abierta y en la vela 1 en barra cerrada estaba dentro de sobreventa.

Ya digo que en otros pares me funciona correctamente, porque ademas yo reviso las operaciones manualmente, por eso he descubierto ese fallo en el EURUSD.

Y no lo entiendo, las condiciones son simples. Voy a intentar subir dos capturas de imagen con dicho fallo....

Muestra el código donde le das valor a las variables 

Trend150H1, Trend300H1  , Trend150H4 ,Trend300H4


Pienso que debe ser un error de codigo, no creo que tenga que ver con el probador de estrategias
Por cierto es MT4 o MT5?

Jose Ignacio Gomez Nunez  

 La plataforma es MT4

               Trend150H1 = iMA(NULL,PERIOD_H1,150,0,MODE_LWMA,PRICE_CLOSE,0);
               Trend300H1 = iMA(NULL,PERIOD_H1,300,0,MODE_LWMA,PRICE_CLOSE,0);

               Trend150H4 = iMA(NULL,PERIOD_H4,150,0,MODE_LWMA,PRICE_CLOSE,0);
               Trend300H4 = iMA(NULL,PERIOD_H4,300,0,MODE_LWMA,PRICE_CLOSE,0);
Miguel Antonio Rojas Martinez  
NachoMau:

 La plataforma es MT4

Descargue el historial del simbolo desde 1M hasta 4 horas, antes de hacer el backtest, no veo cual podria ser el problema, pues con lo que se ve, esta ok

para hacer pruebas, printee los datos de cada media cuando hace la operacion, quizas con eso tambien encuentres el problema

y por ultimo, aunque mencionas que trabajas con vela cerrada, el codigo esta con vela actual, 


Marta Gonzalez  
Miguel Antonio Rojas Martinez:

Descargue el historial del simbolo desde 1M hasta 4 horas, antes de hacer el backtest, no veo cual podria ser el problema, pues con lo que se ve, esta ok

para hacer pruebas, printee los datos de cada media cuando hace la operacion, quizas con eso tambien encuentres el problema

y por ultimo, aunque mencionas que trabajas con vela cerrada, el codigo esta con vela actual, 


No es tu problema seguro pero dices

Esta condición es para abrir largos. La tendencia en H1 tiene que ser alcista en barra cerrada, la tendencia H4 tiene que ser alcista en barra cerrada  y  el RSI cuando sale de sobreventa en barra abierta y en la vela 1 en barra cerrada estaba dentro de sobreventa.


y pones

               Trend150H1 = iMA(NULL,PERIOD_H1,150,0,MODE_LWMA,PRICE_CLOSE,0);
               Trend300H1 = iMA(NULL,PERIOD_H1,300,0,MODE_LWMA,PRICE_CLOSE,0);

               Trend150H4 = iMA(NULL,PERIOD_H4,150,0,MODE_LWMA,PRICE_CLOSE,0);
               Trend300H4 = iMA(NULL,PERIOD_H4,300,0,MODE_LWMA,PRICE_CLOSE,0);



eso es a vela abierta, a vela cerrada seria:


               Trend150H1 = iMA(NULL,PERIOD_H1,150,0,MODE_LWMA,PRICE_CLOSE,1);
               Trend300H1 = iMA(NULL,PERIOD_H1,300,0,MODE_LWMA,PRICE_CLOSE,1);

               Trend150H4 = iMA(NULL,PERIOD_H4,150,0,MODE_LWMA,PRICE_CLOSE,1);
               Trend300H4 = iMA(NULL,PERIOD_H4,300,0,MODE_LWMA,PRICE_CLOSE,1);
Razón de la queja: