📌 摘要 / 快速解答
散户最大的痛是看不懂主力意图。本文教你用 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/

