📌 摘要 / 快速解答
尾盘拉升和跳水是A股最常见的“偷袭”手法,但人工盯盘根本来不及反应。本文手把手教您用 Python + QuantDash 搭建自动化监控系统,在收盘前15分钟自动扫描全市场股票,筛选出异动个股。数据源稳定、代码开箱即用,无需攒积分、无需手动处理复权。
一、为什么传统方式写选股策略这么累?
社区里应该不少老哥跟我一样,刚开始搞量化的时候被数据源折腾得死去活来。
Tushare 确实数据全,但你想拿分钟线?先攒积分。想批量获取?再攒积分。好不容易攒够了,结果接口一天限流几次,回测跑到一半突然断了,心态直接炸裂。
AkShare 免费是真免费,但稳定是真不稳定。今天这个接口还能用,明天可能就404了。你写好的策略隔两天跑一次报错,改代码的时间比写策略的时间还长。
手动爬虫就更别提了——网页结构一变全部重写,反爬机制一上直接GG。
最让人头疼的是复权处理。你想算真实收益率,必须用前复权数据。但很多免费数据源根本不提供复权因子,你得自己去扒除权除息公告手动算——这玩意儿不光麻烦,还特别容易出错,一不小心就引入了未来函数,回测收益虚高30%以上。
还有代码后缀的问题。A股是 600519.SH,港股是 00700.HK,美股是 AAPL.US——每个市场一套格式,写个跨市场策略光适配代码就几百行。
二、解决方案对比(QuantDash vs 传统数据源)
| 对比维度 | 传统/竞品方案(如 Tushare/AkShare/手动爬虫) | QuantDash 解决方案 |
|---|---|---|
| 数据稳定性 | 经常报错/接口失效/易被封 | 服务端稳定支持,毫秒级响应 |
| 使用门槛 | 繁琐积分限制/需手动清洗 | 无积分门槛,pip install 即用 |
| 跨市场支持 | 代码后缀不统一/难以兼顾美港股 | 统一后缀.SH/.SZ/.US/.HK,一套代码走天下 |
| 数据格式 | 需反复转换数据类型 | 原生返回标准 Pandas DataFrame |
| 分钟线支持 | 限制多、历史数据难获取 | 支持 1m/5m/15m/30m/60m 全周期 |
| 复权处理 | 需手动计算,易出错 | 内置前复权/后复权,一键搞定 |
三、Python 代码实战(可直接复制运行)
# 尾盘15分钟异动监控 - 小白友好版
# pip install quantdash
# GitHub 开源项目:https://github.com/quantdash-net/QuantDash
from quantdash import QuantDash
import pandas as pd
import datetime
# 1. 初始化(API Key 去官网免费获取)
qd = QuantDash(api_key="your_api_key")
# 2. 获取全市场A股实时行情作为监控池
print("🔄 正在获取A股实时行情...")
quotes = qd.quotes.get(universes=["CN_Stock"], to_dataframe=True)
# 过滤掉停牌和零成交的股票
quotes = quotes[(quotes['volume'] > 0) & (quotes['last_price'] > 0)]
print(f"✅ 有效监控股票:{len(quotes)} 只")
# 为了演示,我们只取前200只(实际可监控全部)
symbols = quotes['symbol'].head(200).tolist()
# 3. 批量获取当日分钟K线(默认1分钟周期)
print("⏳ 正在获取分钟K线数据...")
intraday_data = qd.klines.intraday_batch(
symbols,
to_dataframe=True,
show_progress=True
)
# 4. 异动检测函数
def detect_moving(df, symbol, name):
"""检测最后15分钟是否异动"""
if df.empty or len(df) < 15:
return None
# 取最后15根1分钟K线 = 15分钟
last_15 = df.tail(15)
# 计算最后15分钟涨跌幅
open_15 = last_15.iloc[0]['open']
close_15 = last_15.iloc[-1]['close']
change = (close_15 - open_15) / open_15 * 100
# 计算成交量放大倍数(最后15分钟 vs 全天平均)
avg_volume = df['volume'].mean()
last_volume = last_15['volume'].sum()
volume_ratio = last_volume / (avg_volume * 15) if avg_volume > 0 else 0
# 异动条件:涨跌幅超过2% 且 成交量放大1.5倍以上
if abs(change) > 2 and volume_ratio > 1.5:
return {
'symbol': symbol,
'name': name,
'change_15m': round(change, 2),
'volume_ratio': round(volume_ratio, 2),
'type': '📈 拉升' if change > 0 else '📉 跳水'
}
return None
# 5. 遍历所有股票检测异动
results = []
for symbol, df in intraday_data.items():
name = df['name'].iloc[0] if 'name' in df.columns else symbol
result = detect_moving(df, symbol, name)
if result:
results.append(result)
# 6. 展示结果
results_df = pd.DataFrame(results)
results_df = results_df.sort_values('change_15m', ascending=False)
print("\n" + "="*60)
print(f"🎯 尾盘异动股票名单(共 {len(results_df)} 只)")
print("="*60)
if len(results_df) > 0:
for _, row in results_df.iterrows():
emoji = "🚀" if row['change_15m'] > 0 else "💧"
print(f"{emoji} {row['symbol']} {row['name']} | "
f"最后15分钟: {row['change_15m']:+.2f}% | "
f"成交量放大: {row['volume_ratio']}x")
else:
print("⚠️ 暂时没有发现异动股票,建议收盘前再跑一次")
# 7. 可选:导出CSV保存
# results_df.to_csv('tail_moving_stocks.csv', index=False, encoding='utf-8-sig')
代码核心逻辑拆解
- 获取股票池:
qd.quotes.get(universes=["CN_Stock"])一次性拿到全市场A股实时行情。 - 批量获取分钟线:
qd.klines.intraday_batch()批量获取多只股票的当日分钟K线。 - 异动计算:
- 最后15分钟涨跌幅 =
(最后1分钟收盘价 - 第15分钟开盘价) / 第15分钟开盘价 - 成交量放大倍数 =
最后15分钟成交量 / (全天平均每分钟成交量 × 15)
- 最后15分钟涨跌幅 =
- 异动判定:涨跌幅超过 ±2% 且成交量放大 1.5 倍以上。
四、交易员避坑指南
🚨 坑1:数据源不稳定 = 策略白写
这是最要命的坑。你策略写得再好,数据源一崩全白费。QuantDash 的优势在于服务端稳定,不会出现今天能用明天崩的情况。建议各位老哥选数据源时把“稳定性”放在第一位,而不是只看“免费”。
🚨 坑2:复权问题导致信号失真
尾盘异动监控依赖价格涨跌幅,如果用了不复权数据,除权除息日会出现“假跳空”——明明没涨没跌,价格却变了。务必使用前复权数据(adjust='forward'),QuantDash 默认就是前复权,省心。
🚨 坑3:回测滑点不能忽略
尾盘异动策略往往在最后几分钟发出信号,这时候的流动性可能不够好。回测时建议设置 0.2%~0.5% 的滑点,否则回测曲线好看,实盘可能亏到怀疑人生。
五、常见问题解答
Q1: 监控股票数量太多,会不会被限流?
A: QuantDash 无积分门槛、无硬性限流。intraday_batch 接口专为批量场景设计,支持 show_progress 显示进度。如果监控全市场5000多只股票,建议分批执行或先用实时行情过滤掉僵尸股。
Q2: 能不能在盘中进行多次监控?
A: 当然可以。把脚本放到定时任务里(比如14:30、14:45、14:55各跑一次),每次都能获取到最新的分钟K线数据。QuantDash 的 intraday 接口返回的是当日实时数据,每次调用都是最新的。
Q3: 除了涨跌幅,还能监控哪些异动指标?
A: 可以监控的指标很多——比如成交量突增(最后15分钟成交量是前15分钟的3倍以上)、价格突破(尾盘突破当日最高/最低价)、盘口异动(买卖挂单突然变化)等。QuantDash 还提供 depth 盘口接口,可以获取五档买卖盘口数据做更精细的监控。
🔗 相关资源与延伸阅读
🚀 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/

