condición THEN para utilizarla como condición IF en la segunda regla
12 respuestas
Pago
hace 11 años #111005
Hola,
alguien sabe ¿cómo procesar el resultado de una regla #1 en una segunda regla?
Por ejemplo:
En la primera regla utilizo es la condición MACD > 0 si el resultado es verdadero quiero usar esta señal en la segunda regla.
Lo intento con Asignar Variable THEN, pero esta variable permanece aunque ya no se cumplan las condiciones IF.
Cezar
stearno
hace 11 años #121260
Zar,
Tienes razón, la regla asignará la variable y luego no la volverá a tocar hasta que se cumplan las condiciones.
Así que lo que necesitas hacer es tener 2 reglas: La primera regla asigna la variable cuando MACD >0 y luego la segunda regla que asigna la variable cuando MACD<0. Entonces tu variable siempre será un reflejo de donde está el MACD.
-STearno
Pago
hace 11 años #121262
Hola Stearno,
Tenía miedo que es el único camino. En la condición anterior era sólo un ejemplo simplificado, la condición es bastante complicada y condición para la inversa es muy complicado y pensé que de alguna manera puede resolver diferente.
Tengo otra idea. Sólo intento exportar la condición como un indicador y luego importarlo en el asistente con el fin de utilizar el sigal.
Cezar
stearno
hace 11 años #121266
Suena bien. ¡Suerte!
Mark Fric
hace 11 años #121283
Hola,
¿alguien sabe cómo procesar el resultado de una regla #1 en una segunda regla?
Por ejemplo:
En la primera regla que uso es la condición MACD > 0 si el resultado es verdadero quiero usar esta señal en la segunda regla.
Lo intento con Asignar Variable THEN, pero esta variable permanece aunque ya no se cumplan las condiciones IF.
Hola Cezar,
lo que puedes hacer es procesar el resultado en la segunda regla, y luego establecer la variable a false de nuevo (mediante la función Asignar variable).
Mark
Mark
Arquitecto de StrategyQuant
Pago
hace 11 años #121288
Mark Fric
hace 11 años #121292
Me refería a algo así:
Regla 1:
SI la posición del mercado es plana y MACD > 0
ENTONCES
Asignar variable ThereIsSignal = 1
Regla 2:
IF ThereIsSignal = 1
ENTONCES
Entrar en el mercado
Asignar variable ThereIsSignal = 0
de esta manera la variable que fue fijada por la primera regla será unset cuando entras en el comercio, este fue su problema como yo undetstood.
Mark
Mark
Arquitecto de StrategyQuant
Pago
hace 11 años #121303
518pip
hace 11 años #121812
Me refería a algo así:
Regla 1:
SI la posición del mercado es plana y MACD > 0
ENTONCES
Asignar variable ThereIsSignal = 1
Regla 2:
IF ThereIsSignal = 1
ENTONCES
Entrar en el mercado
Asignar variable ThereIsSignal = 0
de esta manera la variable que fue fijada por la primera regla será unset cuando entras en el comercio, este fue su problema como yo undetstood.
Mark
Hola, estoy tratando con un problema similar, por favor ayuda. Cualquiera.
entrada múltiple si el precio por encima de 100 ema.
1ª entrada si 10 ema cruzan por encima de 20 ema, a continuación, entrar en el mercado con el objetivo.
2ª entrada si 10 ema cruza por encima de 20 ema de nuevo y el precio sigue por encima de 100 ema, entrar en el mercado. (a veces la 1ra puede no abrirse mas si el objetivo fue alcanzado)
mantener entrar en el mercado, siempre y cuando el precio por encima de 100 ema y muy tiempo 10 ema y 20 ema cruzar por encima de forma independiente.
He intentado asignar una variable, pero mi ea actual mantiene abierta la 1ª y 2ª entrada al mismo tiempo cuando se produce la 1ª entrada y se salta el resto de entradas válidas.
Gracias, señor,
Pago
hace 11 años #121818
Hola, estoy tratando con un problema similar, por favor ayuda. Cualquiera.
entrada múltiple si el precio por encima de 100 ema.
1ª entrada si 10 ema cruzan por encima de 20 ema, a continuación, entrar en el mercado con el objetivo.
2ª entrada si 10 ema cruza por encima de 20 ema de nuevo y el precio sigue por encima de 100 ema, entrar en el mercado. (a veces la 1ra puede no abrirse mas si el objetivo fue alcanzado)
mantener entrar en el mercado, siempre y cuando el precio por encima de 100 ema y muy tiempo 10 ema y 20 ema cruzar por encima de forma independiente.
He intentado asignar una variable, pero mi ea actual mantiene abierta la 1ª y 2ª entrada al mismo tiempo cuando se produce la 1ª entrada y se salta el resto de entradas válidas.
Gracias, señor,
Hola 518pip,
Creo que no es necesario asignar una variable.
Regla 1: La primera entrada -> IsBarOpen es True && Oferta > EMA 100 && EMA 10 cruza por encima de EMA 20
Regla 2 La segunda entrada -> IsBarOpen es True && (Open P/L [Magic_first_entry] 0 o Closed P/L [Magic_first_entry] 0) && Bid > EMA 100 && EMA 10 cruce por encima de EMA 20
Para cerrar puede utilizar una tercera regla con las condiciones de cierre.
Espero poder ayudarle. Si no, puede adjuntar la estrategia al mensaje para que podamos ayudarle de forma más concreta.
Cezar
Mark Fric
hace 11 años #121822
Hola, estoy tratando con un problema similar, por favor ayuda. Cualquiera.
entrada múltiple si el precio por encima de 100 ema.
1ª entrada si 10 ema cruzan por encima de 20 ema, a continuación, entrar en el mercado con el objetivo.
2ª entrada si 10 ema cruza por encima de 20 ema de nuevo y el precio sigue por encima de 100 ema, entrar en el mercado. (a veces la 1ra puede no abrirse mas si el objetivo fue alcanzado)
mantener entrar en el mercado, siempre y cuando el precio por encima de 100 ema y muy tiempo 10 ema y 20 ema cruzar por encima de forma independiente.
He intentado asignar una variable, pero mi ea actual mantiene abierta la 1ª y 2ª entrada al mismo tiempo cuando se produce la 1ª entrada y se salta el resto de entradas válidas.
Gracias, señor,
Puedes hacerlo así (mostraré sólo el lado largo):
——————–
Regla 1:
——————–
SI
OrderPosition(1000) no es Plana // nos aseguramos de que la primera orden ya está abierta
y Oferta > EMA(100) // asegúrese de que el precio está por encima de EMA(100)
y la EMA(10) cruza por encima de la EMA(20)
ENTONCES
Entrar en el mercado con el número mágico (2000)
——————–
Regla 2:
——————–
SI
OrderPosition(1000) es Plana // nos aseguramos de que la orden no está ya abierta
y Oferta > EMA(100) // asegúrese de que el precio está por encima de EMA(100)
y la EMA(10) cruza por encima de la EMA(20)
ENTONCES
Entrar en el mercado con el número mágico (1000)
Esto debería funcionar. La segunda regla se encarga de tomar cualquier señal cuando EMA(10) cruza EMA(20) y la Regla 1 se encarga del caso especial de que la primera orden ya está abierta.
Las normas tienen que estar en este orden.
Tal vez tendría que añadir también Is Bar Open = true a ambas reglas para asegurarse de que las operaciones se abren sólo en la apertura de la barra.
Mark
Arquitecto de StrategyQuant
boomza100
hace 11 años #121844
Hola a todos,
Tengo una pregunta similar, en línea con el tema de este hilo.
Sigo recibiendo nuevas posiciones abiertas, con cada nuevo tick.
Lo que quiero hacer es abrir una posición sólo una vez, si se cumplen mis condiciones.
Si ya hay una posición abierta, no abra otra.
Si se ha cerrado una posición, se puede abrir otra si se cumplen las condiciones.
Mi código es el siguiente.
——————–
Regla 1:
——————–
IF IsBarOpen es True
y alguna otra condición //demasiado largo para repetirlo aquí, pero no importa
y OrderPosition(MagicLong) es Plana //es decir: no hay posiciones abiertas ??? (¿es correcto?)
ENTONCES Entre en el Mercado (MagicLong)
Según tengo entendido, sólo se puede abrir una posición por número mágico, sin embargo, sigue abriendo nuevas posiciones cada tick.
Alguna sugerencia,
Gracias.
Mark Fric
hace 11 años #121915
Hola,
condición OrderPosition(MagicLong) es Flat realmente es verdadera si no hay posiciones abiertas, por lo que sus condiciones son correctas.
Según tengo entendido, sólo se puede abrir una posición por número mágico, sin embargo, sigue abriendo nuevas posiciones cada tick.
Si, no deberia abrir multiples posiciones con el mismo numero magico. Si abre una nueva posición cada tick hay algún problema o posible bug. ¿Puede publicar su estrategia (archivo .sqw) aquí?
Mark
Arquitecto de StrategyQuant
Viendo 12 respuestas - de la 1 a la 12 (de un total de 12)