Back to skills
extension
Category: Data & AnalyticsNo API key required

安全股选择器

A股多周期MACD底部反转选股器。面向全部A股标的,支持按行业/主题(电力、新能源、虚拟现实、心理学、美容审美、中年女性服务、中医、国学、生物医药、芯片、半导体、PCB、存储、AI应用、芯片原材料)前置过滤,再按"市盈率大于0 + 年K连续5到6根绿柱 + 月K绿柱缩短 + 周K金叉"的多周期共振条件筛选潜在底部反转个股。当用户说"选股""A股选股""多周期MACD选股""底部反转选股""找年线绿柱的股票""周线金叉选股""电力股选股""新能源选股""医药股选股""芯片股选股""半导体股选股""PCB股选股""存储股选股""AI应用选股""芯片原材料选股""行业过滤选股"或需要批量扫描A股并用MACD多周期策略筛选标的时使用。

personAuthor: u_75b59836hubenterprise

A股选股器(多周期 MACD 底部反转)

按 5 条硬性条件对指定行业/主题的全部 A 股做批量扫描,找出"长期下跌已充分、空头动能衰竭、中短期共振拐头"的潜在底部反转标的。

选股条件(全部满足才入选)

  1. 行业/主题前置过滤(最先执行) —— 拿到全市场快照后立即按主题圈定候选范围,是流程里的第一道过滤(见下方"主题前置过滤")。
  2. 市盈率(动态)> 0 —— 在主题缩圈之后,再用全市场快照剔除亏损股。
  3. 年K MACD 连续 5 根及以上绿柱,且呈缩短趋势(近6年) —— 长期下跌已充分(多年空头),且空头动能正在衰减。
  4. 月K MACD 处于绿柱周期且柱子缩短 —— 中长期下跌动能衰竭。
  5. 周K MACD 出现买入金叉 —— 中期趋势拐头向上。

逻辑链:年K长期绿柱(跌透)→ 月K绿柱缩短(空方力竭)→ 周K金叉(中期反转)。属典型多周期底部反转共振模型。日K金叉条件已移除,周K金叉作为最终入场确认。

主题前置过滤(行业/概念白名单)

在跑 MACD 以及市盈率过滤之前,先用东方财富行业板块 + 概念板块成分圈定候选池,只筛选这些主题相关的股票,大幅减少无效计算(是第一道、也是最前置的过滤)。支持 15 个内置主题:

电力 · 新能源 · 虚拟现实 · 心理学 · 美容审美 · 中年女性服务 · 中医 · 国学 · 生物医药 · 芯片 · 半导体 · PCB · 存储 · AI应用 · 芯片原材料

  • 匹配来源:每个主题可配「行业板块名 / 概念板块名 / 股票名称关键词」三类(配置见 references/theme_boards.json)。
  • 优先用板块成分(akshare 按板块名解析成分股)命中;板块取不到的主题(如心理学、国学、中年女性服务)回退到股票名称关键词匹配。
  • 结果 CSV 新增「主题」列,标注每只入选股命中的主题。

用法

# 默认扫描全部 15 个主题
python scripts/selector.py --output result.csv

# 只扫电力 + 新能源 + 生物医药
python scripts/selector.py --themes 电力,新能源,生物医药 --output result.csv

# 查看可筛选主题
python scripts/selector.py --list-themes

# 关闭主题过滤,扫描全市场
python scripts/selector.py --no-theme-filter --output result.csv

想增删主题或调整板块/关键词,直接编辑 references/theme_boards.json(无需改代码)。 注:心理学 / 国学 / 中年女性服务 在 A 股缺乏独立板块,依赖名称关键词粗略匹配,可能存在漏选或泛化,建议人工复核。

快速开始

数据方案与字段定义见 references/data_scheme.md。脚本依赖 AkShare,首次使用先装依赖:

python -m pip install -r scripts/requirements.txt

