VNPY 软件架构分析
VNPY 架构设计文档
版本日志:
一. 引言
编写目的:
该软件概要设计说明书是“VNPY”开发中的重要文献资料,所完成的工作是将需求说明书中的数据流图转化成软件结构和数据结构,为后续进行详细设计说明书做好铺垫 。是开发人员进行功能设计和代码编写以及其他的具体实施开发工程提供必要的参考资料,在系统开发完成后期为系统的测试、验收提供帮助。其编写过程由项目的重要策划人完成。预期读者是从事“VNPY”开发的相关工作人员
背景:
无
定义:
无
参考资料
无
二.总体设计
1.1 需求规定
参见 <需求说明文档>
1.2 运行环境
操作系统:Windows7,windows10, unbutu
开发运行语言:Python 2.7
主要依赖库:QT,Anaconda2,ta-lib
1.3 结构, 软件层次图

1.4 人工处理部分
通过 .json 文件配置相关账户参数
三.接口设计
1.外部接口
CTP/LST/飞马/货币等,各外部接口说明参见接口官方网站。
2.内部接口
RCP
四.运行设计
1.运行模块组合
2.运行控制
3.运行时间
五.系统结构设计
软件结构设计思路:
VNPY 设计思路是数据驱动,引擎牵引,应用挂靠。 从业务出发,所有的交易都是基与行情的反应,有了行情才有信号,才有委托,才有持仓和风控。 从技术角度看,数据来源于API(CTP,LTS,火币)等,可以说数据驱动了一切。 VNPY的引擎包括:主引擎,事件引擎,数据引擎和应用引擎。 引擎的作用有点类似电脑的主板,所有的东西都往上插。如果需要资源,就向引擎要。 VNPY主引擎驱动Gateway(延伸到各行情交易CTP),使用了消息引擎(EventEngine)把所有Gateway发过来的数据分发到各个内部的外部的引用。内部的应用包括数据引擎,主界面等,外部应用包括风控管理,CTA策略,算法交易等各应用。 在应用里面,VNPY又设计了应用引擎来带动各策略组,给策略组提供服务。 同时VNPY主引擎提供了,订阅,委托,撤单,数据库操作等接口给各个内部的,外部的APP。
数据服务作为多个独立应用程序,来实现数据的下载,整理,保存。 供策略回测使用。从性能的角度来说Python性能会极大的牵制了回测部分的功能。
软件结构图


参考流程图
VNTrader 启动流程
VNTrader 订阅合约

欢迎交流量化交易技术,qq群 : 375129936
VNPY 软件架构分析的更多相关文章
- wpa_supplicant软件架构分析
wpa_supplicant软件架构分析 1. 启动命令 wpa supplicant 在启动时,启动命令可以带有很多参数,目前我们的启动命令如下: wpa_supplicant /system/bi ...
- Z-Stack 软件架构分析
转自Z-Stack 软件架构分析 Z-Stack的main函数在Zmain.c中,总体上来说,它一共做了两件工作,一个是系统初始化,即有启动代码来初始化硬件系统和软件架构需要的各个模块,另一个作用就是 ...
- 我非要捅穿这 Neutron(三)架构分析与代码实现篇(基于 OpenStack Rocky)
目录 文章目录 目录 Neutron 的软件架构分析与实现 Neutron Server 启动流程 获取 WSGI Application Core API & Extension API C ...
- Android在智能终端领域的关键技术专题讲座(成都站)
Android系统引领了终端智能化的浪潮,在民用.公 共及工业等诸多领域得到了广泛的应用,涉及手持终端.电视.汽车导航.工业控制等,在云计算.设备智能化等方面表现卓越.Android也凭借着自身的优 ...
- wpa_supplicant 使用
(1)通过adb命令行,可以直接打开supplicant,从而运行wpa_cli,可以解决客户没有显示屏而无法操作WIFI的问题,还可以避免UI的问题带到driver.进一步来说,可以用在很多没有键盘 ...
- 人生新开始——第一天上班
今天是我正式上班的第一天,对今天要做的工作充满期待,对将要面对的同事们也充满期待.这天起的很早,7点钟就开始睡不着了,忙着起来整理东西,看着时间还早,便打开电脑听起CNN News,练习听力,一听就听 ...
- 鲁棒图(Robustness Diagram)
鲁棒图与系统需求分析 鲁棒图(Robustness Diagram)是由Ivar Jacobson于1991年发明的,用以回答“每个用例需要哪些对象”的问题.后来的UML并没有将鲁棒图列入UML标准, ...
- ABSD 基于架构的软件设计方法方法简介(摘抄)
ABSD(Architecture-Based Software Design)基于架构的软件设计方法 有三个基础: 第一个基础是功能分解.在功能分解中,ABSD方法使用已有的基于模块的内聚和耦合技术 ...
- [no_code团队]项目介绍 & 需求分析 & 发布预测
项目 内容 2020春季计算机学院软件工程(罗杰 任健) 博客园班级博客 作业要求 团队项目选择 我们在这个课程的目标是 在团队合作中提升软件开发水平 这个作业在哪个具体方面帮助我们实现目标 进行项目 ...
随机推荐
- linux重启Oracle服务
linux重启oracle服务命令(完整版) (1) 以oracle身份登录数据库,命令:su – oracle (2) 进入Sqlplus控制台,命令:sqlplus /nolog (3) 以系统管 ...
- parse
import Parse from 'parse'; import { AsyncStorage } from 'react-native'; // 创建新的子类 var GameScore = Pa ...
- JavaScript--图片放大镜
图片放大镜的原理: 两张相同的图片img1和img2,img1上有一个#dd的div,通过鼠标移动dd,根据dd区域内的图片,来裁剪img2的图片,并将img2的图片放大,显示出来 关键词:img1坐 ...
- 自制操作系统Antz(14)——实现内置编程语言(词法解析器)
AntzScript
- SQL-递归查询在Ora与Mssql
今天在工作中,有同事“请教”从 Sql Server 移植数据到 DM DB 的改写问题,本以为难度不大,结果发现 Sql Server 数据库的语法.架构上,与 Oracle / DM 数据库差异还 ...
- 算法(第四版)C# 习题题解——3.1
写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 查找更方便的版本见:https ...
- ajax的一些相关
1.AJAX = Asynchronous(异步的) JavaScript and XML AJAX是能不刷新整个网页的前提下,更新内容.通过少量的数据交换,达成局部页面刷新的效果. 而form表单提 ...
- 【配置】MongoDB配置文件详细配置
# 数据文件位置 dbpath = /opt/module/mongoData # 日志文件位置 logpath = /opt/module/mongoLog/mongodb.log # 以追加方式写 ...
- Ubuntu 远程 Jupyter 配置
Ubuntu 远程 Jupyter 配置 每次上课都要重新部署环境,最近看到阿里云的大学生优惠活动,就着手了一台云服务器,于是就把环境部署在上面了. 环境:阿里云 Ubuntu 16.04 64位 新 ...
- vue页面优化中的v-show和v-if使用比较
在页面中使用了v-if做了一个tab框,点击不同的tab框,并加载不同的内容,由于各tab框对应的内容是4到5张统计图,加载的数据量比较大,发现后台请求响应返回的时间很快,在100ms以内,但点击ta ...