-
Notifications
You must be signed in to change notification settings - Fork 95
/
Copy pathindex2.html
548 lines (524 loc) · 28.4 KB
/
index2.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
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
<!DOCTYPE html>
<html lang="zh"
>
<head>
<title>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="">
<meta name="author" content="用Python的交易员" />
<!-- Open Graph tags -->
<meta property="og:site_name" content="vn.py" />
<meta property="og:type" content="website"/>
<meta property="og:title" content="vn.py"/>
<meta property="og:url" content=""/>
<meta property="og:description" content="vn.py"/>
<!-- 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/tutorial.html">
教程
</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>
</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">
<article>
<h2><a href="/basic-tutorial-7.html">Python量化交易平台开发教程系列7-顶层GUI界面开发(1)</a></h2>
<div class="summary"><p>原创文章,转载请注明出处:用Python的交易员</p>
<h2>前言</h2>
<p>终于有时间来写第一篇顶层GUI界面开发相关的教程了,之前实在是事情太多,跟各位读者抱个歉。</p>
<p>整合底层接口的各项功能到中层引擎中后,当我们开发顶层应用时(GUI或者策略算法),只需知道中层引擎对外提供的主动API函数以及事件引擎中相关的事件类型和数据形式即可。</p>
<p>在GUI和策略算法这两个主要类型的顶层应用中,作者选择先介绍GUI开发的原因是:目前国内支持用户定制化开发GUI界面的量化平台少之又少,而包含一个比较全面的GUI开发教程的则据我所知还没有。随着国内越来越多的衍生品推出(期权、分级基金、未来的反向基金),很多新型的交易策略从全自动转向了半自动,经常需要交易员的手动干预(启动暂停策略、盘中微调参数等),以及投资组合层面的风险管理(期权希腊值、分级基金行业暴露等),这种情况下传统上仅支持策略算法开发的量化交易平台变得越发难以满足交易员的需求(包括作者本人),所以估计这方面的文章更能填补当前市场需求的空缺(笑...)。</p>
<h2>PyQt</h2>
<p>目前Python上主要的GUI开发工具包括:tkinter、PyQt、PyGTK和wxPython,笔者选择PyQt的主要原因是:</p>
<ol>
<li>
<p>Anaconda中已经包含(早期版本中包含的是LGPL协议的Pyside,稳定性不如PyQt)</p>
</li>
<li>
<p>另一个内置GUI库tkinter的功能太弱</p>
</li>
</ol>
<p>网上对这四款GUI开发工具比较分析的文章很多,有兴趣的读者可以自己搜搜看。</p>
<p>接下来的几篇GUI开发教程会假设读者已经对PyQt开发有了一定的了解,主要针对和量化交易平台开发相关的部分,需要补充基础知识的读者建议参考以下资源:</p>
<ol>
<li>
<p>zetcode.com,上面的教程简单明了,从头到尾做一遍对PyQt的工作原理基本就有个全面的了解了</p>
</li>
<li>
<p>Rapid ...</p></li></ol>
<a class="btn btn-default btn-xs" href="/basic-tutorial-7.html">more ...</a>
</div>
</article>
<hr/>
<article>
<h2><a href="/basic-tutorial-6.html">Python量化交易平台开发教程系列6-中层引擎设计</a></h2>
<div class="summary"><p>原创文章,转载请注明出处:用Python的交易员</p>
<h2>前言</h2>
<p>中层引擎在设计上主要是为了进一步封装底层接口所暴露出的API函数,使得其更容易被上层的GUI和策略组件调用。本篇的内容会相对简单,主要以LTS接口DEMO为例介绍一些设计方面的思路。</p>
<p>相关的示例都是基于vn.demo中的LTS接口DEMO,发布在:
<a href="https://github.com/vnpy/vnpy/tree/master/vn.demo/ltsdemo">https://github.com/vnpy/vnpy/tree/master/vn.demo/ltsdemo</a></p>
<h2>中层引擎设计</h2>
<h3>构造函数</h3>
<div class="highlight"><pre><span></span><span class="c1">########################################################################</span>
<span class="k">class</span> <span class="nc">MainEngine</span><span class="p">:</span>
<span class="sd">"""主引擎,负责对API的调度"""</span>
<span class="c1">#----------------------------------------------------------------------</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">"""Constructor"""</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ee</span> <span class="o">=</span> <span class="n">EventEngine</span><span class="p">()</span> <span class="c1"># 创建事件驱动引擎</span>
<span class="bp">self</span><span class="o">.</span><span class="n">md</span> <span class="o">=</span> <span class="n">DemoMdApi</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ee</span><span class="p">)</span> <span class="c1"># 创建API接口</span>
<span class="c1">#self.md = DemoL2Api(self.ee) # 如果使用L2行情就改为这行</span>
<span class="bp">self</span><span class="o">.</span><span class="n">td</span> <span class="o">=</span> <span class="n">DemoTdApi ...</span></pre></div>
<a class="btn btn-default btn-xs" href="/basic-tutorial-6.html">more ...</a>
</div>
</article>
<hr/>
<article>
<h2><a href="/basic-tutorial-5.html">Python量化交易平台开发教程系列5-底层接口对接</a></h2>
<div class="summary"><p>原创文章,转载请注明出处:用Python的交易员</p>
<h2>前言</h2>
<p>从本篇教程开始,所有的开发都会在Python环境中进行(谢天谢地可以和C++说再见了)。</p>
<p><strong>通常情况下,一个交易程序的架构会由以下三个部分组成:</strong></p>
<ul>
<li>
<p>底层接口:负责对接行情和交易API,将数据推送到系统核心中,以及发送指令(下单、数据请求等)</p>
</li>
<li>
<p>中层引擎:用于整合程序中的各个组件(包括底层接口、数据库接口等等)到一个对象中,便于顶层UI调用</p>
</li>
<li>
<p>顶层GUI:用于显示数据和调用中层引擎暴露的主动函数,实现各项具体功能</p>
</li>
</ul>
<p><img alt="AlgoTrader架构" src="http://7x2w1m.com1.z0.glb.clouddn.com/%E6%95%99%E7%A8%8B5algotrader_%E6%9E%84%E6%9E%B6.png" /></p>
<p><strong>上面这张图展示的是国外的一款开源交易平台AlgoTrader的架构:</strong></p>
<ul>
<li>
<p>两边的Adapters代表的是底层接口(左边数据,右边交易)</p>
</li>
<li>
<p>红色圆柱形中包括的是中层引擎架构,事件驱动方面使用了Esper复杂事件处理(CEP)引擎,同时内置了一些常用的功能引擎,如期权定价引擎、外汇对冲模块、投资组合管理模块等</p>
</li>
<li>
<p>上方的Strategy1、2等代表的是顶层应用(算法策略、GUI界面等),通过调用中层引擎的功能来实现用户所需的业务</p>
</li>
</ul>
<p><strong>vn.py和AlgoTrader的比较:</strong></p>
<p>这里对两个项目做一个简单的比较。</p>
<p>vn.py优势:</p>
<ul>
<li>
<p>语言易用:Java语言比Python啰嗦</p>
</li>
<li>
<p>架构简洁 ...</p></li></ul>
<a class="btn btn-default btn-xs" href="/basic-tutorial-5.html">more ...</a>
</div>
</article>
<hr/>
<article>
<h2><a href="/blog-20150420.html">2015/4/20 项目开发日志</a></h2>
<div class="summary"><h2>目前项目状态</h2>
<p>差不多一个多月的时间,完成了CTP API的vn.ctp封装,以及用于展示如何使用vn.py框架开发的vn.demo,两者均已发布到github上。</p>
<p>接下来将会发布几篇和vn.demo相关的教程。</p>
<h2>vn.demo介绍</h2>
<p>该demo主要用于展示如何使用vn.py框架开发交易平台,使用了vn.event和vn.lts模块。</p>
<p><img alt="enter image description here" src="http://7x2w1m.com1.z0.glb.clouddn.com/%E6%95%99%E7%A8%8B4vndemo.jpg" /></p>
<h2>如何使用</h2>
<p>常规用户可以直接运行exe文件夹下的demoMain.exe。</p>
<p>对开发有兴趣的用户需要根据vnpy.org的教程3安装相关的开发环境,然后通过demoMain.py和demoMain.pyw(无cmd界面)运行。</p>
<h2>实现功能</h2>
<p>demo的实现参考了盈佳和尔易的LTS交易平台,功能如下:</p>
<ol>
<li>
<p>行情、持仓、账户、成交、报单的监控</p>
</li>
<li>
<p>平台的日志记录</p>
</li>
<li>
<p>下单交易,实现了LTS提供的所有订单类型和交易类型</p>
</li>
<li>
<p>双击报单监控中的单元格撤单,以及下单交易组件一键全撤</p>
</li>
</ol>
<h2>文件说明</h2>
<ul>
<li>demoApi.py主要包含了程序的底层接口,对vn.lts中的API进行了简化封装</li>
<li>demoEngine.py主要包含了程序的中间层,负责调用底层接口</li>
<li>demoUi ...</li></ul>
<a class="btn btn-default btn-xs" href="/blog-20150420.html">more ...</a>
</div>
</article>
<hr/>
<article>
<h2><a href="/basic-tutorial-4.html">Python量化交易平台开发教程系列4-事件驱动引擎原理和使用</a></h2>
<div class="summary"><p>原创文章,转载请注明出处:用Python的交易员</p>
<h2>前言</h2>
<p>从这篇开始,后面的教程都会基于Python(终于可以跟C++说再见了)。</p>
<p>经过上一篇复杂繁琐的API编译后,我们已经有了一个可以在Python环境中用来收行情和发单的接口,但是尽管作者在Github上也放了简单的API功能测试代码作为接口使用方法的示例,绝大部分读者应该对于如何用这个接口去开发自己的交易系统毫无头绪。</p>
<p>类似的情况也常常发生于当我们从万得、恒生、网上的其他开源项目(比如pyctp)等等拿到开发接口和文档示例后:</p>
<p>看了半天觉得似乎上面讲的都懂。</p>
<p><img alt="enter image description here" src="http://7x2w1m.com1.z0.glb.clouddn.com/%E6%95%99%E7%A8%8B4%E6%8E%A5%E5%8F%97%E6%8C%91%E6%88%98.jpg" /></p>
<p>但要写个自己的系统依旧不知道从何处下手。</p>
<p><img alt="enter image description here" src="http://7x2w1m.com1.z0.glb.clouddn.com/%E6%95%99%E7%A8%8B4%E4%B8%8D%E7%9F%A5%E6%89%80%E6%8E%AA.jpg" /></p>
<p>所以在搞定交易接口后,我们开发交易系统的第一步就是要弄清楚系统的工作原理,在读完这篇教程后,你应该至少不会再对如何写一个交易系统茫然无措了。</p>
<h2>事件驱动</h2>
<h3>计算机程序分类</h3>
<p>所有的计算机程序都可以大致分为两类:脚本型(单次运行)和连续运行型(直到用户主动退出)。</p>
<p><strong>脚本型</strong></p>
<p>脚本型的程序包括最早的批处理文件以及使用Python做交易策略回测等等,这类程序的特点是在用户启动后会按照编程时设计好的步骤一步步运行,所有步骤运行完后自动退出。</p>
<p><strong>连续运行型</strong></p>
<p>连续运行型的程序包含了操作系统和绝大部分我们日常使用的软件等等,这类程序启动后会处于一个无限循环中连续运行,直到用户主动退出时才会结束。</p>
<h3>连续运行型程序</h3>
<p>我们要开发的交易系统就是属于连续运行型程序,而这种程序根据其计算逻辑的运行机制不同,又可以粗略的分为时间驱动和事件驱动两种。</p>
<p><strong>时间驱动</strong></p>
<p>时间驱动的程序逻辑相对容易设计,简单来说就是让电脑每隔一段时间自动做一些事情。这个事情本身可以很复杂、包括很多步骤,但这些步骤都是线性的,按照顺序一步步执行下来。</p>
<p>以下代码展示了一个非常简单的时间驱动的Python程序 ...</p>
<a class="btn btn-default btn-xs" href="/basic-tutorial-4.html">more ...</a>
</div>
</article>
<hr/>
<article>
<h2><a href="/basic-tutorial-3.html">Python量化交易平台开发教程系列3-vn.py项目中API封装的编译</a></h2>
<div class="summary"><p>原创文章,转载请注明出处:用Python的交易员</p>
<h2>前言</h2>
<p>经历了两篇的理论折磨后,本篇教程开始进入实际操作的环节,这里作者假设读者是毫无C++经验的用户,操作一步步配图,还有问题的来<a href="https://github.com/vnpy/vnpy">vn.py项目的github主页</a>上提问。</p>
<p>本篇将会包含的内容:</p>
<ol>
<li>
<p>安装Anaconda (一次安装搞定95%以上量化相关包的Python发行版)</p>
</li>
<li>
<p>安装Visual Studio</p>
</li>
<li>
<p>编译Boost库</p>
</li>
<li>
<p>编译vn.lts</p>
</li>
</ol>
<h2>安装Anaconda</h2>
<p>在<a href="http://repo.continuum.io/archive/index.html">Anaconda历史版本</a>中下载1.9.2(win 32位版本)。</p>
<p><img alt="enter image description here" src="http://7x2w1m.com1.z0.glb.clouddn.com/%E6%95%99%E7%A8%8B3anaconda.jpg" /></p>
<p>下载好后双击安装,流程没有特别需要注意的,安装文件夹作者选的是D:\Anaconda,读者可以自己选择,注意最后一步编译vn.lts中设置时的文件夹必须是这里的安装文件夹。</p>
<p>为什么不用最新版本:尝试过使用2.1.0版,发现有一些包在我的电脑上存在兼容性问题(可能因为中文支持不好),需要修改一些.py文件里的源代码,太过麻烦,而且1.9.2到2.1 ...</p>
<a class="btn btn-default btn-xs" href="/basic-tutorial-3.html">more ...</a>
</div>
</article>
<hr/>
<article>
<h2><a href="/basic-tutorial-2.html">Python量化交易平台开发教程系列2-类CTP交易API的Python封装设计</a></h2>
<div class="summary"><p>原创文章,转载请注明出处:用Python的交易员</p>
<p>(本篇教程包含的内容太多也太复杂,有不少读者反应看不懂,因为本身也不是使用vn.py必须掌握的知识,这篇教程暂时处于半完成状态,等多收集些读者的建议后会再做一个比较大的修订)</p>
<h2>为什么要封装API</h2>
<p>直接原因就是C++的API没法直接在Python里用,不过这个回答有点太简单,这里我们稍微做一些拓展解释:</p>
<ol>
<li>
<p>C++ API中很多函数的调用参数是ApiStruct.h(参见上一篇)中定义的结构体,而在Python中我们既无法直接创建这些结构体(主动函数),也无法提取结构体中包含的数据(回调函数)。</p>
</li>
<li>
<p>Python虚拟机是基于C语言实现的,所有的Python对象,哪怕只是一个整数或者字符串,在C的环境中都是一个PyObject对象(好吧,我知道C里没有对象,只有结构体,但估计90%的读者都不在乎这个区别)。用户如果在Python中直接传递一个参数到C++环境里,C++是无法识别的(Python:买入1手股指, C++:你要买入多少?)。</p>
</li>
<li>
<p>Python只能加载封装为PyObject对象的模块,因此原生C++的API在Python中连加载都加载不了。</p>
</li>
</ol>
<h2>封装后API的工作流程</h2>
<h3>主动函数</h3>
<ol>
<li>
<p>用户在Python程序中调用封装API的主动函数,并直接传入Python变量(PyObject对象)作为参数。</p>
</li>
<li>
<p>封装API将Python变量转换成C ...</p></li></ol>
<a class="btn btn-default btn-xs" href="/basic-tutorial-2.html">more ...</a>
</div>
</article>
<hr/>
<article>
<h2><a href="/basic-tutorial-1.html">Python量化交易平台开发教程系列1-类CTP交易API的工作原理</a></h2>
<div class="summary"><p>原创文章,转载请注明出处:用Python的交易员</p>
<h2>类CTP交易API简介</h2>
<p>国内程序化交易技术的爆发式发展几乎就是起源于上期技术公司基于CTP柜台推出了交易API,使得用户可以随意开发自己的交易软件直接连接到交易柜台上进行交易,同时CTP API的设计模式也成为了许多其他柜台上交易API的设计标准,本人已知的类CTP交易API包括:</p>
<ol>
<li>
<p>上期CTP </p>
</li>
<li>
<p>飞马 </p>
</li>
<li>
<p>华宝证券LTS</p>
</li>
<li>
<p>飞创Xspeed</p>
</li>
<li>
<p>金仕达</p>
</li>
<li>
<p>恒生UFT</p>
</li>
</ol>
<p>所以这个教程系列选择从类CTP交易API中的LTS API开始来介绍API的Python封装方法,真正掌握了以后想要做其他类型API(比如恒生的T2)的封装也只是大同小异而已。</p>
<h2>LTS API文件说明</h2>
<p>通常当用户从网上下载API的压缩包,解压后会看到以下的文件:
<img alt="" src="http://7x2w1m.com1.z0.glb.clouddn.com/API文件列表.jpg" /></p>
<ul>
<li>.h文件:C++的头文件,包含了API的内部结构信息,开发C++程序时需要包含在项目内</li>
<li>.dll文件:windows下的动态链接库文件,API的实体,开发C++程序编译和链接时用,使用开发好的程序时也必须放在程序的文件夹内 </li>
<li>.lib文件:windows下的库文件,编译和链接时用,程序开发好后无需放在程序的文件夹内</li>
<li>.so文件:linux下的动态链接库文件,其他同.dll文件</li>
</ul>
<p>找不到压缩包的读者可以在这里直接看<a href="https://github.com/vnpy/vnpy/tree/master/vn.lts/ltsapi" title="https://github.com/vnpy/vnpy/tree/master/vn.lts/ltsapi">https://github.com/vnpy/vnpy ...</a></p>
<a class="btn btn-default btn-xs" href="/basic-tutorial-1.html">more ...</a>
</div>
</article>
<hr/>
<article>
<h2><a href="/basic-tutorial-0.html">Python量化交易平台开发教程系列0-引言</a></h2>
<div class="summary"><p>原创文章,转载请注明出处:用Python的交易员</p>
<h2>为什么用Python来开发量化交易平台</h2>
<p>目前本人所在的公司一共有三款平台,分别基于C++, C#和Python。其中C#和Python平台都是由交易员开发;C++平台则是由专职IT团队作为一个通用平台开发,内部组件进行了封装(交易员不可见),对外提供行情、交易的API用于策略开发(除了C++ 外也包括C#和Python可用的API)。</p>
<p>理论上这款C++平台应该是最为稳定和强大的,由专业人士设计,同时采用封装核心,暴露API,支持组件模块开发,linux服务器运行的形式。</p>
<p>但是在实际运用中,交易团队表达了一个强烈的观点:这个平台实在是太难用了! </p>
<ol>
<li>
<p>由IT团队设计的API功能非常强大,但是也太过繁琐,导致学习曲线极为陡峭。 </p>
</li>
<li>
<p>为了追求速度,没有设计原生GUI(本来就为了在Linux服务器上跑),但是今天绝大多数的非超高频(追求微秒级延迟的那种)交易策略,几乎都需要有人实时监控,你总不能让交易员盯着个linux shell上不断print出来的内容或者盘中去翻日志吧,这个运维风险就扛不起。尽管可以作为插件的形式开发GUI,但C++本身的GUI开发还是较为复杂的,非专业IT很难搞的定。 </p>
</li>
<li>
<p>交易员团队的需求变化很快,通常等不及IT去排班开发,最好是今天收盘有个点子,明天开盘就能开始接实盘数据验证 ...</p></li></ol>
<a class="btn btn-default btn-xs" href="/basic-tutorial-0.html">more ...</a>
</div>
</article>
<hr/>
<article>
<h2><a href="/blog-20150303.html">2015/3/3 项目开发日志</a></h2>
<div class="summary"><h2>目前项目状态</h2>
<p>目前完成: </p>
<ol>
<li>
<p>华宝证券的LTS API的Python封装,发布在vn.lts文件夹下 </p>
</li>
<li>
<p>事件驱动引擎,发布在vn.event文件夹下 </p>
</li>
</ol>
<h3>vn.lts</h3>
<p>ltsapi:华宝证券官方的LTS C++ API<br />
pyscript:用于自动生成重复度较高的封装代码的Python脚本<br />
vnltsmd:行情API的封装源代码和测试脚本<br />
vnltstd:交易API的封装源代码和测试脚本 </p>
<h3>vn.event</h3>
<p>eventType:定义事件类型常量<br />
eventEngine:包含事件驱动引擎实现 </p>
<h2>下一步计划</h2>
<ol>
<li>
<p>API封装、编译、使用方面的教程</p>
</li>
<li>
<p>事件驱动引擎原理、使用方面的教程</p>
</li>
<li>
<p>基于API和引擎开发的LTS交易客户平台(因为华宝没有提供官方的LTS交易软件,目前的两个实现分别是基于C++的尔易终端和基于.COM封装的盈佳终端)</p>
</li>
<li>
<p>策略引擎接口</p>
</li>
</ol>
<h2>联系作者</h2>
<p>作者知乎名:用Python的交易员,想要联系作者可以通过知乎私信。</p>
<hr />
<a class="btn btn-default btn-xs" href="/blog-20150303.html">more ...</a>
</div>
</article>
<hr/>
<ul class="pagination">
<li class="prev"><a href="/index.html">«</a>
</li>
<li class=""><a
href="/index.html">1</a></li>
<li class="active"><a
href="/index2.html">2</a></li>
<li class="next disabled"><a href="#">»</a></li>
</ul>
</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="https://github.com/vnpy/vnpy/tree/master/vn.lts" target="_blank">
LTS接口
</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/master/vn.oanda" target="_blank">
OANDA接口
</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">© 2016 用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>