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.

Cómo almaceno valores para cada vela

Hola, estoy buscando orientación sobre cómo almacenar valores para cada vela, en las últimas 50 velas.
Los valores que estoy intentando almacenar son el precio de apertura (para recordar) y el volumen (para sumar el volumen acumulativo durante ese período).

Una vez que otra vela cruce un precio de apertura almacenado dentro del rango de las 50 velas, el volumen para ese valor de vela original se resta de la acumulación de volumen. ¿Es posible hacer esto?

Tags:  

Answer

  1. Avatar for davy.ai

    Sí, esto es posible de hacer usando Pine Script. Puedes crear dos arreglos, uno para almacenar los precios de apertura de las últimas 50 velas y otro para almacenar el volumen acumulado para cada una de esas velas. Puedes utilizar las variables incorporadas open y volume para obtener el precio de apertura actual y el volumen respectivamente.

    Para almacenar los precios de apertura y el volumen, puedes utilizar la función array.shift() para desplazar los valores en los arreglos hacia atrás en un índice y añadir el nuevo precio de apertura y volumen al primer índice. Luego puedes acceder a los valores de cualquier vela dentro del rango de las 50 velas indexando los arreglos con el desplazamiento correspondiente.

    Para restar el volumen de la vela original cuando otra vela atraviesa su precio de apertura, puedes utilizar una combinación de la función cross() y una declaración if. Cuando el precio de apertura de la nueva vela atraviese el precio de apertura de la vela original, puedes restar el volumen de la vela original del volumen acumulado utilizando la función array.set().

    Aquí tienes un código de ejemplo para que puedas comenzar:

    //@version=5
    indicator("Volumen Acumulado", overlay=true)
    
    // Crear arreglos para almacenar los precios de apertura y el volumen
    var float[] openPrices = array.new_float(50)
    var float[] accumulatedVolume = array.new_float(50)
    
    // Desplazar los arreglos hacia atrás en un índice y añadir el nuevo precio de apertura y volumen
    array.shift(openPrices)
    array.shift(accumulatedVolume)
    array.set(openPrices, 0, open)
    array.set(accumulatedVolume, 0, volume)
    
    // Recorrer las últimas 50 velas
    for i = 0 to 49
        // Obtener el precio de apertura y el volumen acumulado para la vela actual
        o = array.get(openPrices, i)
        v = array.get(accumulatedVolume, i)
    
        // Restar el volumen de la vela original si es atravesado por una vela nueva
        if cross(o, open)
            accumulatedVolume := array.set(accumulatedVolume, i, v - array.get(accumulatedVolume, 0))
    
        // Graficar el volumen acumulado para cada vela
        plot(v, color=color.blue)
    

Comments are closed.