本文作者:咔咔

通信达实时数据获取的原理、方法及常见问题解析

通信达实时数据获取的原理、方法及常见问题解析摘要: 通达信软件本身并不提供官方的、可供外部程序直接调用的实时数据API接口, 所有获取实时数据的方法,本质上都是通过模拟人工操作、解析数据包或利用其插件功能来实现的,获取通达信实时数据...

通达信软件本身并不提供官方的、可供外部程序直接调用的实时数据API接口。 所有获取实时数据的方法,本质上都是通过模拟人工操作、解析数据包或利用其插件功能来实现的。

获取通达信实时数据主要有以下几种途径,各有优劣,适用于不同的场景和技术水平。

通信达实时数据获取的原理、方法及常见问题解析
(图片来源网络,侵删)

使用通达信的插件功能(官方/半官方途径)

这是最“干净”、最稳定,也是官方(或类官方)推荐的方法,通达信支持加载DLL插件,这些插件可以运行在通达信进程内部,直接访问其内部数据。

通达信公式系统

这是最基础、最广泛使用的方法,你可以在通达信的公式编辑器里编写公式,然后通过调用公式来获取数据。

  • 优点
    • 无需编程基础,使用通达信自己的公式语言即可。
    • 数据来源直接,是通达信官方处理过的数据。
    • 可以在K线图、行情列表等地方直接看到结果,方便验证。
  • 缺点
    • 只能获取公式返回的最终值,无法获取底层的原始数据流(如逐笔成交)。
    • 无法实现高频、实时的程序化交易,主要用于策略研究、选股和预警。
  • 如何使用
    1. 在通达信中按 Ctrl + F 打开公式管理器。
    2. 新建一个公式(选择“技术指标公式”)。
    3. 在公式代码中使用 REF(X, N) 引用历史数据,或使用 DYNAINFO(n) 获取实时行情数据。
    4. DYNAINFO(n) 是关键,n 是一个数字,代表不同的实时数据项。
      • DYNAINFO(7) -> 最新价
      • DYNAINFO(37) -> 总手
      • DYNAINFO(48) -> 买一价
      • DYNAINFO(49) -> 卖一价
      • DYNAINFO(17) -> 涨跌幅
    5. 将公式添加到行情列表或K线图中,即可实时查看。

使用第三方开发的DLL插件

