/vnpy

基于Python的开源量化交易平台开发框架

Primary LanguageC++MIT LicenseMIT

By Traders, For Traders.

vn.py是一套基于Python的开源量化交易系统开发框架,于2015年1月正式发布,在开源社区5年持续不断的贡献下一步步成长为全功能量化交易平台,目前国内外金融机构用户已经超过300家,包括:私募基金、证券自营和资管、期货资管和子公司、高校研究机构、自营交易公司、交易所、Token Fund等。 对vn.py和量化交易新手的建议:

1.Python 适合用于快速开发,解释性语言导致了运行效率比较低,但是开发速度相对于其他语言却很高。当然Python做数据分析的效率比较高,但是做底层会下降一个 数量级的原因,所以尽可能建议用成熟的资管系统去实现多账户。目前虚拟币市场比较混乱,厂商的API水平参差不齐,而A股禁止使用资管系统,外盘相对而言 波动小是一个更成熟的市场,国内的期货的API是最成熟和完善的,那么期货的资管也很丰富,包括了信管家、融航、酷操盘手等。

2.因为搭建整个量化平台需要涉及很多,包括数据处理,策略开发,底层搭建,而这些工作在私募基金是由一个团队去完成的,如果是一个爱好者自己做怎么的也得3-5年吧。所以给出的建议是,尽可能的将精力放在策略开发上,对底层和框架可以拿来主义。

3.对一些人工智能库该怎么用,对大多数程序员来说也只是学会调用,能做到调参的已经是比较高的水平了。若想真正做到精通人工智能算法,对程序员也 不是一个简单的工作,更不要说一般爱好者了,人工智能算法需要的是优秀的算法工程师 , 要熟练的掌握高等数学、线性代数、离散数学、组合数学、矩阵论、概率统计等数学课程,数据结构 (树、链表、矩阵、图)等各种典型的数据结构以及常用的查找和排序算法(比如冒泡排序、快速排序、二分查找、希尔排序等,熟悉各自算法的时间复杂度)。对 于通用型的算法**,比如递推、分治、贪心、递归、动态规划等算法策略要熟记于心并能灵活运用。要做好人工智能算法这一些都离不开深厚的数学功底。。 所以所以对一般量化交易爱好者而言,一上来不要追求人工智能去开发策略。

4.vn.py python框架也在不断进化,vn.py目前最大的问题是性能问题,相信未来还有更好的框架出现,建议爱好者将精力方在策略开发上,策略相比平台则是更保值的东西。

vn.py (http://www.vnpy.cn) 是基于Python的开源量化交易系统开发框架,起源于**国内私募基金的自主交易系统。2015年1月项目正式在Github发布,在开源社区数年持续 不断的贡献下,已经从早期的交易API接口封装,一步步成长为一套多市场多接口的量化交易平台。随着量化交易行业业内关注度的上升,用户群体也日渐多样 化,包括:高校研究机构、专业个人投资者、私募基金、期货资管、证券自营和资管等等。 vn.py由于属于纯Python架构不适合搭建多账户系统,因为Python适合数据处理,但不适合多账户的并发。如需要多账户,消除原始VN.PY性 能架构缺陷,建议采用资管系统来实现。 期货资管系统推荐酷操盘手系列 http://www.kucps.com/ 虽然是商业化产品,但是是可以获得免费使用的。

其他量化交易网站,和支持VN.PY扩展功能

[支持VNPY和任意自编程序的底层仿真TICK级回测系统,实盘代码和回测代码100%一致] http://www.virtualapi.cn/

[实盘低佣金开户,为了给广大量化交易爱好者提供便利,我们帮大家和期货公司谈的手续费非常低了,交易所标准加1分,交反40~90%支持CTP接口] http://www.kaihucn.cn/

[上海期货交易所CTP接口,支持模拟账户注册] http://www.simnow.com.cn

[酷操盘手资管软件、酷操盘手跟单软件系列] http://www.kucps.com/

[行情数据免费下载] http://www.mdshare.cn/

[量化资源导航] http://www.pythonpai.cn

[量化交易社区] http://www.pythonpai.com

[A股交易工具] http://www.quicklib.net

官方微信公众号:vnpy-community,接下来将在公众号中陆续上线各种关于vn.py的使用教程,欢迎关注。

2.0版本基于Python 3.7全新重构开发,不再提供对Python2.0的支持)。

