用Python实时解析L2行情:从逐笔数据到主力意图的完整链路
用 Python 实时解析 L2 行情从逐笔数据到主力意图的完整链路做股票数据本地化之后我花了大概 3 个月时间把整套 L2 实时监控 主力意图识别的链路从 0 到 1 搭了出来。这篇文章把这个链路完整记录下来重点不是怎么写代码代码网上一堆而是为什么这么设计和踩过哪些坑。一、整体架构整个系统分 4 层数据接入层、清洗聚合层、特征计算层、信号输出层。数据接入层负责从本地数据引擎拉取原始 tick 和 L2 指标。我用的是 ig50 本地数据引擎覆盖了 A 股 5000 多只票的 200 多个数据集。这里用到的接口主要有 3 个逐笔成交time/real/trace/onebyone/{dm}返回每只票当日的每一笔成交。返回的是 JSON 数组每个元素的字段包括 cjsj成交时间格式 HHMMSSssssss、cjjg成交价格浮点、cjl成交量整数单位手、jyzd交易方向0 中性/1 买入/2 卖出。十档盘口time/real/trace/level10/{dm}返回买一到买十、卖一到卖十的挂单价格和量。同样是 JSON。L2 指标time/real/trace/l2sign/{dm}返回大单比率、小单比率、撤单比率、委托净额、DDX、DDY、DDZ 等十几个指标。返回的是单个 JSON 对象。数据接入层的设计要点是异步批量拉取。一只票一天有几万笔 tick5000 只票一天有几亿笔串行拉肯定不现实。我用了 Python 的 asyncio aiohttp自己实现了一个简单的连接池把每只票的拉取任务并发起来本地数据引擎内网响应大概是 1-3 毫秒一个请求20 并发的话 5000 只票全部拉完大概 5-8 分钟。二、清洗聚合层拿到的原始 tick 是逐笔成交记录不是K 线。所以第二层要做的是把 tick 聚合成 1 分钟 K 线 5 分钟 K 线 30 分钟 K 线同时做几件事过滤中性单jyzd0 的成交是开盘集合竞价或不区分方向的成交过滤掉。区分大小单单笔成交金额 cjjg * cjl * 100超过 100 万算大单10 万到 100 万算中单10 万以下算小单。计算主动性买卖主动买入 jyzd2 的成交金额合计主动卖出 jyzd1 的成交金额合计。注意 jyzd 的定义在不同数据源里不一样我用的是 ig50 的定义1买入2卖出0中性。聚合到分钟级每分钟计算一次得到 OHLCV 主动买入金额 主动卖出金额 大单买入金额 大单卖出金额 小单买入金额 小单卖出金额。聚合的代码很简单用 pandas 的 resample 就行。重点是要注意集合竞价的处理——9:25-9:30 的集合竞价成交应该合并到 9:30 那根 K 线里而不是单独成一根。三、特征计算层第三层是主力意图识别的核心。我基于分钟级 K 线计算了几个特征这几个特征对短期主力意图的识别效果最好。特征 1主力净流入比率公式主力净流入 大单买入金额 - 大单卖出金额主力净流入比率 主力净流入 / 当日总成交金额。这个比率超过 5% 算强势吸筹超过 10% 算强烈吸筹。负向同理。特征 2撤单比率撤单比率需要从 L2 指标接口time/real/trace/l2sign/{dm}直接拿这个值 ig50 已经算好了。撤单比率超过 60% 算假挂单嫌疑超过 80% 算高度疑似诱多/诱空。特征 3价格弹性公式价格弹性 当根 K 线振幅 / 当根 K 线成交量单位是每万元成交对应的振幅。这个值越大说明少量成交就能拉动价格是主力高度控盘的标志。特征 4买卖盘不平衡从十档盘口time/real/trace/level10/{dm}计算买一到买十的总挂单量和卖一到卖十的总挂单量不平衡 (买总 - 卖总) / (买总 卖总)。这个值超过 30% 算买盘主导低于 -30% 算卖盘主导。特征 5连续性指标主力意图很少是一次性的需要看连续性。具体是计算过去 5 分钟、10 分钟、30 分钟的主力净流入累计值。如果累计值持续放大说明主力意图明确如果累计值波动很大说明多空博弈激烈。四、信号输出层第四层是把上面这些特征组合成主力意图信号。我设了 3 类信号信号 A吸筹信号触发条件主力净流入比率 5% 连续 10 分钟且价格弹性 0.5且卖盘不平衡 -10%。含义主力在低位持续买入且不是用少量资金拉价说明控盘度高且卖盘压力大但被主力吸收。信号 B出货信号触发条件主力净流入比率 -5% 连续 10 分钟且撤单比率 60%且买盘挂单虚高挂单未成交占比 70%。含义主力在高位持续卖出且挂单是诱多的假单。信号 C洗盘信号触发条件股价下跌 3-5 个点但主力净流入比率 0下跌中主力在吸筹且小单卖出占比 40%散户割肉。含义主力借下跌洗盘吸筹散户割肉筹码。五、踩过的坑这套系统跑了大概 3 个月我踩过几个坑记下来给后来人参考坑 1L2 指标不要只看瞬时值L2 指标撤单比率、DDX 等的瞬时值波动很大可能 1 分钟内从 30% 跳到 70% 再跳回 40%。一定要用滑动窗口我用的是 5 分钟滑动平均做平滑。坑 2十档盘口的挂单不是真实买盘十档盘口的挂单随时会被撤掉瞬时挂单和真实买盘是两回事。我后来用近 5 分钟平均挂单代替瞬时挂单信号稳定性大幅提升。坑 3tick 数据要做时间戳对齐不同数据源给的 tick 时间戳格式可能不一样有的精确到毫秒有的精确到微秒做跨数据源对比时一定要做时间戳对齐。我用 pandas 的 pd.to_datetime 统一转成 datetime64[ns]。坑 4特征阈值不能写死我最初把主力净流入比率 5%“写成了硬阈值结果在不同市况下牛市/熊市/震荡市效果差异很大。后来改成近 20 个交易日的滚动分位数”超过 80% 分位数才算强势吸筹。六、性能优化整套系统在本地跑单只票从拉数据到出信号大概 200-300 毫秒。5000 只票全市场批量跑大概 30 秒。瓶颈在 L2 指标接口的并发能力把并发数从 20 调到 50 之后快了 3 倍但 CPU 占用也上去了。如果要做实时监控建议用增量拉取——每分钟只拉最新 1 分钟的 tick 和 L2 指标而不是重新拉全量数据。增量拉取的单次响应时间可以压到 50 毫秒以内。七、最后说几句这套系统上线之后最大的变化不是赚了多少是心里踏实了。以前看盘软件上的 K 线只能告诉你发生了什么这套系统能告诉你为什么发生和接下来可能发生什么。主力意图识别这件事没有银弹特征和阈值都要根据你自己的回测结果调。但只要你能拿到逐笔成交、十档盘口、L2 指标这 3 类数据剩下的就是工程实现的问题。参考接口逐笔成交time/real/trace/onebyone/{dm}字段 cjsj/cjjg/cjl/jyzd十档盘口time/real/trace/level10/{dm}L2 指标time/real/trace/l2sign/{dm}字段 ddx/ddy/ddz/撤单比率实时行情time/real/{dm}历史 K 线time/history/trade/{dm}/{level}资料参考ig50

