Hola
Me gustaría que mi sistema no operara entre fechas y horas concretas. Las fechas en las que no quiero operar son por ejemplo DESDE 19 de agosto del 2015 a las 9:00 am HASTA 01 de Septiembre del 2015 a las 7:00 am.
¿Se puede escribir un código que diga que en ese periodo no ha operado? Hablamos en pasado para el backtesting, futuras fechas lo pararía manualmente.
MUCHAS GRACIAS,
Ver imagen adjunta por favor
[attachment file=8075]
¡Buenos dias! Creo que éste es el sitio correcto para la respuesta.
DEFPARAM CUMULATEORDERS = FALSE
// REM NO OPERAR A PARTIR DEL 19 DE AGOSTO
IF month=8 AND DAY >= 19 AND TIME >090000 THEN
trading = 0
ENDIF
// REM OPERAR DE NUEVO EN SEPTIEMBRE
IF MONTH = 9 AND DAY >= 1 AND TIME >= 070000 THEN
trading = 1
ENDIF
REM EJEMPLO PARA TEST
REM ###############
IF trading = 1 then
IF CLOSE>CLOSE[1] THEN
BUY 1 CONTRACT AT MARKET
ENDIF
endif
SET STOP PLOSS 30
SET TARGET PROFIT 50
REM ###############
Hola! muchísimas gracias por tu ayuda.
A la fecha tengo que ponerle el año 2015 porque hago test de 10 años atrás.
// REM NO OPERAR A PARTIR DEL 19 DE AGOSTO
IF month=8 AND DAY >= 19 AND TIME >090000 AND YEAR > 2015 THEN
trading = 0
ENDIF
// REM OPERAR DE NUEVO EN SEPTIEMBRE
IF MONTH = 9 AND DAY >= 1 AND TIME >= 070000 AND YEAR > 2015 THEN
trading = 1
ENDIF
Es algo asi?
El segundo punto es que no me permite quitarle profit y stop porque me da error, mi sistema no utiliza stop y profit. La idea es que si hay posiciones abiertas y llega la fecha automaticamente cierre todas. Puede ser..?
Y la última cosa es que compro 5 contratos.
REM EJEMPLO PARA TEST
REM ###############
IF trading = 1 then
IF CLOSE>CLOSE[1] THEN
BUY 5 CONTRACT AT MARKET ??
ENDIF
endif
SET STOP PLOSS ??
SET TARGET PROFIT ??
REM ###############
De nuevo GRACIAS!
Casi, si pones Year > 2015 , dejará de operar en 2015, 2016… Si únicamente quieres que deje de operar en 2015, cambia el signo > por = , quedaría así:
Year = 2015
Para que cierre las posiciones en la fecha haz lo siguiente:
IF trading=0 AND OnMarket then
Sell at market
Exitshort at market
Endif
No te preocupes por el numero de contratos esas ordenes cierran las posiciones con el numero de contratos correcto.
saludos
No deberia darte error alguno por no establecer profits o stop, es irrelevante, ¿qué error te da?
Hola
Muchas Gracias pero no me funciona correctamente… No me reconoce las fechas
Para aclarar mi objetivo os paso una captura con los periodos que quiero eliminar del backtesting. Aunque tenga que parar el robot manualmente, solo quiero que me haga bien el backtesting para verificar resultados anteriores. Hay algun comando tipo: No calcular entre X y Y, o Eliminar test desde X hasta Y
GRACIAS [attachment file=8795]
Prueba con este código:
INICIO=(DATE<20150819)
HORAINICIO=(TIME<090000)
FINAL=(DATE>20150901)
HORAFINAL=(TIME>070000)
CONDICION1= (INICIO AND HORAINICIO) OR (FINAL AND HORAFINAL)
IF NOT LONGONMARKET AND CONDICION1 THEN
BUY 5 SHARES AT MARKET
ENDIF
VENTA=(DATE>=0150818 AND DATE<20150820)
HORAVENTA=(TIME>=085900 AND TIME<=090100)
CONDICION2=VENTA AND HORAVENTA
IF LONGONMARKET AND CONDICION2 THEN
SELL AT MARKET
ENDIF
DATE puede sere sustituido por YEAR, MONTH, DAY
También admite HOUR, MINUTE
Debes tener en cuenta que el mercado esté abierto a esas horas que indicas sino no se realizarán tales acciones.