两周前,刚刚把电脑系统升级到ubuntu20.04 系统。 以前用的WIN10 /ubuntu 18.04 双系统。在ubuntu18.04升级到20.04系统时出现意外故障,干脆把ubuntu18.04 彻底卸载,重新装了最新版ubuntu 20.04系统。目前采用win10/ubuntu20.04 双系统。
说起VNPY, 其实大约两三年前接触过,不过因为本人python 的基础比较差。加之对事件驱动引擎原理也不太懂,模块之间调来调去,直接绕晕了,于是很快放弃了。 实盘一直用TB进行交易。前一段时间看到一篇文章,介绍用VNPY进行回测和实盘交易的几个策略,文章很不错。加上因为在使用TB 过程中,一直受困于一些策略的细节处理上难以实现,于是又勾起了对VNPY的兴趣。
问题来了,我刚刚装的ubuntu20.04 系统,VNPY 能否支持?另外我的python 3.8.2 版本能否支持?即使安装成功,能否顺利运行?
带着疑问,网上搜了下,VNPY 最新版本已经更新到2.1.3。 从github 上下载源码vnpy-2.1.3.tar.gz ,解压后运行安装命令 bash install.sh,直接跳出错误提示,后来google上搜索尝试了很多办法,还是无法正确安装。本来截了好多图,后来一看不知什么原因都没有保存下来。
6/10最新更新: 本部分内容本来是make 编译安装的内容,因为几个同学反应make编译方式不能安装。 我重新新建了一个目录试了一次,确实在源码解压和安装过程出现不能安装的奇怪的问题。后来我又尝试了一次bash install.sh, 这次bash install.sh 虽然还是出现了几个类似的错误,但根据错误提示内容,解决方法可以参照下面出现错误提示的解决办法, 最终可以安装成功!
因为对系统,环境的要求,不要再尝试make 编译安装,我会再继续研究尝试。请使用原说明中的bash install.sh安装方法!如给各位带来不便,表示歉意!
安装过程中可能会跳出一些错误提示,比如我的电脑运行时就跳出一些包/模块的版本兼容问题。
ERROR: pyasn1-modules 0.2.8 has requirement pyasn1<0.5.0,>=0.4.6, but you'll have pyasn1 0.4.2 which is incompatible.
ERROR: tigeropen 1.2.0 has requirement pandas==0.24.2, but you'll have pandas 1.0.3 which is incompatible.
ERROR: tigeropen 1.2.0 has requirement python-dateutil==2.8.1, but you'll have python-dateutil 2.7.3 which is incompatible.
ERROR: tigeropen 1.2.0 has requirement simplejson==3.17.0, but you'll have simplejson 3.16.0 which is incompatible.
ERROR: tigeropen 1.2.0 has requirement six==1.13.0, but you'll have six 1.14.0 which is incompatible.
解决办法是直接terminal依次运行pip安装符合版本要求的模块,版本低的直接升级,版本高的就指定版本:
pip install --upgrade pyasn1
pip install pandas==0.24.2
pip install --upgrade python-dateutil
pip install --upgrade simplejson
pip install six==1.13.0
更新完上述包/模块后,重新运行bash install.sh:
然后就可以看到提示:
Successfully installed PyCryptodome-3.9.7 QScintilla-2.11.4 babel-2.8.0 cycler-0.10.0 deap-1.3.1 delorean-1.0.0 docopt-0.6.2 enum34-1.1.6 futu-api-3.21.0 helpdev-0.7.1 humanize-2.4.0 kiwisolver-1.2.0 matplotlib-3.2.1 mongoengine-0.20.0 peewee-3.13.3 protobuf-3.5.1 psycopg2-binary-2.8.5 pyasn1-0.4.2 pymongo-3.10.1 qdarkstyle-2.8.1 rsa-4.0 scipy-1.4.1 seaborn-0.10.1 stomp.py-4.1.22 tigeropen-1.2.0 tzlocal-2.1 vnpy-2.1.3
可以看到安装成功的包和模块,VNPY -2.1.3压轴,至此,安装大功告成!
运行一下看看。
按照说明,打开Terminal, 进入vnpy-2.1.3/examples/vn_trader目录, 编辑器打开run.py(我用的IDE是pycharm). 根据需要加载相应的功能,其实原文件里都列出来了,直接uncomment就行. 我的run.py 内容:
from vnpy.event import EventEngine
from vnpy.trader.engine import MainEngine
from vnpy.trader.ui import MainWindow, create_qapp
from vnpy.gateway.ctp import CtpGateway
from vnpy.app.cta_strategy import CtaStrategyApp
from vnpy.app.cta_backtester import CtaBacktesterApp
from vnpy.app.cta_backtester import CtaBacktesterApp
def main():
""""""
qapp = create_qapp()
event_engine = EventEngine()
main_engine = MainEngine(event_engine)
main_engine.add_gateway(CtpGateway)
main_engine.add_app(CtaStrategyApp)
main_engine.add_app(CtaBacktesterApp)
main_engine.add_app(PortfolioStrategyApp)
main_window = MainWindow(main_engine, event_engine)
main_window.showMaximized()
qapp.exec()
if name == "main":
main()
保存文件,然后terminal 直接运行python run.py
下图是成功打开后的主界面, 按照说明输入simnow 账号信息,连接CTP。 订阅了股指和螺纹钢等合约的价格,然后加载了几个策略(系统自带)的模拟交易。
CTA 策略界面
加载策略直接按照说明,设定参数,选择品种,一步步操作,非常方便。
试了一下回测功能:
我的回测数据,一部分是自己在TB 下载的csv历史行情数据按照要求的格式上传到本地mongoDB 服务器,另外一部分是刚刚申请试用的RQdata 账号由VNPY软件默认下载保存到sqlite 数据库。 因为对数据的下载,保存和调用路线还不是很清楚,后面慢慢研究学习一下。
其它功能应用模块后面继续摸索。
在使用过程中也遇到几个问题,不知如何解决:
1,模拟盘在停止一个策略后,账户里已经成交的订单是如何处理的。 我原来的理解是应该直接自动平仓。但停止一个策略后好像成交的订单还在。需要手动处理么?
2,策略界面出现的异常信息显示不全,边上的滚动条也无法拉到显示底部的信息。不知怎么操作?如下图:
3,主界面的委托价格出现明星的错误价格,不知怎么回事, 见下图,橡胶的委托价怎么会冒出来奇怪的11475? 当前最新价格 10655,high/low 是10740/10600, :
4, 还有其他几个主界面操作的小问题,估计是本人因为不熟悉操作界面,待摸索。
几点说明:
1,本来在安装软件的过程中截了很多图,有图的话直接用图例说明更直观和准确,但不知何原因我截的图都没有自动保存。所以很多内容是凭记忆后写的,难免有疏漏。加之每个人的系统,环境,配置等都不同,安装过程仅供参考。
2,上面提到的几个问题,请知道的同学解答一下。 多谢!
2,VNPY的很多功能架构还有待继续不断学习理解。 希望有机会多向群里的高手学习,早日达到驾轻就熟的程度。
最后分享一个刚刚把几个策略加载成功的界面: