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 ordenar un campo en la ventana para obtener los primeros N valores y realizar cálculos agregados para el campo correspondiente en DolphinDB?

Mi pregunta es sobre cómo calcular los datos de cotización en DolphinDB. La tabla contiene cuatro columnas (ticker, fecha, cierre y volumen) y está agrupada por ticker y ordenada por fecha. Quiero hacer un cálculo de ventana y supongo que el tamaño de la ventana es de 20. Mi objetivo es ordenar los datos en la columna de volumen en una ventana y tomar los cinco registros de volumen más altos para calcular el promedio de los valores correspondientes de cierre. ¿Cuál es la forma más eficiente de calcularlo en DolphinDB?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una forma eficiente de calcular esto en DolphinDB es utilizar ventanas deslizantes y las funciones rank y top. Primero podemos definir las ventanas deslizantes utilizando la función window y luego aplicar una agregación de grupo a cada ventana. Dentro de cada ventana, podemos usar la función rank para clasificar los registros por volumen y luego usar la función top para seleccionar los cinco registros principales. Finalmente, podemos calcular el promedio de los valores correspondientes de close para los cinco registros principales utilizando la función avg.

    Aquí hay un ejemplo de código:

    // Definir ventanas deslizantes
    w = window(length=20, sliding=true, by=["ticker"], order=["date"])
    
    // Aplicar agregación de grupo dentro de cada ventana
    result = select *
             from table
             context by ticker
             where w(date)
             having rank(volume) <= 5
             apply avg(close)
    

    Esto devolverá una tabla con las columnas ticker, date y el promedio de close para los cinco registros principales en cada ventana deslizante. La instrucción select * mantiene todas las columnas originales en la tabla de resultados.

Comments are closed.