vn.py多账户交易系统配置思路

本文主要介绍了一个‘如何利用多个账号同时进行交易’的思路。感谢‘图扬量化’在「维恩的派」论坛内的分享!(下为原贴)

基于vnpy 1.5框架(现在vn.py已更新到1.8版本)开发了我们的策略系统和多账户多品种组合交易系统,现已部署于阿里云ECS用于实际生产环境超过100天,运行稳定。策略分析系统由于部分涉及到保密内容不便公开,这里可以分享一下多账户交易系统的开发成果,目前最大同时登录账户26个(暂时手里管理的账户只有这么多,所以只测试了这么多个账户同时登录和交易),账户可按照不同交易类型分组,可进一步支持定制化的多品种多账户组合交易(全自动或半自动)。

阿里云ECS配置2核4G,订阅数十个品种的行情推送,加上数十组决策子系统的实时运算,运行起来没有任何问题。

非常感谢VNPY项目组提供如此优秀的框架。一套优秀的软件架构,真的让工作事半功倍!

设计思路

下面简单分享一下设计思路(以CTP为例): 1. CtpGateway类实际上已提供了非常好的接口封装,简单说,一个该类的实例即为一个账户,所以这里面的改动并不多(其他交易接口由于没有用到所以没有试,但相信大同小异)。

  • 修改构造函数接口,增加一个参数以区分要实例化的接口是行情账户接口还是交易账户接口,若是前者,只需创建mdAPI,否则mdAPI和tdAPI都需要创建(原因很简单,我们的多账户系统只需要针对交易部分,而行情部分完全是统一的,当然如果要分别对待也可以,多点开销而已)。

2. 相应的,定义一个数据结构(如list)来存储账户,如行情账户1个和交易账户若干,每个账户的信息,如地址、账号、密码、brokerID等,可进一步定义第二层数据结构(如dict)来存放。定义好以后可将其存于文件(如有安全性顾虑可考虑以加密方式存储而在登录时动态解密等设计);

3. 在mainEngine的initGateway方法中读取上述定义的数据结构(或从文件中读取),遍历并通过addGateway方法依次实例化ctp gateway,最终存储于该类的一个字典中(如self.gatewayDict)

4. 连接行情服务器时可以直接调用mainEngine中的connect方法,但mainEngine中需要定义另一个方法来实现仅连接交易服务器的功能。当然事实上也可以通过修改connect方法的接口来达到同样的目的。此外,关于account、position的轮询方式我根据自己的需求做了一些微调,这不是重点就不叙述了。

另外,光是交易下单部分就设计了很多有意思的小功能,例如在position窗口支持选中任意持仓后快速全部平仓,全部反手,半数平仓,反手倍仓,又比如在下单窗口实现的根据各账户资金、保证金率和资金比例自动计算下单头寸的多账户组合发单功能,发单后定时撤单重发,跳价发单功能,等等。如果大家有需要,后面有时间我都可以共享设计思路。

效果展示

(可进入论坛查看更清晰的效果图。)

点击“阅读原文”查看原贴!欢迎大家把使用过程中遇到的问题或者摸索的经验分享到「维恩的派」论坛!

基于python的开源交易平台开发框架。截止目前,vn.py项目在Github上的Star已经达到5563,量化交易类开源项目第1,量化类项目第3(1、2依旧分别是Zipline和TuShare)。

项目官网:http://www.vnpy.org

论坛地址:www.vnpie.com

知乎专栏:https://zhuanlan.zhihu.com/vn-py

Developed by Traders,

for Traders

原文发布于微信公众号 - 维恩的派VNPIE(vn-pie)

原文发表时间:2018-06-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏友弟技术工作室

EOS.IO 技术白皮书背景区块链应用的要求共识算法 (DPOS)帐户应用程序的确定性并行执行Token 模型与资源使用治理脚本 & 虚拟机跨链通信总结

草案:2017 年 6 月 26 日 (@dayzh (https://steemit.com/@dayzh))

12720
来自专栏零基础使用Django2.0.1打造在线教育网站

零基础使用Django2.0.1打造在线教育网站(二十一):讲师相关页面配置

努力与运动兼备~~~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

21320
来自专栏IMWeb前端团队

聊聊http/2

本文作者:IMWeb 九月 原文出处:IMWeb社区 未经同意,禁止转载 随着web的发展,http/1.x 已经很难满足现在的需求,Google 因...

23870
来自专栏喵了个咪的博客空间

phalapi-入门篇6(小技巧和浅谈API适用范围以及入门篇总结)

#phalapi-入门篇6(小技巧和浅谈API适用范围以及入门篇总结)# ? ##前言## 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这...

38350
来自专栏解Bug之路

解Bug之路-TCP粘包Bug

详情见笔者另一篇博客https://my.oschina.net/alchemystar/blog/833937

12420
来自专栏Bug生活2048

这些数据库,你都用过吗

关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格...

19210
来自专栏华仔的技术笔记

iOS应用架构谈 网络层设计方案

网络层在一个App中也是一个不可缺少的部分,工程师们在网络层能够发挥的空间也比较大。另外,苹果对网络请求部分已经做了很好的封装,业界的AFNetworking也...

42990
来自专栏IMWeb前端团队

babel

原文http://jiangyuan.me/blog/2016/08/13/babel/

26690
来自专栏王清培的专栏

.NET应用架构设计—表模块模式与事务脚本模式的代码编写

阅读目录: 1.背景介绍 2.简单介绍表模块模式、事务脚本模式 3.正确的编写表模块模式、事务脚本模式的代码 4.总结 1.背景介绍 要想正确的设计系统架...

219100
来自专栏FreeBuf

Paypal出现漏洞,可获取账户余额和近期交易数据

PayPal的bug允许通过逐一列举的方式获取付款方式的最后四位数字以及披露任何给定PayPal账户的账户余额和近期交易数据。 ? 介绍 这篇文章详细介绍了一个...

30340

扫码关注云+社区

领取腾讯云代金券