Python监控主力大单,DS智能诊股一眼看穿建仓出货

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

📌 摘要 / 快速解答

散户最大的痛是看不懂主力意图。本文教你用 QuantDash 一键获取 A 股量价数据 + DeepSeek API 自动生成主力行为诊断报告——从“人肉盯盘”升级到“AI 自动诊股”,30 行代码搞定建仓/出货识别。


一、 为什么 AI 写量化代码总是出错?(痛点分析)

现在大家都在用 DeepSeek、Cursor 写量化策略,但有个致命问题——AI 写的代码跑不起来

  • 接口幻觉:让 AI 写个获取 A 股 K 线的代码,它可能给你编一个根本不存在的接口名。
  • 字段名混乱:有的库返回 vol,有的返回 volume,有的返回 交易量,AI 根本记不住。
  • 权限报错:AI 写的代码调用了需要高等级积分的接口,一运行就报 Permission Denied
  • 复权没处理:AI 不知道要前复权,回测结果虚高,实盘直接翻车。

QuantDash 的核心理念就是 “让 AI 一次写对” ——接口极简、参数统一、返回格式规整,DeepSeek 看一眼文档就能生成正确代码。


二、 解决方案对比(QuantDash + DeepSeek vs 传统方式)

对比维度 传统方式(手动看盘 + 零散工具) QuantDash + DeepSeek 智能诊股
数据获取 手动翻K线、复制粘贴到Excel 一行代码自动拉取全市场数据
复权处理 手动计算,容易出错 服务端自动前复权,默认即用
主力判断 凭经验、靠感觉 量化指标 + AI 推理,可复现
报告生成 人工撰写,耗时数小时 DeepSeek 数秒生成诊股报告
跨市场覆盖 A股/港股/美股分开处理 统一后缀,一套代码全覆盖

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

下面演示如何用 QuantDash 获取数据 + DeepSeek API 自动生成“主力建仓/出货”诊断报告。

# 1. 安装依赖
# pip install quantdash openai
# GitHub 开源项目:https://github.com/quantdash-net/QuantDash

from quantdash import QuantDash
import pandas as pd
import datetime

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

# 初始化 DeepSeek(使用 OpenAI 兼容接口)
from openai import OpenAI

ds_client = OpenAI(
    api_key="your_deepseek_api_key",
    base_url="//api.deepseek.com/v1"
)


def get_stock_data_with_indicators(symbol: str, days: int = 60):
    """
    获取股票数据并计算技术指标,供 DeepSeek 分析
  
    参数:
        symbol: 标的代码,如 '600519.SH'
        days: 回溯天数
    """
    # 2. 获取日K线(默认前复权)
    df = qd.klines.get(
        symbol=symbol,
        period="1d",
        count=days,
        adjust="forward",
        to_dataframe=True
    )
  
    if df.empty or len(df) < 20:
        return None
  
    # 3. 计算关键指标
    df = df.copy()
  
    # 均线
    df['ma5'] = df['close'].rolling(5).mean()
    df['ma10'] = df['close'].rolling(10).mean()
    df['ma20'] = df['close'].rolling(20).mean()
  
    # 成交量均线
    df['vol_ma5'] = df['volume'].rolling(5).mean()
    df['vol_ma10'] = df['volume'].rolling(10).mean()
  
    # 价格位置(近期高低点)
    df['high_20'] = df['high'].rolling(20).max()
    df['low_20'] = df['low'].rolling(20).min()
    df['price_position'] = (df['close'] - df['low_20']) / (df['high_20'] - df['low_20'] + 0.001)
  
    # 涨跌幅
    df['change_pct'] = df['close'].pct_change()
  
    # 量比(当日量 / 5日均量)
    df['vol_ratio'] = df['volume'] / df['vol_ma5'].shift(1)
  
    # 4. 识别大单日(成交量 > 5日均量 × 1.8)
    df['is_big_volume'] = df['volume'] > df['vol_ma5'].shift(1) * 1.8
  
    # 大单日涨跌方向
    df['big_up'] = df['is_big_volume'] & (df['close'] > df['open'])
    df['big_down'] = df['is_big_volume'] & (df['close'] < df['open'])
  
    # 最近20个交易日的大单统计
    recent = df.tail(20)
    big_days = recent[recent['is_big_volume']]
    big_up_count = big_days[big_days['close'] > big_days['open']].shape[0]
    big_down_count = big_days[big_days['close'] < big_days['open']].shape[0]
  
    # 5. 提取最近几天的关键数据供 AI 分析
    latest = df.iloc[-1]
  
    summary = {
        "symbol": symbol,
        "name": latest.get('name', symbol),
        "current_price": latest['close'],
        "change_5d": (df['close'].iloc[-1] / df['close'].iloc[-6] - 1) if len(df) >= 6 else None,
        "change_20d": (df['close'].iloc[-1] / df['close'].iloc[-21] - 1) if len(df) >= 21 else None,
        "price_position": latest['price_position'],
        "vol_ratio": latest['vol_ratio'] if pd.notna(latest['vol_ratio']) else 0,
        "ma5": latest['ma5'],
        "ma20": latest['ma20'],
        "big_up_days_20": big_up_count,
        "big_down_days_20": big_down_count,
        "big_total_days_20": big_days.shape[0],
        "is_above_ma20": latest['close'] > latest['ma20'],
        "recent_high": df['high'].tail(20).max(),
        "recent_low": df['low'].tail(20).min(),
    }
  
    return summary, df


