vnpy源码阅读学习(1):准备工作关于vn.py的环境配置和项目安装

vnpy配置

vnpy源码阅读学习<第一篇>

目的

  1. 通过阅读vnpy,学习量化生意业务系统的一些计划思绪和理念。
  2. 通过阅读vnpy学习python项目开发的一些本领和范式
  3. 通过vnpy的计划,可以用python复现一个小型简单的量化生意业务系统
  4. 看看是否可以用java要么.net做一个类似的量化生意业务框架

预备工作

在阅读全部的源码之前,我们先查找一下前人做过的一些工作。好比关于vnpy的源码阅读,评价,工作原理。制止我们走弯路。我找到了一下文档。做一下记载,留作备用。

VNPY 架构计划文档 vn.py源码解读(一、环境设置与回测初试) vn.py源码解读(二、实盘生意业务代码分析) vn.py源码解读(三、事件驱动引擎代码分析) vn.py源码解读(四、主引擎代码分析----初始化函数) vn.py源码解读(五、主引擎代码分析----CTP模块) vn.py源码解读(六、主引擎代码分析---策略模块) vn.py源码解读(七、回测代码剖析) vn.py源码解读(八、回测结果盘算代码剖析) vn.py源码解读(九、策略类代码剖析) vn.py源码解读(十、参数优化)

此中vn.py源代码解读部分有比较细致的讲明,但是缺乏一个系统的概述,别的解读不成体系。等学习到详细的模块的时间,再去联合学习吧。如今先阅读 VNPY 架构计划文档 对vnpy的总体布局有一个深入的理解。

目次布局

我们先把源码的目次布局摆列出来整理下源码的目次布局,方便我们宏观上认识项目。


+circleci 一个yml的设置文件,搁置


+github 一些github的约定的md文件,搁置


+ci 搁置


+docs 文档文件夹,先阅读下,制止采坑


+examples


+test 放置了单位测试文件,搁置


+vnpy 这里是vnpy的重点,是全部的类库文件


经过对上述目次布局整理以后,我们把重点放在一下几个目次

+docs 文档文件夹,先阅读下,制止采坑

+examples

+vnpy 这里是vnpy的重点,是全部的类库文件

而研究的次序就是先读读文档,理解和认识下vnpy,然后再通过examples中的代码,启动vnpy,跟着程序的运行,我们深入理解vnpy。

跟着入口来

通过对目次布局和文档的阅读,我们大概知道examples内里放置着多种调用vnpy要么调用vnpy某些模块的代码。而我们需要做的就是找到这些代码,跟着这些代码梳理清晰vnpy的脉络。

我们首先找到的是 /examples/vn_trader/run.py 这个文件从名字上,我们就可以从名字上推测是启动vntrade的入口程序,找到一个线头,才能跟着梳理整条线索。

run.py中大略一看密密麻麻一大堆代码,我们把解释代码清理以后,到达以下代码:

from vnpy.event import EventEngine from vnpy.trader.engine import MainEngine from vnpy.trader.ui import MainWindow, create_qapp from vnpy.gateway.femas import FemasGateway from vnpy.gateway.deribit import DeribitGateway from vnpy.app.option_master import OptionMasterApp def main(): #创建pyqt界面 qapp = create_qapp() #事件引擎 event_engine = EventEngine() #主引擎 main_eng!ine = MainEngine(event_engine) #增长网关引擎 从名字上看应该是飞马数据 main_engine.add_gateway(FemasGateway) main_engine.add_gateway(DeribitGateway) #这个看着像给主引擎设置选型 main_engine.add_app(OptionMasterApp) #启动主窗口,而且设置事件引擎和主引擎 main_window = MainWindow(main_engine, event_engine) main_window.showMaximized() qapp.exec() if __name__ == "__main__": #入口的启动 main()

上面的代码整理:

创建pyqt的界面=》创建事件引擎=》创建主引擎=》设置!种种网关引擎=》设置设置项=》创建主窗体=》启动。

再看我们解释掉的代码

# flake8: noqa from vnpy.event import EventEngine from vnpy.trader.engine import MainEngine from vnpy.trader.ui import MainWindow, create_qapp # from vnpy.gateway.binance import BinanceGateway # from vnpy.gateway.bitmex import BitmexGateway #…………省略一部分gateway # from vnpy.gateway.bybit import BybitGateway # from vnpy.app.cta_strategy import CtaStrategyApp # from vnpy.app.csv_loader import CsvLoaderApp # from vnpy.app.algo_trading import AlgoTradingApp # from vnpy.app.cta_backtester import CtaBacktesterApp # from vnpy.app.data_recorder import DataRecorderApp # from vnpy.app.risk_manager import RiskManagerApp # from vnpy.app.script_trader import ScriptTraderApp # from vnpy.app.rpc_service import RpcServiceApp # from vnpy.app.spread_trading import SpreadTradingApp # from vnpy.app.portfolio_manager import PortfolioManagerApp

