Buenas tardes:
Gracias a quien me pueda ayudar con la programación de esta estrategia.
Se trata de activar un orden de compra STOP, 25 puntos por debajo de un nivel Pivot de entrada.
Yo he programado este código adjunto, pero evidentemente no funciona y no activa la orden de compra STOP cuando el Precio cruza el nivel de activación, en ese nivel 25 puntos por debajo del nivel Pivot de entrada.
Gracias por la ayuda tan buena, que me podáis prestar a este respecto.
DEFPARAM PRELOADBARS = 10000
DEFPARAM CUMULATEORDERS = False
PIV = 25282.4*PointSize
PIV25 = (PIV-25)*PointSize
PRECIO = Close
INIBAR = 0
IF PRECIO CROSSES OVER PIV25 THEN
INIBAR = Barindex
INI = 1
ENDIF
IF NOT ONMARKET AND INI = 1 AND Barindex - INIBAR >= 0 THEN
BUY 1 CONTRACT AT PIV STOP
ENDIF
startBreakeven = 25
PointsToKeep = 0
IF NOT ONMARKET THEN
breakevenLevel = 0
ENDIF
IF LONGONMARKET AND Close-TradePrice(1) >= startBreakeven*Pointsize THEN
breakevenLevel = Tradeprice(1)+PointsToKeep*Pointsize
ENDIF
IF breakevenLevel > 0 THEN
SELL AT breakevenLevel STOP
ENDIF
//// Stops y objetivos:
SET STOP LOSS 150
SET TARGET pPROFIT 300
DEFPARAM PRELOADBARS = 10000
DEFPARAM CUMULATEORDERS = False
PIV = 25282.4
PIV25 = (PIV-25)
PRECIO = Close
IF PRECIO CROSSES OVER PIV25 THEN
BUY 1 CONTRACT AT PIV STOP
ENDIF
startBreakeven = 25
PointsToKeep = 0
IF NOT ONMARKET THEN
breakevenLevel = 0
ENDIF
IF LONGONMARKET AND Close-TradePrice(1) >= startBreakeven*Pointsize THEN
breakevenLevel = Tradeprice(1)+PointsToKeep*Pointsize
ENDIF
IF breakevenLevel > 0 THEN
SELL AT breakevenLevel STOP
ENDIF
//// Stops y objetivos:
SET STOP LOSS 150
SET TARGET pPROFIT 300
El pedido de DETENER solo dura 1 barra, por lo que debe configurarlo en cada lectura de código y eso no es lo que está haciendo, solo lo coloca una vez cuando se produce el cruce. Pruebe con este código modificado:
DEFPARAM PRELOADBARS = 10000
DEFPARAM CUMULATEORDERS = False
PIV = 25282.4
PIV25 = (PIV-25)
PRECIO = Close
IF PRECIO CROSSES OVER PIV25 THEN
valid = 1
ENDIF
if onmarket then
valid = 0
endif
if not onmarket and valid = 1 then
BUY 1 CONTRACT AT PIV STOP
endif
startBreakeven = 25
PointsToKeep = 0
IF NOT ONMARKET THEN
breakevenLevel = 0
ENDIF
IF LONGONMARKET AND Close-TradePrice(1) >= startBreakeven*Pointsize THEN
breakevenLevel = Tradeprice(1)+PointsToKeep*Pointsize
ENDIF
IF breakevenLevel > 0 THEN
SELL AT breakevenLevel STOP
ENDIF
//// Stops y objetivos:
SET STOP LOSS 150
SET TARGET pPROFIT 300
Buenos días Nicolas:
Primero de todo darte las gracias como siempre en tus respuestas tan buenas y tan rápidas.
Siguiendo con el código que me has pasado, he diseñado estas dos nuevas estrategias, pero no sé por qué no funcionan bien.
Por favor Nicolás puedes revisar estos dos nuevos códigos y decirme donde está el error.
Como siempre muchas gracias por tu ayuda nuevamente.
Saludos,
ALBERT
DEFPARAM PRELOADBARS = 10000
DEFPARAM CUMULATEORDERS = False
INTRABAR = Intradaybarindex
PRECIO = Close
IF INTRABAR = 59 THEN
MAXD = Highest[1440](High)
MIND = Lowest[1440](Low)
ENDIF
IF INTRABAR = 59 THEN
PIV = (MAXD+MIND+PRECIO)/3
RD1 = (2*PIV)-MIND
SD1 = (2*PIV)-MAXD
RD2 = PIV+MAXD-MIND
SD2 = PIV-MAXD+MIND
RD3 = MAXD+(2*(PIV-MIND))
SD3 = MIND-(2*(MAXD-PIV))
ENDIF
V = 50
//////////////////// RD3 ////////////////////
RD325 = (RD3-V)
IF PRECIO CROSSES OVER RD325 THEN
valid13 = 1
ENDIF
if longonmarket then
valid13 = 0
endif
if not longonmarket and valid13 = 1 then
BUY 1 CONTRACT AT RD3 STOP
endif
//////////////////// RD2 //////////////////////
RD225 = (RD2-V)
IF PRECIO CROSSES OVER RD225 THEN
valid12 = 1
ENDIF
if onmarket then
valid12 = 0
endif
if not onmarket and valid12 = 1 then
BUY 1 CONTRACT AT RD2 STOP
endif
/////////////////// RD1 ///////////////////////
RD125 = (RD1-V)
IF PRECIO CROSSES OVER RD125 THEN
valid11 = 1
ENDIF
if onmarket then
valid11 = 0
endif
if not onmarket and valid11 = 1 then
BUY 1 CONTRACT AT RD1 STOP
endif
///////////////////// PIV ////////////////////
PIV25 = (PIV-V)
IF PRECIO CROSSES OVER PIV25 THEN
valid0 = 1
ENDIF
if onmarket then
valid0 = 0
endif
if not onmarket and valid0 = 1 then
BUY 1 CONTRACT AT PIV STOP
endif
/////////////////////// SD1 ////////////////////
SD125 = (SD1-V)
IF PRECIO CROSSES OVER SD125 THEN
valid111 = 1
ENDIF
if onmarket then
valid111 = 0
endif
if not onmarket and valid111 = 1 then
BUY 1 CONTRACT AT SD1 STOP
endif
/////////////////////// SD2 ///////////////////
SD225 = (SD2-V)
IF PRECIO CROSSES OVER SD225 THEN
valid112 = 1
ENDIF
if onmarket then
valid112 = 0
endif
if not onmarket and valid112 = 1 then
BUY 1 CONTRACT AT SD2 STOP
endif
///////////////////////// SD3 ///////////////////
SD325 = (SD3-V)
IF PRECIO CROSSES OVER SD325 THEN
valid113 = 1
ENDIF
if onmarket then
valid113 = 0
endif
if not onmarket and valid113 = 1 then
BUY 1 CONTRACT AT SD3 STOP
endif
startBreakeven = 25
PointsToKeep = 0
IF NOT ONMARKET THEN
breakevenLevel = 0
ENDIF
IF LONGONMARKET AND Close-TradePrice(1) >= startBreakeven*Pointsize THEN
breakevenLevel = Tradeprice(1)+PointsToKeep*Pointsize
ENDIF
IF breakevenLevel > 0 THEN
SELL AT breakevenLevel STOP
ENDIF
//// Stops y objetivos:
SET STOP LOSS 50
SET TARGET pPROFIT 50
DEFPARAM PRELOADBARS = 10000
DEFPARAM CUMULATEORDERS = False
INTRABAR = Intradaybarindex
PRECIO = Close
IF INTRABAR = 59 THEN
MAXD = Highest[1440](High)
MIND = Lowest[1440](Low)
ENDIF
IF INTRABAR = 59 THEN
PIV = (MAXD+MIND+PRECIO)/3
RD1 = (2*PIV)-MIND
SD1 = (2*PIV)-MAXD
RD2 = PIV+MAXD-MIND
SD2 = PIV-MAXD+MIND
RD3 = MAXD+(2*(PIV-MIND))
SD3 = MIND-(2*(MAXD-PIV))
ENDIF
V = 50
//////////////////// RD3 ////////////////////
RD325 = (RD3+V)
IF PRECIO CROSSES UNDER RD325 THEN
valid13 = 1
ENDIF
if onmarket then
valid13 = 0
endif
if not onmarket and valid13 = 1 then
SELLSHORT 1 CONTRACT AT RD3 STOP
endif
////////////////////// RD2 /////////////////
RD225 = (RD2+V)
IF PRECIO CROSSES UNDER RD225 THEN
valid12 = 1
ENDIF
if onmarket then
valid12 = 0
endif
if not onmarket and valid12 = 1 then
SELLSHORT 1 CONTRACT AT RD2 STOP
endif
//////////////////// RD1 ///////////////////
RD125 = (RD1+V)
IF PRECIO CROSSES UNDER RD125 THEN
valid11 = 1
ENDIF
if onmarket then
valid11 = 0
endif
if not onmarket and valid11 = 1 then
SELLSHORT 1 CONTRACT AT RD1 STOP
endif
//////////////////// PIV //////////////////
PIV25 = (PIV+V)
IF PRECIO CROSSES UNDER PIV25 THEN
valid0 = 1
ENDIF
if onmarket then
valid0 = 0
endif
if not onmarket and valid0 = 1 then
SELLSHORT 1 CONTRACT AT PIV STOP
endif
/////////////////////// SD1 //////////////////
SD125 = (SD1+V)
IF PRECIO CROSSES UNDER SD125 THEN
valid111 = 1
ENDIF
if onmarket then
valid111 = 0
endif
if not onmarket and valid111 = 1 then
SELLSHORT 1 CONTRACT AT SD1 STOP
endif
////////////////////// SD2 ////////////////////
SD225 = (SD2+V)
IF PRECIO CROSSES UNDER SD225 THEN
valid112 = 1
ENDIF
if onmarket then
valid112 = 0
endif
if not onmarket and valid112 = 1 then
SELLSHORT 1 CONTRACT AT SD2 STOP
endif
///////////////////// SD3 ///////////////////////
SD325 = (SD3+V)
IF PRECIO CROSSES UNDER SD325 THEN
valid113 = 1
ENDIF
if onmarket then
valid113 = 0
endif
if not onmarket and valid113 = 1 then
SELLSHORT 1 CONTRACT AT SD3 STOP
endif
startBreakeven = 25
PointsToKeep = 0
IF NOT ONMARKET THEN
breakevenLevel = 0
ENDIF
IF SHORTONMARKET AND TradePrice(1)-Close >= startBreakeven*Pointsize THEN
breakevenLevel = TradePrice(1)-PointsToKeep*Pointsize
ENDIF
IF breakevenLevel > 0 THEN
EXITSHORT AT breakevenlevel STOP
ENDIF
//// Stops y objetivos:
SET STOP pLOSS 50
SET TARGET pPROFIT 50