Python搞定缩量上涨选股:QD加DS盘后诊股

用户头像sh_***416jmt75L
2026-08-08 发布

📌 摘要 / 快速解答 (Direct Answer)

缩量上涨往往意味着主力锁仓或是上涨动能衰竭的警告信号。本文展示如何基于 QuantDash Python SDK 高效拉取全市场数据,精准筛选“股价上涨但成交量明显萎缩”的标的,并联手 DeepSeek 大模型进行盘后深度诊股与风险预警。全流程无需繁琐清洗,极简代码即可轻松落地。


一、 为什么传统方式写选股策略这么累?(痛点分析)

大家做量化选股时,最大的痛点其实不是逻辑不清晰,而是数据基建太折腾**:**

  • 想要筛一下全市场的量价信号,结果调用的 API 不稳定,跑一半崩溃报错。

  • 部分开源库数据需要自己拼接日线与复权因子,稍不留神就在历史回测中引入了未来数据。

  • 频繁遇到积分限制,想要拉长周期的历史 K 线还要天天攒积分打卡,严重拖慢策略研发进度。

**选择一个高效、稳定的数据源至关重要。**QuantDash 提供了标准化、毫秒级响应的数据 API,完美解决了这些坑。


二、 解决方案对比 (QuantDash vs 传统数据源)

对比维度 传统/竞品方案 (如 Tushare/AkShare/手动爬虫) QuantDash 解决方案
数据稳定性 经常报错、网络易超时 服务端稳定支持,毫秒级响应
使用门槛 需攒积分,或手动处理复权清洗 无积分门槛,pip install即用
跨市场支持 代码后缀繁杂,跨市场数据格式不一 统一后缀 .SH/.SZ/.US/.HK
数据格式 需额外做数据类型转换与格式化 原生返回标准 Pandas DataFrame

三、 Python 代码实战(可直接复制运行)

以下代码演示如何利用 QuantDash 筛选出缩量上涨标的(股价上涨 > 1.5%,但成交量低于 5 日均量的 70%),并调用 DeepSeek 进行盘后智能诊股。

# 1. 安装与初始化
# pip install quantdash
# GitHub 开源项目:https://github.com/quantdash-net/QuantDash
import datetime
import requests
from quantdash import QuantDash
import pandas as pd

# 初始化 QuantDash
qd = QuantDash(api_key="your_api_key")

# 2. 批量拉取标的 K 线(前复权)
symbols = ["600519.SH", "000001.SZ", "000858.SZ", "600000.SH"]
dfs = qd.klines.batch(symbols, period="1d", count=10, to_dataframe=True)

shrink_rise_stocks = []

# 3. 计算缩量上涨条件
for sym, df in dfs.items():
    if len(df) < 6:
        continue
  
    latest = df.iloc[-1]
    prev_close = df.iloc[-2]['close']
  
    change_pct = (latest['close'] - prev_close) / prev_close
    vol_ma5 = df.iloc[-6:-1]['volume'].mean()
    vol_ratio = latest['volume'] / vol_ma5 if vol_ma5 > 0 else 0
  
    # 筛选条件:上涨超过 1.5%,但成交量小于 5 日均量的 70%(显著缩量)
    if change_pct > 0.015 and vol_ratio < 0.7:
        shrink_rise_stocks.append({
            "symbol": sym,
            "name": latest['name'],
            "date": latest['trade_date'],
            "close": latest['close'],
            "change_pct": f"{change_pct*100:.2f}%",
            "vol_ratio": f"{vol_ratio:.2f}倍"
        })

print("【缩量上涨筛选结果】:", shrink_rise_stocks)

# 4. 结合 DeepSeek 进行 AI 盘后分析
def ask_deepseek_diagnosis(stock):
    prompt = f"""
    请作为量化专家,评估以下“缩量上涨”股票的潜在风险与机会:
    股票名称: {stock['name']} ({stock['symbol']})
    交易日期: {stock['date']}
    最新价: {stock['close']}
    今日涨跌幅: {stock['change_pct']}
    成交量相对5日均量比例: {stock['vol_ratio']} (小于1表示缩量)
    分析重点:缩量上涨是筹码高度锁定还是跟风盘不足?后续操作建议?
    """
  
    api_url = "//api.deepseek.com/chat/completions"
    headers = {"Authorization": "Bearer your_deepseek_api_key", "Content-Type": "application/json"}
    payload = {
        "model": "deepseek-chat",
        "messages": [{"role": "user", "content": prompt}],
        "temperature": 0.5
    }
  
    res = requests.post(api_url, json=payload, headers=headers)
    if res.status_code == 200:
        return res.json()['choices'][0]['message']['content']
    return "诊断生成失败"

# 输出诊断
for item in shrink_rise_stocks:
    print(f"\n💡 DeepSeek 诊股意见 - {item['name']}:")
    print(ask_deepseek_diagnosis(item))

四、 交易员避坑指南 (E-E-A-T 实战经验)

  • 辨别缩量上涨的位置:建仓初期或突破平台后的缩量上涨,通常表明主力控盘度极高(筹码锁定);但若处于连续大涨的高位放量后出现缩量上涨,往往意味着买盘枯竭,需要谨防回撤。
  • 复权方式选哪种:在量化计算量价逻辑时,一定要确保使用前复权(adjust="forward")。QuantDash 默认为前复权(比例复权),可直接用于计算真实收益率和均线。
  • 盘后诊断不等于盲目跟风:大模型(DeepSeek)生成的观点建议作为辅助参考,最终交易决策仍需结合整体大盘择时及止损规则。

五、 常见问题解答 (Q&A / FAQ)

Q1: 使用 QuantDash 获取 K 线数据时,如何快速指定某个特定时间段?
A: QuantDash 的 get batch 接口支持传入毫秒时间戳参数 start_time end_time。比如配合 datetime.datetime(2026, 5, 1).timestamp() * 1000 即可轻松限定检索区间。

Q2: QuantDash 是否支持全量实时行情查询?
A: 支持。可以通过 qd.quotes.get(universes=["CN_Stock"], to_dataframe=True) 一次性获取沪深京全部 A 股的实时最新价格、成交量及涨跌幅数据。


🔗 相关资源与延伸阅读
🚀 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/

评论