社区中有一些高手开发了能够获取更底层、更全面数据的DLL插件,这些插件被加载到通达信后,可以提供比公式系统更强大的功能。

  • 优点
    • 可以获取逐笔成交、盘口队列等深度数据。
    • 性能较好,可以支持相对高频的数据获取。
    • 相对稳定,因为是作为插件运行在通达信内部。
  • 缺点
    • 需要找到可靠的插件来源,很多插件是收费的。
    • 使用有一定门槛,需要了解如何在通达信中加载DLL。
    • 存在一定的安全风险,需要确保插件来源可信。
  • 如何使用
    1. 获取一个功能符合需求的DLL插件文件(TdxHq.dll 或其他类似名称)。
    2. 将该DLL文件放入通达信的 plugins 目录下。
    3. 在通达信的 tdxinit.ini 配置文件中,添加对插件的引用。
    4. 然后你就可以通过调用这个DLL导出的函数来获取数据(这通常需要配合一个客户端程序,如 PythonC# 等)。

网络数据包抓取(非官方途径)

这是最灵活、最强大的方法,也是大多数量化交易平台采用的方式,原理是抓取通达信软件与服务器之间通信的网络数据包,然后解析这些数据包来获取信息。

通信达实时数据获取的原理、方法及常见问题解析
(图片来源网络,侵删)

解析 vipdoc 历史数据文件

通达信的历史K线、分钟数据等都存储在本地 vipdoc 目录下的文件中,虽然这是历史数据,但了解其格式是理解实时数据包的基础。

  • 数据位置...\通达信安装目录\vipdoc\sh\lday\ (上海日线), ...\通达信安装目录\vipdoc\sz\lday\ (深圳日线) 等。
  • 文件格式:通常是 .dat.day 文件,是二进制格式。
  • 如何解析:需要编写程序(如Python)来读取这些二进制文件,并根据其固定的数据结构(如文件头、数据块)解析出日期、开盘价、最高价、最低价、收盘价、成交量等信息,网上有很多现成的解析库。

抓取和解析实时行情数据流

这是获取真正实时数据的核心,通达信通过TCP/IP协议从服务器接收实时行情数据。

  • 原理
    1. 使用抓包工具(如 Wireshark)或网络编程库(如Python的 scapy)捕获通达信客户端发送和接收的网络数据包。
    2. 分析数据包,找到行情服务器的IP地址和端口号。
    3. 分析数据包的协议数据结构,通达信使用的是一种类似 FastBinary 的私有协议,数据包是二进制格式。
    4. 编写程序,直接连接到行情服务器的IP和端口,发送订阅请求,然后接收并解析返回的二进制数据流。
  • 优点
    • 最全面:可以获取几乎所有数据,包括逐笔成交、盘口、财务数据、新闻资讯等。
    • 性能极高:因为是直接与服务器通信,延迟极低,适合高频交易。
    • 完全自主可控:不依赖通达信软件的图形界面。
  • 缺点
    • 技术难度极高:需要深入理解网络协议、二进制数据结构,并且协议可能会被通达信更新,导致解析失效。
    • 不稳定:直接连接服务器可能会被运营商或服务器方限制或屏蔽。
    • 有法律风险:未经授权抓取和利用数据可能违反用户协议或相关法律法规。
  • 如何开始
    • 抓包分析:先用Wireshark抓包,重点关注与通达信服务器通信的TCP流,分析数据包的模式,比如每个数据包的长度、固定字段等。
    • 寻找开源项目:GitHub上有很多现成的开源项目,已经完成了复杂的协议解析工作,例如搜索 pytdxvnpy 等。强烈建议从这些项目入手,而不是自己从零开始。
      • pytdx:一个非常流行的Python库,可以方便地获取通达信的日线、分钟线等历史数据和实时行情数据,它内部就是通过解析数据包实现的。
      • vnpy:一个成熟的Python量化交易框架,内置了对通达信等多种数据源的支持。

模拟鼠标键盘操作(自动化控制)

这种方法不关心数据来源,而是直接操作通达信的图形界面来“读取”数据。

  • 原理
    • 使用自动化工具(如Python的 pyautoguipywin32)来模拟鼠标点击、键盘输入。
    • 程序先打开通达信,点击某个股票,然后移动鼠标到屏幕上的某个位置(买一价”显示的位置),通过“OCR”(光学字符识别,如 pytesseract)技术来识别屏幕上显示的数字。
  • 优点
    • 原理简单,容易理解。
    • 可以获取通达信界面上显示的任何信息。
  • 缺点
    • 性能极差:速度慢,延迟高,不适合实时交易。
    • 稳定性差:一旦屏幕分辨率、窗口大小、字体改变,程序就会失效。
    • 非常脆弱:无法在后台运行,必须保证通达信界面可见。
    • OCR识别可能出错
  • 适用场景:仅用于一些极低频率的、非核心的自动化任务,比如定时截图等。

总结与推荐

方法 优点 缺点 适用场景
通达信公式 简单、稳定、官方支持 功能有限,无法用于交易 策略研究、选股、预警
DLL插件 功能强大、性能较好、相对稳定 需要寻找可靠插件、有安全风险 量化交易、程序化交易(中低频)
网络数据包 功能最全、性能最高、完全自主 技术难度最高、不稳定、有法律风险 高频交易、专业量化平台
模拟操作 原理简单、可获取任何界面信息 性能差、稳定性极差、脆弱 非核心自动化任务、演示

给初学者的建议:

  1. 从公式开始:如果你只是想研究一些简单的选股策略,或者想在K线上叠加指标,请先精通通达信公式系统。

    通信达实时数据获取的原理、方法及常见问题解析
    (图片来源网络,侵删)
  2. 使用 pytdx:如果你是Python用户,并且想在自己的程序中获取通达信的实时和历史数据,pytdx 是最佳起点,它封装了复杂的网络协议解析,让你可以几行代码就获取到数据。

    # pytdx 示例代码
    from tdx.hq import TdxHq_API
    from tdx.config import *
    api = TdxHq_API()
    api.connect(CNF['ip'], int(CNF['port']))
    # 获取平安银行(000001)的实时行情数据
    data = api.get_security_quotes(['.SH000001']) # 注意:这里代码需要根据具体库的API调整,通常是市场代码+股票代码
    print(data)
    api.disconnect()
  3. 探索量化框架:如果你想构建一个完整的交易系统,可以学习使用 vnpy 这样的成熟框架,它们已经集成了数据获取、策略、回测、交易执行等全套功能,并支持通达信等多种数据源。

重要提醒:

  • 数据延迟:即使通过数据包获取的数据,也可能存在几百毫秒到几秒不等的网络延迟。
  • 数据准确性:非官方途径获取的数据可能存在错误或遗漏。
  • 法律合规:在进行任何数据获取和交易活动前,请务必了解并遵守相关的法律法规和券商的规定,不要进行任何违规操作。
文章版权及转载声明

作者:咔咔本文地址:https://www.jits.cn/content/27317.html发布于 02-21
文章转载或复制请以超链接形式并注明出处杰思科技・AI 股讯

阅读
分享

发表评论

快捷回复:

评论列表 (暂无评论,1人围观)参与讨论

还没有评论,来说两句吧...