VNPY体系结构

整体架构

每个层次的模块只调用下层功能,并对上层提供接口。

  • 接口层负责对接行情和交易API,将行情数据推送到系统,发送交易指令。
  • 引擎层向下对接交易接口、数据库,向上服务于各种上层应用。
  • 应用层主要是面向用户的可视化界面,这一部分的代码主要为引擎功能与界面的连接。

功能模块

新版VNPY将各个功能模块分别打包成package

交易接口模块

功能模块 对接系统 支持市场
vnpy_ctp CTP柜台 期货、期货期权
vnpy_mini CTP MINI柜台 期货、期货期权
vnpy_femas 飞马柜台 期货
vnpy_uft 恒生UFT柜台 期货、期货期权、ETF期权
vnpy_esunny 易盛柜台 期货、黄金TD、外盘期货
vnpy_nhtd 南华NHTD柜台 期货、期货期权、ETF期权
vnpy_sopt CTP证券柜台 ETF期权
vnpy_sec 顶点飞创柜台 ETF期权
vnpy_hts 顶点HTS柜台 ETF期权
vnpy_xtp 中泰XTP柜台 股票、两融、ETF期权
vnpy_tora 华鑫奇点柜台 股票、ETF期权
vnpy_hft 国泰君安证券 统一接入网关 股票、两融
vnpy_ost 东证OST柜台 股票
vnpy_sgit 飞鼠柜台 黄金TD
vnpy_ksgold 金仕达黄金柜台 黄金TD
vnpy_rohon 融航资管系统 期货、期货期权
vnpy_comstar ComStar交易系统 债券
vnpy_tap 易盛外盘柜台 外盘期货
vnpy_da 直达柜台 外盘期货
vnpy_ib Interactive Brokers 外盘市场
vnpy_tts TTS仿真系统 仿真(期货、股票)

策略功能模块

功能模块 模块名称 应用领域
vnpy_ctastrategy CTA策略模块 策略模板、历史回测、参数优化、实盘交易
vnpy_ctabacktester CTA回测模块 基于图形界面实现CTA策略投研功能
vnpy_spreadtrading 价差交易模块 自定义价差、价差盘口计算、价差执行算法
vnpy_optionmaster 期权交易模块 波动率跟踪、希腊值风控、电子眼算法
vnpy_portfoliostrategy 组合策略模块 多标的组合策略的开发、回测和实盘
vnpy_algotrading 算法交易模块 算法交易执行:TWAP、Snipper、Iceberg
vnpy_scripttrader 脚本策略模块 命令行REPL交互式交易、脚本化策略交易
vnpy_paperaccount 本地仿真模块 本地模拟撮合、委托成交推送、持仓数据记录
vnpy_chartwizard K线图表模块 K线历史数据显示、实时Tick推送更新
vnpy_portfoliomanager 组合管理模块 策略委托成交记录、仓位跟踪、实时盈亏计算
vnpy_rpcservice RPC服务模块 跨进程RPC服务端、标准化RPC接口
vnpy_datamanager 数据管理模块 历史数据下载、CSV数据读写、数据库管理
vnpy_datarecorder 行情录制模块 Tick数据录制、K线合成录制
vnpy_excelrtd Excel RTD模块 基于pyxll的Excel数据实时推送更新
vnpy_riskmanager 风险管理模块 交易流控、单笔上限控制、撤单数量控制
vnpy_webtrader Web服务模块 提供Web服务的REST API、Websocket推送

数据库适配器模块

数据库分类 功能模块 对接数据库
SQL vnpy_sqlite SQLite
SQL vnpy_mysql MySQL
SQL vnpy_postgresql PostgreSQL
NoSQL vnpy_dolphindb DolphinDB
NoSQL vnpy_arctic Arctic
NoSQL vnpy_mongodb MongoDB
NoSQL vnpy_influxdb InfluxDB
NoSQL vnpy_leveldb LevelDB

数据服务模块

服务分类 功能模块 对接服务
云端 vnpy_rqdata 米筐RQData
云端 vnpy_udata 恒生UData
云端 vnpy_tushare TuShare
云端 vnpy_tqsdk 天勤TQSDK
客户端 vnpy_tinysoft 天软TinySoft
客户端 vnpy_wind 万得Wind
客户端 vnpy_ifind 同花顺iFinD

设计思想

事件驱动编程(Event-driven Programming)是一种编程范式,其核心思想是程序的执行流程由外部事件的发生和处理来驱动。在这种编程模型中,程序会监听和响应特定的事件,这些事件通常是由用户的动作(如点击鼠标、按下键盘等)或其他程序的消息触发的。当这些事件发生时,程序会调用相应的事件处理程序(或称为事件回调函数)来执行特定的逻辑或操作。

事件驱动编程通常用于构建交互式和实时的应用程序,如图形用户界面(GUI)应用、网页应用、游戏和网络服务器等。它的优势在于可以实现异步和非阻塞的操作,使程序能够同时处理多个事件和任务,提高系统的响应性能。

事件驱动编程包含几个基本要素:

  • 事件源(Event Source),即事件发生的对象或组件;
  • 事件监听(Event Listening),程序通过注册事件监听器来监听特定事件源上的事件;
  • 事件处理(Event Handling),当事件发生时,程序会调用相应的事件处理程序来执行特定的逻辑或操作;
  • 事件循环(Event Loop),一个常驻的循环,用于监听和分发事件,将事件分发给相应的事件处理程序。

通过事件驱动编程,开发者可以编写响应式的代码,根据事件的发生和用户的交互来驱动程序的执行流程。这种方式使得应用程序能够更加灵活、交互性强,并且能够同时处理多个事件,提供更好的用户体验。事件驱动编程已成为现代软件开发中不可或缺的一部分,尤其在处理异步事件和构建交互式系统方面发挥着重要作用。

posted @   superzzh  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示