集合竞价选股(未匹配量、匹配量、匹配价、未匹配价等),完全python程序化

该帖子部分内容已隐藏
付费阅读
399
此内容为付费阅读,请付费后查看

一、整体概述

  • 功能:通过调用 xtick API (需要注册购买,购买集合竞价的数据-竞价详情实时接口,XTick-股票实时行情数据接口 | 集合竞价数据接口 | 量化交易接口 | 专业金融数据API接口)获取当日全市场集合竞价分笔数据(9:15–9:25),结合多种技术条件(趋势、价格回落、量价配合、诱多识别、均线过滤)筛选出可能走强的个股,程序运行时间非常快。

  • 数据源http://api.xtick.top/doc/hot/dayupdate(需 Token),以及 akshare 获取历史日线(用于计算 MA5/MA10)。

  • 输出:控制台打印筛选结果,并保存为 JSON 文件。

  • 适用场景:每日开盘前自动运行,辅助短线交易决策,需在pycharm上运行。


二、代码结构拆解

1. 配置参数(可调阈值)

参数 含义
TREND_1_RATIO_THRESHOLD = 0.60 9:20后 trend=1 的记录占比必须 ≥60%
PRICE_CHANGE_THRESHOLD = 3.0 集合竞价最终涨幅(jjzf)≥3%
PRICE_DROP_PCT_LIMIT = 0.5 任意相邻价格回落幅度 ≤0.5%
MAX_DROP_RATIO = 0.20 价格回落次数占总相邻次数 ≤20%
EARLY_DROP_LIMIT = 3.0 9:15-9:20 期间最大回落 ≤3%
TAIL_DROP_LIMIT = 1.5 尾盘回落幅度阈值(诱多检测)
NOL_SHRINK_RATIO = 0.6 nol 萎缩比例(后3笔 vs 前7笔)
JJZF_DROP_LIMIT = 1.5 jjzf 冲高回落幅度
JJL_SURGE_RATIO = 3.0 jjl 放大倍数(诱多检测)
VOLUME_PRICE_RATIO = 0.5 jjl 较前一分钟增幅 ≥50% 时,价格必须上涨
PRICE_RISE_MIN = 0.0 价格最小涨幅(可设为正值增强要求)
NOL_SMALL_THRESHOLD = 0.3 最后两根 trend=-1 的 nol 若小于前均值 30% 则允许(视为小量,可豁免)
USE_MA5 / USE_MA10 是否启用均线过滤(站上均线)
DEBUG_CODE 若设置,则打印该股票详细调试信息

2. 主要函数说明

get_st_stock_codes()

  • 调用 stockinfo 接口获取当前 ST/*ST 股票代码集合,用于后续过滤。

fetch_all_bid_data()

  • 请求集合竞价数据(dataType=bid),自动为每条记录补充 code 字段(从 symbol 中提取数字)。

  • 支持重试机制(MAX_RETRIES)。

get_minute_representatives(records)

  • 从 9:20~9:25 每分钟内取时间戳最大的记录,构成 5 个分钟节点(用于后续严格递增检查)。

fetch_ma5_for_codes() / fetch_ma10_for_codes()

  • 使用 akshare.stock_zh_a_hist_tx 获取前 N 个交易日数据,计算 MA5/MA10。

  • 仅对通过第一步筛选的候选股计算,减少请求量。

check_trap_conditions(code, filtered)

  • 诱多检测(基于全部 9:20 后数据):

    • 尾盘急速回落(最后 5 笔价格跌幅 ≥1.5%)

    • nol 萎缩且价格下跌(后3笔 nol 较前7笔萎缩 ≥60%)

    • jjzf 冲高回落(最大值 – 最后值 ≥1.5%)

    • jjl 放大但价格不动(后5笔 jjl 较前10笔放大 ≥3 倍,且价格波动 ≤0.3%)

  • 若(尾盘回落)且(其他任一)则判定为诱多,淘汰。

analyze_single_stock(code, records, ma5, ma10, skip_ma)

  • 核心单股分析流程

    1. 早期波动过滤(9:20前最大回落 ≤3%)

    2. 过滤 9:20 后数据,排序

    3. trend=1 比例检查

    4. 价格最大回落和回落次数检查

    5. 最后三根价格不能严格递减

    6. 均线检查(若启用)

    7. 最终涨幅(jjzf 或计算涨幅)检查

    8. 分钟节点提取与量价条件:

      • jjl 严格递增(5分钟)

      • trend=-1 的 nol 必须逐步减少(若存在)

      • 量价配合:jjl 增幅大时价格需同步上涨

    9. 最后两根 trend=-1 的 nol 小量豁免(若 nol < 前均值*0.3 则允许)

    10. 诱多检测(调用 check_trap_conditions

  • 返回包含详尽字段的结果字典。

analyze_all_stocks(all_data, st_codes, skip_ma)

  • 按股票代码分组,遍历调用 analyze_single_stock,打印进度。

apply_ma5_filter / apply_ma10_filter

  • 后置均线过滤(因为计算耗时,只对已通过其他条件的股票计算均线)。

print_summary() 和 save_results()

  • 汇总输出及 JSON 保存。

  • 三、运行依赖与环境

  • • Python 3.7+
    • 安装依赖:requests, akshare, pandas, datetime
    • 需要有效的 Token
    • 网络连接(访问 xtick API 和 akshare 行情源)
    • 建议在 9:25 后运行,以确保数据完整。

    四、输出示例与调参建议
    • 第一步输出:显示通过除均线外所有条件的股票,含详细量价指标。
    • 最终结果:若启用均线,进一步过滤。
    • 调参思路:
    ◦ 若候选太少,可适当放宽 TREND_1_RATIO_THRESHOLD 或 PRICE_CHANGE_THRESHOLD。
    ◦ 若候选太多,可提高 PRICE_RISE_MIN(量价配合更严)或开启均线。
    ◦ 诱多检测阈值可根据市场环境调整。

    五、注意事项
    1. API 限流:避免频繁请求,代码中已加入 time.sleep(0.3) 控制。
    2. 均线计算耗时:只对候选股计算,但若候选较多(几百只),仍可能耗时,建议仅在必要时启用。
    3. 数据完整性问题:若某分钟缺失,则直接淘汰该股票(get_minute_representatives 返回 None)。
    4. 调试模式:设置 DEBUG_CODE = “002638” 可打印该股票所有中间数据,便于验证逻辑。
    5. ST 过滤:依赖 xtick 的 ST 列表接口,若失败则不过滤,可能包含 ST 股。

  • 六、免责申明
  • 本策略代码仅供技术学习与量化研究参考,不构成任何投资建议或收益承诺。回测结果不代表未来实际收益,据此交易产生的盈亏由使用者自行承担。

     

     

请登录后发表评论

    请登录后查看回复内容