距离前期发了一些关于量化框架测评的文章至今已经过去很久很久了,也被很多朋友催更很久了。
往昔文章:
aioquant确实是一个非常优秀的量化框架,整体的设计思路以及相关代码风格都是相当的优秀。
从前端AIOQuantWebManager管理平台到后端异步多任务的执行框架aioquant不论是管理逻辑还是程序的架构 设计都是相对来说轻量并且高性能的。
从一开始接触到这套框架,到后面慢慢的更新迭代,也踩过很多坑。终于也花费了2~3年的时间,在原有框架的基础上做了很多的扩展。
aioquant的设计:
我们当时在修改这套框架的时候主要考虑的点还是效率问题,python的开发效率无可厚非是非常高,可是执行效率从orderbook到把数据回调到后台平均耗时都需要60ms以上,这对我们的发展方向有很多劣势。所以需要提高数据效率。
改进后的设计:
说明:
- 整体采用了aioquant的设计思路
- 增加了orderbook和order-manage的通用封装。订单簿的封装可以参考
3. 可以直连交易所,通过回调的方式继承Strategy接口来实现策略。也可以通过GRPC连接,实现数据订阅。
4. 策略实现依旧满足python功能,毕竟开发效率无敌。
通过以上的封装我们解决了几个问题。
1、执行效率问题,目前排除网络因素影响,整体框架数据回调时间周期可以控制在1ms以内。
2、多策略和组合投资的管理。
3、高效的拓展性和可维护性,大量使用了接口编程的方式。
4、闭包回调的实现,节省开销。
5、多功能可扩展接口,GRPC接口的实现,为其他语言扩展提供方便。
6、健壮性,其实总觉得python策略跑久了不重启我会慌,可能是个人感觉。
所以很多人私信问我可不可以发源码给他们,问题是这整套分布式系统,我发给你部署起来你都费劲。再就是我们仅仅是做交易的,这套并不是最好的,但是是最适合我们目前团队发展的。也不太适合其他人,免得误导其他开发者。
整体项目开发其实并不难,难在踩了很多坑。各种bug需要改,各种需求都在变,再加上每个交易所接口并不统一,所以会产生各种各样的多变的需求。
不过接下来我会用大概半年的时间来更新这套框架,并不会包含全部内容,只能满足个人投资量化的需求。既然是开篇就简单说一下整体情况,以上的问题我们都会在接下来的文章中陆续更新。
后期更新流程:
1、go基础,这里我建议大家直接B站搜索,很多很多教程,我大概率不会说太多编程教程。同样也可以看这个,我学习go语言的两套教程。
我觉得这两块大概需要花费3~4周左右就ok了。
2、交易所相关接口协议的介绍。
3、rest封装测试。
4、ws封装测试。
5、事件驱动相关逻辑介绍以及封装。
..............
比较多,就不一一列举了,后面我们遇到问题解决问题,可能会有冗杂内容,不过重在解决问题,攻克每一个难点。
最近闲下来也在花时间学习Rust给当前的系统做一些迭代更新,有机会也可以给大家分享,毕竟自己选的路,跪着也得走完,尽可能走好。