BigQuant 将复杂的算法和逻辑代码封装为简单易用的模块。模块支持一致的命名约定、版本控制和缓存/增量计算等功能。
我们将开放模块平台,用户可以开发自己的模块,在平台上使用、分享并获得收益。
# 设计原理
# 命名规则
模块的命名遵循如下规则:
M.模块名.v版本号(参数1=值1, 参数2=值2, ..)
# 版本管理
- 模块支持版本管理,新版本发布后,旧版本仍然可以工作
- 一个版本发布后,除了特别严重的bug,将不再修改。新功能将在新的版本上发布
- 除非特殊情况,建议尽量使用最新模块的最新版本,版本不一定向后兼容,升级到新版的时候,可能需要对代码做一些改动
# 缓存/增量计算
- 模块默认支持缓存功能 (部分模块根据需要显式的关闭了缓存)
- 缓存key根据模块名、版本号和输入参数生成
- 如果输入参数函数,建议函数需要用的局部变量都通过参数传入,不推荐使用全局变量,否则 在只是全局变量值更新时,模块仍然返回旧的缓存数据
- 如果一定要在函数参数中使用全局变量,请将用到的全局变量放到 m_deps 参数中,具体见 Meta参数部分
# 获取帮助
- M.模块名.m_get_version:获取指定模块的所有版本
- M.模块名.v版本号:接着按下快捷键Shift + Tab可以弹出该模块版本的帮助信息
# Meta参数
meta参数可以用来控制模块的一些功能,使用方法见 使用模块
- m_cached: 禁用缓存
- m_deps: 额外的依赖,主要用于缓存key生成
- m_silent: 是否输出meta logs
# 查看可用模块可用版本
M.hellomodule.m_get_version
运行结果
bound method BigQuantModule.m_get_version of 模块:hellomodule
可用版本(推荐使用最新版本):v1
查看模块源代码 (部分模块已经开放了源代码)
print(''.join(M.hellomodule.v1.m_sourcecode[0]))