鸡年的第一篇文章,给各位读者拜个年,祝大家新的一年身体健康,全家幸福~
需求
之前在vn.py项目2017年计划里面提到,如果对vn.py社区用户们的需求情况做个排序,项目文档绝对可以排在第一位。尤其对于新手而言,目前能找到的文档资料比较零碎,只能自己去看源代码,学习曲线比较陡,也让很多人望而却步。
误区
之前走入了一个误区,因为自己是作者的关系对整个项目的了解比较全面,所以写文档的时候是从开发者的角度,按照自己一步步开发vn.py项目的顺序在写:CTP接口原理、接口封装、事件引擎、GUI界面、应用模块开发等。直接的后果就是导致用户上来就先接触最难的底层部分,然后才一点点过度到自己实际应用中会用到的上层开发部分,学习效率非常低下。
用户
接下来新的文档准备从用户的角度来写:先讲安装配置、基本使用,让用户能先把vn.py跑起来,不用再到处问环境怎么配置;然后介绍如何使用CTA模块来开发交易策略,如何结合风控模块来做事前风险管理;下一步讲解基于事件引擎的扩展模块的开发方式,使得用户能够去实现一些比较复杂的功能应用;最后再介绍接口封装、架构细节等内容,让有兴趣的用户来进一步提高。
不再废话了,直接进入目录。
目录
-
安装配置
-
Windows(200)
- Python环境:Anaconda安装
- VS2013运行时:vcredist x86
- 数据库:MongoDB、RoboMongo
- Python库:pip安装
- 成功运行
-
Ubuntu(200)
- 环境安装
- API编译(Linux下的链接问题)
- 成功运行
-
-
基本使用(400)
- 配置接口的账号、密码、服务器地址等,并测试连接
- 日志信息、合约列表查询、行情订阅
- 手动下单、撤单,成交和委托的数据监控
- 错误、持仓、资金的数据监控
- 其他贴士:窗口拖动、还原,一键测试功能
-
CTA策略
-
模块文件介绍(200)
- 每个文件的功能说明
- 文件内模块的关系图
-
策略回测(400)
- 回测引擎API的使用
- 读懂回测报告
- 参数优化(普通模式)
- 多进程优化
-
策略实盘(200)
- 载入策略到CTA引擎
- 编写策略实例的json配置文件
- 使用CTA监控组件来管理策略的生命周期
- 策略实盘过程中的运维细节
-
策略开发(600)
- 策略模板CtaTemplate介绍
- 委托类型
- 时间序列数据结构
- 使用talib中的技术指标
-
-
事前风控(200)
- 使用风控模块RiskManager
- 风控规则配置
- 添加自定义规则
-
行情解决方案(200)
- 使用行情记录模块DataRecorder
- 配置行情记录的规则
- 历史数据下载功能ctaHistory.py
-
事件引擎(400)
- 事件引擎的结构
- 事件引擎的启动和停止
- 事件引擎的工作流程
- 事件处理函数
- 定时器事件
- 使用中需要注意的细节
-
应用开发
- 应用模块的设计思路(200)
- 监听事件(事件引擎)
- 调用功能(主引擎)
- 使用合理的数据结构来解决问题(200)
- 列表list、字典dict、集合set
- 特殊结构collections
- 矩阵numpy、时间序列pandas
- 设计应用的算法逻辑(200)
- 开发应用的GUI界面(200)
- 使用表格(TableWidget)
- 调整显示方式(GroupBox、TabWidget)
- 数据选择工具(ComboBox,SpinBox)
- 使用按钮调用功能
- 将模块加载到vn.trader中
- 应用模块的设计思路(200)
-
RPC(400)
- 什么时候应该使用vn.rpc模块
- 服务器端RpcServer和客户端RpcClient的介绍
- 服务器端的开发
- 客户端的开发
- vn.rpc模块的工作原理
- 使用中需要注意的细节(如线程安全、心跳等)
-
接口封装
- 各种API的介绍和对比(200)
- API类模块的编译和使用(vn.ctp、vn.lts等)(200)
- 类CTP交易API(200)
- 工作原理
- 封装设计
- Interactive Brokers(IB)的API(200)
- 工作原理
- 封装设计
- 其他API(400)
- oanda
- wind
- shzd
- okcoin
社区协作
之前的一些文档编写大多是本人独自在做,接下来打算借助社区的力量来一起完成这个新的项目文档。
既然涉及到团队协作就需要一套协作流程,每个章节的编写流程如下(初步计划,有不合理的地方欢迎指出):
- 作者(社区成员)选择自己有兴趣编写的章节并联系本人来确定一些细节:是否已有人在编写、内容框架、完成时间和报酬费用(下面会提到)等;
- 细节确认无误后,作者就可以开始本章节的编写;
- 在编写文档的过程中,遇到技术方面的难题可以直接联系本人,会帮助优先解决;
- 作者完成文档的编写后发送给本人,本人会和作者一起对文档内容做回顾和修改;
- 本人将最终完成的文档发布到vnpy.org网站上的文档板块,并向作者支付报酬费用;
- 之前的目录中,部分章节旁边有一个括号中的数字,就是该章节计划的报酬费用,某些是需要完成一个子章节,某些是需要完成一个完整的章节。
开始的时候计划自己来写几篇文档作为范例来给社区参考,为了给社区其他作者更多学习实践的机会,我会选择相对较为简单的章节(其实纯粹就是为了偷懒~)。
综上,社区作者在这个新文档编写工作中才是最重要的角色,本人更多只是扮演一个组织者。相应的,对于社区作者来说,参与文档的编写也能为你的交易和职业生涯带来一些帮助:
- 全面了解vn.py框架:除非自己已经弄得非常明白了,否则很难写出能让别人明白的文档;
- 遇到技术问题时的优先帮助:现在社区群的规模已经较大,很多用户的提问我没有办法一一解答(QQ未读信息已经积累一堆了),对于文档作者我会提供自己的微信和手机,方便直接联系和保证问题的解答,同时也会分享自己在做量化交易过程中的一些实战经验;
- 加入vn.py项目贡献者名单:章节发布后署名,拥有未来社区活动的优先参与资格,同时对于很多招聘Python方向量化职位的金融机构来说,有vn.py的项目经验也是一个不错的加分项;
- 报酬费用:金额不多估计只够买买咖啡,更多是表达整个社区对文档作者的一份感谢。