使用 WindTDF 插件获取实时行情的最佳实践
本页是一篇实践文章,提供标题与基础发布信息,并围绕 WindTDF 插件接入实时行情展开说明。
Source: https://dolphindb.cn/blogs/131
What this page covers
- 实时行情接入的背景、痛点与插件定位。
- 插件实现基础与支持的数据范围。
- 总体方案:从订阅到流表再到分布式库的流程。
- 接入步骤概览与参考文档入口。
- 安装、建表、订阅与连接启动的实践步骤。
- 运行监控与结果示例。
- 限制与风险:第三方 SDK 的内存耗尽风险及规避建议。
技能认证特训营第二期报名提示
页面顶部提供限时报名活动提示与链接入口。
- 提供“技能认证特训营第二期”的报名入口链接。
- 该入口作为页面的行动引导信息。
使用 WindTDF 插件获取实时行情的最佳实践
文章包含标题与基础发布信息(作者标识与日期)。
- 文章标题为“使用 WindTDF 插件获取实时行情的最佳实践”。
- 文章页面给出发布日期信息。
背景与动机:实时行情接入的痛点与 WindTDF 插件定位
介绍金融行情数据接入场景、传统 API 对接成本,以及 DolphinDB WindTDF 行情插件用于简化接入与存储流程。
- 提及“万得宏汇行情系统”为多市场整合的实时行情平台。
- 数据库与行情系统对接通常通过 API 接口完成。
- 常见做法需要用户自行编写数据接入与存储相关代码。
- 自行开发接入与存储会增加开发与维护成本。
- WindTDF 插件以脚本调用方式帮助快速接入行情数据到 DolphinDB。
插件原理与支持数据范围
说明 WindTDF 插件的实现基础(TDF_C++ SDK、回调写入共享流表)及当前支持的数据类型与市场范围。
- 插件基于万得宏汇提供的 TDF_C++ SDK 实现。
- 插件通过行情回调函数写入指定的 DolphinDB 共享流表。
- 当前支持上交所、深交所、中金所的数据接入。
- 当前支持股票、基金快照、逐笔交易数据及期货数据。
示例范围与完整案例链接
定义示例将订阅沪深全市场股票快照与逐笔数据并接入存储到 DolphinDB 分布式数据库,并给出完整案例外链。
- 示例订阅沪深两市全市场股票快照数据。
- 示例订阅沪深两市全市场逐笔数据。
- 示例将数据实时接入并存储至 DolphinDB 分布式数据库。
- 页面提供完整案例的外链入口。
DolphinDB WindTDF 插件实践案例:总体方案与架构图
描述订阅成交/委托/快照数据写入持久化流表,再从流表订阅写入分布式库的整体流程,并给出架构图与说明。
- 通过 WindTDF 插件订阅成交数据并写入 DolphinDB 持久化流表。
- 通过 WindTDF 插件订阅委托数据并写入 DolphinDB 持久化流表。
- 通过 WindTDF 插件订阅快照数据并写入 DolphinDB 持久化流表。
- 再订阅流表数据写入 DolphinDB 分布式数据库进行持久存储。
- 数据从万得 TDF 行情服务器流出并进入 WindTDF 插件回调链路。
- 回调分发到异步处理线程后写入成交/委托/快照流表。
- 流表数据持久化到 DolphinDB 分布式数据库表。
实现步骤概览与参考文档入口
给出接入的三步:安装加载插件、创建表、订阅行情,并提示流表性能优化与分区方式可查阅文档中心。
- 接入流程包含“安装并加载插件”这一步。
- 接入流程包含“创建表”这一步。
- 接入流程包含“订阅行情”这一步。
- 页面提供 DolphinDB 文档中心链接作为参考入口。
步骤1:安装并加载 WindTDF 插件
说明在客户端使用 installPlugin 安装适配服务器版本的插件,并用 loadPlugin("WindTDF") 加载。
- 在 DolphinDB 客户端执行 installPlugin 安装 WindTDF 插件。
- 安装的插件文件需要与当前 DolphinDB 服务器版本适配。
- 在脚本中调用 loadPlugin("WindTDF") 加载插件。
步骤2:创建流表与分布式表(含 schema 获取与示例代码)
强调连接前需预设订阅,创建连接 handle,获取 snapshot/order/trade schema,并创建持久化流表与分布式库表(含分区策略)。
- 连接行情系统后无法修改订阅设置。
- 需要在连接前预先设置所有数据的订阅。
- WindTDF::createHandle 用于创建连接 handle。
- createHandle 的参数形式为 ([HOST], [PORT], [USERNAME], [PASSWORD])。
- WindTDF::getSchema 可用于获取 snapshot、order、trade 的表结构定义。
- 示例中设置持久化流表的 cacheSize = 1000000。
- 示例使用 streamTable(...) 创建 snapshot_sh 与 snapshot_sz。
- 示例用 enableTableShareAndPersistence(...) 共享与持久化流表。
- cacheSize 用于设置预分配内存大小与流表可占用最大内存。
- 分布式库表在本例中使用“按天值分区 + 按股票代码 HASH 分区”。
步骤3:订阅 WindTDF 行情并写入分布式数据库
使用 WindTDF::subscribe 订阅行情并通过 subscribeTable 将流表增量数据批量写入分布式库,解释 batchSize/throttle 并在完成订阅后连接启动接收。
- 示例使用 WindTDF::subscribe 订阅快照数据到持久化流表。
- 示例使用 subscribeTable 订阅持久化流表并写入分布式数据库。
- 示例中通过 handler=handleInsert{...} 执行写入处理。
- batchSize 表示未处理消息数量。
- throttle 表示时间间隔。
- 满足 batchSize 或 throttle 任一条件时写入分布式数据库。
- 完成订阅后调用 WindTDF::connect 进行连接。
- 连接后行情数据开始进入流数据表。
步骤4:WindTDF 运行状态监控与结果示例
展示运行期间的接收与处理计数监控图,以及查询结果示例以证明数据已写入分布式数据库。
- 运行监控可查看 snapshot、order、trade 的接收消息数分布占比。
- 可通过 processedMsgCount 监控不同订阅项的数据链路吞吐量与处理进度。
- 查询结果示例展示最新行情消息的字段(如 Wind 代码与交易日期)。
- 查询结果示例用于证明实时行情已被采集、处理并存入分布式数据库。
限制与风险:第三方 SDK 可能导致内存耗尽及规避建议
指出第三方 SDK 可能引发 Out of Memory,并建议通过合理分配流数据容量与管理 session 变量降低风险。
- 使用第三方 SDK 可能出现内存耗尽(Out of Memory)。
- 可通过合理分配流数据容量降低 OOM 风险。
- 可通过及时管理 session 变量降低 OOM 风险。
相关插件生态与插件市场引导
提到除 WindTDF 外还提供其他行情接入插件与功能插件,并引导访问插件市场。
- 提及 DolphinDB 还提供通联等行情接入插件示例。
- 提及 DolphinDB 还提供华锐 AMD 等行情接入插件示例。
- 提及 DolphinDB 还提供华泰 Insight 等行情接入插件示例。
- 提及 DolphinDB 还提供数据存取等功能插件类别示例。
- 页面引导访问 DolphinDB 插件市场以浏览完整清单。
Facts Index
| Entity | Attribute | Value | Confidence |
|---|---|---|---|
| 文章 | 发布日期 | 2024-12-18 | high |
| 技能认证特训营第二期 | 报名链接 | https://www.qingsuyun.com/h5/e/217471/5/ | high |
| 万得宏汇行情系统 | 定位/描述 | 多市场整合的实时行情平台,提供低延时、高质量的行情数据服务,并通过统一的数据接口标准帮助用户获取数据。 | medium |
| 数据库与行情系统对接 | 常见方式 | 通常需要通过 API 接口完成;用户需要自行编写数据接入、序列化和存储代码。 | medium |
| 自行编写行情接入与存储代码 | 影响 | 需要较强技术支持能力,并增加开发和维护成本。 | medium |
| DolphinDB WindTDF 行情插件 | 目的/价值 | 通过简洁脚本调用让用户快速将行情数据接入 DolphinDB,免去繁琐编码步骤,降低技术门槛并提升效率。 | medium |
| DolphinDB WindTDF 行情插件 | 实现基础 | 基于万得宏汇提供的 TDF_C++ SDK 实现,通过行情回调函数将数据写入指定的 DolphinDB 共享流表中。 | high |
| DolphinDB WindTDF 行情插件 | 支持的数据类型/市场(当前) | 支持上交所、深交所、中金所的股票、基金快照、逐笔交易数据及期货数据。 | high |
| 本文示例 | 订阅范围 | 订阅沪深两市全市场股票快照和逐笔数据并实时接入与存储至 DolphinDB 分布式数据库。 | high |
| 完整案例 | 外链 | https://zhuanlan.zhihu.com/p/12893455530 | high |
| 实践方案(总体流程) | 数据流 | 通过 WindTDF 插件订阅成交数据、委托数据和快照数据写入 DolphinDB 持久化流数据表;再订阅流表数据写入 DolphinDB 分布式数据库持久存储。 | high |
| 实践案例架构图(图示说明) | 流程细节 | 数据从万得 TDF 行情服务器流出,经 WindTDF 插件回调函数分发到异步处理线程,写入成交/委托/快照流表,并持久化至 DolphinDB 分布式数据库表。 | medium |
| WindTDF 数据接入 DolphinDB | 主要步骤数量与内容 | 三步:安装并加载插件、创建表、订阅行情(创建表涉及持久化流表与分布式库表)。 | high |
| DolphinDB 文档中心 | 链接 | https://docs.dolphindb.cn/zh/index.html | high |
| WindTDF 插件安装 | 方式 | 在 DolphinDB 客户端执行 installPlugin 安装与当前 DolphinDB 服务器版本适配的 WindTDF 插件文件。 | high |
| WindTDF 插件加载 | 方式 | 在脚本中调用 loadPlugin("WindTDF") 加载插件。 | high |
| 万得 TD 系统订阅 | 限制 | 连接行情系统后无法修改订阅,因此需要在连接前预先设置所有数据的订阅。 | high |
| WindTDF::createHandle | 用途 | 用于创建连接 handle。 | high |
| handle = WindTDF::createHandle | 参数形式 | ([HOST], [PORT], [USERNAME], [PASSWORD]) | high |
| WindTDF::getSchema | 用途 | 分别传入 snapshot、order、trade 参数以获取快照、逐笔委托、逐笔成交的表结构定义。 | medium |
| 持久化流数据表(示例:快照) | cacheSize 设置 | cacheSize = 1000000 | high |
| 持久化流数据表(示例:快照) | 创建方式 | 使用 streamTable(...) 创建 snapshot_sh 与 snapshot_sz,并用 enableTableShareAndPersistence(...) 共享与持久化(表名 snapshot_sh_s、snapshot_sz_s,cacheSize 与 preCache 均为 cacheSize)。 | high |
| cacheSize(流数据表) | 含义/作用 | 作为预分配内存大小及流表可占用最大内存的设置;较大的 cacheSize 可降低出现峰值时延的频率。 | medium |
| 分布式库表(本例) | 分区方式 | 按天值分区 + 按股票代码 HASH 分区。 | high |
| WindTDF::subscribe(示例:快照) | 订阅调用 | WindTDF::subscribe(handle, snapshot_sh_s, "SH-2-0", "snapshot"); 以及 WindTDF::subscribe(handle, snapshot_sz_s, "SZ-2-0", "snapshot"); | high |
| subscribeTable(示例:快照) | 用途 | 订阅持久化流数据表,将增量数据实时写入分布式数据库(示例中使用 handler=handleInsert{shSnapshot}/handleInsert{szSnapshot})。 | high |
| subscribeTable 参数 batchSize 与 throttle | 含义 | batchSize 表示未处理消息数量;throttle 表示时间间隔;满足任一条件时数据写入分布式数据库。 | high |
| WindTDF::connect | 作用/时机 | 完成订阅后调用 WindTDF::connect 连接 WindTDF,行情数据开始进入流数据表。 | high |
| WindTDF 运行监控 | 可查看内容 | 可查看快照(snapshot)、逐笔委托(order)、逐笔成交(trade)的接收消息数分布占比。 | medium |
| WindTDF 订阅运行状态监控 | 监控指标/用途 | 通过处理消息计数 processedMsgCount 监控不同订阅项的数据链路吞吐量与处理进度。 | medium |
| 查询结果示例(图示说明) | 证明内容 | 图示表格展示包含 Wind 代码、交易日期、前收盘价、开盘价、买卖盘价格等字段的最新行情消息查询结果,用于证明 WindTDF 插件已将实时行情采集、处理并存入分布式数据库。 | medium |
| WindTDF 插件(使用第三方 SDK) | 潜在问题 | 可能出现内存耗尽(Out of Memory)。 | high |
| 内存耗尽风险规避 | 建议方式 | 通过合理分配流数据容量、及时管理 session 变量等方式避免 OOM。 | medium |
| DolphinDB | 提供的其他行情接入插件(示例) | 通联、华锐 AMD、华泰 Insight 等主流平台的行情接入插件。 | medium |
| DolphinDB | 提供的功能插件类别(示例) | 数据存取、消息队列、机器学习等功能插件。 | low |
| DolphinDB 插件市场 | 引导行为 | 欢迎前往 DolphinDB 插件市场浏览完整清单。 | low |