ubuntu 18.04 安装 vnpy2.0.9 吐血总结
本文为Ubuntu-VNPY-CTP系列第一篇,下面是后续文章
一、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官网上的移动服务器很快,电信经常掉线),出现“合约信息查询成功”字样。