功能特点

  1. 全功能量化交易平台(vnpy.trader),整合了多种交易接口,并针对具体策略算法和功能开发提供了简洁易用的API,用于快速构建交易员所需的量化交易应用。

  2. 覆盖国内外所有交易品种的交易接口(vnpy.gateway):

    • 国内市场

      • CTP(ctp):国内期货、期权

      • CTP Mini(mini):国内期货、期权

      • 飞马(femas):国内期货

      • 宽睿(oes):国内证券(A股)

      • 中泰XTP(xtp):国内证券(A股)

      • 华鑫奇点(tora):国内证券(A股)

    • 海外市场

      • 富途证券(futu):港股、美股

      • 老虎证券(tiger):全球证券、期货、期权、外汇等

      • Interactive Brokers(ib):全球证券、期货、期权、外汇等

      • 易盛9.0外盘(tap):全球期货

    • 数字货币

      • BitMEX(bitmex):数字货币期货、期权、永续合约

      • OKEX合约(okexf):数字货币期货

      • 火币合约(hbdm):数字货币期货

      • 币安(binance):数字货币现货

      • OKEX(okex):数字货币现货

      • 火币(huobi):数字货币现货

      • Bitfinex(bitfinex):数字货币现货

      • 1Token(onetoken):数字货币券商(现货、期货)

    • 特殊应用

      • RPC服务(rpc):跨进程通讯接口,用于分布式架构
  3. 开箱即用的各类量化策略交易应用(vnpy.app):

    • cta_strategy:CTA策略引擎模块,在保持易用性的同时,允许用户针对CTA类策略运行过程中委托的报撤行为进行细粒度控制(降低交易滑点、实现高频策略)

    • cta_backtester:CTA策略回测模块,无需使用Jupyter Notebook,直接使用图形界面直接进行策略回测分析、参数优化等相关工作

    • algo_trading:算法交易模块,提供多种常用的智能交易算法:TWAP、Sniper、Iceberg、BestLimit等等,支持常用算法配置保存

    • script_trader:脚本策略模块,针对多标的组合类交易策略设计,同时也可以直接在命令行中实现REPL指令形式的交易,不支持回测功能

    • rpc_service:RPC服务模块,允许将某一VN Trader进程启动为服务端,作为统一的行情和交易路由通道,允许多客户端同时连接,实现多进程分布式系统

    • csv_loader:CSV历史数据加载器,用于加载CSV格式文件中的历史数据到平台数据库中,用于策略的回测研究以及实盘初始化等功能,支持自定义数据表头格式

    • data_recorder:行情记录模块,基于图形界面进行配置,根据需求实时录制Tick或者K线行情到数据库中,用于策略回测或者实盘初始化

    • risk_manager:风险管理模块,提供包括交易流控、下单数量、活动委托、撤单总数等规则的统计和限制,有效实现前端风控功能

  4. Python交易API接口封装(vnpy.api),提供上述交易接口的底层对接实现。

  5. 简洁易用的事件驱动引擎(vnpy.event),作为事件驱动型交易程序的核心。

  6. 跨进程通讯标准组件(vnpy.rpc),用于实现分布式部署的复杂交易系统。

  7. Python高性能K线图表(vnpy.chart),支持大数据量图表显示以及实时数据更新功能。

  8. VNPY首页知乎专栏,内容包括vn.py项目的开发教程和Python在量化交易领域的应用研究等内容。

  9. 官方交流群236828089(QQ),管理严格(定期清除长期潜水的成员),入群费将捐赠给vn.py社区基金。

环境准备

  • 推荐使用vn.py团队为量化交易专门打造的Python发行版VNStudio-2.0.4,内置了最新版的vn.py框架以及VN Station量化管理平台,无需手动安装
  • 支持的系统版本:Windows 7以上/Windows Server 2008以上/Ubuntu 18.04 LTS
  • 支持的Python版本:Python 3.7 64位(注意必须是Python 3.7 64位版本

安装步骤

这里下载最新版本,解压后运行以下命令安装: Windows

install.bat

Ubuntu

bash install.sh

使用指南

  1. SimNow注册CTP仿真账号,并在该页面获取经纪商代码以及交易行情服务器地址。

  2. VirtualAPi For CTP支持VNPY的CTP框架进行回测,并保证实盘代码和回测代码一模一样 http://www.virutalapi.cn

  3. 启动VN Station(安装VNConda后会在桌面自动创建快捷方式),输入上一步的账号密码登录

  4. 点击底部的VN Trader Lite按钮,开始你的交易!!!

注意:

  • 在VN Trader的运行过程中请勿关闭VN Station(会自动退出)
  • 如需要灵活配置量化交易应用组件,请使用VN Trader Pro

脚本运行

除了基于VN Station的图形化启动方式外,也可以在任意目录下创建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 Trader:

python run.py

贡献代码

vn.py使用Github托管其源代码,如果希望贡献代码请使用github的PR(Pull Request)的流程:

  1. 创建 Issue - 对于较大的改动(如新功能,大型重构等)最好先开issue讨论一下,较小的improvement(如文档改进,bugfix等)直接发PR即可

  2. Fork vn.py - 点击右上角Fork按钮

  3. Clone你自己的fork: git clone https://github.com/$userid/vnpy.git

  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] - 在此点击compare across forks,选择需要的fork和branch创建PR

  7. 等待review, 需要继续改进,或者被Merge!

在提交代码的时候,请遵守以下规则,以提高代码质量:

  • 使用autopep8格式化你的代码。运行autopep8 --in-place --recursive . 即可。
  • 使用flake8检查你的代码,确保没有error和warning。在项目根目录下运行flake8即可。

项目捐赠

过去5年中收到过许多社区用户的捐赠,在此深表感谢!所有的捐赠资金都投入到了vn.py社区基金中,用于支持vn.py项目的运作。

先强调一下:vn.py是开源项目,可以永久免费使用 !!!

VNPY原始作者:用Python的程序员 还有其他为VNPY做出贡献的其他作者

其他内容

. .

版权说明

MIT