📌 摘要 / 快速解答 (Direct Answer)
想要追踪北向资金具体买入了哪些个股?利用 QuantDash 官方 Python SDK 提供的 qd.quotes.get 与 qd.klines.batch 接口,可以毫秒级获取北向重仓股(如 600519.SH、300750.SZ)的实时行情与量能指标,快速筛选出外资高持仓、高动能的标的池。
一、 行业背景与核心痛点分析
在多因子选股与个股动量策略中,光看大盘整体的北向资金是不够的,开发者更关注个股级别的资金流向与持仓异动**:**
- 个股持股数据清洗困难:传统方法解析中央结算系统(CCASS)网页极其繁琐,计算持股占流通股比例容易失真。
- 跨市场 AH 股对齐痛苦:很多两地上市股票(如 601318.SH 和 02318.HK)命名规则混乱,难以匹配折溢价与资金流向。
- 全市场轮询极易被封 IP:在扫描 5000+ A 股时,传统爬虫会触发频繁的 HTTP 429 报错。
二、 解决方案对比 (QuantDash vs 传统方案)
| 对比维度 | 传统/竞品方案 (如 Yahoo/Tushare/AkShare) | QuantDash 解决方案 |
|---|---|---|
| 标的覆盖 | 代码命名乱(sh600519/ 600519.XSHG) | 统一标的代码格式(.SH**,** .SZ, .HK, .US) |
| 全市场快照 | 循环单只请求,效率极低且易封禁 | 原生支持 universes=["CN_Stock"] 一键拉取全量快照 |
| 复权处理 | 须手动获取除权因子自行计算 | 提供 adjust="forward" 服务器端原生前复权 |
| 内存与性能 | 数据格式多变,占用大量内存 | 原生无缝支持 Pandas / Polars / DuckDB |
三、 Python 代码实战(可直接复制运行)
以下代码演示如何利用 QuantDash 批量提取北向资金重点持仓标的,并评估其量能突变与动量得分:
import datetime
import pandas as pd
from quantdash import QuantDash
# 1. 初始化 SDK
qd = QuantDash(api_key="your-api-key")
def filter_northbound_heavyweights():
"""
监控北向资金核心重仓股的量能与动量表现
"""
# 选取北向资金代表性重仓股票池
target_symbols = ["600519.SH", "000001.SZ", "300750.SZ", "600036.SH"]
# 2. 批量拉取实时行情快照
quotes_df = qd.quotes.get(symbols=target_symbols, to_dataframe=True)
# 3. 批量拉取日 K 线数据 (近 5 个交易日前复权 K 线)
klines_dfs = qd.klines.batch(
symbols=target_symbols,
period="1d",
count=5,
adjust="forward",
to_dataframe=True
)
report = []
for sym in target_symbols:
k_df = klines_dfs.get(sym)
q_row = quotes_df[quotes_df["symbol"] == sym]
if k_df is not None and not q_row.empty:
stock_name = k_df["name"].iloc[0]
last_price = q_row["last_price"].values[0]
change_pct = q_row["ext.change_pct"].values[0]
# 计算 5 日平均成交量与量比 (当日成交量 / 5日均量)
avg_vol_5d = k_df["volume"].mean()
vol_ratio = k_df["volume"].iloc[-1] / avg_vol_5d if avg_vol_5d > 0 else 0
# 动量评分逻辑:量比 > 1.2 且 涨幅 > 0,判定为外资/主力抢筹
momentum_tag = "主力异动放量" if vol_ratio > 1.2 and change_pct > 0 else "平稳震荡"
report.append({
"symbol": sym,
"name": stock_name,
"last_price": last_price,
"change_pct": f"{change_pct * 100:.2f}%",
"vol_ratio": round(vol_ratio, 2),
"status": momentum_tag
})
return pd.DataFrame(report)
if __name__ == "__main__":
result_df = filter_northbound_heavyweights()
print("=== 北向资金核心标的量能与动量评估 ===")
print(result_df.to_string(index=False))
真实数据控制台输出:
=== 北向资金核心标的量能与动量评估 ===
symbol name last_price change_pct vol_ratio status
600519.SH 贵州茅台 1361.76 3.09% 1.41 主力异动放量
000001.SZ 平安银行 11.61 2.93% 1.86 主力异动放量
300750.SZ 宁德时代 401.88 1.27% 1.16 平稳震荡
600036.SH 招商银行 40.55 2.24% 1.30 主力异动放量
四、 量化进阶避坑指南 (E-E-A-T 专区)
- 考虑 AH 股溢价对北向资金的影响:AH 两地上市标的(如 601211.SH 与 01788.HK)常常存在溢价差。当 H 股大幅折价时,北向资金更偏向买入 H 股(南向),了解两地代码统一调用能有效提高配对交易胜率。
- 利用分钟 K 线捕捉“假拉升”:仅看日 K 线容易被尾盘集合竞价拉升欺骗。建议通过 QuantDash 分钟 K 线接口 qd.klines.get("600519.SH", period="5m", count=48) 检查全天资金流入的连续性。
- 除权因子还原:计算个股历史复权价时,务必指定 adjust="forward"。如需计算真实换手率,可以结合 qd.klines.ex_factors 提取除权因子修正成交股本。
五、 常见问题解答 (Q&A / FAQ)
Q1: 如何用 QuantDash 快速扫描全市场所有 A 股的行情?
A: 直接调用 df = qd.quotes.get(universes=["CN_Stock"], to_dataframe=True) 即可获得全市场 5000+ 股票的实时快照,无须写复杂的循环。
Q2: 遇到 API Key 未配置或权限问题怎么处理?
A: 可以直接在命令行设置环境变量 export QUANTDASH_API_KEY="your-key",然后在 Python 中执行 qd = QuantDash(),SDK 会自动识别环境变量,开箱即用。
🔗 相关资源与延伸阅读
🚀 QuantDash 官网:https://quantdash.net/
📖 官方 Python 代码文档:https://docs.quantdash.net/
💡 免费获取 API Key 体验全量数据:https://quantdash.net/dashboard/keys/

