前言
Drip.js 我的定位是用于构建高效且可扩展的交易程序的渐进式Node.js开源量化框架。
简单的说,也就是面向想要开发量化交易/程序化自动交易程序、或者只想开发交易策略的同学。
github地址
https://github.com/drip-trader/dripjs
为啥要开发这个框架?为啥要重复造轮子?
- 主要我是刚毕业不久的萌新,还比较迷茫, 想做点可以拿的出手的东西。
- 我自己也一直在开发关于数字货币的交易程序,长期以来困扰我的就是没有一个比较强大的nodejs量化开发框架,能使我快速开发出高可用、易维护、并且功能全面的交易程序。
- 重复造轮子?我用的是nodejs,基本没啥轮子好吗。
为啥要写这个文章?
这个的文章将会写一些dripjs框架开发设计的思路或者心得、也会以个人的观点去评论其他的开源框架(粉丝们轻喷,我只是为了做调研)。
我在开发dripjs时也会尽量参考这些前辈们的开源项目。希望dripjs能让使用typescript或者javascript的量化开发者省去大部分精力、时间,将它们更多的花费在交易策略的开发上。
量化框架一般用python写的比较多,比如有名的有vnpy、abu等等,nodejs的也有个nodequote。
不过使用typescript来做量化框架的,我好像还没看到,有知道的同学可以在评论里告诉我。
框架目标
1、希望能提供一个开箱即用的量化交易程序体系架构,允许开发者轻松创建高可用、可扩展且易于维护的量化交易程序。
2、我打算开发出一款可以支持不同种类商品的框架,让使用者可以不去关心商品的类型或者交易所。(比如:同一策略,通过dripjs可以回测多种商品,例如:期货、A股、美股、数字货币等等。)
3、计划dripjs的目标是tool/library/platform三位一体(是不是有点太贪了),目前也是这样去做的。主模块、子模块、还有各个子项目,下面会有详细介绍。
现阶段框架说明
打开上面贴的github地址,大家可以看到这样的程序目录
目录名 | 说明 |
---|---|
docs | 说明文档 |
modules | 系统模块 |
projects | 功能项目 |
是的你没有看错,没有src
目录,因为我想做到的是松耦合,大家相互独立,所以才能成为我上面说的tool/library/platform
- docs 用来放文档说明、或者设计图纸等的一些文件。
- module 是用来放各种子模块。
- 比如说现在已发布的
dripjs-bitmex
是bitmex交易所的操作模块,他相对于其他代码是独立的,只通过bitmex相关操作的功能。 - 还有
dripjs-types
、dripjs-common
等等。这些都可以通过npm install
安装到开发者程序里。 - 当然还有主模块
dripjs
,他包含上面说的全部子模块也包含projects中的全部子项目。
- 比如说现在已发布的
- projects 相对独立的功能性项目
- 比如说现在已经开放完成的:intelligence专门获取数据情报信息的(后面详细说明)
- 再有就是数据的存储
- 还有拥有交易功能的交易终端子项目等等
技术架构
- 开发语言: typescript
- 技术库:rxjs、typeorm、axios、ws
- 测试库:jest
- 数据库:mysql、redis(使用者如不需要存储数据,可以不安装)
- 依赖管理工具:yarn(不是npm哟)
开发说明
目前以bitmex数字货币交易所为例,开发完数据获取相关子项目。
我打算先通过bitmex来搭一下全部流程(全部子项目)的架子。
使用ci自动化测试、及代码覆盖率测试来保证代码的质量。
下面这个图标是覆盖率的数值,现在是99%暂时先写到这里,以后还会有其他功能的说明。
仅以此框架献给想要学习或者开发量化交易的朋友!
有兴趣的朋友也可以加qq群:310298370,互相交流共同进步!