main方法中

# main_engine.add_gateway(BinanceGateway) #…… #…… # main_engine.add_gateway(GateiosGateway) # main_engine.add_gateway(BybitGateway) # main_engine.add_app(CtaStrategyApp) # main_engine.add_app(CtaBacktesterApp) # main_engine.add_app(CsvLoaderApp) # main_engine.add_app(AlgoTradingApp) # main_engine.add_app(DataRecorderApp) # main_engine.add_app(RiskManagerApp) # main_engine.add_app(ScriptTraderApp) # main_engine.add_app(RpcServiceApp) # main_engine.add_app(SpreadTradingApp) # main_engine.add_app(PortfolioManagerApp)

通过解释掉的代码,我们基本上能看出来一些眉目,vnpy的实现思绪应该是创建了一个主引擎,然后把gateway, app ,事件引擎,都会合在了主引擎上面。然后通过窗体和事件引擎发生交互进行数据处置。我们的源码阅读基本可以分成两条线路去学习:

  1. pyqt创建和天生窗体
  2. vnpy的引擎机制

我对pyqt5不理解。以是接下来,我先找个简单点的教程,大概的理解下pyqt5,然后回过头来看看vnpy的窗体的实当代码。暂时吧种种引擎放一放。然后用pyqt5做几个窗体要么复现一下vnpy的窗体作为当前第一个阶段的工作吧。

vn.py是基于Python的开源量化生意业务程序开发框架,可以即时进行开发回测以及实盘生意业务,并且相对于国内的一些其他的所谓免费的量化平台,vn.py是开源的,并且越发的底层,越发的机动,这对于真正想要从事量化的人来说显然是一个很好的选择。

但是,在1.8.1之前的vn.py的版本中,设置环境和安装这个项目并不简单,详细步骤可参考github上的说明。在最新的1.8.1的版本中,提供了一键设置和安装的文件,这无疑大大的简化了环境设置和项目安装的步骤,然而,尽管如此,还是大概会出现林林总总的错误,好比设置文件运行出错(笔者就碰到了这个错误)、网络不稳定导致安装出错,要么自己手动设置时设置的相关软件的版本不对等。本文旨在针对这些错误,提供一种有点笨但是很有用的措施,去解决这些问题。

在最新版本中,提供了一键安装的.bat文件,我们可以根据这个文件内的步骤手动的一步步在cmd下令窗口里输入相关下令,这是个有点笨的方法,但是很有用,可以制止种种错误,并且,幸好下令不多。固然了,假如可以直接完美的运行这个文件,那就最好了,一键就可以轻松搞定。下面,我们讲讲详细的笨措施的操作细节。

首先,上www.github.com/vnpy/vnpy上找到init.bat这个设置文件,如图:

然后点击,就可以看到这个文件内里的代码,如图:

然后,我们只需要一句句的按次序的copy这内里的!下令到cmd下令窗口内里回车运行就可以了,这个過逞大概有点长,耐烦等候。 固然最重要的是在运行这些下令的时间,需要留意以下几点:

1、要使用管理员身份打开cmd,然后再运行,由于安装過逞中会在c盘创建新的文件夹,需要管理员权限。 2、不要把解释copy进去,就是::引出的这些行; 3、第一步安装chocolate时,最后由于系统会主动把这个路径添加到环境变量中,为了制止差别版本大概引发的问题,以是假如之前安装了这个,最好把原来的这个的环境变量删除,固然,可以自己去环境变量那边察看确认一下是否安装了; 4、从下令中就可以看出,安装的是anaconda2,版本为5.2.0,而且也会把anaconda2和scripts这两个文件的路径添加到环境变量内里,以是为了防备运行的时间出现错误调用,需要把原来其他版本的anaconda的环境变量删除要么今后移,固然假如原来就没有设置这个环境变量就不用了(!chocolatey官网近来似乎把anaconda2 5.2.0版本下架了,只有5.1.0,以是大概这步安装会发生找不到5.2.0的错误,这时可以手动去anaconda官网上下载anaconda2 5.2.0,要么把下令中的5.2.0改成5.1.0,这两个版本实在都行,重点是python2.7); 5、在实行设置anaconda2的环境变量下令时,安装文件中的这条下令有误“setx PATH "%PATH%;C:\Program Files\Anaconda2\;C:\Program Files\Anaconda2\Scripts\" ”,把此中的setx改成set即可,假如再不可,则可以手动设置; 6、安装vn.py的时间,留意这里是默认装在c盘的,以是内里有cd c:\这样的下令,因此,打开cmd时,默认的地点就是c盘,不要自行转到其他的盘,否则cd c:\这样的下令是不会成功实行的,也会导致后续安装错误;假如在一键安装时,运行设置文件时出错,也可以看看是不是这个错误,然后在c盘下运行这个文件即可; 7、假如在实行git clone ''https://github.com/vnpy/vnpy.git''时等候了好久还是没有反响,则可以自己手动去这个网站上下载vnpy的压缩包,然后再相应目次下(即c盘)解压安装就行;

