From ee592746388dc0785006d1f67d0926631d7a21b7 Mon Sep 17 00:00:00 2001 From: "vn.py" Date: Wed, 7 Jun 2017 21:13:59 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=9B=B4=E6=96=B0Readme.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 198 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 120 insertions(+), 78 deletions(-) diff --git a/README.md b/README.md index c6456462..460591cf 100644 --- a/README.md +++ b/README.md @@ -1,46 +1,98 @@ -# vn.py - 基于python的开源交易平台开发框架 +# vn.py - By Traders, For Traders. + --- -### 项目捐赠 +### 简介 -过去一个季度中收到了开源社区用户相当金额的捐赠,在此深表感谢!所有的捐赠资金都投入到了vn.py社区基金中,用于支持vn.py项目的运作。最近主要的一个支出是相关文档编写,目前来看文档完成的速度和质量都显著超出预期。 +vn.py是一套基于Python的开源量化交易程序开发框架,起源于国内私募的自主量化交易系统。2015年初项目启动时只是单纯的交易API接口的Python封装。随着业内关注度的上升和社区不断的贡献,目前已经一步步成长为一套全面的交易程序开发框架,用户群体也日渐多样化,包括私募基金、券商自营和资管、期货资管和子公司、高校研究机构和专业个人投资者等。 -先强调一下:**vn.py是开源项目,可以永久免费使用,并没有强制捐赠的要求!!!** +--- +### 环境准备 -捐赠方式:支付宝3216630132@qq.com(*晓优) +1. 支持的操作系统:Windows 7/8/10/Server 2008 +2. 安装[MongoDB](https://www.mongodb.org/downloads#production),并[将MongoDB配置为系统服务](https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/#configure-a-windows-service-for-mongodb-community-edition) +3. 安装[Anaconda](http://www.continuum.io/downloads),**注意必须是Python 2.7 32位版本** +4. 安装[Visual C++ Redistributable Packages for VS2013 x86版本](https://support.microsoft.com/en-us/help/3138367/update-for-visual-c-2013-and-visual-c-redistributable-package) -计划长期维护一份捐赠清单,所以请在留言中注明是项目捐赠以及捐赠人的名字(当然想匿名的用户就随意了)。 +--- +### 安装 +**方法1** + +在[这里](https://github.com/vnpy/vnpy/releases)下载最新版本,解压后运行install.bat自动安装。 + +**方法2** + +``` +pip install vnpy pymongo msgpack-python websocket-client qdarkstyle + +conda install -c quantopian ta-lib=0.4.9 +``` --- ### Quick Start -对于大部分用户来说,无需自行编译API接口,可以直接使用vn.trader进行交易和策略开发: -1. 准备一台Windows 7 64位系统的电脑 +1. 在[SimNow](http://simnow.com.cn/)注册CTP仿真账号,记下你的**账号、密码、经纪商编号**,然后下载快期查询你的**交易和行情服务器地址** -2. 安装[Anaconda](http://www.continuum.io/downloads):下载**Anaconda 4.0.0** Python 2.7 32位版本,**注意必须是32位** +2. 找到你的Anaconda安装目录,打开Anaconda2\Lib\site-packages\vnpy-1.6.2b0-py2.7.egg\vnpy\trader\gateway\ctpGateway\CTP_connect.json,修改账号、密码、服务器等为上一步注册完成后你的信息(注意使用专门的编程编辑器,如Sublime Text等,防止json编码出错) -3. 安装[MongoDB](https://www.mongodb.org/downloads#production):下载Windows 64-bit 2008 R2+版本 +3. 在任意目录将以下内容保存为run.py,并双击运行(若无法双击,则在当前目录按住Shift点鼠标右键,打开cmd输入python run.py运行): -4. 安装pymongo:在cmd中运行pip install pymongo +``` +# encoding: UTF-8 -5. 参考[这里](http://jingyan.baidu.com/article/6b97984dbeef881ca2b0bf3e.html),将MongoDB注册为Windows服务并启动 +# 重载sys模块,设置默认字符串编码方式为utf8 +import sys +reload(sys) +sys.setdefaultencoding('utf8') -6. 安装[Visual C++ Redistributable Packages for VS2013](https://www.microsoft.com/en-gb/download/details.aspx?id=40784),中英文随意 +# vn.trader模块 +from vnpy.event import EventEngine +from vnpy.trader.vtEngine import MainEngine +from vnpy.trader.uiQt import qApp +from vnpy.trader.uiMainWindow import MainWindow -7. 在本页面选择Download ZIP下载项目代码,并解压到C:\vnpy +# 加载底层接口 +from vnpy.trader.gateway import ctpGateway -8. 在[SimNow](http://simnow.com.cn/)注册CTP仿真账号,记下你的**账号、密码、经纪商编号**,然后下载快期查询你的**交易和行情服务器地址** - -9. 把C:\vnpy\vn.trader\ctpGateway\CTP_connect.json中的账号、密码、服务器等修改为上一步注册完成后你的信息(注意使用专门的编程编辑器,如Sublime Text等,防止json编码出错) - -10. 双击运行C:\vnpy\vn.trader\vtMain.py,开始交易! +# 加载上层应用 +from vnpy.trader.app import riskManager, ctaStrategy -对于想研究API封装的用户,可以参考[vnpy.org](http://vnpy.org)上面的教程一步步操作。 +#---------------------------------------------------------------------- +def main(): + """主程序入口""" + # 创建事件引擎 + ee = EventEngine() -其他作者建议使用的软件工具: + # 创建主引擎 + me = MainEngine(ee) + + # 添加交易接口 + me.addGateway(ctpGateway) + + # 添加上层应用 + me.addApp(riskManager) + me.addApp(ctaStrategy) + + # 创建主窗口 + mw = MainWindow(me, ee) + mw.showMaximized() + + # 在主线程中启动Qt事件循环 + sys.exit(qApp.exec_()) + + +if __name__ == '__main__': + main() +``` + +更多使用方法方法请参考examples下的目录。 + +--- + +### 开发工具推荐 * [WingIDE](http://wingware.com/):非常好用的Python集成开发环境(作者就是用它写的vn.py) @@ -53,95 +105,74 @@ * [Visual Studio 2013](https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx):这个就不多说了(作者编译API封装用的是2013版本) + --- ### 项目结构 -1. 丰富的Python交易和数据API接口(vn.api),基本覆盖了国内外所有常规交易品种(股票、期货、期权、外汇、外盘、比特币),具体包括: +1. 丰富的Python交易和数据API接口(vnpy.api),基本覆盖了国内外所有常规交易品种(股票、期货、期权、外汇、外盘、比特币),具体包括: - - CTP(vn.ctp) + - CTP(ctp) - - 飞马(vn.femas) + - 飞马(femas) - - LTS(vn.lts) + - LTS(lts) - - 金仕达黄金(vn.ksgold) + - 中信证券期权(cshshlp) - - 金仕达期权(vn.ksotp) + - 金仕达黄金(ksgold) - - 飞鼠(vn.sgit) + - 金仕达期权(ksotp) - - 飞创(vn.xspeed) + - 飞鼠(sgit) - - QDP(vn.qdp) + - 飞创(xspeed) - - 上海直达期货(vn.shzd) + - QDP(qdp) - - Interactive Brokers(vn.ib) + - 上海直达期货(shzd) - - OANDA(vn.oanda) + - Interactive Brokers(ib) - - OKCOIN(vn.okcoin) - - - 火币(vn.huobi) + - OANDA(oanda) - - 链行(vn.lhang) + - OKCOIN(okcoin) - - 通联数据(vn.datayes) + - 火币(huobi) -2. 简洁易用的事件驱动引擎(vn.event),作为事件驱动型交易程序的核心 + - 链行(lhang) -3. 支持服务器端数据推送的RPC框架(vn.rpc),用于实现多进程分布式架构的交易系统 + - 通联数据(datayes) -3. 针对如何使用API和事件驱动引擎开发交易程序的示例(vn.demo) +2. 简洁易用的事件驱动引擎(vnpy.event),作为事件驱动型交易程序的核心 + +3. 支持服务器端数据推送的RPC框架(vnpy.rpc),用于实现多进程分布式架构的交易系统 + +4. 开箱即用的实盘交易平台框架(vnpy.trader),整合了多种交易接口,并针对具体策略算法和功能开发提供了简洁易用的API,用于快速构建交易员所需的量化交易程序,应用举例: -4. 开箱即用的实盘交易平台vn.trader(相比之下vn.demo仅建议学习用),整合了多种交易接口,并针对具体策略算法和功能开发提供了简洁易用的API,功能应用举例: - * 同时登录多个交易接口,在一套界面上监控多种市场的行情和多种资产账户的资金、持仓、委托、成交情况 - + * 支持跨市场套利(CTP期货和LTS证券)、境内外套利(CTP期货和IB外盘)、多市场数据整合实时预测走势(CTP的股指期货数据、IB的外盘A50数据、Wind的行业指数数据)等策略应用 - + * CTA策略引擎模块,在保持易用性的同时,允许用户针对CTA类策略运行过程中委托的报撤行为进行细粒度控制(降低交易滑点、实现高频策略) -5. 关于项目在实盘交易中的应用指南vn.tutorial + * 实盘行情记录,支持Tick和K线数据的落地,用于策略开发回测以及实盘运行初始化 -6. [官网](http://vnpy.org)和[知乎专栏](http://zhuanlan.zhihu.com/vn-py),内容目前主要是《Python量化交易平台开发教程系列》,以及vn.py项目进展的更新 +5. 关于vn.py项目的应用演示(examples),对于新手而言可以从这里开始学习vn.py项目的使用方式 + +5. 关于项目在实盘交易中的一些使用指南(tutorial) + +6. vn.py项目的Docker镜像(docker),目前尚未完成 + +7. [官网](http://vnpy.org)和[知乎专栏](http://zhuanlan.zhihu.com/vn-py),内容包括vn.py项目的开发教程和Python在量化交易领域的应用研究等内容 7. 官方交流QQ群262656087,管理较严格(定期清除长期潜水的成员) ---- -### 注意事项 - -按照以上方式配置后,便可以使用vn.py的CTP, LTS, KSOTP等大多数交易接口,但在启动vtMain.py时, 你可能会遇到以下错误: - -``` -请先安装WindPy接口 -global name 'w' is not defined -No module named ib.ext.Contract -No module named websocket -``` - -它们分别对应Wind, IB, OKCOIN三个交易接口,如果你不使用这三个接口,可以直接忽略这些错误,不会影响使用。 - -但如果你需要,可以通过以下方式安装其对应的库: - -* WIND - 到[大奖章网站](http://www.dajiangzhang.com/document)注册并下载安装**Wind资讯开放应用接口**个人版即可,使用机构版Wind终端的用户可以直接在终端里安装Python接口 - -* IB - 参考https://github.com/blampe/IbPy, 基本上是两步: - -``` -git clone https://github.com/blampe/IbPy.git - -cd IbPy -python setup.py install - -``` -* OKCOIN - ```pip install websocket-client``` or ```conda install websocket-client``` --- -### How To Contribute +### 贡献代码 -vn.py使用github托管其源代码,贡献代码使用github的PR(Pull Request)的流程,十分的强大与便利: +vn.py使用github托管其源代码,如果希望贡献代码请使用github的PR(Pull Request)的流程: 1. [创建 Issue](https://github.com/vnpy/vnpy/issues/new) - 对于较大的改动(如新功能,大型重构等)最好先开issue讨论一下,较小的improvement(如文档改进,bugfix等)直接发PR即可 @@ -155,6 +186,18 @@ vn.py使用github托管其源代码,贡献代码使用github的PR(Pull Request 6. 等待review, 需要继续改进,或者被Merge! +--- +### 项目捐赠 + +过去的半年中陆续收到了许多用户的捐赠,在此深表感谢!所有的捐赠资金都投入到了vn.py社区基金中,用于支持vn.py项目的运作。最近主要的一个支出是相关文档编写,目前来看文档完成的速度和质量都显著超出预期。 + +先强调一下:**vn.py是开源项目,可以永久免费使用,并没有强制捐赠的要求!!!** + +捐赠方式:支付宝3216630132@qq.com(*晓优) + +计划长期维护一份捐赠清单,所以请在留言中注明是项目捐赠以及捐赠人的名字(当然想匿名的用户就随意了)。 + + --- ### 联系作者 作者知乎名:用python的交易员,想要联系作者可以通过知乎私信 @@ -162,4 +205,3 @@ vn.py使用github托管其源代码,贡献代码使用github的PR(Pull Request --- ### License MIT - From a9bdeadeefee0e107a6d86fb055d3a4c10f08d2f Mon Sep 17 00:00:00 2001 From: chenxy123 Date: Wed, 7 Jun 2017 21:16:49 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=9B=B4=E6=96=B0setup.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/setup.py b/setup.py index 5851ff23..a584359f 100644 --- a/setup.py +++ b/setup.py @@ -42,16 +42,18 @@ setup( author_email='vn.py@foxmail.com', license='MIT', url='http://www.vnpy.org', - description='A framework for developing quantitative trading programmes', + description='A framework for developing Quantitative Trading programmes', long_description = __doc__, keywords='quant quantitative investment trading algotrading', classifiers=['Development Status :: 4 - Beta', - 'Environment :: Quantiative Trading', - 'Operating System :: Windows 7', - 'Operating System :: Windows 8', - 'Operating System :: Windows 10', - 'Operating System :: Windows Server 2008', + 'Operating System :: Microsoft :: Windows :: Windows 7', + 'Operating System :: Microsoft :: Windows :: Windows 8', + 'Operating System :: Microsoft :: Windows :: Windows 10', + 'Operating System :: Microsoft :: Windows :: Windows Server 2008', + 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', + 'Topic :: Office/Business :: Financial :: Investment', + 'Programming Language :: Python :: Implementation :: CPython', 'License :: OSI Approved :: MIT License'], packages=getSubpackages('vnpy'), package_data={'': ['*.json', '*.md', '*.ico', From 83fe273188f2aa27b60871f94ebaf04570719c0b Mon Sep 17 00:00:00 2001 From: chenxy123 Date: Wed, 7 Jun 2017 21:20:04 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=9B=BF=E6=8D=A2tab=E4=B8=BA4=E4=B8=AA?= =?UTF-8?q?=E7=A9=BA=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 460591cf..f2ba4233 100644 --- a/README.md +++ b/README.md @@ -62,30 +62,30 @@ from vnpy.trader.app import riskManager, ctaStrategy #---------------------------------------------------------------------- def main(): - """主程序入口""" - # 创建事件引擎 - ee = EventEngine() + """主程序入口""" + # 创建事件引擎 + ee = EventEngine() - # 创建主引擎 - me = MainEngine(ee) + # 创建主引擎 + me = MainEngine(ee) - # 添加交易接口 - me.addGateway(ctpGateway) + # 添加交易接口 + me.addGateway(ctpGateway) - # 添加上层应用 - me.addApp(riskManager) - me.addApp(ctaStrategy) + # 添加上层应用 + me.addApp(riskManager) + me.addApp(ctaStrategy) - # 创建主窗口 - mw = MainWindow(me, ee) - mw.showMaximized() + # 创建主窗口 + mw = MainWindow(me, ee) + mw.showMaximized() - # 在主线程中启动Qt事件循环 - sys.exit(qApp.exec_()) + # 在主线程中启动Qt事件循环 + sys.exit(qApp.exec_()) if __name__ == '__main__': - main() + main() ``` 更多使用方法方法请参考examples下的目录。