为什么使用 DolphinDB udf 时反应状态引擎中的移动平均线为空?

Why the moving average in the reactive state engine is empty using a DolphinDB udf?

我在代码中定义了函数 get_ma3。但是,调用 sma(c, 3) 时,输出为空。我不确定为什么会这样...

def get_posneg(o, c){return iif(c > o, "pos", iif(c < o, "neg", "doji"))}
def get_ma3(c){return (sma(c, 3))}
ohlc_rse = createReactiveStateEngine(name = "ohlc_rse", metrics=[<datetime>, <get_posneg(o, c)>, <get_ma3(c)>], dummyTable=ohlc, outputTable=res_ohlc, keyColumn="symbol") subscribeTable(tableName = `ohlc, actionName="ohlc_action", handler = tableInsert{ohlc_rse})

您需要在DolphinDB 中定义的函数前添加@state。 User-defined 状态函数在反应状态引擎中可用。注意这些要点:

  • 定义函数前,添加@state表示函数是udf
  • 在udf中只能使用赋值和return语句,return语句必须是最后一个语句并且可以return多个值
  • 使用iif函数表达if...else逻辑