es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pinescript 1m backtesting: Prueba retrospectiva de 1 minuto en Pinescript.

Cuando intento probar mi estrategia en un marco de tiempo de 1 minuto, solo puedo hacerlo en los últimos 7 días. ¿Es posible extender esto a través de más velas? Incluso he intentado personalizar un período de tiempo usando:

inDateRange = (time >= timestamp(syminfo.timezone, 2021,7, 20, 0, 0)) and
 (time < timestamp(syminfo.timezone, 2021, 7, 24, 0, 0))

pero mi estrategia retorna “None”.

Cualquier ayuda sería muy apreciada, gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible realizar una prueba retrospectiva de tu estrategia en un período de tiempo más largo que los últimos 7 días. Una forma de hacerlo es cambiar la longitud de los datos históricos que se cargan en tu script. Puedes hacer esto ajustando el parámetro “lookback” en tu función de estudio o estrategia a un valor mayor. Por ejemplo:

    //@version=5
    strategy("Mi Estrategia", overlay=true, margin_long=100, margin_short=100, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
    
    lookback = input(500, "Período de retrospección")
    my_data = request.security(syminfo.tickerid, "1", close, lookahead=barmerge.lookahead_on)
    // "Barmerge lookahead_on" es un parámetro importante para definir cuándo examinar los datos
    conds = crossover(my_data, sma(my_data, 10))
    if conds
        strategy.entry("Comprar", strategy.long)
    
    strategy.exit("Salida", "Comprar", limit=close + 10)
    
    plot(my_data, "Mis Datos")
    

    Otra forma de hacer una prueba retrospectiva en un período de tiempo más largo es utilizar la función inDateRange que has intentado personalizar en tu ejemplo. Sin embargo, tu función inDateRange personalizada parece estar limitada a solo 4 días de datos, del 20 al 24 de julio de 2021. Puedes ajustar las fechas y los marcos de tiempo según tus necesidades. Aquí tienes un ejemplo:

    //@version=5
    strategy("Mi Estrategia", overlay=true, margin_long=100, margin_short=100, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
    
    inDateRange = (time >= timestamp("2021-06-01T00:00:00Z")) and (time <= timestamp("2021-07-31T23:59:59Z"))
    
    my_data = security(syminfo.tickerid, "1", close, lookahead=barmerge.lookahead_on, gaps=true)
    
    conds = crossover(my_data, sma(my_data, 10))
    if conds and inDateRange
        strategy.entry("Comprar", strategy.long)
    
    strategy.exit("Salida", "Comprar", limit=close + 10)
    
    plot(my_data, "Mis Datos")
    

    En el ejemplo anterior, utilizamos la función timestamp para definir un rango de fechas que comienza el 1 de junio de 2021 y termina el 31 de julio de 2021. El parámetro gaps=true garantiza que los datos de la prueba retrospectiva incluyan cualquier brecha en los datos intradía. La condición if conds and inDateRange asegura que la entrada de la estrategia solo se active durante el rango de fechas definido.

    Ten en cuenta que hacer pruebas retrospectivas en períodos de tiempo más largos requerirá más potencia de cómputo y podría llevar más tiempo para ejecutarse. También puede que necesites ajustar los parámetros de tu estrategia para adaptarlos al período de tiempo más largo.

Comments are closed.