-
Notifications
You must be signed in to change notification settings - Fork 95
/
Copy pathproject-documentation-plan.html
456 lines (429 loc) · 19.7 KB
/
project-documentation-plan.html
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
<!DOCTYPE html>
<html lang="zh"
>
<head>
<title>vn.py文档编写计划 - vn.py</title>
<!-- Using the latest rendering mode for IE -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="/images/favicon.png" rel="icon">
<link rel="canonical" href="/project-documentation-plan.html">
<meta name="author" content="用Python的交易员" />
<meta name="description" content="鸡年的第一篇文章,给各位读者拜个年,祝大家新的一年身体健康,全家幸福~ 需求 之前在vn.py项目2017年计划里面提到,如果对vn.py社区用户们的需求情况做个排序,项目文档绝对可以排在第一位。尤其对于新手而言,目前能找到的文档资料比较零碎,只能自己去看源代码,学习曲线比较陡,也让很多人望而却步。 误区 之前走入了一个误区,因为自己是作者的关系对整个项目的了解比较全面,所以写文档的时候是从开发者的角度,按照自己一步步开发vn.py项目的顺序在写:CTP接口原理、接口封装、事件引擎、GUI界面、应用模块开发等。直接的后果就是导致用户上来就先接触最难的底层部分,然后才一点点过度到自己实际应用中会用到的上层开发部分,学习效率非常低下。 用户 接下来新的文档准备从用户的角度来写:先讲安装配置、基本使用,让用户能先把vn.py跑起来,不用再到处问环境怎么配置;然后介绍如何使用CTA模块来开发交易策略,如何结合风控模块来做事前风险管理;下一步讲解基于事件引擎的扩展模块的开发方式,使得用户能够去实现一些比较复杂的功能应用;最后再介绍接口封装、架构细节等内容,让有兴趣的用户来进一步提高。 不再废话了,直接进入目录。 目录 安装配置 Windows(200) Python环境 ..." />
<meta property="og:site_name" content="vn.py" />
<meta property="og:type" content="article"/>
<meta property="og:title" content="vn.py文档编写计划"/>
<meta property="og:url" content="/project-documentation-plan.html"/>
<meta property="og:description" content="鸡年的第一篇文章,给各位读者拜个年,祝大家新的一年身体健康,全家幸福~ 需求 之前在vn.py项目2017年计划里面提到,如果对vn.py社区用户们的需求情况做个排序,项目文档绝对可以排在第一位。尤其对于新手而言,目前能找到的文档资料比较零碎,只能自己去看源代码,学习曲线比较陡,也让很多人望而却步。 误区 之前走入了一个误区,因为自己是作者的关系对整个项目的了解比较全面,所以写文档的时候是从开发者的角度,按照自己一步步开发vn.py项目的顺序在写:CTP接口原理、接口封装、事件引擎、GUI界面、应用模块开发等。直接的后果就是导致用户上来就先接触最难的底层部分,然后才一点点过度到自己实际应用中会用到的上层开发部分,学习效率非常低下。 用户 接下来新的文档准备从用户的角度来写:先讲安装配置、基本使用,让用户能先把vn.py跑起来,不用再到处问环境怎么配置;然后介绍如何使用CTA模块来开发交易策略,如何结合风控模块来做事前风险管理;下一步讲解基于事件引擎的扩展模块的开发方式,使得用户能够去实现一些比较复杂的功能应用;最后再介绍接口封装、架构细节等内容,让有兴趣的用户来进一步提高。 不再废话了,直接进入目录。 目录 安装配置 Windows(200) Python环境 ..."/>
<meta property="article:published_time" content="2017-01-31" />
<meta property="article:section" content="文章" />
<meta property="article:author" content="用Python的交易员" />
<!-- Bootstrap -->
<link rel="stylesheet" href="/theme/css/bootstrap.readable.min.css" type="text/css"/>
<link href="/theme/css/font-awesome.min.css" rel="stylesheet">
<link href="/theme/css/pygments/monokai.css" rel="stylesheet">
<link rel="stylesheet" href="/theme/css/style.css" type="text/css"/>
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "//hm.baidu.com/hm.js?e8c7573f82d43fa50c895a8e28c49ceb";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</head>
<body>
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="/" class="navbar-brand">
<img src="/images/favicon.png" width=""/> vn.py </a>
</div>
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav">
<li><a href="/pages/quickstart.html">
Quick Start
</a></li>
<li><a href="/pages/blog.html">
日志
</a></li>
<li><a href="/pages/screenshot.html">
截图
</a></li>
<li><a href="/pages/community.html">
社区
</a></li>
<li><a href="/pages/api.html">
API接口
</a></li>
<li><a href="/pages/download.html">
下载
</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="/archives.html"><i class="fa fa-th-list"></i><span class="icon-label">Archives</span></a></li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
</div> <!-- /.navbar -->
<!-- Banner -->
<style>
#banner{
background-image:url("/images/banner.png");
}
</style>
<div id="banner">
<div class="container">
<div class="copy">
<h1>vn.py</h1>
<p class="intro">Developed by traders, for traders.</p>
</div>
</div>
</div><!-- End Banner -->
<div class="container">
<div class="row">
<div class="col-sm-9">
<section id="content">
<article>
<header class="page-header">
<h1>
<a href="/project-documentation-plan.html"
rel="bookmark"
title="Permalink to vn.py文档编写计划">
vn.py文档编写计划
</a>
</h1>
</header>
<div class="entry-content">
<div class="panel">
<div class="panel-body">
<footer class="post-info">
<span class="label label-default">Date</span>
<span class="published">
<i class="fa fa-calendar"></i><time datetime="2017-01-31T12:03:02+08:00"> 2017-01-31(周二)</time>
</span>
</footer><!-- /.post-info --> </div>
</div>
<p><strong>鸡年的第一篇文章,给各位读者拜个年,祝大家新的一年身体健康,全家幸福~</strong></p>
<h3>需求</h3>
<p>之前在vn.py项目2017年计划里面提到,如果对vn.py社区用户们的需求情况做个排序,项目文档绝对可以排在第一位。尤其对于新手而言,目前能找到的文档资料比较零碎,只能自己去看源代码,学习曲线比较陡,也让很多人望而却步。</p>
<h3>误区</h3>
<p>之前走入了一个误区,因为自己是作者的关系对整个项目的了解比较全面,所以写文档的时候是从开发者的角度,按照自己一步步开发vn.py项目的顺序在写:CTP接口原理、接口封装、事件引擎、GUI界面、应用模块开发等。直接的后果就是导致用户上来就先接触最难的底层部分,然后才一点点过度到自己实际应用中会用到的上层开发部分,学习效率非常低下。</p>
<h3>用户</h3>
<p>接下来新的文档准备从用户的角度来写:先讲安装配置、基本使用,让用户能先把vn.py跑起来,不用再到处问环境怎么配置;然后介绍如何使用CTA模块来开发交易策略,如何结合风控模块来做事前风险管理;下一步讲解基于事件引擎的扩展模块的开发方式,使得用户能够去实现一些比较复杂的功能应用;最后再介绍接口封装、架构细节等内容,让有兴趣的用户来进一步提高。</p>
<p>不再废话了,直接进入目录。</p>
<h3>目录</h3>
<ol>
<li>
<p>安装配置</p>
<ol>
<li>
<p>Windows(200)</p>
<ol>
<li>Python环境:Anaconda安装</li>
<li>VS2013运行时:vcredist x86</li>
<li>数据库:MongoDB、RoboMongo</li>
<li>Python库:pip安装</li>
<li>成功运行</li>
</ol>
</li>
<li>
<p>Ubuntu(200)</p>
<ol>
<li>环境安装</li>
<li>API编译(Linux下的链接问题)</li>
<li>成功运行</li>
</ol>
</li>
</ol>
</li>
<li>
<p>基本使用(400)</p>
<ol>
<li>配置接口的账号、密码、服务器地址等,并测试连接</li>
<li>日志信息、合约列表查询、行情订阅</li>
<li>手动下单、撤单,成交和委托的数据监控</li>
<li>错误、持仓、资金的数据监控</li>
<li>其他贴士:窗口拖动、还原,一键测试功能</li>
</ol>
</li>
<li>
<p>CTA策略</p>
<ol>
<li>
<p>模块文件介绍(200)</p>
<ol>
<li>每个文件的功能说明</li>
<li>文件内模块的关系图</li>
</ol>
</li>
<li>
<p>策略回测(400)</p>
<ol>
<li>回测引擎API的使用</li>
<li>读懂回测报告</li>
<li>参数优化(普通模式)</li>
<li>多进程优化</li>
</ol>
</li>
<li>
<p>策略实盘(200)</p>
<ol>
<li>载入策略到CTA引擎</li>
<li>编写策略实例的json配置文件</li>
<li>使用CTA监控组件来管理策略的生命周期</li>
<li>策略实盘过程中的运维细节</li>
</ol>
</li>
<li>
<p>策略开发(600)</p>
<ol>
<li>策略模板CtaTemplate介绍</li>
<li>委托类型</li>
<li>时间序列数据结构</li>
<li>使用talib中的技术指标</li>
</ol>
</li>
</ol>
</li>
<li>
<p>事前风控(200)</p>
<ol>
<li>使用风控模块RiskManager</li>
<li>风控规则配置</li>
<li>添加自定义规则</li>
</ol>
</li>
<li>
<p>行情解决方案(200)</p>
<ol>
<li>使用行情记录模块DataRecorder</li>
<li>配置行情记录的规则</li>
<li>历史数据下载功能ctaHistory.py</li>
</ol>
</li>
<li>
<p>事件引擎(400)</p>
<ol>
<li>事件引擎的结构</li>
<li>事件引擎的启动和停止</li>
<li>事件引擎的工作流程</li>
<li>事件处理函数</li>
<li>定时器事件</li>
<li>使用中需要注意的细节</li>
</ol>
</li>
<li>
<p>应用开发</p>
<ol>
<li>应用模块的设计思路(200)<ol>
<li>监听事件(事件引擎)</li>
<li>调用功能(主引擎)</li>
</ol>
</li>
<li>使用合理的数据结构来解决问题(200)<ol>
<li>列表list、字典dict、集合set</li>
<li>特殊结构collections</li>
<li>矩阵numpy、时间序列pandas</li>
</ol>
</li>
<li>设计应用的算法逻辑(200)</li>
<li>开发应用的GUI界面(200)<ol>
<li>使用表格(TableWidget)</li>
<li>调整显示方式(GroupBox、TabWidget)</li>
<li>数据选择工具(ComboBox,SpinBox)</li>
<li>使用按钮调用功能</li>
</ol>
</li>
<li>将模块加载到vn.trader中</li>
</ol>
</li>
<li>
<p>RPC(400)</p>
<ol>
<li>什么时候应该使用vn.rpc模块</li>
<li>服务器端RpcServer和客户端RpcClient的介绍</li>
<li>服务器端的开发</li>
<li>客户端的开发</li>
<li>vn.rpc模块的工作原理</li>
<li>使用中需要注意的细节(如线程安全、心跳等)</li>
</ol>
</li>
<li>
<p>接口封装</p>
<ol>
<li>各种API的介绍和对比(200)</li>
<li>API类模块的编译和使用(vn.ctp、vn.lts等)(200)</li>
<li>类CTP交易API(200)<ol>
<li>工作原理</li>
<li>封装设计</li>
</ol>
</li>
<li>Interactive Brokers(IB)的API(200)<ol>
<li>工作原理</li>
<li>封装设计</li>
</ol>
</li>
<li>其他API(400)<ol>
<li>oanda</li>
<li>wind</li>
<li>shzd</li>
<li>okcoin</li>
</ol>
</li>
</ol>
</li>
</ol>
<h2>社区协作</h2>
<p>之前的一些文档编写大多是本人独自在做,接下来打算借助社区的力量来一起完成这个新的项目文档。</p>
<p>既然涉及到团队协作就需要一套协作流程,每个章节的编写流程如下(初步计划,有不合理的地方欢迎指出):</p>
<ol>
<li>作者(社区成员)选择自己有兴趣编写的章节并联系本人来确定一些细节:是否已有人在编写、内容框架、完成时间和报酬费用(下面会提到)等;</li>
<li>细节确认无误后,作者就可以开始本章节的编写;</li>
<li>在编写文档的过程中,遇到技术方面的难题可以直接联系本人,会帮助优先解决;</li>
<li>作者完成文档的编写后发送给本人,本人会和作者一起对文档内容做回顾和修改;</li>
<li>本人将最终完成的文档发布到vnpy.org网站上的文档板块,并向作者支付报酬费用;</li>
<li>之前的目录中,部分章节旁边有一个括号中的数字,就是该章节计划的报酬费用,某些是需要完成一个子章节,某些是需要完成一个完整的章节。</li>
</ol>
<p>开始的时候计划自己来写几篇文档作为范例来给社区参考,为了给社区其他作者更多学习实践的机会,我会选择相对较为简单的章节(其实纯粹就是为了偷懒~)。</p>
<p>综上,社区作者在这个新文档编写工作中才是最重要的角色,本人更多只是扮演一个组织者。相应的,对于社区作者来说,参与文档的编写也能为你的交易和职业生涯带来一些帮助:</p>
<ol>
<li>全面了解vn.py框架:除非自己已经弄得非常明白了,否则很难写出能让别人明白的文档;</li>
<li>遇到技术问题时的优先帮助:现在社区群的规模已经较大,很多用户的提问我没有办法一一解答(QQ未读信息已经积累一堆了),对于文档作者我会提供自己的微信和手机,方便直接联系和保证问题的解答,同时也会分享自己在做量化交易过程中的一些实战经验;</li>
<li>加入vn.py项目贡献者名单:章节发布后署名,拥有未来社区活动的优先参与资格,同时对于很多招聘Python方向量化职位的金融机构来说,有vn.py的项目经验也是一个不错的加分项;</li>
<li>报酬费用:金额不多估计只够买买咖啡,更多是表达整个社区对文档作者的一份感谢。</li>
</ol>
<h3>有兴趣参与的朋友请直接qq私信我或者发邮件到vn.py@foxmail.com,提前谢过。</h3>
</div>
<!-- /.entry-content -->
</article>
</section>
</div>
<div class="col-sm-3" id="sidebar">
<aside>
<section class="well well-sm">
<ul class="list-group list-group-flush">
<li class="list-group-item"><h4><i class="fa fa-home fa-lg"></i><span class="icon-label">Social</span></h4>
<ul class="list-group" id="social">
<li class="list-group-item"><a href="http://github.com/vnpy/vnpy"><i class="fa fa-github-square fa-lg"></i> Github</a></li>
</ul>
</li>
<li class="list-group-item"><h4><i class="fa fa-external-link-square fa-lg"></i><span class="icon-label">Links</span></h4>
<ul class="list-group" id="links">
<li class="list-group-item">
<a href="http://www.vnpie.com" target="_blank">
官方论坛 - 维恩的派
</a>
</li>
<li class="list-group-item">
<a href="http://github.com/vnpy/vnpy/tree/master/vn.trader" target="_blank">
交易平台
</a>
</li>
<li class="list-group-item">
<a href="http://github.com/vnpy/vnpy/tree/master/vn.event" target="_blank">
事件引擎
</a>
</li>
<li class="list-group-item">
<a href="http://github.com/vnpy/vnpy/tree/master/vn.ctp" target="_blank">
CTP接口
</a>
</li>
<li class="list-group-item">
<a href="http://github.com/vnpy/vnpy/tree/master/vn.xspeed" target="_blank">
飞创接口
</a>
</li>
<li class="list-group-item">
<a href="http://github.com/vnpy/vnpy/tree/master/vn.femas" target="_blank">
飞马接口
</a>
</li>
<li class="list-group-item">
<a href="http://github.com/vnpy/vnpy/tree/master/vn.ksotp" target="_blank">
金仕达期权接口
</a>
</li>
<li class="list-group-item">
<a href="http://github.com/vnpy/vnpy/tree/master/vn.ksgold" target="_blank">
金仕达黄金接口
</a>
</li>
<li class="list-group-item">
<a href="http://github.com/vnpy/vnpy/tree/master/vn.sgit" target="_blank">
飞鼠接口
</a>
</li>
<li class="list-group-item">
<a href="http://github.com/vnpy/vnpy/tree/dev/vn.qdp" target="_blank">
QDP接口
</a>
</li>
<li class="list-group-item">
<a href="http://github.com/vnpy/vnpy/tree/master/vn.oanda" target="_blank">
OANDA接口
</a>
</li>
<li class="list-group-item">
<a href="http://github.com/vnpy/vnpy/tree/master/vn.ib" target="_blank">
IB接口
</a>
</li>
<li class="list-group-item">
<a href="http://github.com/vnpy/vnpy/tree/master/vn.shzd" target="_blank">
直达期货接口
</a>
</li>
<li class="list-group-item">
<a href="http://github.com/vnpy/vnpy/tree/master/vn.okcoin" target="_blank">
OKCoin接口
</a>
</li>
<li class="list-group-item">
<a href="http://github.com/vnpy/vnpy/tree/master/vn.datayes" target="_blank">
通联数据接口
</a>
</li>
<li class="list-group-item">
<a href="http://github.com/vnpy/vnpy/tree/master/vn.demo" target="_blank">
开发DEMO
</a>
</li>
</ul>
</li>
</ul>
</section>
</aside>
</div>
</div>
</div>
<footer>
<div class="container">
<hr>
<div class="row">
<div class="col-xs-10">© 2017 用Python的交易员
· Powered by <a href="https://github.com/DandyDev/pelican-bootstrap3" target="_blank">pelican-bootstrap3</a>,
<a href="http://docs.getpelican.com/" target="_blank">Pelican</a>,
<a href="http://getbootstrap.com" target="_blank">Bootstrap</a> </div>
<div class="col-xs-2"><p class="pull-right"><i class="fa fa-arrow-up"></i> <a href="#">Back to top</a></p></div>
</div>
</div>
</footer>
<script src="/theme/js/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="/theme/js/bootstrap.min.js"></script>
<!-- Enable responsive features in IE8 with Respond.js (https://github.com/scottjehl/Respond) -->
<script src="/theme/js/respond.min.js"></script>
<script src="/theme/js/bodypadding.js"></script>
</body>
</html>