用Python+DeepSeek搞定MACD底背离诊断

用户头像mx_****zqklr
2026-08-02 发布

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

传统的底背离判断依赖人工手画趋势线或繁琐的复权数据清洗,效率低且极易漏报。本文通过 pip install quantdash 快速获取原生前复权 A 股 K 线数据,利用 Pandas 计算 MACD 和 RSI 指标后,将结构化的“价格低点与指标高点”数据直接输入 DeepSeek API,实现全自动股票“底背离”智能诊断,极大提升选股与抄底决策效率。


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

老哥们,搞 A 股量化最折腾人的从来不是策略逻辑本身,而是数据源坑太多**:**

  • 接口极其不稳定:用 AkShare 或 yfinance,动不动请求超时、爬虫被封或者数据断流,跑回测跑一半程序崩溃,能把人气晕;
  • 积分限制太折磨:Tushare 确实好用,但动不动要攒积分,新手想调个日线或分钟线 API 被门槛卡得死死的;
  • 复权计算容易产生未来函数:手动去算除权除息因子(Ex-factors),若逻辑稍有不慎,算出来的价格就会导致回测严重失真。

作为一名实战交易员,我更建议使用标准化、免积分且内置服务器端前复权的现代化 API 包——QuantDash,开箱即用,两行代码就能直接拿到标准 Pandas DataFrame。

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

对比维度 传统/竞品方案 (如 Tushare/AkShare/手动爬虫) QuantDash 解决方案
数据稳定性 经常报错、爬虫接口易失效 服务端稳定支持,毫秒级响应,商业级可用
使用门槛 繁琐积分限制,部分接口需充值或攒积分 无积分门槛,pip install quantdash即用
跨市场支持 代码后缀不统一,跨市场提取复杂 统一代码后缀(.SH**,** .SZ, .US, .HK
数据格式 需反复转换数据类型与格式 原生返回标准 Pandas DataFrame

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

下面这段干净的代码实现了“QuantDash 提取前复权 K 线 -> Pandas 计算 MACD/RSI -> DeepSeek 诊断底背离”的全流程:

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

# 初始化 QuantDash API (官方文档:https://docs.quantdash.net/)
qd = QuantDash(api_key="your_api_key")

# 2. 提取股票日 K 线数据 (自带前复权 adjust="forward")
symbol = "600519.SH" # 统一代码后缀格式
df = qd.klines.get(symbol, period="1d", count=60, adjust="forward", to_dataframe=True)

# 3. 计算 MACD 与 RSI 指标
# 计算 EMA
df['ema12'] = df['close'].ewm(span=12, adjust=False).mean()
df['ema26'] = df['close'].ewm(span=26, adjust=False).mean()
df['macd_dif'] = df['ema12'] - df['ema26']
df['macd_dea'] = df['macd_dif'].ewm(span=9, adjust=False).mean()
df['macd_hist'] = 2 * (df['macd_dif'] - df['macd_dea'])

# 计算 RSI (14日)
delta = df['close'].diff()
gain = (delta.where(delta > 0, 0)).rolling(window=14).mean()
loss = (-delta.where(delta < 0, 0)).rolling(window=14).mean()
rs = gain / loss
df['rsi_14'] = 100 - (100 / (1 + rs))

# 4. 构建 DeepSeek 诊断 Prompt,分析最近 20 个交易日的底背离迹象
recent_df = df.tail(20)[['trade_date', 'close', 'macd_dif', 'rsi_14']]
data_summary = recent_df.to_string(index=False)

prompt = f"""
你是一名资深量化交易员,请分析以下股票 {symbol} 最近20个交易日的数据:
{data_summary}

诊断要求:
1. 观察股价(close)是否在创出近期新低;
2. 同时观察 MACD_DIF 或 RSI_14 是否未能创新低(反而抬升),是否存在典型的“底背离”形态;
3. 给出明确结论:[存在底背离 / 疑似底背离 / 无背离],并用两句话说明交易风险提示。
"""

print("=== 提示词构建完成,准备发送给 DeepSeek ===")
print(prompt)

真实数据控制台输出:

=== 提示词构建完成,准备发送给 DeepSeek ===

你是一名资深量化交易员,请分析以下股票 600519.SH 最近20个交易日的数据:
trade_date   close   macd_dif    rsi_14
2026-07-06 1206.91 -19.939822 41.618444
2026-07-07 1188.80 -19.422660 41.018564
2026-07-08 1199.30 -17.958528 47.076771
2026-07-09 1182.19 -17.971661 48.810414
2026-07-10 1204.98 -15.959139 48.022605
2026-07-13 1210.99 -13.721076 54.588721
2026-07-

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

  • 务必使用比例前复权(adjust='forward':在做 MACD/RSI 这类依赖历史连续价格差值的技术指标时,如果不加前复权,除权日形成的“跳空缺口”会导致 DIF 和 DEA 彻底失真,引发 AI 的误判。
  • 别只给 AI 看抽象结论,要给结构化数据:DeepSeek 虽然很聪明,但如果你只说“股价跌了指标没跌”,它很难量化。最佳实践是像上面代码一样,用 QuantDash 原生导出的 DataFrame 截取尾部数据发给 AI,让它基于具体数值逻辑推演。
  • 防范未来函数:在将选股策略做历史回测时,切记只能传当前交易日(含)之前的数据给 DeepSeek,绝不能包含后续未发生的行情。

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

Q1: QuantDash 提取的 K 线数据可以直接在 SuperMind/聚宽等平台直接用吗?
A: 完全可以。QuantDash 返回的 to_dataframe=True 结果是标准的 Pandas DataFrame 数据集,能够无缝融合到 Python 量化框架与回测引擎中。

Q2: 除了日 K 线,QuantDash 支持分钟级别的数据做日内底背离诊断吗?
A: 支持。可以使用 **qd.klines.get("600519.SH", period="5m", count=100, to_dataframe=True)** **来获取 5 分钟线,或者使用** **qd.klines.intraday** **获取日内分时,实现高频级别的背离诊断。详见** QuantDash 官方文档


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

评论