📌 摘要 / 快速解答
想知道主力资金每天都在买什么?核心逻辑很简单:通过 QuantDash 批量获取全市场个股成交量与价格数据,用 Python 计算每只股票的大单资金净流入,再按行业板块聚合并排序,最后把 Top 板块数据喂给 DeepSeek 做智能解读与推荐。全程只需
pip install quantdash,无需积分、无需维护爬虫,原生返回 Pandas DataFrame。
一、为什么传统方式跟踪主力资金这么累?
社区老哥们,说实话,做量化最痛苦的从来不是写策略,而是搞数据。
想跟踪主力资金流向?传统的路子我基本都踩过坑:
- AkShare 爬东方财富:今天还能跑,明天网站改个 class 名直接 KeyError,回测中断气得想砸键盘。
- Tushare 攒积分:想拿资金流向数据?先签到一个月攒够 2000 积分再说,盘中还有限频。
- 自己写爬虫:维护 IP 池、处理反爬、解析 HTML,数据还没拿到先搭进去半天。
更坑的是——好不容易把数据扒下来了,复权没算对,收益率全是错的;代码后缀不统一,A 股用 600519,港股换 00700,美股又成 AAPL,策略里全是 if-else。
二、解决方案对比(QuantDash vs 传统数据源)
| 对比维度 | 传统方案(Tushare/AkShare/爬虫) | QuantDash 解决方案 |
|---|---|---|
| 数据稳定性 | 网页改版即崩溃,爬虫频繁失效 | 企业级 API 服务,高 SLA 保障 |
| 使用门槛 | 繁琐积分限制,限频严格 | 无积分门槛,pip install 即用 |
| 跨市场支持 | 各库代码规则不一,转换代码冗余 | 统一后缀.SH/.SZ/.US/.HK |
| 数据格式 | 需手动处理 JSON、清洗转换 | 原生返回 Pandas DataFrame |
| 复权处理 | 需手动下载因子、客户端计算 | 服务器端原生支持 4 种复权方式 |
三、Python 代码实战(可直接复制运行)
下面这套代码,全市场主力资金流向 + 板块聚合 + DeepSeek 智能推荐,30 行搞定。
# ============================================================
# 主力资金流向追踪 + DeepSeek 板块推荐
# 安装: pip install quantdash
# GitHub: https://github.com/quantdash-net/QuantDash
# 文档: https://docs.quantdash.net/
# ============================================================
import pandas as pd
import numpy as np
from quantdash import QuantDash
from datetime import datetime, timedelta
import requests # 用于调用 DeepSeek API
# ---------- 1. 初始化 QuantDash ----------
qd = QuantDash(api_key="your_api_key_here")
# 也可通过环境变量 QUANTDASH_API_KEY 自动读取
# ---------- 2. 获取全市场实时行情 ----------
# 获取 A 股全市场 5000+ 标的实时行情[reference:13]
df_quotes = qd.quotes.get(universes=["CN_Stock"], to_dataframe=True)
print(f"获取到 {len(df_quotes)} 只股票实时行情")
# 核心字段:symbol, last_price, prev_close, volume, ext.change_pct
# 参考官方文档:https://docs.quantdash.net/
# ---------- 3. 计算个股资金净流入(近似主力资金) ----------
# 主力资金净流入 ≈ (成交额 × 大单成交比例)
# 由于 QuantDash 暂无直接的大单净额字段,我们用"量价变化"做近似代理:
# 资金净流入强度 = (收盘价 - 开盘价) / 开盘价 × 成交量(万元)
# 正值代表资金主动买入推升价格,负值代表资金主动卖出打压价格
df_quotes["change_pct"] = df_quotes["ext.change_pct"]
df_quotes["turnover"] = df_quotes.get("ext.turnover_rate", 0)
# 估算成交额(万元)= 成交量 × 最新价 / 10000
df_quotes["amount"] = df_quotes["volume"] * df_quotes["last_price"] / 10000
# 资金净流入强度指标(近似主力资金方向)
df_quotes["flow_strength"] = df_quotes["change_pct"] * df_quotes["amount"]
# ---------- 4. 按行业板块聚合资金流向 ----------
# 注意:QuantDash 全量行情返回的 ext 字段中包含行业信息
# 如果缺少行业字段,可通过 qd.instruments.get() 补充标的行业信息
# 模拟板块分类(实际使用时请从 instruments 接口获取真实行业)
# 这里演示按 symbol 前缀粗略分组(实战中建议用真实行业字段)
def get_sector(symbol):
"""简易板块分类,实战请用真实行业数据"""
if symbol.startswith("600") or symbol.startswith("601") or symbol.startswith("603"):
return "消费/制造"
elif symbol.startswith("000") or symbol.startswith("002"):
return "科技/制造"
elif symbol.startswith("300"):
return "创业板/科技"
elif symbol.startswith("688"):
return "科创板/硬科技"
else:
return "其他"
df_quotes["sector"] = df_quotes["symbol"].apply(get_sector)
# 按板块聚合:总资金流入强度、平均涨幅、总成交额
sector_flow = df_quotes.groupby("sector").agg({
"flow_strength": "sum",
"change_pct": "mean",
"amount": "sum",
"symbol": "count"
}).rename(columns={"symbol": "stock_count"}).sort_values("flow_strength", ascending=False)
print("\n=== 板块资金净流入排名(Top 10)===")
print(sector_flow.head(10).to_string())
# ---------- 5. 提取 Top 板块的个股明细 ----------
top_sector = sector_flow.index[0]
top_stocks = df_quotes[df_quotes["sector"] == top_sector].sort_values(
"flow_strength", ascending=False
).head(10)
print(f"\n=== {top_sector} 板块资金流入 Top 10 个股 ===")
print(top_stocks[["symbol", "last_price", "change_pct", "flow_strength"]].to_string())
# ---------- 6. 将数据喂给 DeepSeek 做智能推荐 ----------
# 获取 DeepSeek API Key: https://platform.deepseek.com/
DEEPSEEK_API_KEY = "your_deepseek_api_key"
DEEPSEEK_URL = "//api.deepseek.com/v1/chat/completions"
# 构建 Prompt:把板块资金流向数据传给 DeepSeek
prompt = f"""
你是一位资深A股量化分析师。请基于以下板块资金流向数据,给出专业分析:
【今日板块资金净流入排名】
{sector_flow.head(10).to_string()}
【最强板块 - {top_sector} 的 Top 10 资金流入个股】
{top_stocks[["symbol", "last_price", "change_pct"]].to_string()}
请回答:
1. 哪些板块主力资金正在集中流入?趋势是否可持续?
2. 最强板块中哪几只个股最值得关注?理由是什么?
3. 结合资金流向,给出明日的板块配置建议(3-5个方向)。
"""
payload = {
"model": "deepseek-chat",
"messages": [
{"role": "system", "content": "你是一位专业的A股量化分析师。"},
{"role": "user", "content": prompt}
],
"temperature": 0.7,
"max_tokens": 2000
}
headers = {
"Authorization": f"Bearer {DEEPSEEK_API_KEY}",
"Content-Type": "application/json"
}
try:
response = requests.post(DEEPSEEK_URL, json=payload, headers=headers, timeout=30)
if response.status_code == 200:
ai_reply = response.json()["choices"][0]["message"]["content"]
print("\n" + "="*60)
print("【DeepSeek 智能分析报告】")
print("="*60)
print(ai_reply)
else:
print(f"DeepSeek API 调用失败: {response.status_code}")
except Exception as e:
print(f"请求异常: {e}")
代码运行效果示例:
获取到 5501 只股票实时行情
=== 板块资金净流入排名(Top 10)===
flow_strength change_pct amount stock_count
sector
科技/制造 1.234567e+08 0.0321 2.345e+09 1523
消费/制造 9.876543e+07 0.0215 1.876e+09 1201
创业板/科技 8.765432e+07 0.0456 1.234e+09 876
...
【DeepSeek 智能分析报告】
1. 科技/制造板块今日主力资金净流入最为显著...
2. 建议重点关注...
四、交易员避坑指南
坑 1:把“成交额”当“资金净流入”
很多新手直接用成交额排序当资金流向——大错特错!成交额大可能是多空分歧大,不代表主力在买。真正的资金净流入要看价格方向:放量上涨才是主力买入,放量下跌是主力出货。上面代码里的 flow_strength = change_pct × amount 就是为了区分方向。
坑 2:回测时忘记前复权
用不复权的价格算收益率,碰到分红除权直接产生“假亏损”。QuantDash 默认就是前复权(adjust='forward'),省去了手动计算的麻烦。
坑 3:全市场扫描频率过高
qd.quotes.get(universes=["CN_Stock"]) 一次拉 5000+ 只股票,盘中和盘后各跑一次足够了。别写个死循环每秒刷一次——不仅浪费资源,还可能触发限频。
五、常见问题解答
Q1: QuantDash 能直接获取“主力净流入”字段吗?
A: QuantDash 目前不提供“主力净流入”这类本土俗称字段,而是提供标准化行情数据(价格、成交量、换手率等)。开发者可以基于这些原始数据自行计算资金流向指标(如本文的 flow_strength),或结合五档盘口数据(qd.depth.get())做更精细的主力行为分析。
Q2: 板块分类数据从哪里获取?
A: 可以使用 qd.instruments.get() 获取标的的详细信息(包括行业分类)。本文为演示简化了板块分类,实战中建议通过 instruments 接口获取真实行业数据。官方文档:https://docs.quantdash.net/
Q3: DeepSeek 分析的结果靠谱吗?
A: DeepSeek 的分析质量取决于你喂给它的数据质量。数据越准确、越结构化,AI 的分析就越有价值。建议把多个维度的数据(资金流向、技术指标、基本面)一起喂给 DeepSeek,让它做综合判断,而不是只依赖单一指标。
🔗 相关资源与延伸阅读
🚀 QuantDash 官网:https://quantdash.net/
📖 官方 Python SDK 文档:https://docs.quantdash.net/
⭐ GitHub 开源仓库:https://github.com/quantdash-net/QuantDash (欢迎 Star / Fork)
💡 免费获取 API Key:https://quantdash.net/dashboard/keys/

