Skip to content

Commit

Permalink
Merge pull request vnpy#208 from vnpy/dev
Browse files Browse the repository at this point in the history
v1.4合并
  • Loading branch information
vnpy authored Jan 17, 2017
2 parents 98f5ef6 + 447edd1 commit 1223949
Show file tree
Hide file tree
Showing 216 changed files with 103,173 additions and 297 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,7 @@ vn.ctp/build/*
vn.lts/build/*
.idea
>>>>>>> 65aac25731772259bf2d4049e7adbe92750ea01d

vn.trader/ctaAlgo/data/*
vn.trader/build/*
vn.trader/dist/*
18 changes: 17 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
# vn.py - 基于python的开源交易平台开发框架

### 项目捐赠

vn.py项目两岁啦,感谢社区一直以来的热情支持,没有你们就没有今天的vn.py!

最近提出希望捐赠的朋友挺多,决定开始接受捐赠。现阶段计划将收到的全部捐赠资金都投入到vn.py项目基金,用于支持后续的项目开发和各项活动。

在此先强调一下:**vn.py是开源项目,可以永久免费使用,并没有强制捐赠的要求!!!**

捐赠方式:支付宝[email protected]*晓优)

计划长期维护一份捐赠清单,所以请在留言中注明是项目捐赠以及捐赠人的名字(当然想匿名的用户就随意了)。

---
### 2016年vn.py项目计划回顾

转眼之间已经到了2016年的四季度,感谢广大用户的支持,vn.py项目在这一年中成长得十分迅速。截止2016年10月13日,Github上的Star已经从年初的583上升到了1672,Fork也从362上升到了987。目前在Github上量化交易相关的项目里,vn.py名列全球第三,仅次于zipline和tushare。为了让社区的成员们能比较全面的了解项目近况,这里对2016年初的项目计划做个简单的回顾。
Expand Down Expand Up @@ -45,7 +58,7 @@

1. 准备一台Windows 7 64位系统的电脑

2. 安装[Anaconda](http://www.continuum.io/downloads)下载Anaconda 4.0.0 Python 2.7 32位版本,**注意必须是32位**
2. 安装[Anaconda](http://www.continuum.io/downloads)下载**Anaconda 4.0.0** Python 2.7 32位版本,**注意必须是32位**

3. 安装[MongoDB](https://www.mongodb.org/downloads#production):下载Windows 64-bit 2008 R2+版本

Expand Down Expand Up @@ -145,6 +158,8 @@ vn.py使用github托管其源代码,贡献代码使用github的PR(Pull Request
* 飞鼠(vn.sgit)

* 飞创(vn.xspeed)

* QDP(vn.qdp)

* OANDA(vn.oanda)

Expand Down Expand Up @@ -174,6 +189,7 @@ vn.py使用github托管其源代码,贡献代码使用github的PR(Pull Request

6. 官方交流QQ群262656087,管理较严格(定期清除长期潜水的成员)


---
### 联系作者
作者知乎名:用python的交易员,想要联系作者可以通过知乎私信
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
<SubscriptionDataContainer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:Microsoft.VisualStudio.WindowsAzure.CommonAzureTools.Authentication.CacheManagement">
<Items />
<TokenCache>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAFu2zqVyKekyvVmiKknbo5gAAAAACAAAAAAAQZgAAAAEAACAAAAAAYmnCE5TZ7OTMycBfVOT5oRy7AAf9RG/yNygue3I/KgAAAAAOgAAAAAIAACAAAABNPnwcQSkIhCBqPDlzsY14A7QhHxWle3w4tJAd8EpvmhAAAADpa6MuW7qJqbUoGp68HfxTQAAAAFM1L12/VZX0bKg3A4QLJrHd62B2rhv4emdG+dsfUENr0YV2ELCAkb6TcoqTvRHrEn1GlvU9G5THu0m1mllqFPs=</TokenCache>
<TokenCache>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAyRIhRmRN8UK7w5RuPHePCQAAAAACAAAAAAAQZgAAAAEAACAAAABOKZJ+rmRrqvwh5QNfnCozvUYDOg+U0BzjckGAMhcYjQAAAAAOgAAAAAIAACAAAABhb4q4toOQ9w2A0T0uaQRj2eZRLPM5uC94WAyAcK9T+RAAAADkg9a8iCcry5TKQN55FgXBQAAAAA/yyrOHkXNSwl7z644L4X680aDKtmMvD38Fwvi8mIW48PLSVfOFYjTlhO/lbIPFWfHENRgYSShBuwZq2JZC4Cg=</TokenCache>
</SubscriptionDataContainer>
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0"?>
<SubscriptionDataContainer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:Microsoft.VisualStudio.WindowsAzure.CommonAzureTools.Authentication.CacheManagement">
<Items />
<TokenCache>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAyRIhRmRN8UK7w5RuPHePCQAAAAACAAAAAAAQZgAAAAEAACAAAADf91WYlm11XNlY7oqd3a/lm23SaZ+dbvdXbsHLH8XtIQAAAAAOgAAAAAIAACAAAACabh6Uk42N14p8/h/LJl5cueb8GnuquGzdgRt632QaqBAAAACJ3D67W4v3AJfMXokvrZL0QAAAACKDHSe4qcbNXTFiPSsWABZTXHPj/HA8LEdrFx2kT2ihCkykngHqEnoX0Jxjpb35ruIVUL0YVwZxLkAjjPPSttk=</TokenCache>
</SubscriptionDataContainer>
68 changes: 58 additions & 10 deletions vn.event/eventEngine.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ def __init__(self):
# 其中每个键对应的值是一个列表,列表中保存了对该事件进行监听的函数功能
self.__handlers = defaultdict(list)

# __generalHandlers是一个列表,用来保存通用回调函数(所有事件均调用)
self.__generalHandlers = []

#----------------------------------------------------------------------
def __run(self):
"""引擎运行"""
Expand All @@ -90,7 +93,11 @@ def __process(self, event):

# 以上语句为Python列表解析方式的写法,对应的常规循环写法为:
#for handler in self.__handlers[event.type_]:
#handler(event)
#handler(event)

# 调用通用处理函数进行处理
if self.__generalHandlers:
[handler(event) for handler in self.__generalHandlers]

#----------------------------------------------------------------------
def __onTimer(self):
Expand All @@ -102,16 +109,20 @@ def __onTimer(self):
self.put(event)

#----------------------------------------------------------------------
def start(self):
"""引擎启动"""
def start(self, timer=True):
"""
引擎启动
timer:是否要启动计时器
"""
# 将引擎设为启动
self.__active = True

# 启动事件处理线程
self.__thread.start()

# 启动计时器,计时器事件间隔默认设定为1秒
self.__timer.start(1000)
if timer:
self.__timer.start(1000)

#----------------------------------------------------------------------
def stop(self):
Expand Down Expand Up @@ -153,6 +164,19 @@ def unregister(self, type_, handler):
def put(self, event):
"""向事件队列中存入事件"""
self.__queue.put(event)

#----------------------------------------------------------------------
def registerGeneralHandler(self, handler):
"""注册通用事件处理函数监听"""
if handler not in self.__generalHandlers:
self.__generalHandlers.append(handler)

#----------------------------------------------------------------------
def unregisterGeneralHandler(self, handler):
"""注销通用事件处理函数监听"""
if handler in self.__generalHandlers:
self.__generalHandlers.remove(handler)



########################################################################
Expand Down Expand Up @@ -182,6 +206,9 @@ def __init__(self):
# 其中每个键对应的值是一个列表,列表中保存了对该事件进行监听的函数功能
self.__handlers = defaultdict(list)

# __generalHandlers是一个列表,用来保存通用回调函数(所有事件均调用)
self.__generalHandlers = []

#----------------------------------------------------------------------
def __run(self):
"""引擎运行"""
Expand All @@ -202,7 +229,11 @@ def __process(self, event):

# 以上语句为Python列表解析方式的写法,对应的常规循环写法为:
#for handler in self.__handlers[event.type_]:
#handler(event)
#handler(event)

# 调用通用处理函数进行处理
if self.__generalHandlers:
[handler(event) for handler in self.__generalHandlers]

#----------------------------------------------------------------------
def __runTimer(self):
Expand All @@ -218,17 +249,21 @@ def __runTimer(self):
sleep(self.__timerSleep)

#----------------------------------------------------------------------
def start(self):
"""引擎启动"""
def start(self, timer=True):
"""
引擎启动
timer:是否要启动计时器
"""
# 将引擎设为启动
self.__active = True

# 启动事件处理线程
self.__thread.start()

# 启动计时器,计时器事件间隔默认设定为1秒
self.__timerActive = True
self.__timer.start()
if timer:
self.__timerActive = True
self.__timer.start()

#----------------------------------------------------------------------
def stop(self):
Expand Down Expand Up @@ -272,6 +307,18 @@ def put(self, event):
"""向事件队列中存入事件"""
self.__queue.put(event)

#----------------------------------------------------------------------
def registerGeneralHandler(self, handler):
"""注册通用事件处理函数监听"""
if handler not in self.__generalHandlers:
self.__generalHandlers.append(handler)

#----------------------------------------------------------------------
def unregisterGeneralHandler(self, handler):
"""注销通用事件处理函数监听"""
if handler in self.__generalHandlers:
self.__generalHandlers.remove(handler)


########################################################################
class Event:
Expand All @@ -297,7 +344,8 @@ def simpletest(event):
app = QCoreApplication(sys.argv)

ee = EventEngine2()
ee.register(EVENT_TIMER, simpletest)
#ee.register(EVENT_TIMER, simpletest)
ee.registerGeneralHandler(simpletest)
ee.start()

app.exec_()
Expand Down
7 changes: 7 additions & 0 deletions vn.how/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# vn.py项目的实战应用指南

本文件夹下的内容主要是围绕vn.py在实际交易中的一系列具体应用,包括说明文档和代码例子。

* performance:[《百倍加速!Python量化策略的算法性能提升指南》](http://zhuanlan.zhihu.com/p/24168485)

* tick2trade: [《vn.trader的tick-to-trade延时测试》](http://zhuanlan.zhihu.com/p/24242972)
Loading

0 comments on commit 1223949

Please sign in to comment.