ubuntu 18.04 安装 vnpy2.0.9 吐血总结

本文为Ubuntu-VNPY-CTP系列第一篇,下面是后续文章

vnpy在CTP穿透式验证在ubuntu下的编译

东吴期货CTP自行开发穿透式监管认证指导

vnpy不使用rqdata,尝试tushare

前传:ubuntu虚拟内存(可选)

如果使用云服务器,可能会面临内存不足的情况。可以使用虚拟内存。

sudo dd if=/dev/zero of=swapfile bs=1024 count=1024000

把虚拟映象文件转换成 swap 文件:

mkswap swapfile

激活 swap:

swapon swapfile
重启之后需要重新激活

最后如果需要卸载这个 swap 文件,可以进入建立的 swap 文件目录。执行下列命令:

sudo swapoff swapfile

如果需要一直保持这个 swap ,则切换到root后

vim /etc/fstab
修改配置后不需要每次都激活

卸载删除swapfile

swapoff /swapfile
rm -f /swapfile

一、vnpy在ubuntu下的安装

1.1.更新源

刚刚安装好的Ubuntu18.04没有vim,为了后面修改文件,先安装vim

sudo apt-get install vim

在ubuntu 18.04中,按照之前的博文《linux常用命令》修改成源阿里云的源。我们把代码粘贴在这里:

#备份配置文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
#打开文件
sudo vim /etc/apt/sources.list
#重开终端,查看版本代号
lsb_release -c
    #Ubuntu 12.04 (LTS)代号为precise
    #Ubuntu 14.04 (LTS)代号为trusty
    #Ubuntu 15.04 代号为vivid
    #Ubuntu 15.10 代号为wily
    #Ubuntu 16.04 (LTS)代号为xenial
    #Ubuntu 18.04 代号为bionic
#更新文件如下
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
#更新文件列表
sudo apt-get update

1.2.安装Miniconda3

build-essential不能少,apt-get安装之。

sudo apt-get install build-essential

之后安装Python运行环境,Miniconda是轻量化的python包管理器。

安装Miniconda,获得Python 3.7运行环境(为vnpy2.0.9匹配)。具体方法是去官网下载Miniconda3-latest-Linux-x86_64.sh,在终端直接bash即可。

bash Miniconda3-latest-Linux-x86_64.sh

最后一步记得选yes

1.3.安装postgresql包

安装过程vnpy之前,需要一个叫postgresql的包,少不了,网上有用源码安装或者用yum安装的,都不好。源码太麻烦,yum容易跟apt抢戏。

最好的是下面的方法:

sudo vim /etc/apt/sources.list.d/pgdg.list
#加入如下内容
deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main
#最后
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
还要增加一个包libpq-dev
sudo apt-get install libpq-dev

1.4.安装vnpy2.0.9

下载vnpy2.0.9,解压。切换到vnpy2.0.9目录下,bash文件install.sh安装。sudo执行时会重置环境变量,导致miniconda在普通用户的.bashrc的设置失效。具体地可以从/etc/sudoers文件里的env_reset中得到佐证。要解决bash与sudo命令的冲突,可以进行如下命令进行安装:

sudo PATH=/home/han/miniconda3/bin:$PATH bash install.sh

*可选操作

即使如此,还是会有个warning:

WARNING: The directory '/home/zhex/.cache/pip/http' or its parent directory is not owned by the curr

很容易理解,root并不拥有普通用户的所有文件,所以一些事情就没做,解决办法:

sudo chown -R root /home/han/.cache/pip/
sudo chown -R root /home/han/.cache/pip/http/

解决了warning。

1.5.VNPY运行

切换到vnpy-2.0.9的examples/vn_trader目录下,修改run.py注释掉四行,

# from vnpy.gateway.femas import FemasGateway
# from vnpy.app.option_master import OptionMasterApp
#main_engine.add_gateway(FemasGateway)
# main_engine.add_app(OptionMasterApp)

