Python量化新思路!无需通达信客户端,easy_tdx协议直连行情接口
量化新思路无需通达信客户端协议直连行情接口长久以来分享跟数据分析、量化开发有关的干货, 时常碰到好些个人量化爱好者、散户程序员, 好多人希望搭建自动化选股、历史数据回测程序, 通常会碰到一个很棘手的难题, 市面上大部分通达信数据方案, 都要求电脑长时间打开通达信客户端, 程序读取本地缓存数据。常驻电脑的必要软件不仅过多占用内存资源, 而且挂机运行时极易出现进程卡死以及数据不同步的状况。此外, 主流商用行情接口只需年费就要数百乃至上千元, 很多只是想要业余学习以及进行小规模回测的朋友, 都不愿在前期投入资金来购买数据源。近期, 开源社区进行了工具库的更新迭代, 有一个分支, 它是老牌pytdx项目的持续维护分支, 它最大的特色在于, 其是基于通达信原生TCP通信协议的, 依靠这一通信协议, 程序能够直接连接行情服务器来获取数据, 并且在整个获取数据的过程当中, 都不需要启动通达信客户端。网上对于这套工具的看法呈现出两极分化的态势, 一部分开发者觉得终于摆脱了客户端的束缚, 能够以低成本搭建起数据采集程序, 也有使用者给出反馈称在盘中高峰期的时候容易出现连接超时的情况, 今天结合实际测试, 通俗地讲解其底层原理, 完整的部署流程, 适合的人群, 同时客观地梳理其存在的短板以及各类使用风险。开篇先讲客观结论, 实现免客户端直连通达信行情, 这适合中低频数据采集, 也适合策略回测学习但受公共服务器带宽制约, 还受协议非官方属性制约, 所以不适合超高频率实时行情抓取, 也不适合商用项目开发。一、通俗搞懂原理免客户端直连到底是什么逻辑好多刚入门的人弄不明白几种关于通达信数据获取的办法, 先去比较一下三种主要潮流的样式, 领会明白与众不同的长处。方案1传统方式——读取本地通达信缓存要点一: 电脑开启通达信软件, 要点二: 该软件于后台方面连接行情服务器, 要点三: 下载K线以及报价数据并保存至本地文件夹, 要点四: 读取硬盘内部的缓存文件。关键点在于: 通达信得始终维持着运行状态, 在软件被关闭以后就没办法去更新行情了, 而且缓存文件存在容易损坏的情况, 还会缺失分时数据。方案2方案——协议直连行情服务器通达信客户端跟行情站点之间, 靠的是一套公开二进制TCP协议来传输数据, 将这套通信协议完整逆向封装起来, 程序自身充当简易行情客户端, 直接与远端通达信行情服务器建立连接, 自主去请求K线、实时报价、板块信息等, 且不需要借助任何本地软件来进行中转。方案3商用数据API、付费通道等优点分别是, 由官方进行维护, 并且稳定性很强, 令人放心缺点在于高频调用的情况下, 大多都非得充值成为会员才行, 而且长期使用的话, 会存在持续不断的成本。额外新增特性对比旧版pytdx1、具备同步接口, 同时还有 async 异步双接口, 能够适配普通脚本, 也能够适配异步自动化程序。2、内置三十余种常用的技术指标计算, 在获取K线之后能够直接生成MACD指标, 接着会直接生成KDJ指标, 随后还会直接生成BOLL指标, 而无需自行去编写算法。3、随身携带CLI这样的命令行工具, 无需动手编织整篇完备代码, 于终端那边便能轻轻一键导出有关行情的JSON类型数据。4、代码完善异常重连、超时捕获降低盘中断连概率。二、适合尝试这套方案的人群以及不建议使用的场景推荐使用人群1、刚开始接触量化的人, 想要去免费搭建一个回测框架, 又不想一直常年都挂着通达信软件。2、要求按照一定时间间隔大量下载过去的日线、周线数据, 用以开展数据统计工作, 进行多因子复盘研究。3、用于盘中的轻量级盯盘脚本, 以低频次方式对行情进行轮询, 达成价格预警以及条件提醒的功能。4、多服务器自动化脚本环境不方便部署通达信客户端。不建议依赖该方案1、运行高频程序化交易, 采用毫秒级策略, 公共的免费行情服务器出现延迟状况, 其协议并非官方制定, 不存在稳定性保障。2、企业, 进行商用数据分发, 工作室, 对外提供行情服务, 这违反了服务器访问规则。3、要求获取那种Level - 2的十档盘口以及逐笔成交数据 , 知道免费公共节点仅给开放基础行情呢。4、每七乘以二十四小时都不会间断地进行高频率轮流询问的爬虫, 极其容易引发服务器限制流量从而封禁网络协议地址。三、完整部署实操流程环境实测整个环境所具备的条件是: 版本需达到.8及以上同时为稳定版本形态, 当中推荐的是3.10这个版本Mac环境以及Linux环境同样能够给予支持, 然而行情服务器连通性与之比较起来波动程度为更大的状况。步骤1库一键安装打开CMD或者执行pip安装命令pip easy-tdx国内下载缓慢可以追加清华镜像源pip easy-tdx -i安装完成之后输入 无报错代表基础部署成功。步骤2最简连通测试代码新手复制直接运行创建一个.py文件, 将下方的测试脚本粘贴进去, 当运行之后能够正常地输出股票日线数据, 这就意味着直连成功可以完成。from# 自动优选通达信行情服务器 ()# 获取贵州茅台前120根不复权日线print(df).close()运行代码之后, 程序在整个过程当中都不会启动通达信软件, 而是直接借助网络去拉取行情数据, 而这同样也是整套工具的核心亮点所在。常见初始化失败排查1、跑起来提示着连接出现超时状况, 去更换一下网络环境, 或者手动去指定备选的通达信行情IP。2、数据返回的条数不够充足, 存在这样的情况, 部分服务器对单次能够获取的K线的最大数量进行了限制, 所以要使得count参数的数值有所减少。3、出现重复频繁运行报错, 原因是短时间请求过多, 导致服务器进行临时限制, 需间隔几分钟后重试。四、客观梳理核心优势与现存短板诸多教程仅仅宣扬优点, 极少把局限性完整讲述清楚, 在此以中立的立场全面整理所涵盖的各种利弊, 大家参考自身需求进行甄别选取。优势亮点1、想要彻底摆脱通达信客户端进程, 就无需让该软件保持开机运行, 如此便能节省系统资源。2、开箱即用不需要额外配置本地数据目录、盘后下载任务3、具备被安置于内部的技术指标计算模块, 将手动编写指标函数的行为进行省略, 使得量化入门的门槛得以降低。4、协议最初对接通达信那数据源, 日线数据格式, 分时数据样式, 和通达信软件维持同样状况, 不存在数据方面口径上的差异。5、开放源码是免费的, 不存在强制进行充值的情况, 也没有针对调用额度收取费用这一现象只要遵循服务器访问限流规则就行。需要重视的短板重中之重1、该项目归属社区第三方所开源的项目, 一旦开发者终止维护, 往后通达信更新通信协议时, 库便会出现无法连接的状况。2、通达信的那个公共免费行情服务器并不是归个人专门独占的, 在开盘处于高峰时期的时候, 其带宽会变得拥挤起来, 从而容易致使延迟出现升高的情况, 还容易导致请求遭遇到失败的下场。3、没有官方SLA稳定性保障不存在故障售后渠道4、部分冷门的板块, 北交所的品种, 这少数的行情节点, 数据的完整性, 参差不齐。5、仅对行情数据获取予以支持, 丝毫不存在任何证券自动交易下单的功能, 千万别将行情采集与实盘交易接口弄混淆了。五、大量新手容易踩坑的使用误区澄清误区1免客户端直连数据延迟比通达信软件更低。解读: 延迟的高低, 跟你所分配到的行情服务器相关, 不存在绝对的快或者慢有部分节点, 其中转链路更长, 实时行情存在延迟, 而且这种延迟高于本地通达信。误区2可以不间断无限循环抓取全市场股票数据。阐释: 通达信公用服务器存有访问频率管控举措, 持续地大批量轮番查询定会触发 IP 限制, 进而出现一段时期没能建立连接的状况, 提议在脚本内增添恰当的休眠间隔。误区3拿到行情数据就可以直接编写实盘稳定盈利策略。释义: 历史回测得出的数据, 仅仅能够用以作为研究方面的参考, 回测有着过拟合、滑点缺失等这类天然存在的缺陷, 历史所呈现的表现是不能够代表未来行情的走向的, 千万不要仅仅凭借回测所得到的结果, 就投入资金去做实盘。误区4这套方案完全合规可以大规模商用分发行情。解读指出, 其协议是针对普通终端用户浏览行情专门设计的, 要是未经授权就进行大规模爬虫, 并且对外售卖行情数据, 这会存在合规方面的风险, 它仅仅被限定于个人学习研究时使用。误区5可以获取Level-2高级行情。详细说明: 公共开放的协议, 仅仅能够获取到免费的五档行情, 至于十档盘口以及逐笔委托等相关数据, 那必须经由券商官方所授予的通道才行, 而第三方库是绝对没办法绕过权限校验从而获取到这些数据的。六、不同开发者长期使用方案建议业余学习、小规模回测用户首先是优先使用, 平常仅仅是在盘后, 以及非高峰时段进行批量下载历史数据, 盘中要减少高频轮询, 以此兼顾便捷性与稳定性。要是频繁出现连接失败的情况, 那么可以在代码内部编写多服务器自动切换逻辑。打算长期持续做量化研究的用户建议制定多数据源冗余方案, 将其作为备用免费数据源, 同时储备包括等其他类别的开源数据渠道, 一旦通达信协议接口情况变为无效, 能够迅速实现数据源的切换, 以此防止研究进程出现中断情况。有实盘程序化需求的投资者不建议仅仅凭借第三方开源协议库来获取行情, 优先挑选券商官方所开放的量化接口, 像QMT等这类正规通道, 其数据稳定性以及合规性有着更可靠的保障。全文总结综合长期实际检测来看, 最大的创新之点在于, 打通了这样一条路径, 即无需通达信客户端就能直接连接行情服务器, 此路径解决了传统方案有一种痛点, 那便必须常驻软件, 对于那些预算有限, 仅仅是想要学习量化, 开展历史数据回测的爱好者而言, 这是一种门槛很低的免费数据方案。然而, 大家务必理性进而清晰地分辨工具的定位: 它仅仅是一款用于社区维护的开源性质的数据采集工具, 并不是官方所制定的标准化 API, 其稳定性以及可持续性存在着天然的不确定性。千万别被短视频所进行的宣传夸大了效果, 不要将免费的公共行情节点视作全天候稳定无虞的生产数据源。量化工具向来都只是辅助研究的一种手段, 行情数据单纯只是策略分析的基础, 对于普通投资者来讲, 要先要借助免费渠道去熟悉数据处理以及回测逻辑, 在积累了充足的编程以及交易认知以后, 再依照自身需求去升级更为稳定的商用渠道, 这才是按部就班的学习路线。再次郑重宣称: 文中通通代码以及工具唯有用以实行技术学习进而开展数据分析的演示功效, 全然不形成任何有关证券交易指导, 股票市场是处在较高程度投资风险里的境况呈现, 切要理性地去参与投资活动, 不可盲目行进呀。互动提问是不是有朋友曾试着运用pytdx、去获取行情? 你平常在做量化回测的时候, 是更倾向于通达信本地缓存, 还是直接通过协议直连? 欢迎在评论区交流踩坑的经验