vnpy


Namevnpy JSON
Version 4.2.0 PyPI version JSON
download
home_pageNone
SummaryA framework for developing quant trading systems.
upload_time2025-11-01 03:46:59
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT
keywords algotrading investment quant quantitative trading
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # VeighNa - By Traders, For Traders, AI-Powered.

<p align="center">
  <img src ="https://vnpy.oss-cn-shanghai.aliyuncs.com/veighna-logo.png"/>
</p>

💬 Want to read this in **english** ? Go [**here**](README_ENG.md)

<p align="center">
    <img src ="https://img.shields.io/badge/version-4.2.0-blueviolet.svg"/>
    <img src ="https://img.shields.io/badge/platform-windows|linux|macos-yellow.svg"/>
    <img src ="https://img.shields.io/badge/python-3.10|3.11|3.12|3.13-blue.svg" />
    <img src ="https://img.shields.io/github/actions/workflow/status/vnpy/vnpy/pythonapp.yml?branch=master"/>
    <img src ="https://img.shields.io/github/license/vnpy/vnpy.svg?color=orange"/>
</p>

VeighNa是一套基于Python的开源量化交易系统开发框架,在开源社区持续不断的贡献下一步步成长为多功能量化交易平台,自发布以来已经积累了众多来自金融机构或相关领域的用户,包括私募基金、证券公司、期货公司等。

