数字货币量化交易框架Gekko开发环境的搭建
认识Gekko
Gekko是基于nodejs开发的一个数字货币量化交易的平台,支持回测,paper trading和实盘交易的开源框架。gekko的github地址为https://github.com/askmike/gekko目前它在github上的点赞的数量已经达到7000多个stars, fork的数量也达到2000多个,可见它是非常知名的框架,使用它来进行量化交易,应该是比较方便的,省去了很多制造轮子的工作,而且它支持的交易所也不少,有币安,bitfinex等知名交易平台。还有支持Ta-lib指标,以及自定义指标,还支持扩展和插件的功能。
开发环境搭建
开发环境的搭建,这里以阿里云的ubuntu 16.04作为开发环境搭建。通过ssh [email protected] 进入服务器终端。 具体过程需要配置安全组,开放22号端口,具体参考阿里云的配置。这里不多讲了。
安装nodejs
- 首先更新下unbuntu系统资源
sudo apt-get update
- 更新系统软件
sudo apt-get upgrade
- 安装 build-essential 和 libssl-dev两个依赖包
sudo apt-get install build-essential libssl-dev
- 安装nvm,nvm是node version manager, 在github上下载安装脚本, 脚本地址为https://github.com/creationix/nvm, 然后复制如下脚本,并在命令行输入如下内容:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
然后等待安装完成就可以了,安装完成后执行如下命令让安装脚本生效
source ~/.bashrc
然后如下命令查看nvm的功能和文档。
nvm --help # 查看帮助
nvm ls-remote # 查看可以安装的nodejs版本,
这里我们选择安装node v8.11.4版本
nvm install v8.11.4
安装完成后, 执行node 命令就可以使用了。或者查看版本
node --version
至此,我们的nodejs 开发环境搭建完成。
安装git代码管理工具
实际上这里是可选的,我们也可以直接从github上直接把gekko的代码下载下来,然后直接使用。但是为了方便我们通过git工具更为方便。
sudo apt-get install git
等待安装完成就可以了。
接下来下载gekko的稳定版本的代码
git clone git://github.com/askmike/gekko.git -b stable
或者下载最新的功能的代码,但是可能没那么稳定。
git clone git://github.com/askmike/gekko.git
下载完成后,在服务终端下执行
ls
在自己的服务下可以看到多了一个叫gekko的文件夹, 进入该文件夹
cd gekko
安装项目依赖,通过npm (node package manager), 这个工具在通过nvm 安装node的时候就已经自动安装了,我们直接使用就可以了。
npm install --only=production # 参数--only=production是指我们安装生产环境的依赖包
安装exchange交易所的依赖包,该依赖包是在exchange目录下安装的,所以我们要进入改目录
cd exchange
npm install --only=production
完成之后我们要返回gekko的目录,也就是上一级目录:
cd ..
至此,我们就可以启动gekko 了
node gekko --ui
或者
nohup node gekko.js --ui > gekko.txt 2>&1 &
这样你把终端的窗口关掉也不会影响使用的。
--ui就是我们用UI来进行操作, 当然他还有其他参数,具体可以参考官方的文档https://gekko.wizb.it/docs/introduction/about_gekko.html
当然如果你是要使用TA-lib指标库和Tulip指标库的话,你还需要自己安装第三方库。
npm install talib tulind --no-save
或者分开安装也可以
npm install talib --no-save
npm install tulind --no-save
但是分开安装可能会有问题,所以最好一块安装得了。 记得,这个两个库是在gekko当前目录下安装,安装的时候切记注意文件的路径,否则可能会报错。另外安装过程中,如果出现什么警告的,千万不要执行类似
npm audit fix # 不要执行该命令
npm audit // 不要执行该命令
这样的命令,检查下自己的nodejs版本,是否过高或者太低了。可以参考我的使用版本, v8.11.4。 不然可能会报错。切记!!!!
具体这些第三方库的文档可以到https://www.npmjs.org 上查看其官方文档。
远程访问执行操作
实际上你按照上面的操作完成nodejs和gekko的安装后,还是浏览器无法访问的。修改项目的配置文件, 路径为: gekko/web/vue/dist/UIconfig.js
cd /gekko/web/vue/dist
vi UIconfig.js
把文件修改为如下:
const CONFIG = {
headless:false, // 这个修改为false,这样就不会自动打开浏览器了。通过浏览器访问就可以了。
api: {
host: '0.0.0.0', // 允许外部地址访问
port: 3000,
timeout: 120000 // 2 minutes
},
ui: {
ssl: false,
host: 'xxx.xxx.xxx.xxx', // 修改为自己的服务公网地址
port: 3000,
path: '/'
},
adapter: 'sqlite'
}
if(typeof window === 'undefined')
module.exports = CONFIG;
else
window.CONFIG = CONFIG;
当然你要在阿里云那里配置安全组,把80或者3000端口打开,然后允许该端口进行访问。弄好之后,你就可以访问你的地址了。
http://xxx.xxx.xxx.xxx:3000
当然了,这个部署可以用来做回测和paper trading的时候使用。如果是实盘交易的话, 建议你不要修改UIconfig.js配置文件了,毕竟把网页的地址暴露给外面很不安全, 很容易泄露你的apikey和secret.
另外你可以通过安装nginx然后进行服务器代理使用。具体更多的配置,你可以参考官方文档https://gekko.wizb.it/docs/installation/configuring_gekko_on_a_server.html以及我之前博客写的关于阿里云Ubuntu 搭建nodejs生产环境https://www.jianshu.com/p/7b660871fed1。
后记
文章是安装ubuntu服务器来搭建的,mac或者其他linux环境相同。
后面有机会继续分享gekko的策略编写,回测、paper trading 以及实盘交易的经验分享。如果你也是在做数字货币的量化交易,欢迎一起来学习和交流。