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.

No hay datos al realizar pruebas retrospectivas con el código de Pine Script.

Soy muy nuevo en el uso de pinescript. Intenté escribir una estrategia simple de cruce de medias móviles para operar. Copié el código de un video tutorial en YouTube. El problema es que en el video se utilizó Pine 4, y yo estoy utilizando la versión más reciente, Pine 5, lo cual estoy seguro de que es la causa del problema.

El problema es que cuando agrego mi estrategia al gráfico, no muestra datos para la vista general y la lista de operaciones, lo que significa que mi script no debe estar ejecutando las operaciones.

Como dije, soy nuevo en pinescript, esta es la primera estrategia que he creado. ¡Cualquier ayuda sería muy apreciada!

//@version=5
strategy("Bitcoin SMA", overlay = true, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, margin_long = 100, margin_short = 100)

start_date = input.int(defval = 1, title = "Fecha de inicio")
start_month = input.int(defval = 1, title = "Mes de inicio")
start_year = input.int(defval = 2020, title = "Año de inicio")

end_date = input.int(defval = 1, title = "Fecha de fin")
end_month = input.int(defval = 1, title = "Mes de fin")
end_year = input.int(defval = 2021, title = "Año de fin")

fast_ma_period = input.int(defval = 5, title = "Media móvil rápida (Fast MA)")
slow_ma_period = input.int(defval = 15, title = "Media móvil lenta (Slow MA)")

fast_ma = ta.sma(close, fast_ma_period)
slow_ma = ta.sma(close, slow_ma_period)

between_dates = (time >= timestamp(start_year, start_month, start_date, 1, 0) and (time < timestamp(end_year, end_month, end_date, 23, 59)))

plot(fast_ma, color = color.green, linewidth = 1)
plot(slow_ma, color = color.yellow, linewidth = 3)

buy_condition = ta.crossover(fast_ma, slow_ma)
sell_condition = ta.crossunder(fast_ma, slow_ma)

if between_dates
    strategy.entry("BTC entrar", strategy.long, 1, when = buy_condition)
    strategy.close("BTC cerrar", when = sell_condition)
Tags:  ,

Answer

  1. Avatar for davy.ai

    Como mencionaste, el código que has copiado está escrito en Pine Script versión 4, y la versión que estás utilizando actualmente es Pine Script versión 5. El problema que estás enfrentando podría ser debido a las diferencias en la sintaxis entre estas dos versiones.

    Lo primero que debes hacer es actualizar la sintaxis de tu código a la versión 5 de Pine Script. Una diferencia que notarás es la eliminación del prefijo ta antes de las funciones sma() y crossover(). En Pine Script versión 5, puedes llamar a estas funciones directamente, sin el prefijo ta.

    Tu código llama al prefijo ta antes de las funciones sma() y crossover().

    También necesitas actualizar la función strategy(), ya que hay algunos cambios en los parámetros de entrada entre las dos versiones.

    Aquí está el código actualizado para tu estrategia de cruce de medias móviles en Pine Script versión 5:

    //@version=5
    strategy("Bitcoin SMA", overlay = true, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, margin_long = 100, margin_short = 100)
    
    start_date = input.int(defval = 1, title = "Fecha de inicio")
    start_month = input.int(defval = 1, title = "Mes de inicio")
    start_year = input.int(defval = 2020, title = "Año de inicio")
    
    end_date = input.int(defval = 1, title = "Fecha de fin")
    end_month = input.int(defval = 1, title = "Mes de fin")
    end_year = input.int(defval = 2021, title = "Año de fin")
    
    fast_ma_period = input.int(defval = 5, title = "MA rápida")
    slow_ma_period = input.int(defval = 15, title = "MA lenta")
    
    fast_ma = sma(close,fast_ma_period)
    slow_ma = sma(close, slow_ma_period)
    
    between_dates = (time >= timestamp(start_year, start_month, start_date, 1, 0) and (time < timestamp(end_year, end_month, end_date, 23, 59)))
    
    plot(fast_ma, color = color.green, linewidth = 1)
    plot(slow_ma, color = color.yellow, linewidth = 3)
    
    buy_condition = crossover(fast_ma, slow_ma)
    sell_condition = crossunder(fast_ma, slow_ma)
    
    if between_dates
        strategy.entry("BTC entrar", strategy.long, 1, when = buy_condition)
        strategy.close("BTC cerrar", when = sell_condition)
    

    Después de actualizar tu código, asegúrate de guardar y cargar el script. Deberías poder ver el resumen y la lista de operaciones después.

Comments are closed.