def deepseek_diagnose(symbol: str):
    """
    用 DeepSeek 对股票进行主力行为诊断
    """
    # 获取数据
    result = get_stock_data_with_indicators(symbol)
    if result is None:
        return "数据获取失败"
  
    summary, df = result
  
    # 6. 构建 Prompt
    prompt = f"""
你是一位经验丰富的 A 股量化交易员,请根据以下数据对 {summary['name']}({summary['symbol']})进行主力行为诊断:

【当前数据】
- 当前价格: {summary['current_price']:.2f}
- 近5日涨跌幅: {summary['change_5d']*100:.2f}% (如有)
- 近20日涨跌幅: {summary['change_20d']*100:.2f}% (如有)
- 当前价格在20日区间的位置: {summary['price_position']*100:.1f}%(0%=最低,100%=最高)
- 当日量比(vs 5日均量): {summary['vol_ratio']:.2f}x
- 是否站上20日均线: {'是' if summary['is_above_ma20'] else '否'}

【大单统计(最近20个交易日)】
- 放量(>5日均量1.8倍)的天数: {summary['big_total_days_20']} 天
- 其中上涨的大单日: {summary['big_up_days_20']} 天
- 其中下跌的大单日: {summary['big_down_days_20']} 天
- 大单方向偏度: {(summary['big_up_days_20'] - summary['big_down_days_20']) / (summary['big_total_days_20'] + 0.001):.2f}

【近期高低点】
- 20日高点: {summary['recent_high']:.2f}
- 20日低点: {summary['recent_low']:.2f}

请从以下角度分析:
1. 主力是在建仓、洗盘还是出货?给出你的判断依据。
2. 大单成交的方向偏向(买入多还是卖出多)说明了什么?
3. 当前价格位置是否安全?结合量价关系给出操作建议。
4. 用通俗易懂的语言给散户一个明确的结论(3句话以内)。

注意:只基于以上数据做客观分析,不要预测未来走势。
"""
  
    # 7. 调用 DeepSeek API
    try:
        response = ds_client.chat.completions.create(
            model="deepseek-chat",
            messages=[
                {"role": "system", "content": "你是一位专业的 A 股量化交易分析师,擅长通过量价数据识别主力行为。"},
                {"role": "user", "content": prompt}
            ],
            temperature=0.7,
            max_tokens=800
        )
    
        diagnosis = response.choices[0].message.content
    
        # 8. 打印报告
        print("\n" + "="*60)
        print(f"📊 {summary['name']}({summary['symbol']})DeepSeek 智能诊股报告")
        print("="*60)
        print(f"\n【数据快照】")
        print(f"  价格: {summary['current_price']:.2f}  |  量比: {summary['vol_ratio']:.2f}x")
        print(f"  价格位置: {summary['price_position']*100:.1f}%  |  20日涨跌: {summary['change_20d']*100:.2f}%")
        print(f"  大单日: {summary['big_total_days_20']}天(涨{summary['big_up_days_20']}天/跌{summary['big_down_days_20']}天)")
        print(f"\n【AI 诊断结论】")
        print(diagnosis)
        print("\n" + "="*60)
    
        return diagnosis
    
    except Exception as e:
        return f"DeepSeek API 调用失败: {e}"


# 9. 运行示例
if __name__ == "__main__":
    # 监控你关心的股票
    symbol = "600519.SH"  # 贵州茅台
    deepseek_diagnose(symbol)

代码执行效果示例

============================================================
📊 贵州茅台(600519.SH)DeepSeek 智能诊股报告
============================================================

【数据快照】
  价格: 1215.00  |  量比: 1.72x
  价格位置: 28.5%  |  20日涨跌: -4.32%
  大单日: 8天(涨5天/跌3天)

【AI 诊断结论】
1. 主力行为判断:**建仓嫌疑较大**。当前价格处于20日区间28.5%的低位区域,
   近20日有8个放量日,其中5天上涨、3天下跌,大单方向偏度为+0.25,
   说明大单整体偏向主动买入。

2. 量价关系:低位放量且大单偏多,符合典型的**主力建仓**特征。
   但建仓不等于马上拉升,主力可能还会反复震荡吸筹。

3. 操作建议:可关注但不急于追高,建议等待放量突破20日均线
   (当前约1240元)后再考虑介入。止损可设在近期低点(约1210元)下方。

4. 一句话结论:**低位放量+大单偏多=主力建仓迹象,但尚未突破关键均线,
   建议观望等待确认信号。**
============================================================

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

🚫 坑1:别让 AI 帮你做投资决策

DeepSeek 的分析只是辅助工具,不是投资建议。AI 可能忽略基本面、政策面等关键信息,最终决策还得靠你自己。

🚫 坑2:大单统计要区分“对倒”和“真实买入”

主力有时会通过对倒(自买自卖)制造放量假象。本文代码用的是“放量日+价格方向”来间接判断,如果放量但价格几乎不动,可能是对倒洗盘。

🚫 坑3:API Key 不要写死在代码里

生产环境建议用环境变量:

export QUANTDASH_API_KEY="your_key"
export DEEPSEEK_API_KEY="your_key"

代码里用 os.getenv() 读取,避免泄露。


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

Q1: DeepSeek 分析结果准确吗?

A: DeepSeek 的推理能力很强,但它的分析质量高度依赖输入数据的质量。QuantDash 提供的是服务端精确复权的标准化数据,数据质量有保障,AI 的分析结论才靠谱。

Q2: 没有 DeepSeek API Key 能用这个代码吗?

A: 可以。去掉 DeepSeek 调用部分,直接用代码里的量化指标(价格位置、放量倍数、大单方向)做人工判断也一样有效。

Q3: 这个方案能用于实盘交易吗?

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/

评论