官网推荐用什么样的写法开发因子?

假如我有一个tick表,

1)第一种情况,开发的因子是tick频率的 ,每开发一个因子 会生成新的一列,每行的值是该时间步的因子

做这种的话 ,计算一个新的因子列应该用 t["new_factor"]= xxx  还是 update table set new_factor =xxx 还是 每个因子单独用def 定义一下,保持可读性?

如果因子计算过程放在自定义def内,  def  的参数和返回值应该是什么?

一个def内计算出多个因子,这种方式推荐吗?

哪种写法以后可以无修改的移植到流数据的因子计算中?

2)第二种情况,基于tick表开发的因子是bar频率的  如1MIN, 那么是不是我应该首先根据该tick表聚合出一张ohlc表来,然后在TICK表基础上按1分钟时间窗口计算因子,然后join到新的ohlc表右边 ?官方这种的有例子吗

请先 登录 后评论

2 个回答

Shena Mao

看情况你这边应该是对历史数据进行操作。

1.

首先,取决于你的这部分因子最后想要输出到哪里。如果你要存储到dfs库里,那么不建议你每个因子都写新的列,因为dfs库不建议增减新的列。但是如果你因子的个数都是一样的,限定好的,那么没有问题。

如果你的因子是输出到内存表中,暂时使用,那用 t["new_factor"]= xxx(向量) 或者 update table set new_factor =xxx 都可以增加内存表的列。

单独用def定义也是可以的,def的参数和返回值看你这边自己的情况。按需。通常来说,列向量,表,标量等等都是可以的。

一个def内计算出多个因子理论上是可以的,那么输出的就直接是table或者matrix了。


2.

可以直接在一条sql语句中输出你想要的结果。譬如直接: select last(time), last(open), avg(open) from tick group by bar(time,1m)

如果有其他问题我们再沟通。


请先 登录 后评论
Eva

可以参考下‘实时计算高频因子’教程,里面包含不同场景下的因子计算方式。

https://gitee.com/dolphindb/Tutorials_CN/blob/master/hf_factor_streaming.md#2-%E6%97%A0%E7%8A%B6%E6%80%81%E5%9B%A0%E5%AD%90%E8%AE%A1%E7%AE%97


请先 登录 后评论
  • 2 关注
  • 0 收藏,1171 浏览
  • ddbuserex 提出于 2021-12-21 17:14

相似问题