ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

通达信Level2数据实战:从公式函数到Python解析与盘口策略

2026/9/1 14:33:33 拓冰建站 浏览量
通达信Level2数据实战:从公式函数到Python解析与盘口策略 简介面向职业交易员及进阶投资者的通达信Level2数据实战指南配套HTML页面与代码文件系统讲解深度行情、逐笔成交、资金流向及盘口异动等核心功能帮助读者识别主力资金动向、虚假挂单和大单拆分等关键信号。资源包共3个文件压缩后仅4KB包含inscode、HTML及gitignore文件可用于快速查看说明与代码结构轻量便携。目前已有1209人学习下载内容从定制版面到模拟实战逐步拆解Level2数据的语言与用法并给出选择优质Level2服务的要点适合希望获取行情信息优势并提升实战能力的用户。 很多人以为Level2数据就是“多几档买卖盘”拿过来不知道干什么。实际上这东西用好了对短线判断、盯主力动向帮助非常大尤其是配合通达信的公式和外部程序去读能做的事比看盘软件默认展示的多得多。这篇东西我写了几年的实际使用经验从Level2数据本身是什么、指标公式里怎么用到走通达信外部接口、用Python处理逐笔和快照数据一并讲透。内容会涉及比较多的代码和函数细节适合已经会基础通达信公式、想往更深一层做的朋友。新手也可以看从基础概念讲起跟着一步步做就行。1. Level2数据到底跟普通行情差在哪先说一个很核心的问题Level2到底值不值得花钱去开通。很多人觉得普通行情软件里已经有五档买卖盘了Level2无非多显示五档到十档似乎没什么大用。但真正的差异不在“多几档”上而在数据的颗粒度和维度。普通行情是3秒一个快照Level2是逐笔成交和逐笔委托的完整流式数据意思是你能看到每一笔单子是谁在什么价位挂的、什么时间成交的、是主动买还是主动卖这个信息量完全不是一个级别。具体来讲Level2数据通常包含几类内容十档行情买一卖一之外能看到买二到买五甚至十档的挂单但注意这里有个很重要的细节通达信的十档不是所有股票都有很多股票其实只有五档有效深度后面几档可能是“虚挂”的参考数据。逐笔成交每一笔实际成交的价位、手数、时间、主动买卖方向这是Level2最有价值的部分。逐笔委托每一笔挂单委托的详情能看出来大单是怎么挂出来的是一笔大单拆分还是几十笔小单集中挂。委托队列买一卖一后面排了多少手这个是判断封单强度、排队能否成交的重要依据。从实战角度这些数据配合起来能做的事很多。比如分时图上做T普通行情只能看到价格三秒一跳Level2能看到连续涨停板上封单的增减过程、卖一被一笔吃掉之后新的卖一又是多少量这些细节对判断第二天走势非常重要。我个人用过之后最大的感受是如果只拿来看十档确实没什么用但一旦开始写公式、写程序去处理逐笔数据等于打开了一扇门。下面两节分别讲通达信内部的公式用法和外部的程序对接。2. 通达信公式系统里的Level2函数解析通达信的公式系统对Level2数据的支持其实很完整但有一个前提你的账户必须已经开通了Level2权限而且是在盘中实时使用才有效。很多函数在盘后、或者非Level2账户下运行返回的要么是无效值要么是空数据这一点踩坑的人非常多。2.1 看懂核心L2函数从基础函数到进阶函数通达信的L2函数分布在几个不同的板块里我按用途拆开讲。第一类是盘口快照类函数。比如BUYVOL1这类代表买一档的委托量SellVol1代表卖一档的委托量一直到BuyVol10和SellVol10就是十档的委托量。对应的还有BUYPRICE1到BUYPRICE10、SELLPRICE1到SELLPRICE10分别是十档的价格。这些函数的用法很简单直接用就行类似买一量:BUYVOL1; 卖一量:SELLVOL1; 买一价:BUYPRICE1;第二类是资金流向和主买主卖类函数。通达信有内置的AMOUNT是总的成交额但Level2可以做更细的拆分比如主动买入额、主动卖出额。ORDER类函数可以获取逐笔委托方向不过这类函数在公式中直接调用的场景不是很多更多还是用在DLL插件或者外部程序中。第三类是特色数据类包含了委托比、撤单占比、大单成交占比等。这些指标通达信其实在软件界面里已经给了但如果你想自定义的组合公式里可以直接调用底层函数去算。我实际用得最多的是十档委托量的变化速度。普通五档行情三秒才刷新一次而Level2的十档数据刷新频率高很多写一个公式捕捉“买一档连续增加而价格不动”的情况就能提前发现有大资金在悄悄吸筹。具体公式可以这样写买一量:BUYVOL1; 买一变化:买一量-REF(买一量,1); 价格不动:ABS(CLOSE-REF(CLOSE,1))0.001; 吸筹信号:买一变化0 AND 价格不动;这个就是典型的“盘口异动”捕捉思路门槛很低但实测效果比普通均线金叉什么的靠谱多了。2.2 公式中调用L2数据的权限与前置条件这节重点说一下权限问题。通达信的公式系统里L2函数能不能用取决于账户的身份验证。普通免费版账户即使写了L2函数运行结果也是无效的。账户必须已开通Level2数据权限这是硬前提。部分券商赠送的Level2可能会有时间窗口限制比如仅盘中有效、收盘后失效。分时周期下L2函数最有效日线周期以下的效果会打折扣日线周期本身不涉及盘口自然无意义。盘中实时计算时注意公式运行的刷新频率不要设置成收盘后批量计算。还有一点公式系统里有些L2函数只对特定市场有效。比如沪深两市的十档结构不同上交所和深交所Level2的推送机制也有差异导致某些函数在其中一个市场返回的数据可能粒度不一致。如果你写的指标在两个市场表现差别很大优先检查是不是函数适用范围的问题。2.3 用公式做分时当日做T信号分时做T是热搜词里很常见的一个场景这里我分享一个实际用过的方案。做T的本质是捕捉分时图上的高低点利用底仓做高抛低吸。Level2数据让这个判断更精确因为你能看到真实的主动买卖力量。我常用的做T信号逻辑是当主动买量连续放大、而价格还在分时均线下方时认为短线有反弹动能反过来当主动卖量放大、价格冲到分时均线上方则考虑高抛。用一个简单的公式表达主动买:SUM(内外盘差, 0); // 示意实际调用方向性成交数据 上穿均线:CROSS(CLOSE, MA(CLOSE,60)); // 60是分时均线周期这里有个细节通达信公式里直接使用“内外盘差”不是靠单个函数而是要用DLL或者高级数据函数去实现完整逻辑。纯公式能做的更多是通过显性的十档变化去推断比如买盘增强:SUM(BUYVOL1,5)SUM(SELLVOL1,5)*1.2; 信号:买盘增强 AND CLOSEREF(CLOSE,1);这种简化逻辑在白天的震荡市里实测效果不错但遇到单边下跌需要人为加约束条件比如股价不能离分时均线太远否则容易抄底接飞刀。3. 代码实操外部程序怎么对接Level2数据公式系统适合做快速验证和盘中人工盯盘但真要批量分析、回测、捕捉瞬时机会必须把数据导出来放到外部程序里处理。通达信官方其实有对应机制可以走但很多人不知道网上资料也少此处结合四处折腾的经历讲一讲。3.1 主流的三种对接方案选型第一官方提供的L2数据接口SDK。这个是最正规的路径但问题在于门槛高常见需要机构账户或量化专用通道对个人来说不太好拿而且要签数据使用协议限制也比较多。如果个人只是自己分析不拿去分发这条路可以用但性价比偏低。第二通达信DLL插件。通达信允许用户写DLL插件来扩展公式函数插件内部可以通过通达信的内存接口直接读取L2数据再进行自定义计算后返回给公式系统。这个方案灵活性很高也是“通达信dll编写源码大全”这类热搜指向的方向。难点在于DLL编写涉及到C/C或者Delphi需要熟悉通达信的接口结构这块官方文档非常简陋基本靠社区摸索。第三通过数据中间件读取通达信本地缓存文件。通达信运行时会在本机缓存大量L2快照和逐笔数据用Python直接去解析这些缓存文件属于“半官方”的做法优势是简单直接不用申请SDK缺点是有版本兼容性风险。我自己现在用的是方案三为主、方案一为辅的组合行情快照用Python定时任务去解析缓存定期校准。这样既能批量分析全部股票的Level2数据变化又不影响通达信本身的正常使用。3.2 Python读取与解析Level2核心代码这里给一个用Python读取快照类Level2数据的示例思路。注意因为通达信版本更新可能调整缓存格式以下代码需要根据自己的具体版本微调偏移量。import struct import pandas as pd def parse_snapshot(file_path): 解析通达信Level2快照缓存文件 file_path: 本地缓存文件路径 返回: DataFrame包含十档买卖数据 records [] with open(file_path, rb) as f: # 跳过文件头不同版本长度不同这里示意跳过56字节 f.seek(56) while True: # 这里假设每条记录固定长度为512字节 chunk f.read(512) if len(chunk) 512: break # 解析核心字段示意偏移量需按实际调整 code chunk[0:6].decode(gbk, errorsignore) price struct.unpack(f, chunk[32:36])[0] buy_vol_1 struct.unpack(i, chunk[100:104])[0] sell_vol_1 struct.unpack(i, chunk[120:124])[0] records.append({ code: code, price: price, buy_vol_1: buy_vol_1, sell_vol_1: sell_vol_1 }) return pd.DataFrame(records) if __name__ __main__: df parse_snapshot(D:/new_tdx/vipdoc/sh/lday/sz000001.l2) print(df.head())这个代码只是一个解析框架真正的偏移量需要对照自己通达信版本的字节存储格式去核。网上也有不少开源的Python库比如pytdx可以直接走通达信的行情协议去获取Level2数据不用解析本地文件相对简单一些。这里多说一句用pytdx的时候注意它默认连接的是公共行情服务器而Level2数据需要单独的权限服务器。你需要有自己券商的授权账号填好服务器地址才能拉到完整的Level2数据。3.3 用代码做逐笔成交的监控与警示先讲理念逐笔成交的监控关键在速度。普通快照数据延迟低的时候能到几百毫秒但逐笔要求更高。用Python做的时候一般不会直接每笔都触发逻辑而是把最近N笔的成交聚合起来按秒或按分钟计算主动买卖比例。这是比较成熟的做法既降低了对机器性能的要求也不容易漏掉重要变化。import time from collections import deque # 用一个双端队列保存最近的逐笔记录 recent_ticks deque(maxlen1000) def on_tick(tick): 传入一笔逐笔成交数据 tick结构示意: { time: 09:30:05.123, price: 10.25, volume: 200, direction: buy # buy/sell } recent_ticks.append(tick) # 只取最近5秒的数据 now time.time() valid_ticks [t for t in recent_ticks if now - t[time] 5] buy_vol sum(t[volume] for t in valid_ticks if t[direction] buy) sell_vol sum(t[volume] for t in valid_ticks if t[direction] sell) ratio buy_vol / max(sell_vol, 1) if ratio 3: print(f报警: 5秒内主动买量是主动卖量的{ratio:.1f}倍)这样的代码不用很复杂核心就是维护一个滑动窗口实时计算买卖力量的变化。实测下来把它挂在后台跑相比看盘软件自带的主买主卖统计最大的好处就是报警逻辑可以完全按自己的规则来比如只在特定时间、特定股票池内触发不干扰其他操作。4. 从数据到策略几个实用的Level2实战场景光有数据不落地没意义这节分享几个经实战检验的落地场景。不一定适合所有人但思路可以参考和扩展。4.1 主力资金追踪用十档变化确认大单意图主力的动作经常会在盘口留下痕迹区别在于你能否识别。用Level2的十档数据可以观察到一个常见现象主力在买一、买二、买三挂大单托底但价格并没有立刻拉升。这时候要做的是判断这是真的吸筹还是托单出货。一个简单的判断思路是结合逐笔成交来看如果托单挂着但逐笔成交里主动卖量持续大于主动买量说明托单可能是诱多。反过来如果托单位置不断抬高且逐笔成交里主动买量占优则大概率是真实吸筹。这个逻辑用公式写出来后我再叠加“大单成交占比超过60%”的过滤条件能有效减少假信号。实际写的时候不要试图用单一指标下结论把十档变化、逐笔方向、价格位置三者联合判断准确率才会上去。4.2 涨停打板时的封单质量判断打板族对封单质量特别敏感。普通行情只能看到封单总量Level2能看到封单挂在哪个价位、撤单情况如何、排队量有没有在减少。一个实用的判断方法是计算“封单/流通盘”的比例以及“封单增减速度”。如果封单在短时间内快速减少哪怕买一还没有被击穿也要警惕炸板风险。反之封单持续增加且价格分时线走平说明多头掌控力强。这个场景用通达信自带的盘口界面也能看但做程序化筛选的话就可以批量监控多个标的比如全市场扫描“封单占比突然提升超过5%”的股票能显著提升选股效率。4.3 分时做T进阶策略从手忙脚乱到条件化前面公式部分讲了一个简单的做T思路这里再补一个外部程序版本。用Python实时解析Level2数据可以更精准地捕捉分时高低点。我的做法是设置一个条件组合当主动买量占比持续高于60%且价格突破三分钟新高则认为是短线买入点当主动卖量占比上升超过55%且价格跌破三分钟新低则执行卖出减仓。整个过程程序自动监控只推送提醒到手机交易动作还是人工执行。这样做的好处是避免了盘中情绪干扰条件明确执行起来不犹豫。但需要提醒一句做T信号在震荡市效果较好在单边市里容易连续止损。建议配合大盘环境做过滤大盘如果持续走弱减少做T频率或者干脆不做。5. 常见问题与排查技巧实录5.1 Level2数据常见问题速查表问题现象可能原因解决思路公式里L2函数返回空值账户未开通L2权限检查券商账户套餐确认Level2功能已激活十档数据不完整部分股票本身流动性不足确认是沪深还是单边市场问题观察同一板块的其他股票是否正常盘后复盘时L2数据不显示L2数据多为盘中实时推送使用支持盘后回放L2的版本或提前保存数据快照Python解析缓存文件报错通达信版本升级导致偏移量变化用二进制对比工具排查结构或改用pytdx等现成方案DLL插件编译报错接口头文件缺失下载通达信对应的接口开发包安装C编译环境5.2 三个容易踩但不常被说的坑第一个坑很多人在公式里直接用Level2函数去算历史数据结果发现回测结果跟实盘完全不一致。原因很简单历史回测用的是本地缓存的历史快照但很多Level2历史数据其实只有快照没有逐笔导致计算逻辑涉及逐笔的函数在历史数据上“失灵”。所以写策略时一定要区分清楚哪些逻辑只能用实时数据哪些可以回测。第二个坑十档里面的买一卖一并不是永远等于盘口显示的五档数据。通达信的普通盘口展示可能存在合并、四舍五入等处理跟L2接口的原始值有细微差异。如果你用程序比对发现偶尔对不上是很正常的不要慌张。第三个坑走缓存文件解析数据的方案在通达信快速重启或者盘中异常退出后缓存文件可能处于“写入中”的状态读出的数据会不完整。我遇到过好几次最后解决方案是统一在盘中每隔固定间隔解析并且校验文件大小发现异常就跳过这次等待下一个周期。6. 一点扩展从Level2到多因子分析的延伸思路Level2数据单独用能解决很多具体问题但如果把这套数据存下来、积累一段时间你会发现更强大的用途——构建量价关系之外的盘口因子。比如把每天的十档委托差、主动买卖占比、大单成交频率做时间序列然后跟下一日的收益率做相关性分析很多传统技术指标解释不了的价格行为盘口因子能补上很大一块。我在自己的框架里试过加入Level2盘口因子后选股模型在横盘震荡市的表现明显好于只依赖量价和均线时。这个思路的实现难度主要在数据存储因为逐笔数据非常大一天全市场下来几个GB很正常。我的做法是只存聚合后的各类指标每秒的主买、主卖量每个价位的委托量变化不存原始逐笔明细。这样数据量从几个GB降到几百MB做历史分析完全够用。如果你只是个人使用建议也从聚合角度入手不要贪心存储原始数据。数据规模太大后管理和处理都会成为负担反而不利于策略的迭代效率。最后分享一个我自己坚持了不少时间的习惯每天收盘后用程序把当天的L2核心指标做一份汇总包括主动买卖比、十档委托差、大单成交比例按股票维度存下来。时间长了以后这些数据就是做个股“盘口画像”的基础能帮你搞清楚不同股性下数据的正常波动范围对判断异常信号的帮助是全方位的。本文还有配套的精品资源点击获取