vn.py是一套基于Python的开源量化交易系统开发框架,于2015年年1月正式发布,在开源社区6年持续不断的贡献下一步步成长为全功能量化交易平台,目前国内外金融机构用户已经超过600家,包括:私募基金、证券自营和资管、期货资管和子公司、高校研究机构、自营交易公司、交易所、Token Fund等。
全新的“vn.py全实战进阶”系列在线课程,已经在官方微信公众号[vnpy-社区访问数/每百万人:上线,覆盖cta策略(已完成)、期权波动率交易(更新中)等内容.购买请扫描下方二维码关注后,点击菜单栏的[进阶课程]按钮即可:
在使用vn.py进行二次开发(策略、模块等)的过程中有任何疑问,请查看vn.py项目文档,如果无法解决请前往官方社区论坛的[提问求助]板块寻求帮助,也欢迎在[经验分享]板块分享你的使用心得!
针对vn.py的金融机构用户,创建了一个专门的[vn.py机构用户群](QQ群号:676499931),主要分享机构应用方面相关的问题,如:银行间市场接入、资管O32系统、分布式部署等内容。请注意本群只对金融机构用户开放,加群时请注明:姓名-机构-部门.
功能特点
- 全功能量化交易平台(vnpy.trader),整合了多种交易接口,并针对具体策略算法和功能开发提供了简洁易用的接口,用于快速构建交易员所需的量化交易应用。
- 网关(vnpy.覆盖国内外所有交易品种的交易接口):
- 国内市场
- ctp(Ctp):国内期货、期权
- CTP Mini(迷你):国内期货、期权
- ctp证券(Sopt):etf期权
- 飞马(女性):国内期货
- 用友金融(恒生):国内期货、ETF期权
- 飞创证券(秒):etf期权
- 南华nhtd(Nhtd):国内期货、etf期权
- 宽睿(OES):国内证券(A股)、ETF期权
- 中泰xtp(Xtp):国内证券(A股)、etf期权
- 国泰君安:国内证券(A股)
- 恒生期权(Hsoption):etf期权
- 华鑫奇点(TORA):国内证券(A股)、ETF期权
- 星巴克(飞鼠):黄金TD、国内期货
- 金仕达黄金(KS黄金):黄金TD
- 鑫管家(Xgj):期货资管
- 融航(罗洪):期货资管
- 康星(中汇亿达):银行间市场
- 海外市场
- 富途证券(富图):港股、美股
- 老虎证券(老虎):全球证券、期货、期权、外汇等
- 互动经纪人(Ib):全球证券、期货、期权、外汇等
- 易盛9.0外盘(TAP):全球期货
- 直达期货(Da):全球期货
- MetaTrader5(MT5):外汇、cfd、期货、股票
- 羊驼(羊驼):美股(零佣金)
- 卡西亚(佳兆业投资):港股
- 数字货币
- bitmex(Bitmex):数字货币期货、期权、永续合约
- BYBIT(BYBIT):数字货币永续合约
- 币安(二进制):数字货币现货
- 币安永续(二进制):数字货币永续合约
- OKEX(OKEX):数字货币现货、期货、永续、期权(V5统一账户)
- 火币(火壁):数字货币现货
- 火币期货(Hoobif):数字货币期货
- 火币永续(霍比斯):数字货币永续
- 霍比奥(火币期权):数字货币期权
- Gate.io永续(Gateios):数字货币永续合约
- 派生比特(派生比特),数字货币期权、永续合约
- Bitfinex(Bitfinex):数字货币现货
- Coinbase(Coinbase):数字货币现货
- 位戳(位戳):数字货币现货
- 1Token(一个Token):数字货币券商(现货、期货)
- 特殊应用
- rpc服务(Rpc):跨进程通讯接口,用于分布式架构
- 开箱即用的各类量化策略交易应用(vnpy.app):
- cta_Strategy:cta策略引擎模块,在保持易用性的同时,允许用户针对cta类策略运行过程中委托的报撤行为进行细粒度控制(降低交易滑点、实现高频策略)
- cta_backtester:cta策略回测模块,无需使用Jupyter笔记本,直接使用图形界面直接进行策略回测分析、参数优化等相关工作
- 价差交易:价差交易模块,支持自定义价差,实时计算价差行情和持仓,支持半自动价差算法交易以及全自动价差策略交易两种模式
- OPTION_MASTER:期权交易模块,针对国内期权市场设计,支持多种期权定价模型、隐含波动率曲面计算、希腊值风险跟踪等功能
- Portfolio_Strategy:组合策略模块,面向同时交易多合约的量化策略(阿尔法、期权套利等),提供历史数据回测和实盘自动交易功能
- ALGO_TRADING:算法交易模块,提供多种常用的智能交易算法:twap、狙击手、冰山、BestLimit等,支持对接外部智能算法交易服务(如金纳算法)
- SCRIPT_TRADER:脚本策略模块,针对多标的组合类交易策略设计,同时也可以直接在命令行中实现repl指令形式的交易,不支持回测功能
- 市场雷达:市场雷达模块,允许用户基于自定义的公式实时计算任意合约组合数据,公式支持标准Python运算语法以及内置函数
- 纸质帐户:模拟交易模块,纯本地化实现的模拟交易功能,基于交易接口获取的实时行情进行委托撮合,提供委托成交推送以及持仓记录
- Chart_Wizard:k线图表模块,基于RQ Data数据服务(期货)或者交易接口(数字货币)获取历史数据,并结合Tick推送显示实时行情变化
- Portfolio_MANAGER:投资组合模块,面向各类基本面交易策略,以独立的策略子账户为基础,提供交易仓位的自动跟踪以及盈亏实时统计功能
- rpc_SERVICE:rpc服务模块,允许将某一VN Trader进程启动为服务端,作为统一的行情和交易路由通道,允许多客户端同时连接,实现多进程分布式系统
- DATA_MANAGER:历史数据管理模块,通过树形目录查看数据库中已有的数据概况,选择任意时间段数据查看字段细节,支持csv文件的数据导入和导出
- 数据记录器:行情记录模块,基于图形界面进行配置,根据需求实时录制Tick或者K线行情到数据库中,用于策略回测或者实盘初始化
- EXCEL_RTD:EXCEL RTD(实时数据)实时数据服务,基于PYXLL模块实现在EXCEL中获取各类数据(行情、合约、持仓等)的实时推送更新
- RISK_MANAGER:风险管理模块,提供包括交易流控、下单数量、活动委托、撤单总数等规则的统计和限制,有效实现前端风控功能
- python交易接口接口封装(vnpy.api),提供上述交易接口的底层对接实现。
- 简洁易用的事件驱动引擎(vnpy.event),作为事件驱动型交易程序的核心。
- 对接各类数据库的标准化管理客户端(vnpy.database):
- Sql类
- sqlite(Sqlite):轻量级单文件数据库,无需安装和配置数据服务程序,vn.py的默认选项,适合入门新手用户
- mysql(Mysql):世界最流行的开源关系型数据库,文档资料极为丰富,且可替换其他高newsql兼容实现(如tidb)
- postgresql(Postgresql):特性更为丰富的开源关系型数据库,支持通过扩展插件来新增功能,只推荐熟手使用
- Nosql类
- mongodb(Mongodb):基于分布式文件储存(bson格式)的非关系型数据库,内置的热数据内存缓存提供更快读写速度
- influxdb(Influxdb):针对时序数据专门设计的非关系型数据库,列式数据储存提供极高的读写效率和外围分析应用
- 跨进程通讯标准组件(vnpy.rpc),用于实现分布式部署的复杂交易系统。
- Python高性能K线图表(vnpy.Chart),支持大数据量图表显示以及实时数据更新功能。
- 社区论坛和知乎专栏、内容包括vn.py项目的开发教程和Python在量化交易领域的应用研究等内容.
- 官方交流群262656087(QQ),管理严格(定期清除长期潜水的成员),入群费将捐赠给vn.py社区基金。
环境准备
- 推荐使用vn.py团队为量化交易专门打造的Python发行版VNStudio-2.4.0,内置了最新版的vn.py框架以及VN站量化管理平台,无需手动安装
- 支持的系统版本:Windows 7以上/Windows Server2008以上/Ubuntu18.04LTS
- 支持的Python版本:Python3.764位(注意必须是Python3.764位版本)
安装步骤
在这里下载最新版本,解压后运行以下命令安装:
窗口
Ubuntu
使用指南
- 在SimNow注册CTP仿真账号,并在该页面获取经纪商代码以及交易行情服务器地址.
- 在vn.py社区论坛注册获得VN站账号密码(论坛账号密码即是)
- 启动VN工作站(安装VN工作室后会在桌面自动创建快捷方式),输入上一步的账号密码登录
- 点击底部的VN Trader Lite按钮,开始你的交易!
注意:
- 在VN交易员的运行过程中请勿关闭VN站(会自动退出)
- 如需要灵活配置量化交易应用组件,请使用VN Trader Pro
脚本运行
除了基于VN站的图形化启动方式外,也可以在任意目录下创建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
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交易员:
贡献代码
vn.py使用github托管其源代码,如果希望贡献代码请使用gihub的PR(拉取请求)的流程:
- 创建 Issue-对于较大的改动(如新功能,大型重构等)最好先开Issue讨论一下,较小的Improval(如文档改进,BUGFIX等)直接发PR即可)
- 叉子vn.py–点击右上角叉子按钮
- 克隆你自己的分叉:
git clone https://github.com/$userid/vnpy.git
- 从开发人员创建你自己的功能分支:
git checkout -b $my_feature_branch dev
- 在$MY_FEATURE_BRANCH上修改并将修改推送到你的分叉上
- 创建从你的分叉的$MY_FEATURE_BRANCH分支到主项目的开发人员分支的[拉取请求]-在此点击跨分叉进行比较,选择需要的Fork和分支机构创建PR
- 等待审查,需要继续改进,或者被合并!
在提交代码的时候,请遵守以下规则,以提高代码质量:
- 使用autopep8格式化你的代码.运行
autopep8 --in-place --recursive .
即可.
- 使用flake8检查你的代码,确保没有Error和警告。在项目根目录下运行
flake8
即可.
项目捐赠
过去6年中收到过许多社区用户的捐赠,在此深表感谢!所有的捐赠资金都投入到了vn.py社区基金中,用于支持vn.py项目的运作。
先强调一下:vn.py是开源项目,可以永久免费使用,并没有强制捐赠的要求!
捐赠方式:支付宝3216630132@qq.com(*晓优)
长期维护捐赠清单,请在留言中注明是项目捐赠以及捐赠人的名字.
其他内容
版权说明
麻省理工学院