【零依赖量化数据实战 #06】沪深投资参考接口:7 个 URL 拉融资融券/大宗交易/解禁/分红
摘要:【零依赖量化数据实战 #06】沪深投资参考接口:7 个 URL 拉融资融券/大宗交易/解禁/分红 系列:《零依赖量化数据实战》|零依赖 · 纯 GET · 不 import 任何 SDK 适用:想把 A 股「今日
系列:《零依赖量化数据实战》|零依赖 · 纯 GET · 不 import 任何 SDK 适用:想把 A 股「今日交易提示 / 两融余额 / 大宗交易 / 解禁限售 / 打新收益 / 历史分红」这类参考信号接进日常观察,不想手写爬虫或装库的开发者
你将得到什么
- 7 个沪深投资参考端点的路径、返回形态和语义,照公开文档核对过的,不是猜的(均列于智兔官网《沪深数据 API 文档》)
- 一段
scan_reference_signals()批量拉取 +summarize()汇总打印的完整代码 - 字段名容错写法:不同数据源字段名不一样,用候选键列表命中抽取,换数据源不用改代码
- 投资参考信号扫描的最小可用模板:把 7 个端点包成一个函数,每天跑一次打印异动清单
- 完整可复制运行的代码,把
你的智兔token换成真实证书即可直接跑
一、7 个端点,一张语义表
智兔把 A 股「投资参考」拆成了 7 个独立端点,路径前缀统一 /hitc/(均见于官网公开文档,对客开放):
GET https://api.zhituapi.com/hitc/jrts 今日交易提示(停牌/复牌/新股等当日事项)
GET https://api.zhituapi.com/hitc/rzrqzl 融资融券交易总量(融资余额/融券余额等聚合)
GET https://api.zhituapi.com/hitc/rzrqmx 融资融券交易明细(逐标的融券卖出/融资买入)
GET https://api.zhituapi.com/hitc/dzjy 大宗交易(折溢价/成交量)
GET https://api.zhituapi.com/hitc/jjxs 解禁限售(待解禁股本/市值)
GET https://api.zhituapi.com/hitc/dxsy 打新收益(新股/新债收益统计)
GET https://api.zhituapi.com/hitc/lsfh 历史累计分红(个股上市以来分红融资比)
鉴权统一 ?token=<你的智兔token>。这些端点大多返回「全市场满足条件的清单」,天然适合做每日参考信号扫描;rzrqzl 返回的是聚合数值对象(融资余额/融券余额),形态与其它几条不同,summarize 两种形态都吃。
一个实际用法:日常观察只拉
rzrqzl(两融总量当天水位)+dzjy(大宗异动)+jjxs(解禁压力)三个就够覆盖绝大多数风险信号;jrts(今日提示)适合开盘前扫一遍,lsfh(历史分红)适合做长期持股质量筛选时再拉。
二、字段名不固定?用候选键命中
投资参考端点的返回字段名可能因数据源更新而变化。与其硬编码字段名(改了就全崩),不如用候选键列表命中抽取:
def _hit_key(d, candidates):
"""从字典中按候选键名列表命中第一个存在的键。"""
for k in candidates:
if k in d:
return k
return None
def summarize(name, data):
"""从投资参考端点的返回中抽取关键字段做汇总,对字段名不敏感、对形态不敏感。"""
if data is None:
return f" {name}: 无数据"
if isinstance(data, list):
if not data:
return f" {name}: 0 条"
first = data[0] if isinstance(data[0], dict) else {}
code_key = _hit_key(first, ["code", "dm", "stock", "gpdm", "symbol"])
name_key = _hit_key(first, ["name", "mc", "stock_name", "gpmc"])
date_key = _hit_key(first, ["date", "t", "rq", "day"])
parts = [f" {name}: {len(data)} 条"]
if code_key:
parts.append(f"首条代码={first.get(code_key)}")
if name_key:
parts.append(f"名称={first.get(name_key)}")
if date_key:
parts.append(f"日期={first.get(date_key)}")
return " | ".join(parts)
if isinstance(data, dict):
keys = list(data.keys())[:6]
return f" {name}: 聚合对象,键={keys}"
return f" {name}: {type(data).__name__}"
这样就算数据源把 dm 改成 gpdm 或 symbol,代码不用动。命不中也不报错——只是那行汇总少一个字段,不影响其他端点。
三、批量拉取 + 投资参考扫描模板
import time
import requests
TOKEN = "你的智兔token"
BASE = "https://api.zhituapi.com"
HIT_ENDPOINTS = {
"jrts": "今日交易提示",
"rzrqzl": "融资融券交易总量",
"rzrqmx": "融资融券交易明细",
"dzjy": "大宗交易",
"jjxs": "解禁限售",
"dxsy": "打新收益",
"lsfh": "历史累计分红",
}
def fetch_hit(name, token=TOKEN, timeout=15):
"""拉单个投资参考端点,返回 (data, err)。"""
url = f"{BASE}/hitc/{name}"
params = {"token": token}
try:
r = requests.get(url, params=params, timeout=timeout)
except requests.RequestException as e:
return None, f"网络异常:{e}"
if r.status_code != 200:
return None, f"{r.status_code} {r.text.strip()[:140]}"
try:
payload = r.json()
except ValueError:
return None, f"非 JSON 返回:{r.text[:140]}"
if isinstance(payload, dict):
detail = payload.get("detail") or payload.get("error")
return None, f"业务错误:{detail or list(payload)[:6]}"
return payload, None
def daily_scan(token=TOKEN, sleep=0.2):
"""投资参考扫描:拉取全部端点并汇总打印信号清单。"""
if token == "你的智兔token":
print("[演示] TOKEN 为占位符,请换成真实 token 后再跑。")
for name in HIT_ENDPOINTS:
data, err = fetch_hit(name, token)
if err:
print(f" {name} ({HIT_ENDPOINTS[name]}): 暂不可用:{err}")
else:
print(summarize(name, data))
time.sleep(sleep)
if __name__ == "__main__":
daily_scan()
(_hit_key / summarize 见前文,拼在一起就是完整脚本。)
sleep=0.2 是限频保护——批量拉 7 个端点 + 0.2 秒间隔 ≈ 1.4 秒,远在限频内。要扫全市场参考信号时这 7 个端点一次返回符合条件的全部数据,不用你先有股票池。
四、代码自验结果
离线自测 6 项全 PASS:
selftest PASS: 端点注册完整(7/7) / _hit_key 命中逻辑 / summarize 列表形态抽取 / summarize 聚合对象形态 / summarize 空数据兜底 / 错误码解析结构 共 6 项
联网跑(占位 token)真实输出:
[演示] TOKEN 为占位符,请换成真实 token 后再跑。
jrts (今日交易提示): 暂不可用:403 102:Licence证书(你的智兔token)不存在
rzrqzl (融资融券交易总量): 暂不可用:403 102:Licence证书(你的智兔token)不存在
...
7 个端点契约一致。本文未编造任何投资参考数值——换成覆盖该接口的正式证书后重跑,即可打印真实参考信号清单。
五、坑与注意事项
坑 #1:102 不代表路径写对了。 鉴权发生在路由匹配之前。把路径故意写错(/hitc/nosuch)配无效 token,同样返回 102。路径合法性只能靠客户端按白名单自查——本文 7 个路径是照公开文档核对的。
坑 #2:返回形态不统一。 rzrqzl(两融总量)返回的是聚合数值对象(融资余额/融券余额),而 rzjy/dzjy/jjxs 等返回的是列表。代码里 summarize 对 list 和 dict 两种形态都做了处理,别只按列表去解析,否则聚合对象会解析成空。
坑 #3:返回的是「全市场信号」不是「单股快照」。 这 7 个端点返回的是满足条件的全部标的,不是某只股票的明细。做单股监控请用系列前几篇的 /hs/real/ssjy/{code}(实时行情)等端点,本篇负责「盘面参考信号扫描」。
小结与下篇预告
这篇你拿到了 7 个沪深投资参考端点的完整路径表、字段名容错抽取写法、以及一个参考信号扫描模板函数。
下一篇讲沪深龙虎榜接口:每日详情 / 个股上榜 / 营业部上榜 / 机构席位追踪 / 成交明细怎么用一个 URL 直接取到,接进异动事件驱动。
免费领取证书
数据来自 智兔数服(www.zhituapi.com):零 SDK、纯 GET、免费版即可起步。
领取路径:进入 www.zhituapi.com → 点击「请求证书」→「证书获取」→「免费版」(邮箱验证 3 步即可拿到 token)。
把代码里的 你的智兔token 换成你拿到的真实 token,上面的脚本就能直接打印参考信号清单。
免责声明
本文仅演示公开数据接口的用法,所有代码示例均以占位 token 自验,未含任何真实行情数据;文中数据仅为接口用法演示,不构成投资建议,亦不承诺收益。投资决策请基于你自己的判断与风险承受力。