NO OPERAR entre fechas y horas

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #8074 quote
    Carlos GC
    Participant
    Average

    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]

    EEUU-500-al-contado-E1-Contrato-1-1.png EEUU-500-al-contado-E1-Contrato-1-1.png
    #8083 quote
    Adolfo
    Participant
    Senior

    ¡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 ###############
    Nicolas and Carlos GC thanked this post
    vacaciones-en-agosto-1.png vacaciones-en-agosto-1.png
    #8096 quote
    Carlos GC
    Participant
    Average

    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!

    #8136 quote
    Adolfo
    Participant
    Senior

    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

    #8138 quote
    Adolfo
    Participant
    Senior

    No deberia darte error alguno por no establecer profits o stop, es irrelevante, ¿qué error te da?

    #8794 quote
    Carlos GC
    Participant
    Average

    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]

    EEUU-500-al-contado-E1-Contrato-.png EEUU-500-al-contado-E1-Contrato-.png
    #9005 quote
    RICHARDYUSTE
    Participant
    Junior

    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.

Viewing 7 posts - 1 through 7 (of 7 total)
  • You must be logged in to reply to this topic.

NO OPERAR entre fechas y horas


ProOrder: Trading Automático y Backtesting

New Reply
Author
author-avatar
Carlos GC @carlos_gc Participant
Summary

This topic contains 6 replies,
has 3 voices, and was last updated by RICHARDYUSTE
9 years, 8 months ago.

Topic Details
Forum: ProOrder: Trading Automático y Backtesting
Language: Spanish
Started: 05/26/2016
Status: Active
Attachments: No files
Logo Logo
Loading...