Left, Down, Page Down | Next slide |
---|---|
Right, Up, Page Up | Previous slide |
Space | Forward |
Use a spacebar or arrow keys to navigate
国泰君安 固定收益部 IT组
VNPY是一个 Python 程序化交易 开源开发框架
VNPY主要包含以下几个部分功能
vnpy.api
,使用Python对C++行情及交易接口的封装(语言翻译)vnpy.event
,使用Python对事件驱动编程框架的实现vnpy.data
,使用Python对历史行情数据接口的封装(使用简化),不完整vnpy.pricing
,使用Python对部分定价模型的实现(事实上也即一些通用函数),不完整vnpy.rpc
,使用Python多进程解耦的实现(RPC是指远程过程调用,跨进程通讯,核心是实现 C能给S说话,S也能给C说话)vnpy.trader
,使用Python对以上实现的综合运用(结构组织比较混乱)vnpy.trader.gateway
,使用Python对原始行情及交易接口的封装(使用简化及事件驱动编程框架运用)vnpy.trader.app
,使用Python对各种应用引擎、前端GUI的实现vnpy.trader.*
,使用Python对基础引擎、通用方法及前端GUI模块的实现VNPY使用示例、文档及其他
examples
,VNPY使用示例vnpy.rpc
vnpy.rpc
docker
, docs
, beta
,环境,教程及计划中的开发,不完整
因为作者基于Windows 7采用Visio Studio 2013对Windows版本C++及dll文件涉及的接口进行的封装,所以生成的Python封装接口也需要Windows环境。 另外,作者要求使用32位的Python 2.7(个人观点,如果仅使用VNPY提供的封装接口,则理论上应该可以采用其他版本的Python)。
install.bat
,就是本地编译安装Python包双击examples/VnTrader
目录下的VnTrader.bat
启动VnTrader检查是否安装成功。
个人推荐,基于VNPY提供的对C++行情及交易接口封装的Python接口库(vnpy.api
),自己重新对VNPY源码其他部分进行解耦及重构后使用。
换言之,使用 vnpy.api
提供的 行情接口 获取当前行情数据,然后根据 自己定义的流程及交易策略 进行决策, 最后通过 vnpy.api
提供的 交易接口 进行交易。(架构及通信方面采用或参照 vnpy.event
及 vnpy.rpc
)
examples
目录里的示例代码 + vnpy/trader/
目录里的源代码根据官方文档,VNPY对以下行情及交易接口进行了封装
具体版本代码中可以使用的接口见源码的vnpy/api
文件夹。
事件队列(put),轮询获取,回调函数列表(register)
相关源码代码位于 vnpy/event
文件夹
无界面的使用EventEngine2类(如examples/CtaTrading,使用的单独线程实现的定时器功能); 有界面的使用EventEngine类(如examples/VnTrader,使用了PyQt中的QTimer实现的定时器功能)。
相关源码位于 examples/DataRecording
及 vnpy/trader/app/dataRecorder
对象初始化时,实现事件绑定,开始监听及记录行情数据(依靠主引擎推送相关事件及数据);
使用 examples/VnTrader
时,可以点击主界面菜单栏 功能->行情记录
来查看目前正在记录的行情数据内容。
相关源码位于 examples/SpreadTrading
+ vnpy/trader/app/SpreadTrading
下单分为多个步骤
合约代码 - Contract - QuoteDecision - OrderRequest - Splited OrderRequests (委托转换及分离下单)
quantTrader │ spreadTrader.bat │ spreadTrader.py ├─configs │ CTP_connect.json │ ST_setting.json │ VT_setting.json ├─trader │ │ constants.py │ │ objects.py │ │ settings.py │ │ utils.py │ ├─apps │ │ └─spreadTrader │ │ │ stAlgo.py │ │ │ stBase.py │ │ │ stEngine.py │ │ │ uiStWidget.py │ │ └─ __init__.py │ ├─engines │ │ baseEngine.py │ │ dataEngine.py │ │ eventEngine.py │ │ logEngine.py │ ├─gateways │ │ │ __init__.py │ │ └─ctpGateway │ │ │ ctpGateway.py │ │ └─language │ │ │ __init__.py │ │ ├─chinese │ │ │ text.py │ │ └─english │ │ text.py │ └─language └─_temp
Python优势
量化架构
数据源及影响因子
历史行情数据
集成交易平台
RPC通讯协议
相关基础
Johann Huang