0%

先推荐一片vnpy专栏教程:
钱塘小甲子:https://blog.csdn.net/qtlyx/column/info/30705
他写的也比较不错
他基本是按照”先深遍历”的思路阅读的,每个代码块追究比较细致,

我个人喜欢先易后难,否则代码太多,看起来容易灰心,先把容易的清理干净,在追溯代码。

vnpy文件夹结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
├── api                    #很多dll文件和so文件,结合之前wiki中的说明应该是 各个“外部对接接口”的实现了。飞鼠,数字货币等,可以先不看  
│ ├── bigone
│ ├── binance
│ 。。。。。。。
│ ├── xspeed
│ └── xtp
├── data # reademe提示:shcifco:上海中期接口,可先不看
│ ├── \_\_init\_\_.py
│ ├── README.md
│ └── shcifco
├── event
│ ├── eventEngine.py #TODO 重点学习
│ ├── eventType.py #定义变量EVENT_TIMER,以及test()函数
│ └── \_\_init\_\_.py
├── \_\_init\_\_.py
├── \_\_init\_\_.pyc
├── pricing #期权相关,可不看
│ ├── black.py #Black76期权定价
│ ├── bsCython
│ ├── bsCython.pyd
│ ├── bs.py #bs期权定价公式
│ ├── crrCython
│ ├── crrCython.pyd
│ ├── crr.py #期权工具类,二叉树计算价格,计算dot等
│ ├── \_\_init\_\_.py
│ └── README.md
├── rpc #rpc相关工具类,核心无关
│ ├── \_\_init\_\_.py
│ ├── README.md
│ ├── testClient.py
│ ├── testServer.py
│ └── vnrpc.py
└── trader
├── app #TODO 重点学习
├── gateway
├── ico #图标,忽略
├── \_\_init\_\_.py
├── language #中英文的静态变量,显示用

├── uiBasicWidget.py
├── uiMainWindow.py
├── uiQt.py
#以上3个是显示或界面相关的
├── vtConstant.py #和vtText,读入constant.py中变量,到d中
├── vtEngine.py #主引导,TODO 重点学习
├── vtEvent.py #EVENT\_TICK,EVENT\_TIMER,EVENT_LOG等 EVENT开头的类枚举固定标识串的赋值
├── vtFunction.py #工具类,方法函数,getJsonPath,loadJsonSetting
├── vtGateway.py #TODO 重点学习
├── vtGlobal.py #读取配置文件VT_setting.json
├── vtObject.py #定义实体类,VtBaseData,VtTickData,VtBarData,VtTradeData等
├── VT_setting.json #字体,mongo密码等配置
├── vtText.py #读入text.py的配置文件,存到变量d中
└── vtUtility.py #工具类,class BarGenerator方法updateBar,updateTick。
class ArrayManager方法updateBar,up,down,cci,rsi等技术指标的计算

第一步:先把容易看的代码消灭了,如上

第二步:需要细看的其实就4个文件(夹)

1
2
3
4
5
6
trader    /vtEngine.py  
/vtGateway.py
/app/

event /eventEngine.py

第三步:先从例子入手:
TurtleStrategy下的run的ipy

1
2
3
4
5
6
7
8
from turtleEngine import BacktestingEngine  
engine = BacktestingEngine()
engine.setPeriod(datetime(2014, 1, 1), datetime(2018, 12, 30))
engine.initPortfolio('setting.csv', 10000000)

engine.loadData()
engine.runBacktesting()
engine.showResult()

代码比较容易理解
执行流程:
初始变量,load数据,跑回测,显示结果

功能

