vnpy3.9.3源代码个人解读(一)

1.源代码文件结构

        从github下载vnpy3.9.3源代码,解压,得到下述源代码目录

2.各文件夹和文件作用

2.1 .github文件夹

        workflows文件夹下只有一个文件,如下图:

        该.yml文件用于每次在 GitHub 上更新源代码时,自动执行一系列操作(比如设置python环境为3.10、安装最新依赖以防止代码更新带来的问题、进行自动代码检查等)。

2.2 docs文件夹

        Sphinx 文档生成,即根据源代码中的注释(可以这样理解)以及其他文档文件生成的项目文档,_static和_templates是定义了文档的css和html格式,community和elite存放着项目社区版和轻量版的文档,conf.py是文档生成中的一些配置,从index.rst开始进行文档生成。

        总而言之,这个部分存放着vnpy项目的一些用户文档,可以参考使用。

2.3 examples文件夹

        该文件夹包括了8个关于vnpy项目的实际操作示例,每个项目都是一个独立的 Python 应用程序或脚本,展示了如何使用 VeighNa 框架进行不同的交易策略回测和实盘交易。

2.4 vnpy文件夹

2.4.1 chart文件夹

        共有5个py文件,归纳起来,实现了金融数据的可视化,它不仅能展示多种金融图表(如K线图、成交量图等),还具备交互功能,如实时数据更新、图表缩放和平移、光标联动和数据提示等。

2.4.2 event文件夹

        实现了一个事件引擎,通过多线程,使得实时事件的发生不会阻碍主进程的运行。

2.4.3 rpc文件夹

        实现了一个 RPC 框架,允许客户端与服务器之间通过定义好的方法进行远程调用,同时通过心跳机制监控连接状态。

2.4.4 trader文件夹

        共有2个文件夹和12个文件。

2.4.4.1 locale文件夹

        该模块的主要作用是支持多语言环境,使得用户能够根据自己的语言偏好使用系统。

2.4.4.2 ui文件夹

       UI采用pyqt,实现了vnpy trader的用户界面。

2.4.4.3 app.py

        该模块定义了一个抽象基类,每个vnpy trader应用提供一个通用的接口,使得开发者可以更容易地扩展vnpy的功能。
        用户通过app和系统交互,从而调用engine,实现用户对vnpy的功能使用。

2.4.4.4 constant.py

       该模块 枚举了交易平台的常用常量,用于描述交易相关的基本概念。

2.4.4.5 converter.py

       该模块 进行了数据格式的转换,将用户的交易请求转换为适合当前市场条件和持仓状态的格式。

2.4.4.6 database.py

        该模块提供了对不同数据库的支持,使得用户可以根据需要选择合适的数据库来存储和管理数据。

2.4.4.7 datafeed.py

        连接数据源,获取市场数据,和database.py配合,实现了数据的获取和存储。

2.4.4.8 engine.py

        定义了主引擎、日志引擎、订单引擎等,共同组成了系统的底层逻辑,支持交易策略的实现和市场交互等功能。

2.4.4.9 event.py

        定义交易平台中的各种事件类型字符串(常量)。

2.4.4.10 gateway.py

        这个模块定义了一些接口,这些接口用于连接不同的交易系统或交易所。为交易系统的网关提供了一个统一的框架,允许开发者通过实现具体的连接逻辑与市场交互,同时确保数据处理的高效与可靠。

2.4.4.11 object.py

        这是一个数据结构模块,用于定义交易平台中的基本数据对象和请求。这些数据对象封装了与交易相关的信息,便于在整个交易系统中传递和管理。通过定义这些基础的对象类型,可以让代码更加清晰易懂,也便于其他开发者理解和使用。

2.4.4.12 optimize.py

        该模块主要用于对交易策略或参数进行优化,使用穷举算法和遗传算法来寻找最优的参数组合。

2.4.4.13 setting.py

        该模块是交易平台的全局配置文件,管理和存储vnpy的各种设置、参数等。包括字体、日志级别、邮件服务器信息、数据源信息、数据库信息等。这些设置可以在程序启动时通过load_json()函数从json文件中加载,也可以直接在代码中修改。

2.4.4.14 utility.py

        该模块提供了一些实用的自定义函数,方便其他模块调用,比如:get_file_path函数 :返回一个指定路径的文件名称,等等,诸如此类。

3.尾言

        上述内容只分析到vnpy源代码的结构和各模块各文件的作用,具体的架构分析见后文。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值