相关新闻

终极指南:8大网盘直链下载助手,告别限速烦恼

终极指南:8大网盘直链下载助手,告别限速烦恼

终极指南:8大网盘直链下载助手,告别限速烦恼 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天…

2026/10/20 17:17:12 阅读更多 →
RAG系统上下文剪枝实战:从过载到精炼,效率提升68%

RAG系统上下文剪枝实战:从过载到精炼,效率提升68%

1. 项目缘起:当RAG的“上下文”成为负担 最近在优化一个内部知识库问答系统时,我们遇到了一个典型的RAG(检索增强生成)性能瓶颈。系统在召回相关文档片段(chunk)后,会将它们连同用户问题一起塞给…

2026/10/20 14:48:00 阅读更多 →
WaveTools鸣潮工具箱:4大核心功能快速上手指南

WaveTools鸣潮工具箱:4大核心功能快速上手指南

WaveTools鸣潮工具箱:4大核心功能快速上手指南 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 还在为《鸣潮》游戏卡顿、画质不佳而烦恼吗?想要轻松管理多个游戏账号,还…

2026/10/19 16:49:32 阅读更多 →

最新新闻

IIEM海面散射系数MATLAB实现:二重积分与数值陷阱解析

IIEM海面散射系数MATLAB实现:二重积分与数值陷阱解析

简介:提供一套开源的改进积分方程模型(IEM)Python实现,面向粗糙表面电磁散射研究,适用于遥感、雷达成像等需要二重积分数值计算的场景,为已有一定编程基础的科研与工程人员提供可直接运行的基础代码。整套资…

2026/10/20 20:05:13 阅读更多 →
C++匿名对象与类生命周期:霓虹游牧者实战解析

C++匿名对象与类生命周期:霓虹游牧者实战解析

1. 项目概述1.1 一句话理解这个项目你给一个虚构的赛博朋克游戏场景编写NPC的AI控制逻辑。这个NPC名为“Cyber仿生人”,身份是“霓虹游牧者”。要求用C的类与对象知识,实现一个匿名对象的完整演示程序。我猜你已经对C的基础语法有一定了解(变…

2026/10/20 20:05:13 阅读更多 →
SQL注入原理详解:从数据到代码的越界与手工验证

SQL注入原理详解:从数据到代码的越界与手工验证

1. 从一条登录框说起:SQL注入到底在注什么很多人第一次接触SQL注入,都是从一条看起来人畜无害的登录框开始的。用户名输入admin,密码随便填个123456,点击登录,页面提示“密码错误”。然后你把用户名改成admin --&#…

2026/10/20 20:05:13 阅读更多 →
matplotlib中文乱码显示方框?一套工程化字体配置方案彻底解决

matplotlib中文乱码显示方框?一套工程化字体配置方案彻底解决

刚开始用matplotlib画图,第一张图就满屏小方框,标题、坐标轴全是豆腐块一样的空框框,换成个折线图画中文字体,依旧原样。这个问题在中文开发者圈子里几乎算是入门必经关卡,项目标题看着简单——matplotlib无法显示中文…

2026/10/20 20:05:13 阅读更多 →
AI绘画提示词反推总差口气?掌握这3招还原图像生成底层逻辑

AI绘画提示词反推总差口气?掌握这3招还原图像生成底层逻辑

我玩AI绘画也有不短的时间了,几乎每次看到别人发的惊艳图,第一反应都不是“哇”,而是“这图提示词到底怎么写的”。所以我也很自然地走上了反推提示词这条路。但很快我就发现一个问题:用各种反推工具拿到的词,哪怕看起…

2026/10/20 20:05:13 阅读更多 →
放弃图形化工具,用Git Bash高效管理本地文档的完整指南

放弃图形化工具,用Git Bash高效管理本地文档的完整指南

1. 为什么我最终放弃了图形化工具,回归 Git Bash 管理本地文档很多人第一次接触版本管理,都是从图形化客户端开始的。点几下按钮,仓库就建好了,提交记录也看得见,似乎没什么门槛。但用得越久,我越发现一个尴…

2026/10/20 20:04:05 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →