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春季计算机学院软件工程(罗杰 任健) 博客园班级博客 作业要求 团队项目选择 我们在这个课程的目标是 在团队合作中提升软件开发水平 这个作业在哪个具体方面帮助我们实现目标 进行项目 ...
随机推荐
- oracle数据库,恢复到24小时内的数据
因为更新的时候忘记添加条件,导致数据混乱. 用此方法,把数据恢复. --首先查询在某个时间点的数据 t_asn_dtl 为表名; SELECT * FROM t_asn_dtl AS OF TIMES ...
- Navicat Premium 简体中文版 12.0.16 以上版本国外官网下载地址(非国内)
国内Navicat网址是:http://www.navicat.com.cn 国外Navicat网址是:http://www.navicat.com 国外的更新比国内的快,而且同一个版本,国内和国外下 ...
- .NET Framework简介
NET Framework 就是微软Web Services 引擎1.NET Framework 旨在实现下列目标:提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行但 ...
- haproxy 配置文件分析
LOG 功能: 编辑/etc/rsyslog.conf 配置文件: # Provides UDP syslog reception $ModLoad imudp #需要启用 $UDPServerRun ...
- 用PIL库进行图像处理
一.如果系统里没有安装PIL库的,请先到命令提示符输入“pip install pillow”进行安装 二.之后就可以参考以下的代码 from PIL import Image from pylab ...
- Java基础学习-关键字的概述和特点以及常量的概述和分类
1.关键字概述 -被Java语言赋予特定含义的单词 2.关键字的特点 -组成关键字的字母全部小写 -常用的代码编辑器,针对关键字有特殊的颜色标记,非常直观,所以我们不需要死记硬 ...
- P4233 射命丸文的笔记
思路 题目要求求的是哈密顿回路的期望数量,实际上就是哈密顿回路的总数/有哈密顿回路的竞赛图的数量 n个点的所有竞赛图中哈密顿回路的总数为 \[ (n-1)! 2^{\frac{n(n-1)}{2}-n ...
- scala链接mysql
方法一:链接并操作mysql //链接Mysqlval driver = "com.mysql.jdbc.Driver"val url = "jdbc:mysql://1 ...
- vue使用$http服务端收不到参数
老夫子我正在憋方案书,听到身后传来细软的声音:“李哥,我这有个Bug调了很长时间了,您能帮我看一下吗?”.说这话的是我的好朋友,公司新来的前端小妹伊万卡.我起身向她走去,看到因长时间调试Bug漂亮的脸 ...
- PHP 获取当前访问的完整URL
代码如下: <?php // php 获取当前访问的完整url function GetCurUrl() { $url = 'http://'; if(isset($_SERVER['HTTPS ...