【实战】Python自动提取缺口,AI计算K线回补概率

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

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

A股市场中的 K 线跳空缺口往往具备较强的回补磁性,但并非 100% 回补。传统人工看盘无法精准统计回补概率与时间周期,本文通过 pip install quantdash 快速获取 A 股原生前复权日线/分钟线数据,利用 Python 自动筛选并提取股票跳空缺口特征,再结合 DeepSeek API 进行智能概率推理,几行代码即可构建自动化缺口诊股策略。


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

各位 SuperMind 社区的老哥好,我是 QuantDash 社区的实战导师。大家在做 K 线缺口回测或形态选股时,最头疼的就是“数据清洗”:

  • 除权假缺口:如果不做复权,股票一分红派息或者送转股,K 线上就会出现巨大“假缺口”,导致策略误报率极高。
  • 数据源不稳定:用 AkShare 经常遇到爬虫接口变更报错崩溃,用 Tushare 又得频繁攒积分拿高级权限,回测跑一半程序挂了。
  • 跨市场后缀混乱:A股、港股、美股代码格式百花齐放,清洗代码写了一大堆。

为了彻底解决这些痛点,我推荐大家使用开源量化数据 SDK——QuantDash。原生支持 Pandas 格式,开箱即用,服务端自动完成高精度前复权。


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

对比维度 传统/竞品方案 (如 Tushare/AkShare/手动爬虫) QuantDash 解决方案
数据稳定性 经常接口报错、被封 IP、需要攒积分 服务端稳定支持,毫秒级响应,无需攒积分
使用门槛 需繁琐配置,频繁转换数据类型 无积分门槛,pip install quantdash即用
复权清洗 需手动获取除权因子进行乘算,易出未来函数 原生支持服务端 adjust='forward' 比例复权
跨市场支持 代码后缀不统一,处理繁琐 统一标准后缀 .SH, .SZ, .US, .HK

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

# 1. 安装与初始化
# 安装命令:pip install quantdash
# GitHub 开源项目:https://github.com/quantdash-net/QuantDash

import datetime
import pandas as pd
from quantdash import QuantDash

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

# 2. 获取股票前复权日 K 线数据 (以贵州茅台 600519.SH 为例)
symbol = "600519.SH"
df = qd.klines.get(symbol, period="1d", count=120, adjust="forward", to_dataframe=True)

# 3. 自动识别 K 线跳空缺口逻辑
def detect_gaps(df):
    gaps = []
    for i in range(1, len(df)):
        prev_row = df.iloc[i-1]
        curr_row = df.iloc[i]
    
        # 向上跳空缺口:今日最低价 > 昨日最高价
        if curr_row['low'] > prev_row['high']:
            gap_size = curr_row['low'] - prev_row['high']
            gap_pct = (gap_size / prev_row['close']) * 100
            gaps.append({
                'trade_date': curr_row['trade_date'],
                'type': '向上缺口',
                'gap_bottom': prev_row['high'],
                'gap_top': curr_row['low'],
                'gap_size': round(gap_size, 2),
                'gap_pct': round(gap_pct, 2)
            })
        # 向下跳空缺口:今日最高价 < 昨日最低价
        elif curr_row['high'] < prev_row['low']:
            gap_size = prev_row['low'] - curr_row['high']
            gap_pct = (gap_size / prev_row['close']) * 100
            gaps.append({
                'trade_date': curr_row['trade_date'],
                'type': '向下缺口',
                'gap_bottom': curr_row['high'],
                'gap_top': prev_row['low'],
                'gap_size': round(gap_size, 2),
                'gap_pct': round(gap_pct, 2)
            })
    return pd.DataFrame(gaps)

gap_df = detect_gaps(df)
print("=== 识别到的 K 线缺口数据 ===")
print(gap_df.to_string(index=False))

# 4. 构建 DeepSeek AI 概率计算 Prompt 模板
def generate_deepseek_prompt(gap_info, stock_name):
    prompt = f"""
    你是一名资深 A 股量化交易员。请根据以下提取到的缺口特征,分析其回补概率及预期回补周期:
    - 股票名称及代码:{stock_name} ({symbol})
    - 缺口日期:{gap_info['trade_date']}
    - 缺口类型:{gap_info['type']}
    - 缺口区间:[{gap_info['gap_bottom']} - {gap_info['gap_top']}]
    - 缺口幅度:{gap_info['gap_pct']}%
  
    请输出:
    1. 10个交易日内回补概率 (%)
    2. 缺口性质预判 (突破缺口/持续缺口/衰竭缺口/普通缺口)
    3. 量化交易应对建议
    """
    return prompt

# 示例:提取最近一个缺口发送给 DeepSeek
if not gap_df.empty:
    latest_gap = gap_df.iloc[-1]
    prompt = generate_deepseek_prompt(latest_gap, df['name'].iloc[0])
    print("\n=== 生成的 DeepSeek AI 分析 Prompt ===")
    print(prompt)

真实数据输出:

=== 识别到的 K 线缺口数据 ===
trade_date type  gap_bottom     gap_top  gap_size  gap_pct
2026-03-16 向上缺口 1384.850288 1387.175272      2.32     0.17
2026-03-23 向下缺口 1401.828531 1405.736067      3.91     0.28
2026-03-31 向上缺口 1397.920995 1414.928546     17.01     1.23
2026-04-17 向下缺口 1388.152156 1426.250631     38.10     2.67
2026-05-06 向下缺口 1347.123028 1348.099912      0.98     0.07
2026-06-16 向下缺口 1238.571678 1240.740361      2.17     0.17

=== 生成的 DeepSeek AI 分析 Prompt ===

    你是一名资深 A 股量化交易员。请根据以下提取到的缺口特征,分析其回补概率及预期回补周期:
    - 股票名称及代码:贵州茅台 (600519.SH)
    - 缺口日期:2026-06-16
    - 缺口类型:向下缺口
    - 缺口区间:[1238.5716783746213 - 1240.7403608414097]
    - 缺口幅度:0.17%
  
    请输出:
    1. 10个交易日内回补概率 (%)
    2. 缺口性质预判 (突破缺口/持续缺口/衰竭缺口/普通缺口)
    3. 量化交易应对建议

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

  • 务必使用比例前复权:在计算缺口大小时,调用 QuantDash 时显式指定 adjust="forward",可避免由于除权分红引发的“虚假大缺口”,防止策略产生未来函数。
  • 警惕普通缺口与突破缺口的差异:普通形态缺口回补概率高(>85%),但如果是放量突破平台的高开缺口,短期内回补概率较低,切勿盲目进行逆势博弈。
  • 回测考虑成交滑点:如果缺口出现当日执行买入,开盘跳空价格可能会因流动性带来滑点,回测设置时至少预留 0.1%~0.2% 的买入成本。

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

Q1: QuantDash 提取的数据支持哪些周期?可以计算分钟级开盘缺口吗?
A: QuantDash 支持 1d(日)、1w(周)、1M(月)以及 1m、5m、15m、30m、60m 等分钟级 K 线。如果想要计算高频盘中跳空缺口,可以直接使用 **qd.klines.get(symbol, period="5m", count=100, to_dataframe=True)** **即可。**

Q2: 如何批量处理多只股票的缺口识别?
A: 可使用 QuantDash 的 qd.klines.batch() 接口,一次性提取全市场或股票池的数据进行统一循环清洗,极大地提高选股效率。


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

评论