最后下在该目录下

python run.py

二、VNPY的使用

2.1windows下VN station下连接simnow

2.1节用windows实验vn station的使用方法,与ubuntu无关。

在Windows下,使用vnpy studio 2.0.9,安装好后可以到下面的文件目录看到策略代码:

C:\vnstudio\Lib\site-packages\vnpy\app\cta_strategy\strategies

打开vn station,点击VN Trade Lite,找到连接CTP。(这里用的好像是simnow的电信服务器,后来发现移动的更快一些)

 进行连接,主界面日志框出现“交易服务器连接成功”和“行情服务器连接成功”字样。在Cta策略设置中,不得不吐槽一下合约的命名规则,玻璃:FG005.CZCE,m2005.DCE,rb2005.SHFE。

2.2 ubuntu下的Pycharm 安装

在Ubuntu中,vnpy的各项服务需要自行配置,我们需要比较好轻松地看代码,安装一个Pycharm先。为了方便,在磁盘允许的情况下,使用snap安装,只需要下面的两行代码:

sudo apt-get install snapd snapd-xdg-open
snap install pycharm-community --classic

我安装好的版本是,当你打开了第一个工程(直接打开vnpy文件夹),会提示包缺失。实际上pycharm的python解释器是默认的系统自带的那个,我们要改成conda的。在添加解释器(和运行环境)的时候,要选择

/home/han/miniconda3/bin/python3.7      #interpreter
/home/han/miniconda3/bin/conda          #conda executable

只有当你看到,诸如pyqt5,ta-lib,sqlite这些系统原来不会给你装好的包出现了,才有可能是对的。

2.3 ubuntu下踩坑:No module named ‘vnpy.api.ctp.vnctpmd’

当我们运行vnpy-2.0.9/example/client_server/server/run_server.py文件的时候会报上面的错误。ctp接口在没有build的状况下直接安装了vnpy所致。

解决方法,在vnpy-2.0.9目录下运行

python setup.py build

进行编译,在生成的/build/lib.linux-x86_64-3.7/vnpy/api/ctp目录下找到两个.so文件,vnctpmd.cpython-37m-x86_64-linux-gnu.so和vnctptd.cpython-37m-x86_64-linux-gnu.so,把它们粘贴到/vnpy-2.0.9/vnpy/api/ctp目录下即可。

2.4 vnpy在ubuntu下运行(2020年2月4日补充)

经过上面的几步,可以在ubuntu下实盘vnpy。

from vnpy.app.cta_strategy import CtaStrategyApp
from vnpy.event import EventEngine
from vnpy.gateway.ctp import CtpGateway
from vnpy.trader.engine import MainEngine
from vnpy.trader.ui import MainWindow, create_qapp

def main():
    """"""
    qapp = create_qapp()
    event_engine = EventEngine()
    main_engine = MainEngine(event_engine)
    main_engine.add_gateway(CtpGateway)
    main_window = MainWindow(main_engine, event_engine)
    main_window.showMaximized()

    qapp.exec()

if __name__ == "__main__":
    main()

正确输入信息后连接服务器(我的网络连接simnow官网上的移动服务器很快,电信经常掉线),出现“合约信息查询成功”字样。

三、vnpy好文链接

vn.py快速入门8 – 策略实盘自动交易

VNPY 2.0 学习记录一(如何回测)

VNPY 架构设计文档

搭建阿里云Ubuntu量化交易服务器

vnpy在云服务器(ubuntu)运行cta策略的详细方法

vnpy中的EventEngine和MainEngine用法介绍

穿透式监管与CTP

CTP穿透式监管怎么实现代码, 穿透测试API 

vn.trader使用教程系列1-安装和配置

centos7.6 搭建vnpy量化交易环境

github上一个自动实现值守进程的项目看完这篇,彻底搞定期货穿透式CTP API接入

发表评论