参考项目wiki:
1. 全功能量化交易平台(vny.trader),整合了多种交易接口,并针对具体策略算法和功能开发提供了简洁易用的API,用于快速构建交易员所需的量化交易应用。
* 覆盖国内外所有交易品种(股票、期货、期权、外汇、外盘、CFD、数字货币)的交易接口:
* 国内市场
* CTP(ctpGateway)
* 飞马(femasGateway)
* 中泰证券XTP(xtpGateway)
。。。
* 海外市场
* 富途证券(futuGateway)
* 上海直达期货(shzdGateway)
* Interactive Brokers(ibGateway)
* 福汇(fxcmGateway)
* 数字货币
* OKEX(okexGateway)
* OKEX合约(okexfGateway)
* 经过开源社区大量用户实盘检验,做到开箱即用的各类量化策略交易应用(包括逻辑层和界面层):
* CtaStrategy:CTA策略引擎模块,在保持易用性的同时,允许用户针对CTA类策略运行过程中委托的报撤行为进行细粒度控制(降低交易滑点、实现高频策略)
* SpreadTrading:价差交易模块,根据用户的配置自动实现价差组合的深度行情以及持仓变化计算,同时内置的交易算法SniperAlgo可以满足大部分到价成交策略的需求,用户也可以基于AlgoTemplate开发更复杂的价差算法
* OptionMaster:期权交易模块,强大的期权投资组合管理功能,结合基于Cython开发的高效期权定价模型,支持毫秒级别的整体希腊值持仓风险计算,用户可以基于期权交易引擎OmEngine快速开发各类复杂期权交易应用
* AlgoTrading:算法交易模块,提供多种常用的智能交易算法:TWAP、Sniper、BestLimit、Iceberg、Arbitrage等等,支持数据库配置保存、CSV文件加载启动以及RPC跨进程算法交易服务
* TradeCopy:复制交易模块,用户可以通过发布者Provider进程来对外提供交易策略信号(手动、策略均可),订阅者Subscriber进程根据收到的信号自动执行同步交易,简洁快速得实现一拖多账户交易功能
* RiskManager:事前风控模块,负责在交易系统将任何交易请求发出到柜台前的一系列标准检查操作,支持用户自定义风控规则的扩展
* DataRecorder:实盘行情记录,支持Tick和K线数据的落地,用于策略开发回测以及实盘运行初始化
* RpcService:RPC跨进程调用服务,基于MainEngineProxy组件,用户可以如同开发单一进程应用搬开发多进程架构的复杂交易应用
* RtdService:EXCEL RTD服务组件,通过pyxll模块提供EXCEL表格系统对VN Trader系统内所有数据的访问
2. Python交易API接口封装(vnpy.api),提供上述交易接口的底层对接实现
3. 简洁易用的事件驱动引擎(vnpy.event),作为事件驱动型交易程序的核心
4. 支持服务器端数据推送的RPC框架(vnpy.rpc),用于实现多进程分布式架构的交易系统
5. 数据相关的API接口(vnpy.data),用于构建和更新历史行情数据库,目前包括:
* 上海中期历史行情服务(shcifco)
6. 关于vn.py项目的应用演示(examples),对于新手而言可以从这里开始学习vn.py项目的使用方式

目录分析

粗略来看代码很多的样子,实际没那么复杂

先对各目录大功能有个概览吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
├── beta:无用  
│ ├── gateway
│ └── UML
├── build:无用
│ ├── bdist.linux-x86_64
│ └── lib
├── dist:无用
├── docker:虚拟环境,和vnpy关系不大
│ ├── gui
│ ├── vnc
│ └── web
├── docs:文档,看代码之前可以先扫一眼
├── examples:样例程序。官方文档说法“ 关于vn.py项目的应用演示(examples),对于新手而言可以从这里开始学习vn.py项目的使用方式”,但并未找到类似双均线之类可以之间跑起来或者参考的策略,有点像策略模板Or回测模板,不考虑json文件的化,代码结构非常类似。从命名上看更像是各模块的调用演示,而非策略样例。(子文件夹:TurtleStrategy下面的turtleStrategy是策略样例)
│ ├── CryptoTrader
│ ├── CtaBacktesting
│ ├── CtaTrading
│ ├── DataRecording
│ ├── DataService
│ ├── FutuTrader
│ ├── OptionMaster
│ ├── RQData
│ ├── ServerClient
│ ├── TurtleStrategy
│ ├── VnTrader
│ └── WebTrader
├── tests:没太多东西,暂时不理会
│ └── api
├── vnpy:核心代码,真正vnpy代码是在这里面
│ ├── api:
│ ├── data
│ ├── event
│ ├── pricing
│ ├── rpc
│ └── trader:
└── vnpy.egg-info

从一大堆代码总,定位到真正需要学习的一小部分。

本来是打算花大时间,好好的学习vnpy的,后续作为自己主要开发工具(冲着可实盘)。
但这两天扫了遍代码,发现还是挺轻量级的,如果当做主要开发工具,需要补充还是挺多的(只支持单标的以及缺少分钟数据源。多标的需要另外定制模板类,有些复杂,对个人玩家,真没精力在平台上花大力气折腾,公司来做比较合适,而且任何改动都需要完整的测试,否则就是真金白银的损失),后续更倾向于将其当做对接实盘的中介使用。开发,回测,模拟都还在米框上进行(赞下米框,最新也支持期货的模拟盘了)。
整理下当前vnpy的相对较好资料,后面想学习的化可以参考着来,少走弯路了。

官方wiki

https://github.com/vnpy/vnpy/wiki

知乎专栏

https://zhuanlan.zhihu.com/vn-pz

博客:csdn钱塘小甲子