小规模验证(随机抽样 50 只,避免全市场长时间扫描):

python scripts/selector.py --sample 50 --output result.csv

全市场完整扫描(约 5000 只,建议非交易时段;内置缓存,二次运行更快):

python scripts/selector.py --output result.csv

环境要求与自动补全

脚本依赖 Python 3.9+numpy / pandas / akshare / requests,并在 --transport curl 兜底路径下依赖系统 curl

下载安装后无需手动装环境selector.py 在启动时会自动调用 scripts/ensure_env.py 自检——检测 Python 版本与缺失依赖,缺失则自动 pip install(无写入权限时回退 --user)。首次运行会看到 [env] 安装日志,装完即继续选股。

  • 跳过自动安装(CI / 已锁定环境):python scripts/selector.py --no-setup ...
  • 单独跑一次环境检查:python scripts/ensure_env.py(打印 ENV_OK 即就绪;失败退出码非 0)
  • 自动安装因网络/权限失败时会告警并退出,此时按提示手动执行 python -m pip install -r scripts/requirements.txt 即可

依赖会装到“运行脚本的那个 Python 解释器”里(即执行 python scripts/selector.pypython),因此自动补全发生在下载用户自己的环境中,不影响系统其他项目。

参数说明(常用)

| 参数 | 默认 | 含义 | |------|------|------| | --themes | all | 前置行业/主题过滤,逗号分隔,如 电力,新能源,生物医药all=全部 15 个主题 | | --theme-config | references/theme_boards.json | 主题配置 JSON 路径(可自定义) | | --no-theme-filter | off | 关闭行业/主题前置过滤(扫描全市场) | | --list-themes | off | 打印可选主题后退出 | | --min-annual-green / --max-annual-green | 5 / 0 | 年K连续绿柱下限 / 上限(0=不限,即5根及以上均满足) | | --annual-shorten-steps | 2 | 年K绿柱缩短趋势窗口:最近 steps+1 根必须逐根变短(默认2=最近3根递减) | | --monthly-shorten-steps | 1 | 月K需连续缩短几步(几月变短) | | --cross-within | 3 | 周K金叉允许发生在最近几根K内(3=最近3根内出现即可) | | --pe-max | 0 | 市盈率上限,0=不限制 | | --limit N / --sample N | 0 | 只跑前 N 只 / 随机抽 N 只(调试用) | | --loose | off | 宽松模式:输出仅差 1 项条件的近似标的供人工复核 | | --workers | 8 | 并发线程数 | | --cache-dir / --refresh / --no-cache | .cache/a_share | 日线缓存控制 |

运行说明

  • 数据源默认 AkShare(免费、无需 token),脚本内置双传输层--transport auto(默认,优先 akshare、失败自动回退 curl 直连)、aksharecurl。数据中心/IP 被东方财富按 TLS 指纹拦截或限流时,改用 --transport curlcurl_cffi(见 data_scheme.md 第 7 节)。
  • 接口偶有限流;脚本对每只股票内置 3 次重试与退避,并对所有网络请求加 20 秒默认超时防止挂起。
  • 日线起始默认 20180101,需 ≥6 年数据才能满足"年K连续绿柱"判定;近期上市不足 6 年的新股会自动跳过。
  • 结果写入 CSV(UTF-8 BOM,Excel 可直接打开),并打印汇总表,含:代码、名称、主题、市盈率、年K绿柱数、年K缩短、月K缩短、周K金叉、达标、最新价。
  • 若需换数据源(Baostock / Tushare),只需替换 scripts/selector.py 里的 fetch_spot / fetch_daily 两个函数,下游 MACD 与判定逻辑无需改动(见 data_scheme.md 第 7 节)。

风险提示

本工具仅做技术面量化筛选,不构成任何投资建议。MACD 为滞后指标,多周期共振提高胜率但不保证;实盘前务必结合基本面、流动性与风控自行复核。