Respuesta

fijación del período de validez de las condiciones IF

7 respuestas

huangwh88

Customer, bbp_participant, community, 113 replies.

Visitar el perfil

hace 7 años #116256

Hola compañeros comerciantes, 

 

Me preguntaba si puedo programar lo siguiente en el asistente:

 

Supongamos que tengo un sistema de cruce MACD y RSI con 2 condiciones de entrada.

 

La condición 1 es que el MACD cruce por encima de 0. Suponiendo que se mantenga por encima de 0, hay una ventana de 10 periodos para que el RSI cruce por encima de 50. Si esto sucede, la operación se ejecuta. Si esto sucede, se ejecuta la operación. Si no, la condición MACD se reinicia, y esperamos a la siguiente instancia de MACD cruzando por encima de 0. 

 

Para los casos en que tanto el MACD como el RSI se cruzan al mismo tiempo, la declaración IF puede ser:

 

MACD cruzado por encima de 0 Y RSI cruzado por encima de 50

 

Pero si el cruce del RSI ocurre 5 periodos después, la sentencia IF puede ser:

 

MACD > 0 Y RSI cruzado por encima de 50

 

¿Cómo puedo hacer que el EA reconozca que se ha producido el cruce MACD para que utilice MACD > 0 en su lugar para los períodos posteriores?

 

En segundo lugar, ¿cómo puedo añadir la ventana de validez de 10 periodos?

 

Espero que esto tenga sentido. Gracias por su ayuda.

0

chris.marshall

Suscriptor, bbp_participant, comunidad, 4 respuestas.

Visitar el perfil

hace 7 años #141290

Estoy sólo unos pocos indicadores en mi viaje con este producto, pero tengo la siguiente solución para trabajar con un problema similar que tuve en un EA. Nota cuando traté de usarlo como un indicador aunque no funcionó no estoy seguro por qué todavía.

Usted podría establecer 2 variables MACDP (para contar las velas después de cruzar por encima) y MACDN (para contar las velas después de cruzar por debajo) o cualquier otra cosa que tenga sentido para usted. Esto se hace en la pestaña Estrategia en el cuadro inferior "Parámetros de estrategia". Que sean de tipo entero.

A continuación, establezca 2 nuevas reglas que calculan sobre el cierre de la vela
1) IF MACD > 0 Then MACDP = MACDP + 1 AND MACDN = 0
2) IF MACD < 0 Then MACDN = MACDN + 1 AND MACDP = 0
Asegúrese de que estas 2 reglas están antes de la prueba RSI en orden de ejecución

Entonces su prueba RSI sería
1) SI RSI Cruza por encima de 50 y MACDP > 0 y MACDP < 11 Entonces condición de operación
2) SI RSI cruza por debajo de 50 y MACDN -11 Entonces condición de comercio

0

huangwh88

Customer, bbp_participant, community, 113 replies.

Visitar el perfil

hace 7 años #141294

Estoy sólo unos pocos indicadores en mi viaje con este producto, pero tengo la siguiente solución para trabajar con un problema similar que tuve en un EA. Nota cuando traté de usarlo como un indicador aunque no funcionó no estoy seguro por qué todavía.

Usted podría establecer 2 variables MACDP (para contar las velas después de cruzar por encima) y MACDN (para contar las velas después de cruzar por debajo) o cualquier otra cosa que tenga sentido para usted. Esto se hace en la pestaña Estrategia en el cuadro inferior "Parámetros de estrategia". Que sean de tipo entero.

A continuación, establezca 2 nuevas reglas que calculan sobre el cierre de la vela
1) IF MACD > 0 Then MACDP = MACDP + 1 AND MACDN = 0
2) IF MACD < 0 Then MACDN = MACDN + 1 AND MACDP = 0
Asegúrese de que estas 2 reglas están antes de la prueba RSI en orden de ejecución

Entonces su prueba RSI sería
1) SI RSI Cruza por encima de 50 y MACDP > 0 y MACDP < 11 Entonces condición de operación
2) SI RSI cruza por debajo de 50 y MACDN -11 Entonces condición de comercio

Hola Chris, 

 

Realmente aprecio la perspicacia. Entiendo lo que estás diciendo, pero ¿cómo el EA reconocer que sólo debe añadir a MACDP y MACDN después de una cruz por encima / por debajo se ha producido dentro de la anterior 10 períodos? 

 

