开篇
量化开发首选的语言还是python, 还是那句话: 人生苦短,我用python. 把自己回测好的策略进行实盘交易,可以基于gekko 进行精交易,但是gekko的杠杆交易还有支持的平台不是很多,所以有些回测好的策略,还是通过python来进行实盘交易,那么今天我们来讲讲如何在ubuntu16.04服务器上进行部署环境的搭建。
准备工作
- 创建子用户
当然我们也是可以在root用户下面进行操作的,但是后面要homebrew工具以及ta-lib等第三方软件的时候,可能会有限制,所以我们先创建子用户来操作比较方便
sudo adduser bot // 创建bot用户
Adding user `bot' ...
Adding new group `bot' (1000) ...
Adding new user `bot' (1000) with group `bot' ...
The home directory `/home/bot' already exists. Not copying from `/etc/skel'.
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for bot
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
然后输入bot用户的密码就可以了,然后输入y就可以了。记住,此时bot用户的文件目录是:/home/bot
sudo adduser bot sudo // 给bot用户添加sudo权限
然后切换到sudo 用户
su - bot // 然后输入bot用户的密码就可以了
或者通过ssh 进入bot用户
ssh bot@xxx.xxx.xxx.xxx // xxx.xxx.xxx.xxx 为你服务器的ip地址。
接下来更新下依赖, 依次输入下面四个命令。
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev
安装Anaconda
anaconda 一大好处就是帮助我们把很多科学计算的库都安装好,还有就是帮助我们很容易创建虚拟环境, 如下面两句命令就搞定虚拟环境的安装,省去我们很多麻烦.
conda create -n name python=3.6 //创建名字为name的虚拟环境
conda activate name // or source activate name 激活虚拟环境
conda deactivate // deactivate name 取消激活虚拟环境。
Anaconda 的官网地址为:下载地址
我们找到anaconda的下载文件,然后通过命令下载到服务器:
注意我们安装的是python 3.7的版本。当然要用python2.7的话可以通过虚拟环境来安装使用。
下载好后,执行bash命令进行安装:
bash Anaconda3-5.3.0-Linux-x86_64.sh
bash 后面的为你本地下载好的Anaconda 的文件名,然后等带安装就可以了。但是安装完成后,你还是发现没法使用conda命令,这时候要配置下:
sudo vi .bashrc
添加下面这段话:
export PATH=/home/bot/anaconda3/bin:$PATH // PATH后面的内容为为你anaconda3的安装目录。
然后执行命令, 或则推出终端重新登录也可以。
source .bashrc
这时候你输入Python, 如果现实为如下内容就说明你的anaconda安装好了。
Python 3.7.0 (default, Jun 28 2018, 13:15:42)
[GCC 7.2.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
这时候,你可以利用pip或则conda安装第三方库了。
安装homebrew
安装homebrew是为了方便我们安装python ta-lib的依赖,ta-lib是我们用来计算技术指标常用的库,当然你也可以使用tulip也可以。废话不多说,把homebrew 的github地址贴一下hombrew github, 安装命令如下:
sh -c “$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)”
vi .bashrc
export PATH="/home/linuxbrew/.linuxbrew/bin:$PATH" // 添加路径。
安装ta-lib
brew install ta-lib
pip install ta-lib
如果安装错误,或者类似如下问题的:
gcc -pthread -B /home/bot/anaconda3/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/bot/anaconda3/lib/python3.7/site-packages/numpy/core/include -I/usr/include -I/usr/local/include -I/opt/include -I/opt/local/include -I/home/bot/anaconda3/include/python3.7m -c talib/_ta_lib.c -o build/temp.linux-x86_64-3.7/talib/_ta_lib.o
talib/_ta_lib.c:526:28: fatal error: ta-lib/ta_defs.h: No such file or directory
compilation terminated.
error: command 'gcc' failed with exit status 1
ailed building wheel for TA-Lib
Running setup.py clean for TA-Lib
Failed to build TA-Lib
Installing collected packages: TA-Lib
Running setup.py install for TA-Lib ... error
Complete output from command /home/bot/anaconda3/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-3_y5lywf/TA-Lib/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-uvh9lr84/install-record.txt --single-version-externally-managed --compile:
/tmp/pip-install-3_y5lywf/TA-Lib/setup.py:79: UserWarning: Cannot find ta-lib library, installation may fail.
warnings.warn('Cannot find ta-lib library, installation may fail.')
那么可能是是homebrew默认的配置错误了,需要手动编译ta-lib。
- 下载ta-lib
解压ta-lib
tar -xzvf ta-lib-0.4.0-src.tar.gz
cd ta-lib/
./configure --prefix=/usr
make
sudo make install
最后安装Ta-Lib
pip install TA-Lib
这下应该就不会有问题了。 你可以开始使用ta-lib 开发和运行你的策略了。
安装fabric3进行自动化部署
如果有需要的话可以利用fabric3 进行自动化运维部署, 这里可以参考下这篇博客。
pip3 pip install fabric3
运行python项目
编写好的代码如果要在服务器上运行,直接使用命令执行:
python 你的程序文件名.py
也可以运行,但是退出终端后,程序就会终止,可以使用nohup命令进行守护进程的方式运行
nohup python -u 你的程序文件名.py > nohup.txt 2>&1 &
ps -aux | grep 你的程序文件名.py // 获取程序的进程id
执行完成后会返回你的进程id, 当然终止的话,可以通过kill命令终止,或者通过ps 命令查看进程编号,然后在执行kill的命令
kill 进程id // 如: kill 34984
最后推出服务的时候,通过exit来退出
exit
结束
文章主要讲了开发环境的搭建,以及安装相关依赖库,以及项目的部署等。希望有从事数字货币量化交易的,可以多多沟通,交流学习,共同进步。