https://blog.csdn.net/qtlyx/column/info/30705
一系列的教程,适合用过类似开源框架的,米框,优矿等。完全没基础可能看不懂。不过这篇文章的几个模块大多都是“业务性”模块,缺乏逻辑性梳理代码(例:A的所有方法都转调用C实现,个人称之为“业务性”代码,实际执行的C里面算“干货代码”,业务性代码容易阅读,但不容易理解“它究竟干了啥”)。可以先扫一眼,然后细读代码后在回来看可能更好些

博客:csdnI天辉I

VNPY- VnTrader基本使用;https://blog.csdn.net/IAlexanderI/article/details/81513652
VNPY - CTA策略模块策略开发:https://blog.csdn.net/IAlexanderI/article/details/81459430
VNPY_ 价差交易模块:https://blog.csdn.net/IAlexanderI/article/details/81627267

VNPY软件架构分析

地址:https://blog.csdn.net/u011331731/article/details/88946794
没看太懂,可能比较旧了和代码对应不起来。

vnpy导图集合

太多,参考网址:https://www.vnpy.com/forum/topic/16-vnpyde-si-wei-dao-tu-jia-gou

VNPY架构设计文档

https://www.cnblogs.com/xiaoxuebiye/p/9876106.html

VNPY回测流程

地址:https://blog.csdn.net/u011331731/article/details/88946847
回测各步骤工作文字化了,无基础的用户可以看下(等价于回测函数的注释)

视频教程:2017年最新VN.PY打造专属量化交易系统6天量化交易实战

闲鱼有售,百度理论上应该也能找到,适合完全没基础的学习,从python到vnpy结构到策略开发都有。(不过最好的了解vnpy方式还是自己读源代码)

一张图看懂VnTrader的数据流

地址:https://blog.csdn.net/u011331731/article/details/88946916
这篇文章不错,建议第一遍草读代码后可以看下,帮助较大。vnpy目前版本相对靠后,迭代次数也听多了。
这种软件很多代码都是”业务性“代码,也就是很多方法都是啥都没干转调用别人,
好处是代码整体阅读会比较顺,第一遍可以不管实现,光看方法名就晓得干么,后面在细看。
坏处阅读代码时需要层层追溯才知道具体操作了那些实体0。
比如:很多方法在很多地方都出现过比如on——bar,on——trade等,导致很容易搞混,看着看着就弄不清这个具体在干么。

这篇文章讲的就比较好(主要是后面的文字部分),但里面有些小错误需要注意下(其实是过时的类等,最新版已经没了或改名了)
比如:回调推送端
4,ctpGateway.onTick函数将VtTickData对象包装成类型为EVENT_TICK的行情事件对象Event,并调用eventEngine.put函数,放入事件引擎的缓冲队列
这个ctpGateway,目前是一个包名,逻辑上对应新的vtGateway,vtGateway.onTick,将会把时间推送个eventEngine

RiceQuant米筐量化交易平台

地址:https://www.ricequant.com/
语言:python,java
方式:云端
品种:股票,基金
特点:口碑较好,据说较人性化

优矿

地址:https://uqer.io/home/
语言:python
方式:云端
品种:股票,基金,期货
特点:支持外部数据的购买,数据较多,有聚源等提供的,较靠谱

Joinquant聚宽

地址:https://www.joinquant.com/
语言:python
方式:云端
品种:股票,基金
特点:可订阅别人策略和看到别人策略回测图

BotVS量化平台

地址:https://www.botvs.com/
语言:JS
方式:云端
品种:期货,股票,数字货币
特点:支持数字货币,比如比特币

Bigquant人工智能量化

地址:https://bigquant.com/
语言:python
方式:云端
品种:股票
其他:目前网站只有架子,很多栏目是空的,突出了人工智能,但没看到具体策略。

果仁

地址:https://guorn.com/
语言:python
方式:云端
品种:股票,基金,组合。
特点:口碑较好,支持策略跟随

掘金量化交易平台V2.0

地址:http://www.myquant.cn/
语言:C++、C#、Python、MATLAB还有Delphi
方式:本机
品种:股票,期货

其他的较小众,等有空了再整理,也欢迎有时间的兄弟帮忙补充,整理,完善^_^

补充:

镭矿

地址:http://www.raquant.com/

京东量化

地址:https://quant.jd.com/

同花顺量化

地址:http://quant.10jqka.com.cn/platform/html/home.html

美国的collective2

地址:https://www.collective2.cn/#signup

点宽网

地址:http://www.digquant.com.cn/quant/

诸葛量化

地址:https://www.gpxtrade.com/index.html

数库(人工智能驱动金融创新)

http://www.chinascope.com/index/ai.html

免费开源python财经数据接口包

地址:http://tushare.org/index.html
特点:只有数据,非量化策略平台

结合网络帖子,做了简单整理

