整体架构
每个层次的模块只调用下层功能,并对上层提供接口。
- 接口层负责对接行情和交易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),一个常驻的循环,用于监听和分发事件,将事件分发给相应的事件处理程序。
通过事件驱动编程,开发者可以编写响应式的代码,根据事件的发生和用户的交互来驱动程序的执行流程。这种方式使得应用程序能够更加灵活、交互性强,并且能够同时处理多个事件,提供更好的用户体验。事件驱动编程已成为现代软件开发中不可或缺的一部分,尤其在处理异步事件和构建交互式系统方面发挥着重要作用。