From 173069d5181659336976676d036f0902e1e0b989 Mon Sep 17 00:00:00 2001 From: Justin Gu <97915@qq.com> Date: Sun, 5 Jul 2026 18:02:38 +0800 Subject: [PATCH] =?UTF-8?q?docs(example):=20=E5=BC=82=E5=8A=A8=E7=A4=BA?= =?UTF-8?q?=E4=BE=8B=E6=94=B9=E4=B8=BA=E5=88=86=E9=A1=B5=E6=8B=89=E5=8F=96?= =?UTF-8?q?=E5=85=A8=E9=83=A8=EF=BC=88=E5=8D=95=E6=AC=A1=20600=20=E5=8D=8F?= =?UTF-8?q?=E8=AE=AE=E4=B8=8A=E9=99=90=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit get_unusual 的 count 实际被 min(count,600) 截断,写 1000 也只能拿到 600。 改用 start 翻页 + pd.concat 合并,直到某页不足 600 视为到尾。 --- examples/17_mac_monitor/unusual.py | 52 ++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 17 deletions(-) diff --git a/examples/17_mac_monitor/unusual.py b/examples/17_mac_monitor/unusual.py index d28aba2..5fbe2c5 100644 --- a/examples/17_mac_monitor/unusual.py +++ b/examples/17_mac_monitor/unusual.py @@ -5,7 +5,7 @@ 参数: market -- 市场代码(Market.SH / Market.SZ) start -- 起始偏移(默认 0) - count -- 请求数量(默认 0,即 600) + count -- 单次请求数量(协议上限 600,超出会被截断为 600) UnusualItem dataclass 字段: index int 异动序号 @@ -26,24 +26,42 @@ UnusualItem dataclass 字段: desc str 异动描述 value str 异动数值 unusual_type int 异动类型代码 + +说明: + 通达信 MAC 协议 0x1237 单次最多返回 600 条异动数据。 + 若要拉取全市场全部异动(盘中可能数千条),需要用 start 参数翻页, + 每次累加 600,直到某页返回不足 600 条即为尾页。 """ +import pandas as pd + from easy_tdx import MacClient, Market -with MacClient.from_best_host() as c: - # 获取沪市异动数据(最近 20 条) - df = c.get_unusual(Market.SH, count=20) - print(df.to_string(index=False)) +PAGE = 600 # 协议单次返回上限,不要改大(会被截断) -# 运行结果: -# index market code name time desc value unusual_type -# 1 1 600XXX XX科技 09:45:00 5分钟涨幅>3% 3.52% 1 -# 2 1 601XXX XX银行 09:52:00 5分钟涨幅>3% 3.15% 1 -# 3 1 600XXX XX能源 10:05:00 5分钟跌幅>3% -3.28% 2 -# 4 1 603XXX XX医药 10:18:00 快速拉升 5.20% 3 -# 5 1 600XXX XX电子 10:30:00 大笔买入 5000手 4 -# 6 1 601XXX XX钢铁 10:45:00 5分钟涨幅>3% 3.80% 1 -# 7 1 600XXX XX化工 11:00:00 5分钟跌幅>3% -3.65% 2 -# 8 1 603XXX XX通信 13:15:00 快速拉升 4.85% 3 -# 9 1 600XXX XX地产 13:30:00 大笔买入 3000手 4 -# 10 1 601XXX XX汽车 13:45:00 5分钟涨幅>3% 3.42% 1 +with MacClient.from_best_host() as c: + frames = [] + start = 0 + while True: + df = c.get_unusual(Market.SH, start=start, count=PAGE) + if df.empty: + break + frames.append(df) + if len(df) < PAGE: # 不足一页 = 已到尾 + break + start += PAGE + + if frames: + full = pd.concat(frames, ignore_index=True) + print(f"共获取 {len(full)} 条异动({len(frames)} 页)") + print(full.to_string(index=False)) + else: + print("暂无异动数据。") + +# 示例输出: +# 共获取 1843 条异动(4 页) +# index market code name time desc value unusual_type +# 1 1 600XXX XX科技 09:45:00 5分钟涨幅>3% 3.52% 1 +# 2 1 601XXX XX银行 09:52:00 5分钟涨幅>3% 3.15% 1 +# 3 1 600XXX XX能源 10:05:00 5分钟跌幅>3% -3.28% 2 +# ...