在使用VeighNa进行二次开发(策略、模块等)的过程中有任何疑问,请查看[**VeighNa项目文档**](https://www.vnpy.com/docs/cn/index.html),如果无法解决请前往[**官方社区论坛**](https://www.vnpy.com/forum/)的【提问求助】板块寻求帮助,也欢迎在【经验分享】板块分享你的使用心得!

**想要获取更多关于VeighNa的资讯信息?** 请扫描下方二维码添加小助手加入【VeighNa社区交流微信群】:

<p align="center">
  <img src ="https://vnpy.oss-cn-shanghai.aliyuncs.com/github_wx.png"/, width=250>
</p>


## AI-Powered


VeighNa发布十周年之际正式推出4.0版本,重磅新增面向AI量化策略的[vnpy.alpha](./vnpy/alpha)模块,为专业量化交易员提供**一站式多因子机器学习(ML)策略开发、投研和实盘交易解决方案**:

<p align="center">
  <img src ="https://vnpy.oss-cn-shanghai.aliyuncs.com/alpha_demo.jpg"/, width=500>
</p>

* :bar_chart: **[dataset](./vnpy/alpha/dataset)**:因子特征工程

    * 专为ML算法训练优化设计,支持高效批量特征计算与处理
    * 内置丰富的因子特征表达式计算引擎,实现快速一键生成训练数据
    * [Alpha 158](./vnpy/alpha/dataset/datasets/alpha_158.py):源于微软Qlib项目的股票市场特征集合,涵盖K线形态、价格趋势、时序波动等多维度量化因子

* :bulb: **[model](./vnpy/alpha/model)**:预测模型训练

    * 提供标准化的ML模型开发模板,大幅简化模型构建与训练流程
    * 统一API接口设计,支持无缝切换不同算法进行性能对比测试
    * 集成多种主流机器学习算法:
        * [Lasso](./vnpy/alpha/model/models/lasso_model.py):经典Lasso回归模型,通过L1正则化实现特征选择
        * [LightGBM](./vnpy/alpha/model/models/lgb_model.py):高效梯度提升决策树,针对大规模数据集优化的训练引擎
        * [MLP](./vnpy/alpha/model/models/mlp_model.py):多层感知机神经网络,适用于复杂非线性关系建模

* :robot: **[strategy](./vnpy/alpha/strategy)**:策略投研开发

    * 基于ML信号预测模型快速构建量化交易策略
    * 支持截面多标的和时序单标的两种策略类型

* :microscope: **[lab](./vnpy/alpha/lab.py)**:投研流程管理

    * 集成数据管理、模型训练、信号生成和策略回测等完整工作流程
    * 简洁API设计,内置可视化分析工具,直观评估策略表现和模型效果

* :book: **[notebook](./examples/alpha_research)**:量化投研Demo

    * [download_data_rq](./examples/alpha_research/download_data_rq.ipynb):基于RQData下载A股指数成分股数据,包含指数成分变化跟踪及历史行情获取
    * [download_data_xt](./examples/alpha_research/download_data_xt.ipynb):基于迅投研数据服务,下载获取A股指数成分历史变化和股票K线数据
    * [research_workflow_lasso](./examples/alpha_research/research_workflow_lasso.ipynb):基于Lasso回归模型的量化投研工作流,展示线性模型特征选择与预测能力
    * [research_workflow_lgb](./examples/alpha_research/research_workflow_lgb.ipynb):基于LightGBM梯度提升树的量化投研工作流,利用高效集成学习方法进行预测
    * [research_workflow_mlp](./examples/alpha_research/research_workflow_mlp.ipynb):基于多层感知机神经网络的量化投研工作流,展示深度学习在量化交易中的应用

vnpy.alpha模块的设计理念受到[Qlib](https://github.com/microsoft/qlib)项目的启发,在保持易用性的同时提供强大的AI量化能力,特此向Qlib开发团队致以诚挚感谢!


## 功能特点

带有 :arrow_up: 的模块代表已经完成4.0版本的升级适配测试,同时4.0核心框架采用了优先保证兼容性的升级方式,因此大多数模块也都可以直接使用(涉及到C++ API封装的接口必须升级后才能使用)。 

1. :arrow_up: 多功能量化交易平台(trader),整合了多种交易接口,并针对具体策略算法和功能开发提供了简洁易用的API,用于快速构建交易员所需的量化交易应用。

2. 覆盖国内外所拥有的下述交易品种的交易接口(gateway):

    * 国内市场

        * :arrow_up: CTP([ctp](https://www.github.com/vnpy/vnpy_ctp)):国内期货、期权

        * :arrow_up: CTP Mini([mini](https://www.github.com/vnpy/vnpy_mini)):国内期货、期权

        * :arrow_up: CTP证券([sopt](https://www.github.com/vnpy/vnpy_sopt)):ETF期权

        * :arrow_up: 飞马([femas](https://www.github.com/vnpy/vnpy_femas)):国内期货

        * :arrow_up: 恒生UFT([uft](https://www.github.com/vnpy/vnpy_uft)):国内期货、ETF期权

        * 易盛([esunny](https://www.github.com/vnpy/vnpy_esunny)):国内期货、黄金TD

        * :arrow_up: 顶点HTS([hts](https://www.github.com/vnpy/vnpy_hts)):ETF期权

        * :arrow_up: 中泰XTP([xtp](https://www.github.com/vnpy/vnpy_xtp)):国内证券(A股)、ETF期权

        * :arrow_up: 华鑫奇点([tora](https://www.github.com/vnpy/vnpy_tora)):国内证券(A股)、ETF期权

        * 东证OST([ost](https://www.github.com/vnpy/vnpy_ost)):国内证券(A股)

        * 东方财富EMT([emt](https://www.github.com/vnpy/vnpy_emt)):国内证券(A股)

        * 飞鼠([sgit](https://www.github.com/vnpy/vnpy_sgit)):黄金TD、国内期货

        * :arrow_up: 金仕达黄金([ksgold](https://www.github.com/vnpy/vnpy_ksgold)):黄金TD

        * :arrow_up: 利星资管([lstar](https://www.github.com/vnpy/vnpy_lstar)):期货资管

        * :arrow_up: 融航([rohon](https://www.github.com/vnpy/vnpy_rohon)):期货资管

        * :arrow_up: 杰宜斯([jees](https://www.github.com/vnpy/vnpy_jees)):期货资管

        * 中汇亿达([comstar](https://www.github.com/vnpy/vnpy_comstar)):银行间市场

        * :arrow_up: TTS([tts](https://www.github.com/vnpy/vnpy_tts)):国内期货(仿真)

    * 海外市场

        * :arrow_up: Interactive Brokers([ib](https://www.github.com/vnpy/vnpy_ib)):海外证券、期货、期权、贵金属等

        * :arrow_up: 易盛9.0外盘([tap](https://www.github.com/vnpy/vnpy_tap)):海外期货

        * :arrow_up: 直达期货([da](https://www.github.com/vnpy/vnpy_da)):海外期货

    * 特殊应用

        * :arrow_up: RQData行情([rqdata](https://www.github.com/vnpy/vnpy_rqdata)):跨市场(股票、指数、ETF、期货)实时行情

        * :arrow_up: 迅投研行情([xt](https://www.github.com/vnpy/vnpy_xt)):跨市场(股票、指数、可转债、ETF、期货、期权)实时行情

        * :arrow_up: RPC服务([rpc](https://www.github.com/vnpy/vnpy_rpcservice)):跨进程通讯接口,用于分布式架构

3. 覆盖下述各类量化策略的交易应用(app):

    * :arrow_up: [cta_strategy](https://www.github.com/vnpy/vnpy_ctastrategy):CTA策略引擎模块,在保持易用性的同时,允许用户针对CTA类策略运行过程中委托的报撤行为进行细粒度控制(降低交易滑点、实现高频策略)

    * :arrow_up: [cta_backtester](https://www.github.com/vnpy/vnpy_ctabacktester):CTA策略回测模块,无需使用Jupyter Notebook,直接使用图形界面进行策略回测分析、参数优化等相关工作

    * :arrow_up: [spread_trading](https://www.github.com/vnpy/vnpy_spreadtrading):价差交易模块,支持自定义价差,实时计算价差行情和持仓,支持价差算法交易以及自动价差策略两种模式

    * :arrow_up: [option_master](https://www.github.com/vnpy/vnpy_optionmaster):期权交易模块,针对国内期权市场设计,支持多种期权定价模型、隐含波动率曲面计算、希腊值风险跟踪等功能

    * :arrow_up: [portfolio_strategy](https://www.github.com/vnpy/vnpy_portfoliostrategy):组合策略模块,面向同时交易多合约的量化策略(Alpha、期权套利等),提供历史数据回测和实盘自动交易功能

    * :arrow_up: [algo_trading](https://www.github.com/vnpy/vnpy_algotrading):算法交易模块,提供多种常用的智能交易算法:TWAP、Sniper、Iceberg、BestLimit等

    * :arrow_up: [script_trader](https://www.github.com/vnpy/vnpy_scripttrader):脚本策略模块,面向多标的类量化策略和计算任务设计,同时也可以在命令行中实现REPL指令形式的交易,不支持回测功能

    * :arrow_up: [paper_account](https://www.github.com/vnpy/vnpy_paperaccount):本地仿真模块,纯本地化实现的仿真模拟交易功能,基于交易接口获取的实时行情进行委托撮合,提供委托成交推送以及持仓记录

    * :arrow_up: [chart_wizard](https://www.github.com/vnpy/vnpy_chartwizard):K线图表模块,基于RQData数据服务(期货)或者交易接口获取历史数据,并结合Tick推送显示实时行情变化

    * :arrow_up: [portfolio_manager](https://www.github.com/vnpy/vnpy_portfoliomanager):交易组合管理模块,以独立的策略交易组合(子账户)为基础,提供委托成交记录管理、交易仓位自动跟踪以及每日盈亏实时统计功能

    * :arrow_up: [rpc_service](https://www.github.com/vnpy/vnpy_rpcservice):RPC服务模块,允许将某一进程启动为服务端,作为统一的行情和交易路由通道,允许多客户端同时连接,实现多进程分布式系统

    * :arrow_up: [data_manager](https://www.github.com/vnpy/vnpy_datamanager):历史数据管理模块,通过树形目录查看数据库中已有的数据概况,选择任意时间段数据查看字段细节,支持CSV文件的数据导入和导出

    * :arrow_up: [data_recorder](https://www.github.com/vnpy/vnpy_datarecorder):行情记录模块,基于图形界面进行配置,根据需求实时录制Tick或者K线行情到数据库中,用于策略回测或者实盘初始化

    * :arrow_up: [excel_rtd](https://www.github.com/vnpy/vnpy_excelrtd):Excel RTD(Real Time Data)实时数据服务,基于pyxll模块实现在Excel中获取各类数据(行情、合约、持仓等)的实时推送更新

    * :arrow_up: [risk_manager](https://www.github.com/vnpy/vnpy_riskmanager):风险管理模块,提供包括交易流控、下单数量、活动委托、撤单总数等规则的统计和限制,有效实现前端风控功能

    * :arrow_up: [web_trader](https://www.github.com/vnpy/vnpy_webtrader):Web服务模块,针对B-S架构需求设计,实现了提供主动函数调用(REST)和被动数据推送(Websocket)的Web服务器

4. Python交易API接口封装(api),提供上述交易接口的底层对接实现。

    * :arrow_up: REST Client([rest](https://www.github.com/vnpy/vnpy_rest)):基于协程异步IO的高性能REST API客户端,采用事件消息循环的编程模型,支持高并发实时交易请求发送

    * :arrow_up: Websocket Client([websocket](https://www.github.com/vnpy/vnpy_websocket)):基于协程异步IO的高性能Websocket API客户端,支持和REST Client共用事件循环并发运行

5. :arrow_up: 简洁易用的事件驱动引擎(event),作为事件驱动型交易程序的核心。

6. 对接各类数据库的适配器接口(database):

    * SQL类

        * :arrow_up: SQLite([sqlite](https://www.github.com/vnpy/vnpy_sqlite)):轻量级单文件数据库,无需安装和配置数据服务程序,VeighNa的默认选项,适合入门新手用户

        * :arrow_up: MySQL([mysql](https://www.github.com/vnpy/vnpy_mysql)):主流的开源关系型数据库,文档资料极为丰富,且可替换其他NewSQL兼容实现(如TiDB)

        * :arrow_up: PostgreSQL([postgresql](https://www.github.com/vnpy/vnpy_postgresql)):特性更为丰富的开源关系型数据库,支持通过扩展插件来新增功能,只推荐熟手使用

    * NoSQL类

        * DolphinDB([dolphindb](https://www.github.com/vnpy/vnpy_dolphindb)):一款高性能分布式时序数据库,适用于对速度要求极高的低延时或实时性任务

        * :arrow_up: TDengine([taos](https://www.github.com/vnpy/vnpy_taos)):分布式、高性能、支持SQL的时序数据库,带有内建的缓存、流式计算、数据订阅等系统功能,能大幅减少研发和运维的复杂度

        * :arrow_up: MongoDB([mongodb](https://www.github.com/vnpy/vnpy_mongodb)):基于分布式文件储存(bson格式)的文档式数据库,内置的热数据内存缓存提供更快读写速度

7. 对接下述各类数据服务的适配器接口(datafeed):

    * :arrow_up: 迅投研([xt](https://www.github.com/vnpy/vnpy_xt)):股票、期货、期权、基金、债券

    * :arrow_up: 米筐RQData([rqdata](https://www.github.com/vnpy/vnpy_rqdata)):股票、期货、期权、基金、债券、黄金TD

    * :arrow_up: MultiCharts([mcdata](https://www.github.com/vnpy/vnpy_mcdata)):期货、期货期权

    * :arrow_up: TuShare([tushare](https://www.github.com/vnpy/vnpy_tushare)):股票、期货、期权、基金

    * :arrow_up: 万得Wind([wind](https://www.github.com/vnpy/vnpy_wind)):股票、期货、基金、债券

    * :arrow_up: 同花顺iFinD([ifind](https://www.github.com/vnpy/vnpy_ifind)):股票、期货、基金、债券

    * :arrow_up: 天勤TQSDK([tqsdk](https://www.github.com/vnpy/vnpy_tqsdk)):期货

    * :arrow_up: 掘金([gm](https://www.github.com/vnpy/vnpy_gm)):股票

    * :arrow_up: polygon([polygon](https://www.github.com/vnpy/vnpy_polygon)):股票、期货、期权

8. :arrow_up: 跨进程通讯标准组件(rpc),用于实现分布式部署的复杂交易系统。

9. :arrow_up: Python高性能K线图表(chart),支持大数据量图表显示以及实时数据更新功能。

10. [社区论坛](http://www.vnpy.com/forum)和[知乎专栏](http://zhuanlan.zhihu.com/vn-py),内容包括VeighNa项目的开发教程和Python在量化交易领域的应用研究等内容。

11. 官方交流群262656087(QQ),管理严格(定期清除长期潜水的成员),入群费将捐赠给VeighNa社区基金。

注:以上关于功能特点的说明为根据说明文档发布时情况罗列,后续可能存在更新或调整。若功能描述同实际存在出入,欢迎通过Issue联系进行调整。

## 环境准备

* 推荐使用VeighNa团队为量化交易专门打造的Python发行版[VeighNa Studio-4.2.0](https://download.vnpy.com/veighna_studio-4.2.0.exe),集成内置了VeighNa框架以及VeighNa Station量化管理平台,无需手动安装
* 支持的系统版本:Windows 11以上 / Windows Server 2022以上 / Ubuntu 22.04 LTS以上
* 支持的Python版本:Python 3.10以上(64位),**推荐使用Python 3.13**

## 安装步骤

在[这里](https://github.com/vnpy/vnpy/releases)下载Release发布版本,解压后运行以下命令安装:

**Windows**

```
install.bat
```

**Ubuntu**

```
bash install.sh
```

**Macos**

```
bash install_osx.sh
```

## 使用指南

1. 在[SimNow](http://www.simnow.com.cn/)注册CTP仿真账号,并在[该页面](http://www.simnow.com.cn/product.action)获取经纪商代码以及交易行情服务器地址。

2. 在[VeighNa社区论坛](https://www.vnpy.com/forum/)注册获得VeighNa Station账号密码(论坛账号密码即是)

3. 启动VeighNa Station(安装VeighNa Studio后会在桌面自动创建快捷方式),输入上一步的账号密码登录

4. 点击底部的**VeighNa Trader**按钮,开始你的交易!!!

注意:

* 在VeighNa Trader的运行过程中请勿关闭VeighNa Station(会自动退出)

## 脚本运行

除了基于VeighNa Station的图形化启动方式外,也可以在任意目录下创建run.py,写入以下示例代码:

```Python
from vnpy.event import EventEngine
from vnpy.trader.engine import MainEngine
from vnpy.trader.ui import MainWindow, create_qapp

from vnpy_ctp import CtpGateway
from vnpy_ctastrategy import CtaStrategyApp
from vnpy_ctabacktester import CtaBacktesterApp


def main():
    """Start VeighNa Trader"""
    qapp = create_qapp()

    event_engine = EventEngine()
    main_engine = MainEngine(event_engine)
    
    main_engine.add_gateway(CtpGateway)
    main_engine.add_app(CtaStrategyApp)
    main_engine.add_app(CtaBacktesterApp)

    main_window = MainWindow(main_engine, event_engine)
    main_window.showMaximized()

    qapp.exec()


if __name__ == "__main__":
    main()
```

在该目录下打开CMD(按住Shift->点击鼠标右键->在此处打开命令窗口/PowerShell)后运行下列命令启动VeighNa Trader:

    python run.py

## 贡献代码

VeighNa使用Github托管其源代码,如果希望贡献代码请使用github的PR(Pull Request)的流程:

1. [创建 Issue](https://github.com/vnpy/vnpy/issues/new) - 对于较大的改动(如新功能,大型重构等)建议先开issue讨论一下,较小的improvement(如文档改进,bugfix等)直接发PR即可

2. Fork [VeighNa](https://github.com/vnpy/vnpy) - 点击右上角**Fork**按钮

3. Clone你自己的fork: ```git clone https://github.com/$userid/vnpy.git```
	* 如果你的fork已经过时,需要手动sync:[同步方法](https://help.github.com/articles/syncing-a-fork/)

4. 从**dev**创建你自己的feature branch: ```git checkout -b $my_feature_branch dev```

5. 在$my_feature_branch上修改并将修改push到你的fork上

6. 创建从你的fork的$my_feature_branch分支到主项目的**dev**分支的[Pull Request] -  [在此](https://github.com/vnpy/vnpy/compare?expand=1)点击**compare across forks**,选择需要的fork和branch创建PR

7. 等待review, 需要继续改进,或者被Merge!

在提交代码的时候,请遵守以下规则,以提高代码质量:

  * 使用[ruff](https://github.com/astral-sh/ruff)检查你的代码样式,确保没有error和warning。在项目根目录下运行```ruff check .```即可。
  * 使用[mypy](https://github.com/python/mypy)进行静态类型检查,确保类型注解正确。在项目根目录下运行```mypy vnpy```即可。

## 其他内容

* [获取帮助](https://github.com/vnpy/vnpy/blob/dev/.github/SUPPORT.md)
* [社区行为准则](https://github.com/vnpy/vnpy/blob/dev/.github/CODE_OF_CONDUCT.md)
* [Issue模板](https://github.com/vnpy/vnpy/blob/dev/.github/ISSUE_TEMPLATE.md)
* [PR模板](https://github.com/vnpy/vnpy/blob/dev/.github/PULL_REQUEST_TEMPLATE.md)

## 版权说明

MIT

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "vnpy",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "algotrading, investment, quant, quantitative, trading",
    "author": null,
    "author_email": "Xiaoyou Chen <xiaoyou.chen@mail.vnpy.com>",
    "download_url": "https://files.pythonhosted.org/packages/e1/9d/974f788a3095ccbb6d9058728ce654cb54d35cfb31ce1adf6ad8bb9d5a70/vnpy-4.2.0.tar.gz",
    "platform": null,
    "description": "# VeighNa - By Traders, For Traders, AI-Powered.\n\n<p align=\"center\">\n  <img src =\"https://vnpy.oss-cn-shanghai.aliyuncs.com/veighna-logo.png\"/>\n</p>\n\n\ud83d\udcac Want to read this in **english** ? Go [**here**](README_ENG.md)\n\n<p align=\"center\">\n    <img src =\"https://img.shields.io/badge/version-4.2.0-blueviolet.svg\"/>\n    <img src =\"https://img.shields.io/badge/platform-windows|linux|macos-yellow.svg\"/>\n    <img src =\"https://img.shields.io/badge/python-3.10|3.11|3.12|3.13-blue.svg\" />\n    <img src =\"https://img.shields.io/github/actions/workflow/status/vnpy/vnpy/pythonapp.yml?branch=master\"/>\n    <img src =\"https://img.shields.io/github/license/vnpy/vnpy.svg?color=orange\"/>\n</p>\n\nVeighNa\u662f\u4e00\u5957\u57fa\u4e8ePython\u7684\u5f00\u6e90\u91cf\u5316\u4ea4\u6613\u7cfb\u7edf\u5f00\u53d1\u6846\u67b6\uff0c\u5728\u5f00\u6e90\u793e\u533a\u6301\u7eed\u4e0d\u65ad\u7684\u8d21\u732e\u4e0b\u4e00\u6b65\u6b65\u6210\u957f\u4e3a\u591a\u529f\u80fd\u91cf\u5316\u4ea4\u6613\u5e73\u53f0\uff0c\u81ea\u53d1\u5e03\u4ee5\u6765\u5df2\u7ecf\u79ef\u7d2f\u4e86\u4f17\u591a\u6765\u81ea\u91d1\u878d\u673a\u6784\u6216\u76f8\u5173\u9886\u57df\u7684\u7528\u6237\uff0c\u5305\u62ec\u79c1\u52df\u57fa\u91d1\u3001\u8bc1\u5238\u516c\u53f8\u3001\u671f\u8d27\u516c\u53f8\u7b49\u3002\n\n\u5728\u4f7f\u7528VeighNa\u8fdb\u884c\u4e8c\u6b21\u5f00\u53d1\uff08\u7b56\u7565\u3001\u6a21\u5757\u7b49\uff09\u7684\u8fc7\u7a0b\u4e2d\u6709\u4efb\u4f55\u7591\u95ee\uff0c\u8bf7\u67e5\u770b[**VeighNa\u9879\u76ee\u6587\u6863**](https://www.vnpy.com/docs/cn/index.html)\uff0c\u5982\u679c\u65e0\u6cd5\u89e3\u51b3\u8bf7\u524d\u5f80[**\u5b98\u65b9\u793e\u533a\u8bba\u575b**](https://www.vnpy.com/forum/)\u7684\u3010\u63d0\u95ee\u6c42\u52a9\u3011\u677f\u5757\u5bfb\u6c42\u5e2e\u52a9\uff0c\u4e5f\u6b22\u8fce\u5728\u3010\u7ecf\u9a8c\u5206\u4eab\u3011\u677f\u5757\u5206\u4eab\u4f60\u7684\u4f7f\u7528\u5fc3\u5f97\uff01\n\n**\u60f3\u8981\u83b7\u53d6\u66f4\u591a\u5173\u4e8eVeighNa\u7684\u8d44\u8baf\u4fe1\u606f\uff1f** \u8bf7\u626b\u63cf\u4e0b\u65b9\u4e8c\u7ef4\u7801\u6dfb\u52a0\u5c0f\u52a9\u624b\u52a0\u5165\u3010VeighNa\u793e\u533a\u4ea4\u6d41\u5fae\u4fe1\u7fa4\u3011\uff1a\n\n<p align=\"center\">\n  <img src =\"https://vnpy.oss-cn-shanghai.aliyuncs.com/github_wx.png\"/, width=250>\n</p>\n\n\n## AI-Powered\n\n\nVeighNa\u53d1\u5e03\u5341\u5468\u5e74\u4e4b\u9645\u6b63\u5f0f\u63a8\u51fa4.0\u7248\u672c\uff0c\u91cd\u78c5\u65b0\u589e\u9762\u5411AI\u91cf\u5316\u7b56\u7565\u7684[vnpy.alpha](./vnpy/alpha)\u6a21\u5757\uff0c\u4e3a\u4e13\u4e1a\u91cf\u5316\u4ea4\u6613\u5458\u63d0\u4f9b**\u4e00\u7ad9\u5f0f\u591a\u56e0\u5b50\u673a\u5668\u5b66\u4e60\uff08ML\uff09\u7b56\u7565\u5f00\u53d1\u3001\u6295\u7814\u548c\u5b9e\u76d8\u4ea4\u6613\u89e3\u51b3\u65b9\u6848**\uff1a\n\n<p align=\"center\">\n  <img src =\"https://vnpy.oss-cn-shanghai.aliyuncs.com/alpha_demo.jpg\"/, width=500>\n</p>\n\n* :bar_chart: **[dataset](./vnpy/alpha/dataset)**\uff1a\u56e0\u5b50\u7279\u5f81\u5de5\u7a0b\n\n    * \u4e13\u4e3aML\u7b97\u6cd5\u8bad\u7ec3\u4f18\u5316\u8bbe\u8ba1\uff0c\u652f\u6301\u9ad8\u6548\u6279\u91cf\u7279\u5f81\u8ba1\u7b97\u4e0e\u5904\u7406\n    * \u5185\u7f6e\u4e30\u5bcc\u7684\u56e0\u5b50\u7279\u5f81\u8868\u8fbe\u5f0f\u8ba1\u7b97\u5f15\u64ce\uff0c\u5b9e\u73b0\u5feb\u901f\u4e00\u952e\u751f\u6210\u8bad\u7ec3\u6570\u636e\n    * [Alpha 158](./vnpy/alpha/dataset/datasets/alpha_158.py)\uff1a\u6e90\u4e8e\u5fae\u8f6fQlib\u9879\u76ee\u7684\u80a1\u7968\u5e02\u573a\u7279\u5f81\u96c6\u5408\uff0c\u6db5\u76d6K\u7ebf\u5f62\u6001\u3001\u4ef7\u683c\u8d8b\u52bf\u3001\u65f6\u5e8f\u6ce2\u52a8\u7b49\u591a\u7ef4\u5ea6\u91cf\u5316\u56e0\u5b50\n\n* :bulb: **[model](./vnpy/alpha/model)**\uff1a\u9884\u6d4b\u6a21\u578b\u8bad\u7ec3\n\n    * \u63d0\u4f9b\u6807\u51c6\u5316\u7684ML\u6a21\u578b\u5f00\u53d1\u6a21\u677f\uff0c\u5927\u5e45\u7b80\u5316\u6a21\u578b\u6784\u5efa\u4e0e\u8bad\u7ec3\u6d41\u7a0b\n    * \u7edf\u4e00API\u63a5\u53e3\u8bbe\u8ba1\uff0c\u652f\u6301\u65e0\u7f1d\u5207\u6362\u4e0d\u540c\u7b97\u6cd5\u8fdb\u884c\u6027\u80fd\u5bf9\u6bd4\u6d4b\u8bd5\n    * \u96c6\u6210\u591a\u79cd\u4e3b\u6d41\u673a\u5668\u5b66\u4e60\u7b97\u6cd5\uff1a\n        * [Lasso](./vnpy/alpha/model/models/lasso_model.py)\uff1a\u7ecf\u5178Lasso\u56de\u5f52\u6a21\u578b\uff0c\u901a\u8fc7L1\u6b63\u5219\u5316\u5b9e\u73b0\u7279\u5f81\u9009\u62e9\n        * [LightGBM](./vnpy/alpha/model/models/lgb_model.py)\uff1a\u9ad8\u6548\u68af\u5ea6\u63d0\u5347\u51b3\u7b56\u6811\uff0c\u9488\u5bf9\u5927\u89c4\u6a21\u6570\u636e\u96c6\u4f18\u5316\u7684\u8bad\u7ec3\u5f15\u64ce\n        * [MLP](./vnpy/alpha/model/models/mlp_model.py)\uff1a\u591a\u5c42\u611f\u77e5\u673a\u795e\u7ecf\u7f51\u7edc\uff0c\u9002\u7528\u4e8e\u590d\u6742\u975e\u7ebf\u6027\u5173\u7cfb\u5efa\u6a21\n\n* :robot: **[strategy](./vnpy/alpha/strategy)**\uff1a\u7b56\u7565\u6295\u7814\u5f00\u53d1\n\n    * \u57fa\u4e8eML\u4fe1\u53f7\u9884\u6d4b\u6a21\u578b\u5feb\u901f\u6784\u5efa\u91cf\u5316\u4ea4\u6613\u7b56\u7565\n    * \u652f\u6301\u622a\u9762\u591a\u6807\u7684\u548c\u65f6\u5e8f\u5355\u6807\u7684\u4e24\u79cd\u7b56\u7565\u7c7b\u578b\n\n* :microscope: **[lab](./vnpy/alpha/lab.py)**\uff1a\u6295\u7814\u6d41\u7a0b\u7ba1\u7406\n\n    * \u96c6\u6210\u6570\u636e\u7ba1\u7406\u3001\u6a21\u578b\u8bad\u7ec3\u3001\u4fe1\u53f7\u751f\u6210\u548c\u7b56\u7565\u56de\u6d4b\u7b49\u5b8c\u6574\u5de5\u4f5c\u6d41\u7a0b\n    * \u7b80\u6d01API\u8bbe\u8ba1\uff0c\u5185\u7f6e\u53ef\u89c6\u5316\u5206\u6790\u5de5\u5177\uff0c\u76f4\u89c2\u8bc4\u4f30\u7b56\u7565\u8868\u73b0\u548c\u6a21\u578b\u6548\u679c\n\n* :book: **[notebook](./examples/alpha_research)**\uff1a\u91cf\u5316\u6295\u7814Demo\n\n    * [download_data_rq](./examples/alpha_research/download_data_rq.ipynb)\uff1a\u57fa\u4e8eRQData\u4e0b\u8f7dA\u80a1\u6307\u6570\u6210\u5206\u80a1\u6570\u636e\uff0c\u5305\u542b\u6307\u6570\u6210\u5206\u53d8\u5316\u8ddf\u8e2a\u53ca\u5386\u53f2\u884c\u60c5\u83b7\u53d6\n    * [download_data_xt](./examples/alpha_research/download_data_xt.ipynb)\uff1a\u57fa\u4e8e\u8fc5\u6295\u7814\u6570\u636e\u670d\u52a1\uff0c\u4e0b\u8f7d\u83b7\u53d6A\u80a1\u6307\u6570\u6210\u5206\u5386\u53f2\u53d8\u5316\u548c\u80a1\u7968K\u7ebf\u6570\u636e\n    * [research_workflow_lasso](./examples/alpha_research/research_workflow_lasso.ipynb)\uff1a\u57fa\u4e8eLasso\u56de\u5f52\u6a21\u578b\u7684\u91cf\u5316\u6295\u7814\u5de5\u4f5c\u6d41\uff0c\u5c55\u793a\u7ebf\u6027\u6a21\u578b\u7279\u5f81\u9009\u62e9\u4e0e\u9884\u6d4b\u80fd\u529b\n    * [research_workflow_lgb](./examples/alpha_research/research_workflow_lgb.ipynb)\uff1a\u57fa\u4e8eLightGBM\u68af\u5ea6\u63d0\u5347\u6811\u7684\u91cf\u5316\u6295\u7814\u5de5\u4f5c\u6d41\uff0c\u5229\u7528\u9ad8\u6548\u96c6\u6210\u5b66\u4e60\u65b9\u6cd5\u8fdb\u884c\u9884\u6d4b\n    * [research_workflow_mlp](./examples/alpha_research/research_workflow_mlp.ipynb)\uff1a\u57fa\u4e8e\u591a\u5c42\u611f\u77e5\u673a\u795e\u7ecf\u7f51\u7edc\u7684\u91cf\u5316\u6295\u7814\u5de5\u4f5c\u6d41\uff0c\u5c55\u793a\u6df1\u5ea6\u5b66\u4e60\u5728\u91cf\u5316\u4ea4\u6613\u4e2d\u7684\u5e94\u7528\n\nvnpy.alpha\u6a21\u5757\u7684\u8bbe\u8ba1\u7406\u5ff5\u53d7\u5230[Qlib](https://github.com/microsoft/qlib)\u9879\u76ee\u7684\u542f\u53d1\uff0c\u5728\u4fdd\u6301\u6613\u7528\u6027\u7684\u540c\u65f6\u63d0\u4f9b\u5f3a\u5927\u7684AI\u91cf\u5316\u80fd\u529b\uff0c\u7279\u6b64\u5411Qlib\u5f00\u53d1\u56e2\u961f\u81f4\u4ee5\u8bda\u631a\u611f\u8c22\uff01\n\n\n## \u529f\u80fd\u7279\u70b9\n\n\u5e26\u6709 :arrow_up: \u7684\u6a21\u5757\u4ee3\u8868\u5df2\u7ecf\u5b8c\u62104.0\u7248\u672c\u7684\u5347\u7ea7\u9002\u914d\u6d4b\u8bd5\uff0c\u540c\u65f64.0\u6838\u5fc3\u6846\u67b6\u91c7\u7528\u4e86\u4f18\u5148\u4fdd\u8bc1\u517c\u5bb9\u6027\u7684\u5347\u7ea7\u65b9\u5f0f\uff0c\u56e0\u6b64\u5927\u591a\u6570\u6a21\u5757\u4e5f\u90fd\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528\uff08\u6d89\u53ca\u5230C++ API\u5c01\u88c5\u7684\u63a5\u53e3\u5fc5\u987b\u5347\u7ea7\u540e\u624d\u80fd\u4f7f\u7528\uff09\u3002 \n\n1. :arrow_up: \u591a\u529f\u80fd\u91cf\u5316\u4ea4\u6613\u5e73\u53f0\uff08trader\uff09\uff0c\u6574\u5408\u4e86\u591a\u79cd\u4ea4\u6613\u63a5\u53e3\uff0c\u5e76\u9488\u5bf9\u5177\u4f53\u7b56\u7565\u7b97\u6cd5\u548c\u529f\u80fd\u5f00\u53d1\u63d0\u4f9b\u4e86\u7b80\u6d01\u6613\u7528\u7684API\uff0c\u7528\u4e8e\u5feb\u901f\u6784\u5efa\u4ea4\u6613\u5458\u6240\u9700\u7684\u91cf\u5316\u4ea4\u6613\u5e94\u7528\u3002\n\n2. \u8986\u76d6\u56fd\u5185\u5916\u6240\u62e5\u6709\u7684\u4e0b\u8ff0\u4ea4\u6613\u54c1\u79cd\u7684\u4ea4\u6613\u63a5\u53e3\uff08gateway\uff09\uff1a\n\n    * \u56fd\u5185\u5e02\u573a\n\n        * :arrow_up: CTP\uff08[ctp](https://www.github.com/vnpy/vnpy_ctp)\uff09\uff1a\u56fd\u5185\u671f\u8d27\u3001\u671f\u6743\n\n        * :arrow_up: CTP Mini\uff08[mini](https://www.github.com/vnpy/vnpy_mini)\uff09\uff1a\u56fd\u5185\u671f\u8d27\u3001\u671f\u6743\n\n        * :arrow_up: CTP\u8bc1\u5238\uff08[sopt](https://www.github.com/vnpy/vnpy_sopt)\uff09\uff1aETF\u671f\u6743\n\n        * :arrow_up: \u98de\u9a6c\uff08[femas](https://www.github.com/vnpy/vnpy_femas)\uff09\uff1a\u56fd\u5185\u671f\u8d27\n\n        * :arrow_up: \u6052\u751fUFT\uff08[uft](https://www.github.com/vnpy/vnpy_uft)\uff09\uff1a\u56fd\u5185\u671f\u8d27\u3001ETF\u671f\u6743\n\n        * \u6613\u76db\uff08[esunny](https://www.github.com/vnpy/vnpy_esunny)\uff09\uff1a\u56fd\u5185\u671f\u8d27\u3001\u9ec4\u91d1TD\n\n        * :arrow_up: \u9876\u70b9HTS\uff08[hts](https://www.github.com/vnpy/vnpy_hts)\uff09\uff1aETF\u671f\u6743\n\n        * :arrow_up: \u4e2d\u6cf0XTP\uff08[xtp](https://www.github.com/vnpy/vnpy_xtp)\uff09\uff1a\u56fd\u5185\u8bc1\u5238\uff08A\u80a1\uff09\u3001ETF\u671f\u6743\n\n        * :arrow_up: \u534e\u946b\u5947\u70b9\uff08[tora](https://www.github.com/vnpy/vnpy_tora)\uff09\uff1a\u56fd\u5185\u8bc1\u5238\uff08A\u80a1\uff09\u3001ETF\u671f\u6743\n\n        * \u4e1c\u8bc1OST\uff08[ost](https://www.github.com/vnpy/vnpy_ost)\uff09\uff1a\u56fd\u5185\u8bc1\u5238\uff08A\u80a1\uff09\n\n        * \u4e1c\u65b9\u8d22\u5bccEMT\uff08[emt](https://www.github.com/vnpy/vnpy_emt)\uff09\uff1a\u56fd\u5185\u8bc1\u5238\uff08A\u80a1\uff09\n\n        * \u98de\u9f20\uff08[sgit](https://www.github.com/vnpy/vnpy_sgit)\uff09\uff1a\u9ec4\u91d1TD\u3001\u56fd\u5185\u671f\u8d27\n\n        * :arrow_up: \u91d1\u4ed5\u8fbe\u9ec4\u91d1\uff08[ksgold](https://www.github.com/vnpy/vnpy_ksgold)\uff09\uff1a\u9ec4\u91d1TD\n\n        * :arrow_up: \u5229\u661f\u8d44\u7ba1\uff08[lstar](https://www.github.com/vnpy/vnpy_lstar)\uff09\uff1a\u671f\u8d27\u8d44\u7ba1\n\n        * :arrow_up: \u878d\u822a\uff08[rohon](https://www.github.com/vnpy/vnpy_rohon)\uff09\uff1a\u671f\u8d27\u8d44\u7ba1\n\n        * :arrow_up: \u6770\u5b9c\u65af\uff08[jees](https://www.github.com/vnpy/vnpy_jees)\uff09\uff1a\u671f\u8d27\u8d44\u7ba1\n\n        * \u4e2d\u6c47\u4ebf\u8fbe\uff08[comstar](https://www.github.com/vnpy/vnpy_comstar)\uff09\uff1a\u94f6\u884c\u95f4\u5e02\u573a\n\n        * :arrow_up: TTS\uff08[tts](https://www.github.com/vnpy/vnpy_tts)\uff09\uff1a\u56fd\u5185\u671f\u8d27\uff08\u4eff\u771f\uff09\n\n    * \u6d77\u5916\u5e02\u573a\n\n        * :arrow_up: Interactive Brokers\uff08[ib](https://www.github.com/vnpy/vnpy_ib)\uff09\uff1a\u6d77\u5916\u8bc1\u5238\u3001\u671f\u8d27\u3001\u671f\u6743\u3001\u8d35\u91d1\u5c5e\u7b49\n\n        * :arrow_up: \u6613\u76db9.0\u5916\u76d8\uff08[tap](https://www.github.com/vnpy/vnpy_tap)\uff09\uff1a\u6d77\u5916\u671f\u8d27\n\n        * :arrow_up: \u76f4\u8fbe\u671f\u8d27\uff08[da](https://www.github.com/vnpy/vnpy_da)\uff09\uff1a\u6d77\u5916\u671f\u8d27\n\n    * \u7279\u6b8a\u5e94\u7528\n\n        * :arrow_up: RQData\u884c\u60c5\uff08[rqdata](https://www.github.com/vnpy/vnpy_rqdata)\uff09\uff1a\u8de8\u5e02\u573a\uff08\u80a1\u7968\u3001\u6307\u6570\u3001ETF\u3001\u671f\u8d27\uff09\u5b9e\u65f6\u884c\u60c5\n\n        * :arrow_up: \u8fc5\u6295\u7814\u884c\u60c5\uff08[xt](https://www.github.com/vnpy/vnpy_xt)\uff09\uff1a\u8de8\u5e02\u573a\uff08\u80a1\u7968\u3001\u6307\u6570\u3001\u53ef\u8f6c\u503a\u3001ETF\u3001\u671f\u8d27\u3001\u671f\u6743\uff09\u5b9e\u65f6\u884c\u60c5\n\n        * :arrow_up: RPC\u670d\u52a1\uff08[rpc](https://www.github.com/vnpy/vnpy_rpcservice)\uff09\uff1a\u8de8\u8fdb\u7a0b\u901a\u8baf\u63a5\u53e3\uff0c\u7528\u4e8e\u5206\u5e03\u5f0f\u67b6\u6784\n\n3. \u8986\u76d6\u4e0b\u8ff0\u5404\u7c7b\u91cf\u5316\u7b56\u7565\u7684\u4ea4\u6613\u5e94\u7528\uff08app\uff09\uff1a\n\n    * :arrow_up: [cta_strategy](https://www.github.com/vnpy/vnpy_ctastrategy)\uff1aCTA\u7b56\u7565\u5f15\u64ce\u6a21\u5757\uff0c\u5728\u4fdd\u6301\u6613\u7528\u6027\u7684\u540c\u65f6\uff0c\u5141\u8bb8\u7528\u6237\u9488\u5bf9CTA\u7c7b\u7b56\u7565\u8fd0\u884c\u8fc7\u7a0b\u4e2d\u59d4\u6258\u7684\u62a5\u64a4\u884c\u4e3a\u8fdb\u884c\u7ec6\u7c92\u5ea6\u63a7\u5236\uff08\u964d\u4f4e\u4ea4\u6613\u6ed1\u70b9\u3001\u5b9e\u73b0\u9ad8\u9891\u7b56\u7565\uff09\n\n    * :arrow_up: [cta_backtester](https://www.github.com/vnpy/vnpy_ctabacktester)\uff1aCTA\u7b56\u7565\u56de\u6d4b\u6a21\u5757\uff0c\u65e0\u9700\u4f7f\u7528Jupyter Notebook\uff0c\u76f4\u63a5\u4f7f\u7528\u56fe\u5f62\u754c\u9762\u8fdb\u884c\u7b56\u7565\u56de\u6d4b\u5206\u6790\u3001\u53c2\u6570\u4f18\u5316\u7b49\u76f8\u5173\u5de5\u4f5c\n\n    * :arrow_up: [spread_trading](https://www.github.com/vnpy/vnpy_spreadtrading)\uff1a\u4ef7\u5dee\u4ea4\u6613\u6a21\u5757\uff0c\u652f\u6301\u81ea\u5b9a\u4e49\u4ef7\u5dee\uff0c\u5b9e\u65f6\u8ba1\u7b97\u4ef7\u5dee\u884c\u60c5\u548c\u6301\u4ed3\uff0c\u652f\u6301\u4ef7\u5dee\u7b97\u6cd5\u4ea4\u6613\u4ee5\u53ca\u81ea\u52a8\u4ef7\u5dee\u7b56\u7565\u4e24\u79cd\u6a21\u5f0f\n\n    * :arrow_up: [option_master](https://www.github.com/vnpy/vnpy_optionmaster)\uff1a\u671f\u6743\u4ea4\u6613\u6a21\u5757\uff0c\u9488\u5bf9\u56fd\u5185\u671f\u6743\u5e02\u573a\u8bbe\u8ba1\uff0c\u652f\u6301\u591a\u79cd\u671f\u6743\u5b9a\u4ef7\u6a21\u578b\u3001\u9690\u542b\u6ce2\u52a8\u7387\u66f2\u9762\u8ba1\u7b97\u3001\u5e0c\u814a\u503c\u98ce\u9669\u8ddf\u8e2a\u7b49\u529f\u80fd\n\n    * :arrow_up: [portfolio_strategy](https://www.github.com/vnpy/vnpy_portfoliostrategy)\uff1a\u7ec4\u5408\u7b56\u7565\u6a21\u5757\uff0c\u9762\u5411\u540c\u65f6\u4ea4\u6613\u591a\u5408\u7ea6\u7684\u91cf\u5316\u7b56\u7565\uff08Alpha\u3001\u671f\u6743\u5957\u5229\u7b49\uff09\uff0c\u63d0\u4f9b\u5386\u53f2\u6570\u636e\u56de\u6d4b\u548c\u5b9e\u76d8\u81ea\u52a8\u4ea4\u6613\u529f\u80fd\n\n    * :arrow_up: [algo_trading](https://www.github.com/vnpy/vnpy_algotrading)\uff1a\u7b97\u6cd5\u4ea4\u6613\u6a21\u5757\uff0c\u63d0\u4f9b\u591a\u79cd\u5e38\u7528\u7684\u667a\u80fd\u4ea4\u6613\u7b97\u6cd5\uff1aTWAP\u3001Sniper\u3001Iceberg\u3001BestLimit\u7b49\n\n    * :arrow_up: [script_trader](https://www.github.com/vnpy/vnpy_scripttrader)\uff1a\u811a\u672c\u7b56\u7565\u6a21\u5757\uff0c\u9762\u5411\u591a\u6807\u7684\u7c7b\u91cf\u5316\u7b56\u7565\u548c\u8ba1\u7b97\u4efb\u52a1\u8bbe\u8ba1\uff0c\u540c\u65f6\u4e5f\u53ef\u4ee5\u5728\u547d\u4ee4\u884c\u4e2d\u5b9e\u73b0REPL\u6307\u4ee4\u5f62\u5f0f\u7684\u4ea4\u6613\uff0c\u4e0d\u652f\u6301\u56de\u6d4b\u529f\u80fd\n\n    * :arrow_up: [paper_account](https://www.github.com/vnpy/vnpy_paperaccount)\uff1a\u672c\u5730\u4eff\u771f\u6a21\u5757\uff0c\u7eaf\u672c\u5730\u5316\u5b9e\u73b0\u7684\u4eff\u771f\u6a21\u62df\u4ea4\u6613\u529f\u80fd\uff0c\u57fa\u4e8e\u4ea4\u6613\u63a5\u53e3\u83b7\u53d6\u7684\u5b9e\u65f6\u884c\u60c5\u8fdb\u884c\u59d4\u6258\u64ae\u5408\uff0c\u63d0\u4f9b\u59d4\u6258\u6210\u4ea4\u63a8\u9001\u4ee5\u53ca\u6301\u4ed3\u8bb0\u5f55\n\n    * :arrow_up: [chart_wizard](https://www.github.com/vnpy/vnpy_chartwizard)\uff1aK\u7ebf\u56fe\u8868\u6a21\u5757\uff0c\u57fa\u4e8eRQData\u6570\u636e\u670d\u52a1\uff08\u671f\u8d27\uff09\u6216\u8005\u4ea4\u6613\u63a5\u53e3\u83b7\u53d6\u5386\u53f2\u6570\u636e\uff0c\u5e76\u7ed3\u5408Tick\u63a8\u9001\u663e\u793a\u5b9e\u65f6\u884c\u60c5\u53d8\u5316\n\n    * :arrow_up: [portfolio_manager](https://www.github.com/vnpy/vnpy_portfoliomanager)\uff1a\u4ea4\u6613\u7ec4\u5408\u7ba1\u7406\u6a21\u5757\uff0c\u4ee5\u72ec\u7acb\u7684\u7b56\u7565\u4ea4\u6613\u7ec4\u5408\uff08\u5b50\u8d26\u6237\uff09\u4e3a\u57fa\u7840\uff0c\u63d0\u4f9b\u59d4\u6258\u6210\u4ea4\u8bb0\u5f55\u7ba1\u7406\u3001\u4ea4\u6613\u4ed3\u4f4d\u81ea\u52a8\u8ddf\u8e2a\u4ee5\u53ca\u6bcf\u65e5\u76c8\u4e8f\u5b9e\u65f6\u7edf\u8ba1\u529f\u80fd\n\n    * :arrow_up: [rpc_service](https://www.github.com/vnpy/vnpy_rpcservice)\uff1aRPC\u670d\u52a1\u6a21\u5757\uff0c\u5141\u8bb8\u5c06\u67d0\u4e00\u8fdb\u7a0b\u542f\u52a8\u4e3a\u670d\u52a1\u7aef\uff0c\u4f5c\u4e3a\u7edf\u4e00\u7684\u884c\u60c5\u548c\u4ea4\u6613\u8def\u7531\u901a\u9053\uff0c\u5141\u8bb8\u591a\u5ba2\u6237\u7aef\u540c\u65f6\u8fde\u63a5\uff0c\u5b9e\u73b0\u591a\u8fdb\u7a0b\u5206\u5e03\u5f0f\u7cfb\u7edf\n\n    * :arrow_up: [data_manager](https://www.github.com/vnpy/vnpy_datamanager)\uff1a\u5386\u53f2\u6570\u636e\u7ba1\u7406\u6a21\u5757\uff0c\u901a\u8fc7\u6811\u5f62\u76ee\u5f55\u67e5\u770b\u6570\u636e\u5e93\u4e2d\u5df2\u6709\u7684\u6570\u636e\u6982\u51b5\uff0c\u9009\u62e9\u4efb\u610f\u65f6\u95f4\u6bb5\u6570\u636e\u67e5\u770b\u5b57\u6bb5\u7ec6\u8282\uff0c\u652f\u6301CSV\u6587\u4ef6\u7684\u6570\u636e\u5bfc\u5165\u548c\u5bfc\u51fa\n\n    * :arrow_up: [data_recorder](https://www.github.com/vnpy/vnpy_datarecorder)\uff1a\u884c\u60c5\u8bb0\u5f55\u6a21\u5757\uff0c\u57fa\u4e8e\u56fe\u5f62\u754c\u9762\u8fdb\u884c\u914d\u7f6e\uff0c\u6839\u636e\u9700\u6c42\u5b9e\u65f6\u5f55\u5236Tick\u6216\u8005K\u7ebf\u884c\u60c5\u5230\u6570\u636e\u5e93\u4e2d\uff0c\u7528\u4e8e\u7b56\u7565\u56de\u6d4b\u6216\u8005\u5b9e\u76d8\u521d\u59cb\u5316\n\n    * :arrow_up: [excel_rtd](https://www.github.com/vnpy/vnpy_excelrtd)\uff1aExcel RTD\uff08Real Time Data\uff09\u5b9e\u65f6\u6570\u636e\u670d\u52a1\uff0c\u57fa\u4e8epyxll\u6a21\u5757\u5b9e\u73b0\u5728Excel\u4e2d\u83b7\u53d6\u5404\u7c7b\u6570\u636e\uff08\u884c\u60c5\u3001\u5408\u7ea6\u3001\u6301\u4ed3\u7b49\uff09\u7684\u5b9e\u65f6\u63a8\u9001\u66f4\u65b0\n\n    * :arrow_up: [risk_manager](https://www.github.com/vnpy/vnpy_riskmanager)\uff1a\u98ce\u9669\u7ba1\u7406\u6a21\u5757\uff0c\u63d0\u4f9b\u5305\u62ec\u4ea4\u6613\u6d41\u63a7\u3001\u4e0b\u5355\u6570\u91cf\u3001\u6d3b\u52a8\u59d4\u6258\u3001\u64a4\u5355\u603b\u6570\u7b49\u89c4\u5219\u7684\u7edf\u8ba1\u548c\u9650\u5236\uff0c\u6709\u6548\u5b9e\u73b0\u524d\u7aef\u98ce\u63a7\u529f\u80fd\n\n    * :arrow_up: [web_trader](https://www.github.com/vnpy/vnpy_webtrader)\uff1aWeb\u670d\u52a1\u6a21\u5757\uff0c\u9488\u5bf9B-S\u67b6\u6784\u9700\u6c42\u8bbe\u8ba1\uff0c\u5b9e\u73b0\u4e86\u63d0\u4f9b\u4e3b\u52a8\u51fd\u6570\u8c03\u7528\uff08REST\uff09\u548c\u88ab\u52a8\u6570\u636e\u63a8\u9001\uff08Websocket\uff09\u7684Web\u670d\u52a1\u5668\n\n4. Python\u4ea4\u6613API\u63a5\u53e3\u5c01\u88c5\uff08api\uff09\uff0c\u63d0\u4f9b\u4e0a\u8ff0\u4ea4\u6613\u63a5\u53e3\u7684\u5e95\u5c42\u5bf9\u63a5\u5b9e\u73b0\u3002\n\n    * :arrow_up: REST Client\uff08[rest](https://www.github.com/vnpy/vnpy_rest)\uff09\uff1a\u57fa\u4e8e\u534f\u7a0b\u5f02\u6b65IO\u7684\u9ad8\u6027\u80fdREST API\u5ba2\u6237\u7aef\uff0c\u91c7\u7528\u4e8b\u4ef6\u6d88\u606f\u5faa\u73af\u7684\u7f16\u7a0b\u6a21\u578b\uff0c\u652f\u6301\u9ad8\u5e76\u53d1\u5b9e\u65f6\u4ea4\u6613\u8bf7\u6c42\u53d1\u9001\n\n    * :arrow_up: Websocket Client\uff08[websocket](https://www.github.com/vnpy/vnpy_websocket)\uff09\uff1a\u57fa\u4e8e\u534f\u7a0b\u5f02\u6b65IO\u7684\u9ad8\u6027\u80fdWebsocket API\u5ba2\u6237\u7aef\uff0c\u652f\u6301\u548cREST Client\u5171\u7528\u4e8b\u4ef6\u5faa\u73af\u5e76\u53d1\u8fd0\u884c\n\n5. :arrow_up: \u7b80\u6d01\u6613\u7528\u7684\u4e8b\u4ef6\u9a71\u52a8\u5f15\u64ce\uff08event\uff09\uff0c\u4f5c\u4e3a\u4e8b\u4ef6\u9a71\u52a8\u578b\u4ea4\u6613\u7a0b\u5e8f\u7684\u6838\u5fc3\u3002\n\n6. \u5bf9\u63a5\u5404\u7c7b\u6570\u636e\u5e93\u7684\u9002\u914d\u5668\u63a5\u53e3\uff08database\uff09\uff1a\n\n    * SQL\u7c7b\n\n        * :arrow_up: SQLite\uff08[sqlite](https://www.github.com/vnpy/vnpy_sqlite)\uff09\uff1a\u8f7b\u91cf\u7ea7\u5355\u6587\u4ef6\u6570\u636e\u5e93\uff0c\u65e0\u9700\u5b89\u88c5\u548c\u914d\u7f6e\u6570\u636e\u670d\u52a1\u7a0b\u5e8f\uff0cVeighNa\u7684\u9ed8\u8ba4\u9009\u9879\uff0c\u9002\u5408\u5165\u95e8\u65b0\u624b\u7528\u6237\n\n        * :arrow_up: MySQL\uff08[mysql](https://www.github.com/vnpy/vnpy_mysql)\uff09\uff1a\u4e3b\u6d41\u7684\u5f00\u6e90\u5173\u7cfb\u578b\u6570\u636e\u5e93\uff0c\u6587\u6863\u8d44\u6599\u6781\u4e3a\u4e30\u5bcc\uff0c\u4e14\u53ef\u66ff\u6362\u5176\u4ed6NewSQL\u517c\u5bb9\u5b9e\u73b0\uff08\u5982TiDB\uff09\n\n        * :arrow_up: PostgreSQL\uff08[postgresql](https://www.github.com/vnpy/vnpy_postgresql)\uff09\uff1a\u7279\u6027\u66f4\u4e3a\u4e30\u5bcc\u7684\u5f00\u6e90\u5173\u7cfb\u578b\u6570\u636e\u5e93\uff0c\u652f\u6301\u901a\u8fc7\u6269\u5c55\u63d2\u4ef6\u6765\u65b0\u589e\u529f\u80fd\uff0c\u53ea\u63a8\u8350\u719f\u624b\u4f7f\u7528\n\n    * NoSQL\u7c7b\n\n        * DolphinDB\uff08[dolphindb](https://www.github.com/vnpy/vnpy_dolphindb)\uff09\uff1a\u4e00\u6b3e\u9ad8\u6027\u80fd\u5206\u5e03\u5f0f\u65f6\u5e8f\u6570\u636e\u5e93\uff0c\u9002\u7528\u4e8e\u5bf9\u901f\u5ea6\u8981\u6c42\u6781\u9ad8\u7684\u4f4e\u5ef6\u65f6\u6216\u5b9e\u65f6\u6027\u4efb\u52a1\n\n        * :arrow_up: TDengine\uff08[taos](https://www.github.com/vnpy/vnpy_taos)\uff09\uff1a\u5206\u5e03\u5f0f\u3001\u9ad8\u6027\u80fd\u3001\u652f\u6301SQL\u7684\u65f6\u5e8f\u6570\u636e\u5e93\uff0c\u5e26\u6709\u5185\u5efa\u7684\u7f13\u5b58\u3001\u6d41\u5f0f\u8ba1\u7b97\u3001\u6570\u636e\u8ba2\u9605\u7b49\u7cfb\u7edf\u529f\u80fd\uff0c\u80fd\u5927\u5e45\u51cf\u5c11\u7814\u53d1\u548c\u8fd0\u7ef4\u7684\u590d\u6742\u5ea6\n\n        * :arrow_up: MongoDB\uff08[mongodb](https://www.github.com/vnpy/vnpy_mongodb)\uff09\uff1a\u57fa\u4e8e\u5206\u5e03\u5f0f\u6587\u4ef6\u50a8\u5b58\uff08bson\u683c\u5f0f\uff09\u7684\u6587\u6863\u5f0f\u6570\u636e\u5e93\uff0c\u5185\u7f6e\u7684\u70ed\u6570\u636e\u5185\u5b58\u7f13\u5b58\u63d0\u4f9b\u66f4\u5feb\u8bfb\u5199\u901f\u5ea6\n\n7. \u5bf9\u63a5\u4e0b\u8ff0\u5404\u7c7b\u6570\u636e\u670d\u52a1\u7684\u9002\u914d\u5668\u63a5\u53e3\uff08datafeed\uff09\uff1a\n\n    * :arrow_up: \u8fc5\u6295\u7814\uff08[xt](https://www.github.com/vnpy/vnpy_xt)\uff09\uff1a\u80a1\u7968\u3001\u671f\u8d27\u3001\u671f\u6743\u3001\u57fa\u91d1\u3001\u503a\u5238\n\n    * :arrow_up: \u7c73\u7b50RQData\uff08[rqdata](https://www.github.com/vnpy/vnpy_rqdata)\uff09\uff1a\u80a1\u7968\u3001\u671f\u8d27\u3001\u671f\u6743\u3001\u57fa\u91d1\u3001\u503a\u5238\u3001\u9ec4\u91d1TD\n\n    * :arrow_up: MultiCharts\uff08[mcdata](https://www.github.com/vnpy/vnpy_mcdata)\uff09\uff1a\u671f\u8d27\u3001\u671f\u8d27\u671f\u6743\n\n    * :arrow_up: TuShare\uff08[tushare](https://www.github.com/vnpy/vnpy_tushare)\uff09\uff1a\u80a1\u7968\u3001\u671f\u8d27\u3001\u671f\u6743\u3001\u57fa\u91d1\n\n    * :arrow_up: \u4e07\u5f97Wind\uff08[wind](https://www.github.com/vnpy/vnpy_wind)\uff09\uff1a\u80a1\u7968\u3001\u671f\u8d27\u3001\u57fa\u91d1\u3001\u503a\u5238\n\n    * :arrow_up: \u540c\u82b1\u987aiFinD\uff08[ifind](https://www.github.com/vnpy/vnpy_ifind)\uff09\uff1a\u80a1\u7968\u3001\u671f\u8d27\u3001\u57fa\u91d1\u3001\u503a\u5238\n\n    * :arrow_up: \u5929\u52e4TQSDK\uff08[tqsdk](https://www.github.com/vnpy/vnpy_tqsdk)\uff09\uff1a\u671f\u8d27\n\n    * :arrow_up: \u6398\u91d1\uff08[gm](https://www.github.com/vnpy/vnpy_gm)\uff09\uff1a\u80a1\u7968\n\n    * :arrow_up: polygon\uff08[polygon](https://www.github.com/vnpy/vnpy_polygon)\uff09\uff1a\u80a1\u7968\u3001\u671f\u8d27\u3001\u671f\u6743\n\n8. :arrow_up: \u8de8\u8fdb\u7a0b\u901a\u8baf\u6807\u51c6\u7ec4\u4ef6\uff08rpc\uff09\uff0c\u7528\u4e8e\u5b9e\u73b0\u5206\u5e03\u5f0f\u90e8\u7f72\u7684\u590d\u6742\u4ea4\u6613\u7cfb\u7edf\u3002\n\n9. :arrow_up: Python\u9ad8\u6027\u80fdK\u7ebf\u56fe\u8868\uff08chart\uff09\uff0c\u652f\u6301\u5927\u6570\u636e\u91cf\u56fe\u8868\u663e\u793a\u4ee5\u53ca\u5b9e\u65f6\u6570\u636e\u66f4\u65b0\u529f\u80fd\u3002\n\n10. [\u793e\u533a\u8bba\u575b](http://www.vnpy.com/forum)\u548c[\u77e5\u4e4e\u4e13\u680f](http://zhuanlan.zhihu.com/vn-py)\uff0c\u5185\u5bb9\u5305\u62ecVeighNa\u9879\u76ee\u7684\u5f00\u53d1\u6559\u7a0b\u548cPython\u5728\u91cf\u5316\u4ea4\u6613\u9886\u57df\u7684\u5e94\u7528\u7814\u7a76\u7b49\u5185\u5bb9\u3002\n\n11. \u5b98\u65b9\u4ea4\u6d41\u7fa4262656087\uff08QQ\uff09\uff0c\u7ba1\u7406\u4e25\u683c\uff08\u5b9a\u671f\u6e05\u9664\u957f\u671f\u6f5c\u6c34\u7684\u6210\u5458\uff09\uff0c\u5165\u7fa4\u8d39\u5c06\u6350\u8d60\u7ed9VeighNa\u793e\u533a\u57fa\u91d1\u3002\n\n\u6ce8\uff1a\u4ee5\u4e0a\u5173\u4e8e\u529f\u80fd\u7279\u70b9\u7684\u8bf4\u660e\u4e3a\u6839\u636e\u8bf4\u660e\u6587\u6863\u53d1\u5e03\u65f6\u60c5\u51b5\u7f57\u5217\uff0c\u540e\u7eed\u53ef\u80fd\u5b58\u5728\u66f4\u65b0\u6216\u8c03\u6574\u3002\u82e5\u529f\u80fd\u63cf\u8ff0\u540c\u5b9e\u9645\u5b58\u5728\u51fa\u5165\uff0c\u6b22\u8fce\u901a\u8fc7Issue\u8054\u7cfb\u8fdb\u884c\u8c03\u6574\u3002\n\n## \u73af\u5883\u51c6\u5907\n\n* \u63a8\u8350\u4f7f\u7528VeighNa\u56e2\u961f\u4e3a\u91cf\u5316\u4ea4\u6613\u4e13\u95e8\u6253\u9020\u7684Python\u53d1\u884c\u7248[VeighNa Studio-4.2.0](https://download.vnpy.com/veighna_studio-4.2.0.exe)\uff0c\u96c6\u6210\u5185\u7f6e\u4e86VeighNa\u6846\u67b6\u4ee5\u53caVeighNa Station\u91cf\u5316\u7ba1\u7406\u5e73\u53f0\uff0c\u65e0\u9700\u624b\u52a8\u5b89\u88c5\n* \u652f\u6301\u7684\u7cfb\u7edf\u7248\u672c\uff1aWindows 11\u4ee5\u4e0a / Windows Server 2022\u4ee5\u4e0a / Ubuntu 22.04 LTS\u4ee5\u4e0a\n* \u652f\u6301\u7684Python\u7248\u672c\uff1aPython 3.10\u4ee5\u4e0a\uff0864\u4f4d\uff09\uff0c**\u63a8\u8350\u4f7f\u7528Python 3.13**\n\n## \u5b89\u88c5\u6b65\u9aa4\n\n\u5728[\u8fd9\u91cc](https://github.com/vnpy/vnpy/releases)\u4e0b\u8f7dRelease\u53d1\u5e03\u7248\u672c\uff0c\u89e3\u538b\u540e\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u5b89\u88c5\uff1a\n\n**Windows**\n\n```\ninstall.bat\n```\n\n**Ubuntu**\n\n```\nbash install.sh\n```\n\n**Macos**\n\n```\nbash install_osx.sh\n```\n\n## \u4f7f\u7528\u6307\u5357\n\n1. \u5728[SimNow](http://www.simnow.com.cn/)\u6ce8\u518cCTP\u4eff\u771f\u8d26\u53f7\uff0c\u5e76\u5728[\u8be5\u9875\u9762](http://www.simnow.com.cn/product.action)\u83b7\u53d6\u7ecf\u7eaa\u5546\u4ee3\u7801\u4ee5\u53ca\u4ea4\u6613\u884c\u60c5\u670d\u52a1\u5668\u5730\u5740\u3002\n\n2. \u5728[VeighNa\u793e\u533a\u8bba\u575b](https://www.vnpy.com/forum/)\u6ce8\u518c\u83b7\u5f97VeighNa Station\u8d26\u53f7\u5bc6\u7801\uff08\u8bba\u575b\u8d26\u53f7\u5bc6\u7801\u5373\u662f\uff09\n\n3. \u542f\u52a8VeighNa Station\uff08\u5b89\u88c5VeighNa Studio\u540e\u4f1a\u5728\u684c\u9762\u81ea\u52a8\u521b\u5efa\u5feb\u6377\u65b9\u5f0f\uff09\uff0c\u8f93\u5165\u4e0a\u4e00\u6b65\u7684\u8d26\u53f7\u5bc6\u7801\u767b\u5f55\n\n4. \u70b9\u51fb\u5e95\u90e8\u7684**VeighNa Trader**\u6309\u94ae\uff0c\u5f00\u59cb\u4f60\u7684\u4ea4\u6613\uff01\uff01\uff01\n\n\u6ce8\u610f\uff1a\n\n* \u5728VeighNa Trader\u7684\u8fd0\u884c\u8fc7\u7a0b\u4e2d\u8bf7\u52ff\u5173\u95edVeighNa Station\uff08\u4f1a\u81ea\u52a8\u9000\u51fa\uff09\n\n## \u811a\u672c\u8fd0\u884c\n\n\u9664\u4e86\u57fa\u4e8eVeighNa Station\u7684\u56fe\u5f62\u5316\u542f\u52a8\u65b9\u5f0f\u5916\uff0c\u4e5f\u53ef\u4ee5\u5728\u4efb\u610f\u76ee\u5f55\u4e0b\u521b\u5efarun.py\uff0c\u5199\u5165\u4ee5\u4e0b\u793a\u4f8b\u4ee3\u7801\uff1a\n\n```Python\nfrom vnpy.event import EventEngine\nfrom vnpy.trader.engine import MainEngine\nfrom vnpy.trader.ui import MainWindow, create_qapp\n\nfrom vnpy_ctp import CtpGateway\nfrom vnpy_ctastrategy import CtaStrategyApp\nfrom vnpy_ctabacktester import CtaBacktesterApp\n\n\ndef main():\n    \"\"\"Start VeighNa Trader\"\"\"\n    qapp = create_qapp()\n\n    event_engine = EventEngine()\n    main_engine = MainEngine(event_engine)\n    \n    main_engine.add_gateway(CtpGateway)\n    main_engine.add_app(CtaStrategyApp)\n    main_engine.add_app(CtaBacktesterApp)\n\n    main_window = MainWindow(main_engine, event_engine)\n    main_window.showMaximized()\n\n    qapp.exec()\n\n\nif __name__ == \"__main__\":\n    main()\n```\n\n\u5728\u8be5\u76ee\u5f55\u4e0b\u6253\u5f00CMD\uff08\u6309\u4f4fShift->\u70b9\u51fb\u9f20\u6807\u53f3\u952e->\u5728\u6b64\u5904\u6253\u5f00\u547d\u4ee4\u7a97\u53e3/PowerShell\uff09\u540e\u8fd0\u884c\u4e0b\u5217\u547d\u4ee4\u542f\u52a8VeighNa Trader\uff1a\n\n    python run.py\n\n## \u8d21\u732e\u4ee3\u7801\n\nVeighNa\u4f7f\u7528Github\u6258\u7ba1\u5176\u6e90\u4ee3\u7801\uff0c\u5982\u679c\u5e0c\u671b\u8d21\u732e\u4ee3\u7801\u8bf7\u4f7f\u7528github\u7684PR\uff08Pull Request\uff09\u7684\u6d41\u7a0b:\n\n1. [\u521b\u5efa Issue](https://github.com/vnpy/vnpy/issues/new) - \u5bf9\u4e8e\u8f83\u5927\u7684\u6539\u52a8\uff08\u5982\u65b0\u529f\u80fd\uff0c\u5927\u578b\u91cd\u6784\u7b49\uff09\u5efa\u8bae\u5148\u5f00issue\u8ba8\u8bba\u4e00\u4e0b\uff0c\u8f83\u5c0f\u7684improvement\uff08\u5982\u6587\u6863\u6539\u8fdb\uff0cbugfix\u7b49\uff09\u76f4\u63a5\u53d1PR\u5373\u53ef\n\n2. Fork [VeighNa](https://github.com/vnpy/vnpy) - \u70b9\u51fb\u53f3\u4e0a\u89d2**Fork**\u6309\u94ae\n\n3. Clone\u4f60\u81ea\u5df1\u7684fork: ```git clone https://github.com/$userid/vnpy.git```\n\t* \u5982\u679c\u4f60\u7684fork\u5df2\u7ecf\u8fc7\u65f6\uff0c\u9700\u8981\u624b\u52a8sync\uff1a[\u540c\u6b65\u65b9\u6cd5](https://help.github.com/articles/syncing-a-fork/)\n\n4. \u4ece**dev**\u521b\u5efa\u4f60\u81ea\u5df1\u7684feature branch: ```git checkout -b $my_feature_branch dev```\n\n5. \u5728$my_feature_branch\u4e0a\u4fee\u6539\u5e76\u5c06\u4fee\u6539push\u5230\u4f60\u7684fork\u4e0a\n\n6. \u521b\u5efa\u4ece\u4f60\u7684fork\u7684$my_feature_branch\u5206\u652f\u5230\u4e3b\u9879\u76ee\u7684**dev**\u5206\u652f\u7684[Pull Request] -  [\u5728\u6b64](https://github.com/vnpy/vnpy/compare?expand=1)\u70b9\u51fb**compare across forks**\uff0c\u9009\u62e9\u9700\u8981\u7684fork\u548cbranch\u521b\u5efaPR\n\n7. \u7b49\u5f85review, \u9700\u8981\u7ee7\u7eed\u6539\u8fdb\uff0c\u6216\u8005\u88abMerge!\n\n\u5728\u63d0\u4ea4\u4ee3\u7801\u7684\u65f6\u5019\uff0c\u8bf7\u9075\u5b88\u4ee5\u4e0b\u89c4\u5219\uff0c\u4ee5\u63d0\u9ad8\u4ee3\u7801\u8d28\u91cf\uff1a\n\n  * \u4f7f\u7528[ruff](https://github.com/astral-sh/ruff)\u68c0\u67e5\u4f60\u7684\u4ee3\u7801\u6837\u5f0f\uff0c\u786e\u4fdd\u6ca1\u6709error\u548cwarning\u3002\u5728\u9879\u76ee\u6839\u76ee\u5f55\u4e0b\u8fd0\u884c```ruff check .```\u5373\u53ef\u3002\n  * \u4f7f\u7528[mypy](https://github.com/python/mypy)\u8fdb\u884c\u9759\u6001\u7c7b\u578b\u68c0\u67e5\uff0c\u786e\u4fdd\u7c7b\u578b\u6ce8\u89e3\u6b63\u786e\u3002\u5728\u9879\u76ee\u6839\u76ee\u5f55\u4e0b\u8fd0\u884c```mypy vnpy```\u5373\u53ef\u3002\n\n## \u5176\u4ed6\u5185\u5bb9\n\n* [\u83b7\u53d6\u5e2e\u52a9](https://github.com/vnpy/vnpy/blob/dev/.github/SUPPORT.md)\n* [\u793e\u533a\u884c\u4e3a\u51c6\u5219](https://github.com/vnpy/vnpy/blob/dev/.github/CODE_OF_CONDUCT.md)\n* [Issue\u6a21\u677f](https://github.com/vnpy/vnpy/blob/dev/.github/ISSUE_TEMPLATE.md)\n* [PR\u6a21\u677f](https://github.com/vnpy/vnpy/blob/dev/.github/PULL_REQUEST_TEMPLATE.md)\n\n## \u7248\u6743\u8bf4\u660e\n\nMIT\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A framework for developing quant trading systems.",
    "version": "4.2.0",
    "project_urls": {
        "Changes": "https://github.com/vnpy/vnpy/blob/master/CHANGELOG.md",
        "Documentation": "https://www.vnpy.com/docs",
        "Forum": "https://www.vnpy.com/forum",
        "Homepage": "https://www.vnpy.com",
        "Source": "https://github.com/vnpy/vnpy/"
    },
    "split_keywords": [
        "algotrading",
        " investment",
        " quant",
        " quantitative",
        " trading"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "094e8c5ca538b0ad0c9b079647816d7d4dfd954c3af8421b5ceb2d7722516070",
                "md5": "15a79ef4d41658c925dc685a80f4ebfd",
                "sha256": "f3cc272f8dad4193c44e96879fa17e72fb4b5fc1d384bf331af5217e986b6be9"
            },
            "downloads": -1,
            "filename": "vnpy-4.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "15a79ef4d41658c925dc685a80f4ebfd",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 182393,
            "upload_time": "2025-11-01T03:46:57",
            "upload_time_iso_8601": "2025-11-01T03:46:57.410199Z",
            "url": "https://files.pythonhosted.org/packages/09/4e/8c5ca538b0ad0c9b079647816d7d4dfd954c3af8421b5ceb2d7722516070/vnpy-4.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e19d974f788a3095ccbb6d9058728ce654cb54d35cfb31ce1adf6ad8bb9d5a70",
                "md5": "e2763fdbf2e7cf98d62b329b8f2469e8",
                "sha256": "b8cd132d8317ec76b20851797dd3953e25f3817b8cf9f3eb381fc1f5680481c3"
            },
            "downloads": -1,
            "filename": "vnpy-4.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "e2763fdbf2e7cf98d62b329b8f2469e8",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 154839,
            "upload_time": "2025-11-01T03:46:59",
            "upload_time_iso_8601": "2025-11-01T03:46:59.434265Z",
            "url": "https://files.pythonhosted.org/packages/e1/9d/974f788a3095ccbb6d9058728ce654cb54d35cfb31ce1adf6ad8bb9d5a70/vnpy-4.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-11-01 03:46:59",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "vnpy",
    "github_project": "vnpy",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "vnpy"
}
        
Elapsed time: 1.53317s