8、好像清华镜像和其他的默认channel下架talib了,以是最后假如发现talib没有安装上,则可以试试这条下令conda install -c https://conda.anaconda.org/quantopian ta-lib,要么去这个链接 https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib 下载好对应的talib的wheel文件,然后在cmd中转到放置wheel文件的目次下再用pip运行这个wheel安装文件即可;

9、安装過逞中,假如出现网络不稳定,报错超时,那就设置好vpn,然后继续,要么多试频频,这个没啥好措施的。

最后,当你实行到最后一个下令start /wait install.bat之前,而且最后出现以下页面,那就说明你即将设置和安装成功了,最后一步就是输入start /wait install.bat回车。固然,同样的,假如你在这步出了问题,可以打开install.bat文件,逐句的分析和实行内里的下令。

10、假如在实行install.bat文件過逞中,出现了清华镜像channel已添加的提示而且程序在此停止,那么添加镜像channel背面的下令就不会实行,即你大概就没有安装talib和vnpy包,以是你需要自己动手copy installl.bat文件内里的下令手动实行。

最后的最后,留意看github上的文档,知道怎么去使用。

首先声明一下,笔者是在win7,64位的虚拟机上成功设置的环境,win7/8/10的64位系统应该都是可以成功设置的。以下总结了安装步骤,以及我在安装中碰到的一些坑。

1、首先辈入vnpy项目GitHub的wiki

这是官方的教程,官方的教程是最重要的。
https://github.com/vnpy/vnpy/wiki

2、在右侧栏环境安装选择windows下的环境设置教程

这里写图片描述

3、老诚实实根据教程把所需要的软件下载好

安装Anaconda、Vcredist只要点击网站的下载地点链接,然后下载即可。
安装MongoDB,需要自己选择版本,我们根据教程的要求来,下载3.4版本的MongoDB,安装3.6版本的MongoDB会碰到卡死的问题。

进入MongoDB官网,点击箭头指示位置,选择往期的版本。
这里写图片描述
官方教程要求的版本是Windows Server 2008 R2 64-bit and later, with SSL support x64,
其对应的下载链接就是以下这个。
win32/mongodb-win32-x86_64-2008plus-ssl-3.4.0-signed.msi

就像官方教程中说的一样,以上这些软件的安装過逞中不要修改其他的设置。

4、设置MongoDB

根据官方教程创建相应的数据保存目次,在 指定目次 下创建设置文件mongod.cfg,创建方法是新建文本文档,把内容复制粘贴进去以后把文件后缀名变动为.cfg即可。
然后根据官方教程启动服务即可。
接下来有个坑,
在启动服务的過逞中笔者碰到了程序无法启动的报错,百度以后发现是由于windows系统缺少一个补丁,于是去下载了这个补丁。下载补丁时可以直接百度这个补丁的名称(!假如没记错的话这个补丁是KB2999226),然后进入Microsoft的下载中心下载基于64位操作系统的补丁。由于操作系统差别,大家在启动MongoDb时不肯定会报错,等到报错了再自行百度解决便可,问题不大。

5、安装vnpy

根据官网教程一步步操作即可。假如双击VnTrader.bat可以或许出现如下界面,说明你的vnpy环境基本设置好了。
这里写图片描述

但是笔者在这一步还是碰到了问题,双击VnTrader.bat后出现一个下令行窗口,一闪而过。在cmd窗口下运行run.py文件后可以察看报错的信息(如下图),其时的报错信息是no module named queue,这大概是由于python2和python3的兼容性问题引起的。
这里写图片描述

假如之前的安装都顺遂完成的话,讲道理是不会出现这个问题的。笔者之以是碰到这个问题是由于future这个包没有成功装上。
在安装vnpy时,install.bat文件里有一条语句pip install -r requirements.txt,预计是由于网络的问题requirements.txt文件中所要求的包没有全部装上。
以是解决的措施就是用pip工具手动安装一遍requirements.txt中的包。
这里写图片描述

不管三七二十一把这些需要的包都安装一遍。最后运行VnTrader.bat应该就没问题了。vnpy的设置也就完成了。

全文完

本文网址: http://www.fakeoakleyss.com/p/2021015202443_5524_3190153661/home

推荐阅读

tags

最新发布