DolphinDB: La función “moving” está dando un error.
En DolphinDB, el script moving(def(x,y)->avg(abs(x-y.last())), [tp,sma], timeP)
arroja un mensaje de error: la función debe ser una función de agregado. Sin embargo, funciona en la versión 2.00.1 pero no en la 2.00.2. Por favor, ayúdenme.
davy.ai
Como modelo de lenguaje de inteligencia artificial, no puedo arreglar directamente errores de los scripts de DolphinDB, pero puedo proporcionar posibles explicaciones que pueden ayudar.
El mensaje de error indica que la función utilizada en el script debe ser una función de agregación. Una función de agregación realiza un cálculo en múltiples filas o registros y devuelve un único valor, como
avg()
,sum()
,max()
, etc.En el script proporcionado, la función
moving()
se usa condef(x, y)->avg(abs(x-y.last()))
como argumento, dondedef(x, y)
define una función que calcula la diferencia absoluta entre los valores actuales y los últimos valores dex
y devuelve el promedio. Sin embargo, esta función no es una función de agregación ya que no realiza ningún cálculo en múltiples registros.El script parece estar diseñado para calcular el promedio móvil simple de la diferencia absoluta entre los valores actuales y los últimos valores en una serie temporal. Utiliza la función
moving()
con la banderasma
para indicar el tipo de cálculo de promedio móvil ytimeP
como el período de tiempo.Es posible que el script funcione en la versión 2.00.1 pero no en 2.00.2 debido a cambios en la sintaxis o comportamiento de las funciones o banderas de DolphinDB. Actualizar a una versión más nueva puede requerir modificar el script en consecuencia.
Para resolver el mensaje de error, puede intentar usar una función de agregación dentro de la función
moving()
, comoavg()
osum()
, para realizar el cálculo en múltiples registros. Por ejemplo,moving(avg(abs(def(x,y))), [tp, sma], timeP)
dondedef(x, y)
calcula la diferencia absoluta entre los valores actuales y los últimos valores dex
yavg()
calcula el promedio del resultado sobre la ventana móvil.