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 软件架构分析的更多相关文章

  1. wpa_supplicant软件架构分析

    wpa_supplicant软件架构分析 1. 启动命令 wpa supplicant 在启动时,启动命令可以带有很多参数,目前我们的启动命令如下: wpa_supplicant /system/bi ...

  2. Z-Stack 软件架构分析

    转自Z-Stack 软件架构分析 Z-Stack的main函数在Zmain.c中,总体上来说,它一共做了两件工作,一个是系统初始化,即有启动代码来初始化硬件系统和软件架构需要的各个模块,另一个作用就是 ...

  3. 我非要捅穿这 Neutron(三)架构分析与代码实现篇(基于 OpenStack Rocky)

    目录 文章目录 目录 Neutron 的软件架构分析与实现 Neutron Server 启动流程 获取 WSGI Application Core API & Extension API C ...

  4. Android在智能终端领域的关键技术专题讲座(成都站)

    Android系统引领了终端智能化的浪潮,在民用.公 共及工业等诸多领域得到了广泛的应用,涉及手持终端.电视.汽车导航.工业控制等,在云计算.设备智能化等方面表现卓越.Android也凭借着自身的优 ...

  5. wpa_supplicant 使用

    (1)通过adb命令行,可以直接打开supplicant,从而运行wpa_cli,可以解决客户没有显示屏而无法操作WIFI的问题,还可以避免UI的问题带到driver.进一步来说,可以用在很多没有键盘 ...

  6. 人生新开始——第一天上班

    今天是我正式上班的第一天,对今天要做的工作充满期待,对将要面对的同事们也充满期待.这天起的很早,7点钟就开始睡不着了,忙着起来整理东西,看着时间还早,便打开电脑听起CNN News,练习听力,一听就听 ...

  7. 鲁棒图(Robustness Diagram)

    鲁棒图与系统需求分析 鲁棒图(Robustness Diagram)是由Ivar Jacobson于1991年发明的,用以回答“每个用例需要哪些对象”的问题.后来的UML并没有将鲁棒图列入UML标准, ...

  8. ABSD 基于架构的软件设计方法方法简介(摘抄)

    ABSD(Architecture-Based Software Design)基于架构的软件设计方法 有三个基础: 第一个基础是功能分解.在功能分解中,ABSD方法使用已有的基于模块的内聚和耦合技术 ...

  9. [no_code团队]项目介绍 & 需求分析 & 发布预测

    项目 内容 2020春季计算机学院软件工程(罗杰 任健) 博客园班级博客 作业要求 团队项目选择 我们在这个课程的目标是 在团队合作中提升软件开发水平 这个作业在哪个具体方面帮助我们实现目标 进行项目 ...

随机推荐

  1. 【winform】serialPort 串口

    一. 1.串口通信简单实现 该来的总会来的,学做硬件的,串口这个东西必须得门清. 俗话说的好,不会做串口助手的电子工程师不是好程序员.

  2. jQuery的deferred对象使用详解

    转自: https://www.cnblogs.com/PengLee/p/5657101.html jQuery的开发速度很快,几乎每半年一个大版本,每两个月一个小版本.每个版本都会引入一些新功能. ...

  3. 小程序如何封装自定义组件(Toast)

    1.创建和pages 同级的component目录新建一个myToast目录 例如: 2.myToast.wxml文件内容: <!-- 自定义toast组件 --> <!-- nam ...

  4. Openssl 升级操作

    转自:http://www.cnblogs.com/lzcys8868/p/9235538.html 首先我觉得没事就用绿盟扫漏洞的公司,就是闲的蛋疼,傻逼!不少服务器使用nginx,如果openss ...

  5. 7.20 Codeforces Beta Round #8

    链接:codeforces.com/contest/8 A 原因:RE,fantasy 的字符串的长度可能大于原字符串. B 题意:上下左右走,可能要避让障碍,问是否存在一个地图使得给定的路径为当前最 ...

  6. 王之泰/王志成《面向对象程序设计(java)》第十一周学习总结

    第一部分:理论知识学习部分 第十一章理论知识主要为集合类的介绍,在实验中都有所体现且本周主要复习回顾上周的泛型程序设计 第二部分:实验部分 ——集合 1.实验目的与要求 (1) 掌握Vetor.Sta ...

  7. hdu2844 Coins -----多重背包+二进制优化

    题目意思:给出你n种硬币的面额和数量,询问它能够组合成1~m元中的几种情况. 这题如果直接按照完全背包来写的话,会因为每一种硬币的数目1 ≤ Ci ≤ 1000而超时,所以这里需要运用二进制优化来解决 ...

  8. laravel——ajax分页&删除&搜索

    一.视图代码 /*搜索*/<form action="javascript:search_brand()" name="searchForm"> & ...

  9. transform:rotate3d/tranlate3d

    transform:rotate3d(x,y,z,angle); rotate3d 代表 在3D空间,元素沿着 经过原点(0,0,0) 和 三维坐标(x,y,z) 2点的直线进行旋转.其中: x:是一 ...

  10. ECharts导出word 图表模糊失真

    在项目中会有这样的需求,echars生成图表导入到word中 在项目中用的插件 博主有一篇文章将的是  vue使用jquery的三方插件jquery.wordexport.js   https://b ...