前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vn.py多账户交易系统配置思路

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

作者头像
用Python的交易员
发布2018-07-26 11:18:21
1.7K0
发布2018-07-26 11:18:21
举报
文章被收录于专栏:维恩的派VNPIE维恩的派VNPIE

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

基于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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 维恩的派VNPIE 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档