Por ejemplo, si conecto el EA cuando el MACD está por encima de 0 y el cruce se produjo hace 20 períodos, el MACDP sería 1, y la condición estaría madura para la entrada, aunque en realidad ha expirado.

 

Si pudiéramos utilizar un operador WHILE junto con una bandera verdadero/falso, esto sería mucho más fácil, pero con sólo IF, todavía estoy inseguro.

0

chris.marshall

Suscriptor, bbp_participant, comunidad, 4 respuestas.

Visitar el perfil

hace 7 años #141297

La forma en que está escrito arriba contaría desde la primera vela después de la cruz en cualquier dirección.

Si hubiera 20 velas positivas el MACDP llegaría a 20 pero su prueba RSI sólo sería válida mientras el MACDP esté entre 1 y 10.

 

Tienes razón, aunque esto no tiene en cuenta el período entre el momento de cargar el EA y el primer cruce. Una manera fácil de evitar esto sería simplemente contar velas desde el último cruce ya sea por encima o por debajo y establecer el valor inicial de MACDP/MACDN en consecuencia al cargar el EA.

 

Estoy seguro de que hay formas más elegantes de evitarlo, pero todavía soy nuevo en el programa.

0

tomas262

Administrador, sq-ultimate, 2 respuestas.

Visitar el perfil

hace 7 años #141311

Hola,

 

la forma más fácil de lograr esto es configurar un contador. Cuando la condición MACD es válida, el contador se activa para hacer contador = contador + 1 (inicialmente se establece en 0).

Ahora cuenta cada nueva barra usando esto. Al mismo tiempo que el contador está activo, usted observa la condición del RSI, pero sólo hasta que el contador sea menor a 10. Una vez que el contador sea mayor a 10, lo reinicia a 0 y espera otra señal del MACD. Una vez que el contador > 10 lo reinicias a 0 y esperas otra señal MACD.

 

Avísame si necesitas un proyecto de ejemplo para esto

0

huangwh88

Customer, bbp_participant, community, 113 replies.

Visitar el perfil

hace 7 años #141325

La forma en que está escrito arriba contaría desde la primera vela después de la cruz en cualquier dirección.

Si hubiera 20 velas positivas el MACDP llegaría a 20 pero su prueba RSI sólo sería válida mientras el MACDP esté entre 1 y 10.

 

Tienes razón, aunque esto no tiene en cuenta el período entre el momento de cargar el EA y el primer cruce. Una manera fácil de evitar esto sería simplemente contar velas desde el último cruce ya sea por encima o por debajo y establecer el valor inicial de MACDP/MACDN en consecuencia al cargar el EA.

 

Estoy seguro de que hay formas más elegantes de evitarlo, pero todavía soy nuevo en el programa.

Sí, he pensado en ello y, efectivamente, hay una solución fácil, similar a la que usted ha mencionado. Podemos establecer el contador para iniciar sólo después de una cruz. Podría haber un poco de "tiempo perdido" si una cruz pasó a ocurrir poco antes de que adjunté la EA, pero no es un gran problema. 

 

Gracias por su ayuda.

0

huangwh88

Customer, bbp_participant, community, 113 replies.

Visitar el perfil

hace 7 años #141326

Hola,

 

la forma más fácil de lograr esto es configurar un contador. Cuando la condición MACD es válida, el contador se activa para hacer contador = contador + 1 (inicialmente se establece en 0).

Ahora cuenta cada nueva barra usando esto. Al mismo tiempo que el contador está activo, usted observa la condición del RSI, pero sólo hasta que el contador sea menor a 10. Una vez que el contador sea mayor a 10, lo reinicia a 0 y espera otra señal del MACD. Una vez que el contador > 10 lo reinicias a 0 y esperas otra señal MACD.

 

Avísame si necesitas un proyecto de ejemplo para esto

Hola Tomas, 

 

Por favor, envíeme el proyecto de ejemplo. Gracias.

0

tomas262

Administrador, sq-ultimate, 2 respuestas.

Visitar el perfil

hace 7 años #141338

Hola,

 

encontrar el ejemplo adjunto. EA espera a que el RSI cruce por encima del nivel 20. Luego espera 10 barras para que el MACD cruce el nivel 0. Si no hay señal de MACD, todo comienza de nuevo.

0

Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)