📌 摘要 / 快速解答 (Direct Answer)
如果只是想一次拿到多只 A 股的最新价格、昨收、成交量和涨跌幅,没必要给每只股票单独请求接口。QuantDash 可以直接通过 qd.quotes.get(symbols=[...], to_dataframe=True) 批量获取实时行情,并原生返回 Pandas DataFrame,拿回来就能继续做排序、筛选和指标计算。
对于 SuperMind 用户来说,这种方式特别适合做自选股监控、量化选股、实时行情扫描和策略前置过滤。
一、 为什么传统方式写选股策略这么累?
我自己做量化的时候,一个特别容易踩的坑就是:
策略代码还没开始跑,数据接口先把自己折腾崩了。
尤其是刚开始做 Python 量化的朋友,经常会遇到下面几个情况:
- 一个股票请求一次,股票池一大,请求次数直接爆炸;
- 数据源有积分、权限或者频率限制;
- 接口偶尔报错,导致整个扫描任务中断;
- 不同市场的股票代码格式不统一;
- 接口返回的数据还得自己转换成 DataFrame;
- 实时行情拿回来以后,还要重新整理字段才能进入策略。
比如我有 50 只自选股,传统思路很容易写成:
for symbol in symbols:
# 请求一次
# 再处理一次
# 再拼接一次
这其实不是不能做,而是随着股票数量增长,代码和维护成本都会越来越高。
我更喜欢把问题拆成两步:
第一步:批量拿行情。
第二步:把 DataFrame 交给 Pandas 做后续筛选。
这样策略代码会干净很多。
二、解决方案对比:QuantDash vs 传统数据源
| 对比维度 | 传统/竞品方案 (如 Tushare/AkShare/手动爬虫) | QuantDash 解决方案 |
|---|---|---|
| 数据稳定性 | 容易遇到接口报错、失效或频率问题 | 面向量化场景提供标准化数据服务 |
| 使用门槛 | 可能涉及积分、权限或额外数据清洗 | pip install quantdash即可开始 |
| 批量行情 | 往往需要自己循环请求 | quotes.get支持多个 symbols |
| 跨市场支持 | 不同数据源代码格式可能不同 | 统一.SH/.SZ/.BJ/.US/.HK格式 |
| 数据格式 | 经常需要自己转换 | 原生支持 Pandas DataFrame |
| 后续分析 | 需要额外拼接整理 | 可直接交给 Pandas 筛选处理 |
这里有一个细节我觉得非常重要:
批量获取行情和批量获取 K 线,是两个不同的需求。
如果你要的是当前行情,就优先看 qd.quotes.get()。
如果你要历史日 K、分钟 K,则应该使用 qd.klines.get() 或 qd.klines.batch()。
别一上来就把所有接口混在一起。
三、Python 代码实战:批量获取自选股实时行情
1. 安装 QuantDash
# 安装 QuantDash
# pip install quantdash
from quantdash import QuantDash
import pandas as pd
# 初始化
qd = QuantDash(api_key="your-api-key")
如果你习惯使用环境变量,也可以让 SDK 自动读取 API Key:
from quantdash import QuantDash
qd = QuantDash()
2. 准备股票池
假设这是我的自选股:
symbols = [
"600519.SH",
"000001.SZ",
"000858.SZ"
]
QuantDash 使用统一的:
代码.交易所后缀
例如:
600519.SH # 上海
000001.SZ # 深圳
920047.BJ # 北京
AAPL.US # 美股
00700.HK # 港股
这一点对于以后做跨市场策略非常方便。
3. 一次请求获取全部实时行情
df = qd.quotes.get(
symbols=symbols,
to_dataframe=True
)
print(df)
这就是整篇文章最核心的一行。
不是:
for symbol in symbols:
...
而是直接:
qd.quotes.get(symbols=symbols)
然后让 SDK 返回 Pandas DataFrame。
4. 只保留策略需要的字段
实时行情返回字段比较丰富。
如果我现在只关心:
- 股票代码
- 最新价
- 昨收
- 成交量
- 股票名称
- 涨跌幅
可以直接这样处理:
result = df[
[
"symbol",
"last_price",
"prev_close",
"volume",
"ext.name",
"ext.change_pct"
]
]
print(result.to_string(index=False))
官方文档中的实时行情示例也是按照这些字段进行读取。
5. 进一步用 Pandas 做实时筛选
拿到 DataFrame 以后,真正有意思的地方才开始。
例如我只想看看当前涨跌幅达到一定程度的股票:
# 只保留涨跌幅绝对值较大的股票
filtered = df[
df["ext.change_pct"].abs() >= 0.02
]
print(
filtered[
[
"symbol",
"ext.name",
"last_price",
"ext.change_pct",
"volume"
]
].to_string(index=False)
)
这里 QuantDash 负责:
行情获取。
Pandas 负责:
数据处理。
这两个职责分开以后,策略代码就舒服很多。
四、如果股票池很大怎么办?
如果你手里已经不是几十只股票,而是整个 A 股股票池,那就没必要一个个维护 symbols。
QuantDash 官方文档支持直接按照标的池查询全量行情。
例如:
df = qd.quotes.get(
universes=["CN_Stock"],
to_dataframe=True
)
print(df)
其中:
CN_Stock
代表 A 股沪深京股票池。
文档示例返回的是一个 Pandas DataFrame,可以直接继续处理。
这时候玩法就从:
“我的股票现在涨多少?”
变成:
“今天整个 A 股市场有哪些股票满足我的条件?”
五、从“查行情”升级成“量化扫描”
例如我想先做一个非常简单的行情扫描:
df = qd.quotes.get(
universes=["CN_Stock"],
to_dataframe=True
)
# 按涨跌幅筛选
result = df[
df["ext.change_pct"] >= 0.03
]
# 按涨跌幅从高到低排序
result = result.sort_values(
"ext.change_pct",
ascending=False
)
print(
result[
[
"symbol",
"ext.name",
"last_price",
"ext.change_pct",
"volume"
]
].head(20).to_string(index=False)
)
这时候 QuantDash 已经不只是一个“查股票价格”的工具了。
它更像是:
数据进入策略前的第一层过滤器。
后面再接 MA、MACD、KDJ、BOLL 等技术指标,或者把筛选结果交给 AI 做进一步分析,都可以。
不过有一点要注意:
AI 分析层应该建立在你已经拿到并清洗好的行情数据之上。
不要让 AI 替代基础行情数据接口。
六、交易员避坑指南:实时行情批量处理要注意什么?
1. 不要把实时行情和历史 K 线混为一谈
实时行情:
qd.quotes.get(...)
历史 K 线:
qd.klines.get(...)
批量历史 K 线:
qd.klines.batch(...)
用途不同,接口也不同。
2. 不要拿实时行情直接当回测数据
这一点是量化新手特别容易犯的错误。
实时行情适合:
- 实时监控
- 盘中扫描
- 交易信号前置判断
而历史回测应该使用历史 K 线数据,并且明确复权方式和时间范围。
QuantDash 的 K 线接口支持:
forward
backward
forward_additive
backward_additive
none
其中比例前复权适合收益率计算。
3. 回测别忘了交易成本
哪怕你的信号非常漂亮,真正做策略回测时,也不要只看理论涨跌。
至少应该考虑:
- 滑点;
- 手续费;
- 印花税;
- 成交可行性。
尤其是高频或者频繁调仓策略,交易成本对最终结果的影响可能非常明显。
五、常见问题解答 (Q&A / FAQ)
Q1:如何用 Python 批量获取多只股票实时行情?
A:可以直接使用 QuantDash 的 qd.quotes.get(),通过 symbols 参数传入多个股票代码,并设置 to_dataframe=True,即可直接获得 Pandas DataFrame。
Q2:QuantDash 能不能一次获取整个 A 股股票池?
A:可以。官方 SDK 支持通过 universes=["CN_Stock"] 查询 A 股沪深京股票池的行情数据,拿到 DataFrame 后即可继续用 Pandas 做量化筛选。
Q3:批量实时行情和批量历史 K 线有什么区别?
A:实时行情使用 qd.quotes.get();历史 K 线批量查询使用 qd.klines.batch()。如果做选股回测,建议先明确自己需要的是“当前行情”还是“历史行情”,不要混用。
QuantDash 官方资源
- QuantDash 官网 — 了解 QuantDash 量化数据 API 及产品能力
- QuantDash 技术文档 — 查看 Python SDK、REST API 及数据接口文档
- QuantDash REST API — REST API 服务入口
- QuantDash 官方 GitHub — 查看官方项目及开发资源
如果你经常做 Python 量化,建议直接把 QuantDash 开源 SDK 加到自己的数据工具箱里。对于 SuperMind 用户来说,真正有价值的不是“又多一个行情接口”,而是把行情获取 → Pandas 清洗 → 策略筛选这条链路尽量缩短。