1特许金融分析师 CFA

简介:“全球金融第一考”。
语言:英语
科目:三级
①职业标准和操守;
②财务报表分析;
③量化分析;
④经济学;
⑤固定收益投资分析;
⑥股权分析;
⑦投资组合管理
⑧企业金融;
⑨衍生工具;
⑩其他投资分析
条件:
学士学位或相当的专业水准以上
必须从LevelⅠ、LevelⅡ、LevelⅢ依次报考。
费用:1.1万人民币

2注册会计师 CPA

简介:证书难度很大,甚至超过CFA
语言:中文
科目:总共六科,可分开考,一门门通过。
专业阶段考试和综合阶段考试。考生在通过专业阶段考试的全部科目后,才能参加综合阶段考试。
专业阶段考试科目:《审计》、《财务成本管理》、《经济法》、《会计》、《公司战略与风险管理》、《税法》;
综合阶段考试科目:《职业能力综合测试(试卷一)》、《职业能力综合测试(试卷二)》。
条件:高等专科以上学校毕业学历
费用:低廉

3注册国际投资分析师 CIIA

简介:科目和CF类似,难度比CFA小,可理解为欧系CFA。受中国证券业协会认可的,由中国证券业协会组织考试
语言:中文。
科目:两级
试卷一包括公司财务、经济学、财务会计和报表分析、股票估值评价与分析;
试卷二包括固定收益证券估值与分析、衍生产品估值与分析、投资组合管理。
费用:考试报名费为2500元/卷 完成终级考试费用合计 :800+2500*2= 5800 RMB (含教材)

4国际注册内部审计师 CIA

简介:目前国际审计界唯一公认的职业资格。
语言:中文
科目:
第1科:内部审计基础
第2科:内部审计实务
第3科:内部审计知识要素
条件:
1、具有本科及本科以上学历;
2、具有中级及中级以上专业技术资格;
3、持有注册会计师证书或非执业注册会计师证书;
费用:

5金融风险管理师 FRM

简介:从事金融机构中从事风险管理工作的从业者
语言:中文
科目:两级
一级考试科目包括:风险管理基础、数量分析、金融市场与金融产品、风险建模。
二级考试科目包括:市场风险管理与测量、信用风险管理与测量、操作及综合风险管理、投资风险管理、
费用:一万元左右的费用。每年五月和十一月各有一次考试

6本土化金融风险管理师 CFRM

简介:CFRM(香港注册金融风险管理师)认证是本土化、专业化的认证。

7数据分析师等级认证考试 CDA

简介:国内数据分析发展阶段权威、专业的标准规范,
语言:中文
科目:
Level Ⅰ:客观题(单选+多选)
Level Ⅱ:客观+案例分析(选择+案例分析)
条件:本科学历或相当的专业水准(工作经验)
费用:
CDA LEVEL Ⅰ: 1000元(CDA学员由论坛补贴400元)
CDA LEVEL Ⅱ: 1500元(CDA学员由论坛补贴500元)

8北美保险精算师 SOA

简介:美国的北美精算师协会认证的考试
语言:英文
科目:
第一阶段均为客观题。第二阶段有客观题和主观题。
条件:本科(国家承认同等学历)以上学历~
费用:单门起步价100美刀,共计3697美元,复印资料费大概500,预估2万多人民币。

9保险精算师 CAA

简介:基本保险精算实务
科目:考试课程共设9门,均为必考。
精算师考试课程共10门,其中3门必考课程,7门选考课程,考生必须通过3门必考课程
2门选考课程的考试。3门必考课程内容主要涉及保险公司运营管理、
财务、投资以及中国保险业法规、税收、财务制度等。2门选考课程则为保险业务的不同方向。
费用:准精算师科目每门次考试报名费用为100元,精算师科目每门次报名费为200元。

10证券从业人员资格证

简介:“入门”考试,跟高大上的薪酬待遇没关系,是从事证券职业的第一道关口
语言:中文
科目:5门,
必考《证券市场基本法律法规》和《金融市场基础知识》。
入门资格考试两科合格后,可以报考专业资格考试和管理资质测试考试。
专业资格考试:《投资银行业务》、《发布证券研究报告业务》和《证券投资顾问业务》。
管理资质考试:《证券公司高级管理人员资质测试》、《证券评级业务高级管理人员资质测试》和《证券公司合规管理人员胜任能力测试》
费用:61*5=305人民币

参考链接

金融类考试难度分析(FRM、CFA、CFP、CIIA、CPA、ACCA):http://www.cfa.so/cfa/267.html
CIIA 与 CFA 客观比较:https://tieba.baidu.com/p/2247927520
金融专业考证大军,证你考对了吗?:http://www.sohu.com/a/57177435_116182