Hola a todos,
llevo tiempo usando esta estrategia de forma manual y es muy rentable. Me gustaría trasladar esta estrategia a un sistema Proorder pero no logro hacerlo.
Les adjunto un indicador que uso para esta estrategia de forma manual, aunque le falta otra opción para cerrar la operación (ya que tampoco sabía como hacerlo) y es que si la operación no cierra en la misma barra, que cierre en la próxima que cumpla las condiciones de cierre.
//CIRONET TRADING 3B | indicator
////////////////////////////////////////////////////////////////////////////////// INDICATORS
iMH = AVERAGE[3](HIGH)
iML = AVERAGE[3](LOW)
////////////////////////////////////////////////////////////////////////////////// CONDITIONS
C1 = ((iMH > iMH[1]) AND (iML > iML[1]))
C2 = (LOW <= iML)
C3 = (CLOSE > OPEN)
V1 = ((iMH < iMH[1]) AND (iML < iML[1]))
V2 = (HIGH >= iMH)
V3 = (CLOSE < OPEN)
////////////////////////////////////////////////////////////////////////////////// LONG SIGNAL
IF (C1 AND C2 AND C3) THEN
DRAWARROWUP(BARINDEX,LOW-4) COLOURED(38,198,218)
ENDIF
////////////////////////////////////////////////////////////// CLOSE LONG SIGNAL
SC = (HIGH >= iMH)
IF (C1 AND C2 AND C3) AND SC THEN
DRAWTEXT("CLOSE",BARINDEX,HIGH+4) COLOURED(38,198,218)
ENDIF
////////////////////////////////////////////////////////////////////////////////// SHORT SIGNAL
IF (V1 AND V2 AND V3) THEN
DRAWARROWDOWN(BARINDEX,HIGH+4) COLOURED(233,30,99)
ENDIF
////////////////////////////////////////////////////////////// CLOSE LONG SIGNAL
SV = (LOW <= iML)
IF (V1 AND V2 AND V3) AND SV THEN
DRAWTEXT("CLOSE",BARINDEX,LOW-4) COLOURED(233,30,99)
ENDIF
RETURN
El indicador indica una FLECHA y CERRAR en la misma barra. ¿Cuándo debe entrar? ¿Cuándo debería salir?
Hola Roberto, gracias por responder.
#CONDICIÓN DE COMPRA:
- AMBAS MEDIAS ASCENDENTES
- PRECIO TOQUE LA MEDIA INFERIOR
#CONDICIÓN DE SALIDA COMPRA:
- PRECIO TOQUE LA MEDIA SUPERIOR
#CONDICIÓN DE VENTA:
- AMBAS MEDIA DESCENDENTES
- PRECIO TOQUE LA MEDIA SUPERIOR
#CONDICIÓN DE SALIDA VENTA:
- PRECIO TOQUE LA MEDIA INFERIOR
Eso es todo, no hay necesidad del indicador, codifiqué los dos promedios directamente en la estrategia:
iMH = AVERAGE[3](HIGH)
iML = AVERAGE[3](LOW)
L1 = iMH > iMH[1]
S1 = iMH < iMH[1]
L2 = low <= iML
S2 = high >= iMH
CondL = L1 AND L2 AND Not LongOnMarket
CondS = S1 AND S2 AND Not ShortOnMarket
IF CondL THEN
BUY 1 CONTRACT AT Market
ELSIF CondS THEN
SELLSHORT 1 CONTRACT AT Market
ENDIF
Hola Roberto, gracias de nuevo por tu tiempo. Pensaba que ibas a aportar un código basado en los puntos anteriores para que se ejecute en la misma vela tal y como hace el indicador, aplicando algo de TIMEFRAME o lo que sea, ya que como sabemos en PRT no se ejecuta la estrategia hasta que se cierra la vela actual.
Yo lo que necesito es que se ejecute en la misma vela (IGUAL QUE EL INDICADOR) , con mis conocimientos de matemáticas y PRT no logro llega a ello.
Gracias de todos modos
Bien, entonces tienes que usar esta versión del indicador:
//CIRONET TRADING 3B | indicator
////////////////////////////////////////////////////////////////////////////////// INDICATORS
iMH = AVERAGE[3](HIGH)
iML = AVERAGE[3](LOW)
////////////////////////////////////////////////////////////////////////////////// CONDITIONS
C1 = ((iMH > iMH[1]) AND (iML > iML[1]))
C2 = (LOW <= iML)
C3 = (CLOSE > OPEN)
V1 = ((iMH < iMH[1]) AND (iML < iML[1]))
V2 = (HIGH >= iMH)
V3 = (CLOSE < OPEN)
////////////////////////////////////////////////////////////////////////////////// LONG SIGNAL
Signal = 0
IF (C1 AND C2 AND C3) THEN
DRAWARROWUP(BARINDEX,LOW-4) COLOURED(38,198,218)
Signal = 1
ENDIF
////////////////////////////////////////////////////////////// CLOSE LONG SIGNAL
SC = (HIGH >= iMH)
IF (C1 AND C2 AND C3) AND SC THEN
DRAWTEXT("CLOSE",BARINDEX,HIGH+4) COLOURED(38,198,218)
ENDIF
////////////////////////////////////////////////////////////////////////////////// SHORT SIGNAL
IF (V1 AND V2 AND V3) THEN
DRAWARROWDOWN(BARINDEX,HIGH+4) COLOURED(233,30,99)
Signal = -1
ENDIF
////////////////////////////////////////////////////////////// CLOSE LONG SIGNAL
SV = (LOW <= iML)
IF (V1 AND V2 AND V3) AND SV THEN
DRAWTEXT("CLOSE",BARINDEX,LOW-4) COLOURED(233,30,99)
ENDIF
RETURN Signal AS "Signal"
Entonces tienes que usar esta estrategia que lo invoca:
mySignal = CALL "CIRONET TRADING 3B"
CondL = (mySignal = 1) AND Not LongOnMarket
CondS = (mySignal = -1) AND Not ShortOnMarket
IF CondL THEN
BUY 1 CONTRACT AT Market
ELSIF CondS THEN
SELLSHORT 1 CONTRACT AT Market
ENDIF
Hola Roberto de nuevo, te agradezco mucho tu interés y tu tiempo.
Eso que indicas lo sé hacer. Lo que no sé es cómo utilizando Multitimeframe u otra herramienta,se puede hacer que se ejecute la orden en la misma barra, ya que como sabemos en PRT no se puede hacer eso puesto que las órdenes se ejecutan a vela cerrada. No sé si me explico correctamente para transmitirte lo que quiero hacer.
Muchas gracias de nuevo Roberto.
Debe utilizar el soporte MTF (Multiple Time Frame), que le permite utilizar, además del marco de tiempo elegido para las condiciones, otro marco de tiempo más pequeño.
Si busca la palabra MTF en este foro, encontrará artículos, información y ejemplos al respecto.
Este es un ejemplo que usa el marco de tiempo de 1 hora para el indicador y un marco de tiempo más corto, el cual tienes que elegir y debe ser el que está en el gráfico, puedes usar 10 segundos, o 1 minuto o 5 minutos:
Timeframe(1h,default)
mySignal = CALL "CIRONET TRADING 3B"
//
Timeframe(default)
CondL = (mySignal = 1) AND Not LongOnMarket
CondS = (mySignal = -1) AND Not ShortOnMarket
IF CondL THEN
BUY 1 CONTRACT AT Market
ELSIF CondS THEN
SELLSHORT 1 CONTRACT AT Market
ENDIF
Muchas gracias por el aporte Roberto.
Un saludo
Hola Roberto de nuevo.
Siento las molestias pero le he dado mil vueltas y no logro que se cumpla lo que fija el indicador en un sistema ProOrder. Estoy intentando que se cumpla en un marco de tiempo de 1 hora. He hecho la prueba haciendo un Screener con el mismo indicador y funciona pero usando instrucciones MTF en PorOrder nada.
Gracias
//CIRONET 3B | screener
iMH = AVERAGE[3](HIGH)
iML = AVERAGE[3](LOW)
iC = (((iMH > iMH[1]) AND (iML > iML[1])) AND (CLOSE CROSSES UNDER iML))
iV = (((iMH < iMH[1]) AND (iML < iML[1])) AND (CLOSE CROSSES OVER iMH))
SCREENER [iC OR iV] (VARIATION AS “% Prev bar”)
//CIRONET 3B | screener
iMH = AVERAGE[3](HIGH)
iML = AVERAGE[3](LOW)
iC = (((iMH > iMH[1]) AND (iML > iML[1])) AND (CLOSE CROSSES UNDER iML))
iV = (((iMH < iMH[1]) AND (iML < iML[1])) AND (CLOSE CROSSES OVER iMH))
SCREENER [iC OR iV] (VARIATION AS "% Prev bar")
Entonces no uses el indicador:
Timeframe(1h,default)
//mySignal = CALL "CIRONET TRADING 3B"
//
//CIRONET 3B | screener
iMH = AVERAGE[3](HIGH)
iML = AVERAGE[3](LOW)
iC = (((iMH > iMH[1]) AND (iML > iML[1])) AND (CLOSE CROSSES UNDER iML))
iV = (((iMH < iMH[1]) AND (iML < iML[1])) AND (CLOSE CROSSES OVER iMH))
//SCREENER [iC OR iV] (VARIATION AS "% Prev bar")
//
Timeframe(default)
CondL = iC AND Not LongOnMarket
CondS = iV AND Not ShortOnMarket
IF CondL THEN
BUY 1 CONTRACT AT Market
ELSIF CondS THEN
SELLSHORT 1 CONTRACT AT Market
ENDIF
Gracias Roberto. Podrías comprobar lo siguiente?…..algo falla porque tampoco me cumple lo que le indico.