响应式状态引擎createReactiveStateEngine,自己定义了一个自定义函数调用移动均值,为什么移动均值输出结果为空

定义函数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})
请先 登录 后评论

1 个回答

mhxiang

在自定义函数的上一行加入@state就可以了

@state
def get_ma3(c){return sma(c,3)}

响应式状态引擎中可使用自定义状态函数。需要注意以下几点:

  • 函数定义前,使用 @state 表示函数是自定义的状态函数。
  • 自定义状态函数中只能使用赋值语句和return语句。return语句必须是最后一个语句,可返回多个值。
  • 使用iif函数表示if...else的逻辑。

教程中有相关说明,可以参考https://gitee.com/dolphindb/Tutorials_CN/blob/master/reactive_state_engine.md

请先 登录 后评论
  • 1 关注
  • 0 收藏,945 浏览
  • haaha 提出于 2022-02-09 11:55

相似问题