Date

鸡年的第一篇文章,给各位读者拜个年,祝大家新的一年身体健康,全家幸福~

需求

之前在vn.py项目2017年计划里面提到,如果对vn.py社区用户们的需求情况做个排序,项目文档绝对可以排在第一位。尤其对于新手而言,目前能找到的文档资料比较零碎,只能自己去看源代码,学习曲线比较陡,也让很多人望而却步。

误区

之前走入了一个误区,因为自己是作者的关系对整个项目的了解比较全面,所以写文档的时候是从开发者的角度,按照自己一步步开发vn.py项目的顺序在写:CTP接口原理、接口封装、事件引擎、GUI界面、应用模块开发等。直接的后果就是导致用户上来就先接触最难的底层部分,然后才一点点过度到自己实际应用中会用到的上层开发部分,学习效率非常低下。

用户

接下来新的文档准备从用户的角度来写:先讲安装配置、基本使用,让用户能先把vn.py跑起来,不用再到处问环境怎么配置;然后介绍如何使用CTA模块来开发交易策略,如何结合风控模块来做事前风险管理;下一步讲解基于事件引擎的扩展模块的开发方式,使得用户能够去实现一些比较复杂的功能应用;最后再介绍接口封装、架构细节等内容,让有兴趣的用户来进一步提高。

不再废话了,直接进入目录。

目录

  1. 安装配置

    1. Windows(200)

      1. Python环境:Anaconda安装
      2. VS2013运行时:vcredist x86
      3. 数据库:MongoDB、RoboMongo
      4. Python库:pip安装
      5. 成功运行
    2. Ubuntu(200)

      1. 环境安装
      2. API编译(Linux下的链接问题)
      3. 成功运行
  2. 基本使用(400)

    1. 配置接口的账号、密码、服务器地址等,并测试连接
    2. 日志信息、合约列表查询、行情订阅
    3. 手动下单、撤单,成交和委托的数据监控
    4. 错误、持仓、资金的数据监控
    5. 其他贴士:窗口拖动、还原,一键测试功能
  3. CTA策略

    1. 模块文件介绍(200)

      1. 每个文件的功能说明
      2. 文件内模块的关系图
    2. 策略回测(400)

      1. 回测引擎API的使用
      2. 读懂回测报告
      3. 参数优化(普通模式)
      4. 多进程优化
    3. 策略实盘(200)

      1. 载入策略到CTA引擎
      2. 编写策略实例的json配置文件
      3. 使用CTA监控组件来管理策略的生命周期
      4. 策略实盘过程中的运维细节
    4. 策略开发(600)

      1. 策略模板CtaTemplate介绍
      2. 委托类型
      3. 时间序列数据结构
      4. 使用talib中的技术指标
  4. 事前风控(200)

    1. 使用风控模块RiskManager
    2. 风控规则配置
    3. 添加自定义规则
  5. 行情解决方案(200)

    1. 使用行情记录模块DataRecorder
    2. 配置行情记录的规则
    3. 历史数据下载功能ctaHistory.py
  6. 事件引擎(400)

    1. 事件引擎的结构
    2. 事件引擎的启动和停止
    3. 事件引擎的工作流程
    4. 事件处理函数
    5. 定时器事件
    6. 使用中需要注意的细节
  7. 应用开发

    1. 应用模块的设计思路(200)
      1. 监听事件(事件引擎)
      2. 调用功能(主引擎)
    2. 使用合理的数据结构来解决问题(200)
      1. 列表list、字典dict、集合set
      2. 特殊结构collections
      3. 矩阵numpy、时间序列pandas
    3. 设计应用的算法逻辑(200)
    4. 开发应用的GUI界面(200)
      1. 使用表格(TableWidget)
      2. 调整显示方式(GroupBox、TabWidget)
      3. 数据选择工具(ComboBox,SpinBox)
      4. 使用按钮调用功能
    5. 将模块加载到vn.trader中
  8. RPC(400)

    1. 什么时候应该使用vn.rpc模块
    2. 服务器端RpcServer和客户端RpcClient的介绍
    3. 服务器端的开发
    4. 客户端的开发
    5. vn.rpc模块的工作原理
    6. 使用中需要注意的细节(如线程安全、心跳等)
  9. 接口封装

    1. 各种API的介绍和对比(200)
    2. API类模块的编译和使用(vn.ctp、vn.lts等)(200)
    3. 类CTP交易API(200)
      1. 工作原理
      2. 封装设计
    4. Interactive Brokers(IB)的API(200)
      1. 工作原理
      2. 封装设计
    5. 其他API(400)
      1. oanda
      2. wind
      3. shzd
      4. okcoin

社区协作

之前的一些文档编写大多是本人独自在做,接下来打算借助社区的力量来一起完成这个新的项目文档。

既然涉及到团队协作就需要一套协作流程,每个章节的编写流程如下(初步计划,有不合理的地方欢迎指出):

  1. 作者(社区成员)选择自己有兴趣编写的章节并联系本人来确定一些细节:是否已有人在编写、内容框架、完成时间和报酬费用(下面会提到)等;
  2. 细节确认无误后,作者就可以开始本章节的编写;
  3. 在编写文档的过程中,遇到技术方面的难题可以直接联系本人,会帮助优先解决;
  4. 作者完成文档的编写后发送给本人,本人会和作者一起对文档内容做回顾和修改;
  5. 本人将最终完成的文档发布到vnpy.org网站上的文档板块,并向作者支付报酬费用;
  6. 之前的目录中,部分章节旁边有一个括号中的数字,就是该章节计划的报酬费用,某些是需要完成一个子章节,某些是需要完成一个完整的章节。

开始的时候计划自己来写几篇文档作为范例来给社区参考,为了给社区其他作者更多学习实践的机会,我会选择相对较为简单的章节(其实纯粹就是为了偷懒~)。

综上,社区作者在这个新文档编写工作中才是最重要的角色,本人更多只是扮演一个组织者。相应的,对于社区作者来说,参与文档的编写也能为你的交易和职业生涯带来一些帮助:

  1. 全面了解vn.py框架:除非自己已经弄得非常明白了,否则很难写出能让别人明白的文档;
  2. 遇到技术问题时的优先帮助:现在社区群的规模已经较大,很多用户的提问我没有办法一一解答(QQ未读信息已经积累一堆了),对于文档作者我会提供自己的微信和手机,方便直接联系和保证问题的解答,同时也会分享自己在做量化交易过程中的一些实战经验;
  3. 加入vn.py项目贡献者名单:章节发布后署名,拥有未来社区活动的优先参与资格,同时对于很多招聘Python方向量化职位的金融机构来说,有vn.py的项目经验也是一个不错的加分项;
  4. 报酬费用:金额不多估计只够买买咖啡,更多是表达整个社区对文档作者的一份感谢。

有兴趣参与的朋友请直接qq私信我或者发邮件到vn.py@foxmail.com,提前谢过。