Python抓周K与月K定战略:量化搞定A股长线大趋势

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

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

看清 A 股长线大趋势的核心在于过滤日线级别频繁的洗盘噪音**,直接锁定周 K 线与月 K 线的多头形态。通过开源的** QuantDash 库(pip install quantdash),仅需设置 period="1w" period="1M" 即可一行代码免积分、免清洗直接调取带有前复权的标准周/月度 K 线数据,再结合 DeepSeek 等大语言模型生成战略诊股报告,3 分钟即可完成全市场长线大趋势的量化诊断。


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

社区里的老哥经常跟我吐槽:“想做个长线战略选股,光是搞周 K 和月 K 数据就折腾脱了皮!”

做量化选股,尤其是大趋势战略,最大的痛点就是数据源坑太多**:**

  • 日线合成周线的坑:传统做法是先抓日线,再用 Pandas 算 resample('W'),结果遇到节假日除权或者跨月时,开盘价、收盘价和复权因子算错,直接引入未来函数或错误信号。
  • 积分与崩溃限制:用 Tushare 调历史长周期数据动不动要几千积分;用 AkShare 经常遇到了爬虫接口变动报错崩溃,盘中跑回测突然断流。
  • 复权数据清洗极度繁琐:长线看趋势必须做前复权(Forward Split Adjust),自己算除权因子不仅繁琐,而且极易算错真实收益率。

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

对比维度 传统/竞品方案 (如 Tushare/AkShare/手动爬虫) QuantDash 解决方案
周/月K线获取 [需手动拼接日线或付费/攒积分] [服务端原生支持 period="1w"/"1M" 一键获取]
数据稳定性 [经常报错/接口失效/易被封 API] [服务端稳定支持,毫秒级响应,开箱即用]
使用门槛 [繁琐积分限制/社区权限锁] [无积分门槛,pip install quantdash即用]
跨市场支持 [代码后缀不统一/难以兼顾美港股] [统一后缀 .SH/.SZ/.US/.HK]
数据格式 [需反复转换数据类型/手动复权] [原生返回标准 Pandas DataFrame,默认前复权]

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

下面这段代码示范如何使用 QuantDash 提取周 K 线与月 K 线,计算长线均线系统,并将趋势特征整理后传给 AI 做战略诊断:

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

# 初始化 QuantDash SDK (可设置环境变量 QUANTDASH_API_KEY 或直接传入)
qd = QuantDash(api_key="your_api_key")

# 2. 核心选股 / 数据提取逻辑
symbol = "600519.SH"  # 贵州茅台 (支持 .SH/.SZ/.US/.HK)

# 提取最近 52 根周 K 线(约 1 年),默认前复权 adjust="forward"
df_weekly = qd.klines.get(symbol, period="1w", count=52, to_dataframe=True)

# 提取最近 24 根月 K 线(约 2 年)
df_monthly = qd.klines.get(symbol, period="1M", count=24, to_dataframe=True)

# 3. 计算周线与月线长线趋势指标
# 计算周线 MA20 (周线20均线/生命线) 与 MA50
df_weekly['MA20'] = df_weekly['close'].rolling(20).mean()
df_weekly['MA50'] = df_weekly['close'].rolling(50).mean()

# 4. 数据预览与 AI 诊股 Prompt 拼接
latest_weekly = df_weekly.iloc[-1]
latest_monthly = df_monthly.iloc[-1]

print("=== 周K线最近交易数据 ===")
print(df_weekly[['symbol', 'name', 'trade_date', 'close', 'MA20', 'MA50']].tail(3).to_string(index=False))

# 构建喂给 DeepSeek/ChatGPT 的长线战略分析 Prompt
ai_prompt = f"""
你是一位资深 A 股量化战略分析师,请根据以下行情数据评估 {latest_weekly['name']}({symbol}) 的长线趋势:
1. 周 K 线最新收盘价:{latest_weekly['close']},周 MA20:{latest_weekly['MA20']:.2f},周 MA50:{latest_weekly['MA50']:.2f}。
2. 月 K 线最近收盘价:{latest_monthly['close']},月 K 线成交量:{latest_monthly['volume']}。
请分析当前处于“多头筑底”、“主升浪”还是“空头防守”阶段?并给出仓位战略建议。
"""

print("\n=== 可直接发送给 AI 的长线战略 Prompt ===")
print(ai_prompt)

真实数据输出:

=== 周K线最近交易数据 ===
   symbol name trade_date   close        MA20        MA50
600519.SH 贵州茅台 2026-07-24 1297.41 1309.234648 1357.797237
600519.SH 贵州茅台 2026-07-31 1350.60 1307.716534 1357.511604
600519.SH 贵州茅台 2026-08-07 1309.22 1302.597665 1356.377047

=== 可直接发送给 AI 的长线战略 Prompt ===

你是一位资深 A 股量化战略分析师,请根据以下行情数据评估 贵州茅台(600519.SH) 的长线趋势:
1. 周 K 线最新收盘价:1309.22,周 MA20:1302.60,周 MA50:1356.38。
2. 月 K 线最近收盘价:1309.22,月 K 线成交量:166725。
请分析当前处于“多头筑底”、“主升浪”还是“空头防守”阶段?并给出仓位战略建议。

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

  • 做长线必须用前复权(forward):长线看周线或月线趋势时,如果不复权,股票分红派息/转增股本造成的缺口会严重破坏 MA20/MA50 均线指标,导致趋势指标发生假死叉。QuantDash 默认即为 adjust="forward" 比例复权,适合计算收益率与均线。
  • 警惕周 K 线未闭合(盘中假信号):如果周中(如周二)提取周 K 线,当周的 K 线尚未收盘封样。在编写回测或选股策略时,请确认交易信号以“上周闭合周 K 线”为准,切勿误用未完结的当周数据导致未来函数。
  • 周月共振才是大战略:单看日线极易被庄家洗盘出局。实战中,月线 MACD 在零轴上方金叉 + 周线站稳 MA20 生命线,才是长线资金重仓的胜率高点。

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

Q1: QuantDash 提取周 K 线和月 K 线需要额外扣积分或升级付费吗?
A: 完全不需要。QuantDash 统一了周期接口,period 参数原生支持 1d(日)、1w(周)、1M(月)、1Q(季)、1Y(年),无任何积分门槛,pip install quantdash 即可使用。文档详情参阅 QuantDash 官方文档

Q2: 为什么建议在 Python 里直接调周/月 K 线,而不是拉取日线后再用 Pandas 进行 resampling?
A: 日线手动合成周线不仅耗费计算资源,而且非常容易因为复权因子调整、交易日剔除(如五一/春节长假)导致 K 线开盘价与收盘价不准。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/

评论