历史文档

【历史文档】算子样例-自定义Python模块_new

由qxiao创建,最终由qxiao 被浏览 13 用户

使用场景

可以编写自己的python功能代码,并支持封装成模块。

输入端

  • 输入1:第一个输入端口,支持输入任意格式的数据,一般为DataSource类型。
  • 输入2:第二个输入端口,支持输入任意格式的数据,一般为DataSource类型。
  • 输入3:第三个输入端口,支持输入任意格式的数据,一般为DataSource类型。

输入参数

  • 主函数:编写主处理函数。
  • 后处理函数:编写后处理代码,即使勾选了启用缓存加速功能,后处理的函数也会被执行。
  • 模块输入端:封装成模块后暴露出来的输入端口,需要跟主函数的参数名称保持一致。多个参数用逗号分隔。
  • 模块输出端:封装成模块后暴露出来的输出端口,需要跟主函数的return时返回的参数名称保持一致。

输出端

  • 输出1:第一个输出端口,支持输出任意格式的数据,一般为DataSource类型。
  • 输出2:第二个输出端口,支持输出任意格式的数据,一般为DataSource类型。
  • 输出3:第三个输出端口,支持输出任意格式的数据,一般为DataSource类型。

运行结果

支持模块id.封装的端口名来查看模块的输出。

使用样例

本样例详细展示如何开发自定义模块,用来修改数据的列名,此模块的输入、参数、输出如下:

  • 输入:有一个输入数据源,为输入数据
  • 参数:列名映射,格式为:原列名1:新列名1|原列名2:新列名2|原列名3:新列名3|..
  • 输出:有一个输出数据源,为结果数据

准备输入数据

为了有测试数据方便开发调试,我们直接新建 “可视化策略-空白”,拖入 数据源 模块,并配置如下,用作测试数据:

  • 数据源ID:bar1d_CN_STOCK_A
  • 开始日期:2018-01-01
  • 结束日期:2018-02-01

添加自定义模块

从左侧自定义模块拖拽 自定义Python模块 到画布中,并如下图连接

定义好接口

  • 输入端:input_1:数据源1,input_2:数据源2,input_3:数据源3
  • 输出端:Outputs.data:输出修改列名后的数据

代码实现

可以新建一个代码单元,先在代码单元里进行功能编写和测试。

def bigquant_run(input_1, input_2, input_3):
    # Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端
    # 示例代码如下。在这里编写您的代码

    import dai

    df = input_1.read()
    # df.columns = ['deal_number:new_deal_number|close:new_close']
    # column_1_dict = df['close'].to_dict()
    # print(column_1_dict)
    
    df['new_close'] = df['close']
    df['new_deal_number'] = df['deal_number']
    
    # df = df.rename(columns={'close':'new_close'})
    # print(df)
    ds = dai.DataSource.write_bdb(df)

    return dict(data_1=ds, data_2={"hello": "world"}, data_3=None)

查看输入结果,确保符合预期。

https://bigquant.com/codesharev2/1d6ea42b-5011-4dfb-92c7-cd3d5de74cac


\

{link}