vnpy/README.md
2019-11-15 11:45:56 +08:00

246 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# By Traders, For Traders.
<p align="center">
<img src ="https://vnpy.oss-cn-shanghai.aliyuncs.com/vnpy-logo.png"/>
</p>
<p align="center">
<img src ="https://img.shields.io/badge/version-2.0.8-blueviolet.svg"/>
<img src ="https://img.shields.io/badge/platform-windows|linux|macos-yellow.svg"/>
<img src ="https://img.shields.io/badge/python-3.7-blue.svg" />
<img src ="https://img.shields.io/circleci/build/github/vnpy/vnpy?token=4d11df68295c8cc02a2bede46094991364190bbc"/>
<img src ="https://img.shields.io/github/license/vnpy/vnpy.svg?color=orange"/>
</p>
vn.py是一套基于Python的开源量化交易系统开发框架于2015年1月正式发布在开源社区5年持续不断的贡献下一步步成长为全功能量化交易平台目前国内外金融机构用户已经超过300家包括私募基金、证券自营和资管、期货资管和子公司、高校研究机构、自营交易公司、交易所、Token Fund等。
全新的《vn.py全实战进阶》在线课程已经在官方微信公众号[**vnpy-community**]上线50节内容覆盖从策略设计开发、参数回测优化到最终实盘自动交易的完整CTA量化业务流程。购买请扫描下方二维码关注后点击菜单栏的【进阶课程】按钮即可
<p align="center">
<img src ="https://vnpy.oss-cn-shanghai.aliyuncs.com/vnpy_qr.jpg"/>
</p>
在使用vn.py进行二次开发策略、模块等的过程中有任何疑问请查看[**vn.py项目文档**](https://www.vnpy.com/docs/cn/index.html),如果无法解决请前往[**官方社区论坛**](https://www.vnpy.com/forum/)的【提问求助】板块寻求帮助,也欢迎在【经验分享】板块分享你的使用心得!
2.0版本基于Python 3.7全新重构开发如需Python 2上的版本请点击[长期支持版本v1.9.2 LTS](https://github.com/vnpy/vnpy/tree/v1.9.2-LTS)。
## 功能特点
1. 全功能量化交易平台vnpy.trader整合了多种交易接口并针对具体策略算法和功能开发提供了简洁易用的API用于快速构建交易员所需的量化交易应用。
2. 覆盖国内外所有交易品种的交易接口vnpy.gateway
* 国内市场
* CTPctp国内期货、期权
* CTP Minimini国内期货、期权
* CTP证券soptETF期权
* 飞马femas国内期货
* 宽睿oes国内证券A股
* 中泰XTPxtp国内证券A股
* 华鑫奇点tora国内证券A股
* 鑫管家xgj期货资管
* 融航rohon期货资管
* 海外市场
* 富途证券futu港股、美股
* 老虎证券tiger全球证券、期货、期权、外汇等
* Interactive Brokersib全球证券、期货、期权、外汇等
* 易盛9.0外盘tap全球期货
* 直达期货da全球期货
* OANDAoanda外汇、CFD
* 数字货币
* BitMEXbitmex数字货币期货、期权、永续合约
* Bybitbybit数字货币永续合约
* OKEX永续okexs数字货币永续合约
* OKEX合约okexf数字货币期货
* 火币合约hbdm数字货币期货
* Gate.io永续gateios数字货币永续合约
* 币安binance数字货币现货
* OKEXokex数字货币现货
* 火币huobi数字货币现货
* Bitfinexbitfinex数字货币现货
* Coinbasecoinbase数字货币现货
* Bitstampbitstamp数字货币现货
* 1Tokenonetoken数字货币券商现货、期货
* 特殊应用
* RPC服务rpc跨进程通讯接口用于分布式架构
3. 开箱即用的各类量化策略交易应用vnpy.app
* cta_strategyCTA策略引擎模块在保持易用性的同时允许用户针对CTA类策略运行过程中委托的报撤行为进行细粒度控制降低交易滑点、实现高频策略
* cta_backtesterCTA策略回测模块无需使用Jupyter Notebook直接使用图形界面直接进行策略回测分析、参数优化等相关工作
* spread_trading价差交易模块支持自定义价差实时计算价差行情和持仓支持半自动价差算法交易以及全自动价差策略交易两种模式
* algo_trading算法交易模块提供多种常用的智能交易算法TWAP、Sniper、Iceberg、BestLimit等等支持常用算法配置保存
* script_trader脚本策略模块针对多标的组合类交易策略设计同时也可以直接在命令行中实现REPL指令形式的交易不支持回测功能
* rpc_serviceRPC服务模块允许将某一VN Trader进程启动为服务端作为统一的行情和交易路由通道允许多客户端同时连接实现多进程分布式系统
* csv_loaderCSV历史数据加载器用于加载CSV格式文件中的历史数据到平台数据库中用于策略的回测研究以及实盘初始化等功能支持自定义数据表头格式
* data_recorder行情记录模块基于图形界面进行配置根据需求实时录制Tick或者K线行情到数据库中用于策略回测或者实盘初始化
* risk_manager风险管理模块提供包括交易流控、下单数量、活动委托、撤单总数等规则的统计和限制有效实现前端风控功能
4. Python交易API接口封装vnpy.api提供上述交易接口的底层对接实现。
5. 简洁易用的事件驱动引擎vnpy.event作为事件驱动型交易程序的核心。
6. 跨进程通讯标准组件vnpy.rpc用于实现分布式部署的复杂交易系统。
7. Python高性能K线图表vnpy.chart支持大数据量图表显示以及实时数据更新功能。
8. [社区论坛](http://www.vnpy.com)和[知乎专栏](http://zhuanlan.zhihu.com/vn-py)内容包括vn.py项目的开发教程和Python在量化交易领域的应用研究等内容。
9. 官方交流群262656087QQ管理严格定期清除长期潜水的成员入群费将捐赠给vn.py社区基金。
## 环境准备
* 推荐使用vn.py团队为量化交易专门打造的Python发行版[VNStudio-2.0.8](https://download.vnpy.com/vnstudio-2.0.8.exe)内置了最新版的vn.py框架以及VN Station量化管理平台无需手动安装
* 支持的系统版本Windows 7以上/Windows Server 2008以上/Ubuntu 18.04 LTS
* 支持的Python版本Python 3.7 64位**注意必须是Python 3.7 64位版本**
## 安装步骤
在[这里](https://github.com/vnpy/vnpy/releases)下载最新版本,解压后运行以下命令安装:
**Windows**
install.bat
**Ubuntu**
bash install.sh
## 使用指南
1. 在[SimNow](http://www.simnow.com.cn/)注册CTP仿真账号并在[该页面](http://www.simnow.com.cn/product.action)获取经纪商代码以及交易行情服务器地址。
2. 在[vn.py社区论坛](https://www.vnpy.com/forum/)注册获得VN Station账号密码论坛账号密码即是
3. 启动VN Station安装VNConda后会在桌面自动创建快捷方式输入上一步的账号密码登录
4. 点击底部的**VN Trader Lite**按钮,开始你的交易!!!
注意:
* 在VN Trader的运行过程中请勿关闭VN Station会自动退出
* 如需要灵活配置量化交易应用组件,请使用**VN Trader Pro**
## 脚本运行
除了基于VN Station的图形化启动方式外也可以在任意目录下创建run.py写入以下示例代码
```Python
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
def main():
"""Start VN Trader"""
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_window = MainWindow(main_engine, event_engine)
main_window.showMaximized()
qapp.exec()
if __name__ == "__main__":
main()
```
在该目录下打开CMD按住Shift->点击鼠标右键->在此处打开命令窗口/PowerShell后运行下列命令启动VN Trader
python run.py
## 贡献代码
vn.py使用Github托管其源代码如果希望贡献代码请使用github的PRPull Request的流程:
1. [创建 Issue](https://github.com/vnpy/vnpy/issues/new) - 对于较大的改动如新功能大型重构等最好先开issue讨论一下较小的improvement如文档改进bugfix等直接发PR即可
2. Fork [vn.py](https://github.com/vnpy/vnpy) - 点击右上角**Fork**按钮
3. Clone你自己的fork: ```git clone https://github.com/$userid/vnpy.git```
* 如果你的fork已经过时需要手动sync[同步方法](https://help.github.com/articles/syncing-a-fork/)
4. 从**dev**创建你自己的feature branch: ```git checkout -b $my_feature_branch dev```
5. 在$my_feature_branch上修改并将修改push到你的fork上
6. 创建从你的fork的$my_feature_branch分支到主项目的**dev**分支的[Pull Request] - [在此](https://github.com/vnpy/vnpy/compare?expand=1)点击**compare across forks**选择需要的fork和branch创建PR
7. 等待review, 需要继续改进或者被Merge!
在提交代码的时候,请遵守以下规则,以提高代码质量:
* 使用[autopep8](https://github.com/hhatto/autopep8)格式化你的代码。运行```autopep8 --in-place --recursive . ```即可。
* 使用[flake8](https://pypi.org/project/flake8/)检查你的代码确保没有error和warning。在项目根目录下运行```flake8```即可。
## 项目捐赠
过去5年中收到过许多社区用户的捐赠在此深表感谢所有的捐赠资金都投入到了vn.py社区基金中用于支持vn.py项目的运作。
先强调一下:**vn.py是开源项目可以永久免费使用并没有强制捐赠的要求**
捐赠方式支付宝3216630132@qq.com*晓优)
长期维护捐赠清单,请在留言中注明是项目捐赠以及捐赠人的名字。
## 其他内容
* [获取帮助](https://github.com/vnpy/vnpy/blob/dev/docs/SUPPORT.md)
* [社区行为准侧](https://github.com/vnpy/vnpy/blob/dev/docs/CODE_OF_CONDUCT.md)
* [Issue模板](https://github.com/vnpy/vnpy/blob/dev/docs/ISSUE_TEMPLATE.md)
* [PR模板](https://github.com/vnpy/vnpy/blob/dev/docs/PULL_REQUEST_TEMPLATE.md)
## 版权说明
MIT