统一选股技能包,整合14种策略(ROE筛选、MACD底背离、高股息、低估值、 费雪成长股、长期低位、近期放量、趋势分析、K线形态、布林带下轨、筹码集中、 现金流质量、北向资金、股东增持、分析师目标价),支持单策略、多策略组合筛选。 触发词(精准触发,覆盖明确选股意图): 按策略名:ROE选股、ROE筛选、MACD选股、MACD筛选、MACD底背离、 股息选股、高股息选股、估值选股、低估值、成长股筛选、费雪成长股、 低位放量选股、长期低位选股、近期放量、趋势选股、形态选股、K线形态筛选、 布林带选股、筹码集中选股、现金流质量、北向资金选股、股东增持选股、分析师目标价选股 按组合意图:组合选股、筛选股票、多策略选股、综合选股、并发选股、全部策略选股 按结果要求:按ROE排名、按评分排名、按股息率排名、取交集、取并集 明确排除(这些场景应激活其他skill): - 任何包含具体股票代码/名称的个股分析请求 - "帮我看看XX股票"、"XX公司怎么样"、"XX值不值得买" - "查一下行情"、"看资金流向"等纯数据查询
将14种选股策略聚合为单一入口,支持单策略独立运行、多策略组合(AND/OR/SCORE), 以及并发加速和 HTML 可视化报告。
| 策略名 | 说明 | 核心条件 | 评分维度 |
|---|---|---|---|
roe | ROE盈利能力 | ROE≥15%, ROA≥5% | ROE/ROA/毛利/净利/负债率/ROE趋势 |
macd | MACD底背离 | K线下行+MACD向上+底背离+放量 | K线斜率/MACD斜率/放量倍数/RSI |
dividend | 高股息 | 股息率≥3%+连续分红3年+ROE≥8% | 股息率/ROE/连续年数/估值/派息率 |
valuation | 低估值 | PE≤25+PB≤3+PEG≤1.5+ROE≥8% | PE/PB/PEG/ROE/行业折价/PB历史分位 |
growth | 费雪成长股 | 营收/净利双增≥20%+毛利≥30% | 营收增速/利润增速/毛利率/ROE |
low_position | 长期低位 | 价格分位≤25%+RSI≤40 | 价格分位/RSI/距低点天数 |
volume_surge |
| 近期放量 |
| 放量≥2倍+RSI≤45+反弹≥3% |
| 放量倍数/RSI/反弹幅度/连续放量天数 |
trend | 趋势分析 | 均线多头+R²≥0.5+ADX≥25 | 趋势斜率/R²/ADX/RSI/波动率/均线排列 |
pattern | K线形态 | 命中1种+形态(双底/吞没/早晨之星等) | 命中形态数量 |
bollinger | 布林带下轨 | 股价触及布林带下轨+RSI超卖 | 触及程度/RSI/距下轨空间 |
shareholder_concentration | 筹码集中 | 股东户数连续3期减少+ROE≥8% | 累计减少幅度/持续期数/ROE |
cashflow_quality | 现金流质量 | 经营现金流≥净利润3期+商誉<30% | 满足季度数/平均比率/ROE |
northbound_flow | 北向资金 | 北向连续净买入5日+累计≥5亿 | 连续天数/累计净买入/ROE |
shareholder_buyback | 股东增持 | 增持比例≥0.5%+ROE≥8% | 增持比例/增持期数/ROE |
analyst_target | 分析师目标价 | 隐含目标价空间≥20%+连续预测2期 | 上行空间/预测期数/ROE |
所有策略统一返回 0-100 分,分数越高表示股票质量越好。
多策略组合时,score 为各策略得分之和(AND 模式)或之和(OR/SCORE 模式)。
评分参考基准:
AND :多策略交集(股票必须同时通过所有策略,条件最严)
OR :多策略并集(通过任意一个即入选)
SCORE :综合评分(全部策略打分,按总分排名,最宽松)
# 单策略(默认 AND)
python main.py --strategy roe --roe_threshold 15
# 多策略交集(最严)
python main.py --strategy roe,macd,dividend --mode and
# 多策略并集(宽松)
python main.py --strategy roe,macd --mode or --top 50
# 综合评分(适合 --strategy all)
python main.py --strategy all --mode score --top 50
# 并发执行(8线程,适合技术面策略)
python main.py --strategy macd,trend,volume_surge --workers 8
# 生成 HTML 可视化报告
python main.py --strategy roe,macd,dividend --report --output_dir ~/Desktop
# 调试(只分析前20只)
python main.py --strategy roe,trend --limit 20 --verbose
from main import execute
# 基础用法
result = execute({"strategy": "roe", "roe_threshold": 15})
# 多策略 AND 交集
result = execute({
"strategy": "roe,macd,valuation",
"mode": "and",
"roe_threshold": 15,
"max_pe": 20,
})
# 全策略综合评分,并发 + HTML
result = execute({
"strategy": "all",
"mode": "score",
"top_n": 50,
"workers": 8,
"report": True,
})
# 策略专属参数(支持 namespace 前缀)
result = execute({
"strategy": "roe,valuation",
"roe.roe_threshold": 20, # ROE策略参数
"valuation.max_pe": 15, # 估值策略参数
})
{
"success": True,
"results": [
{
"ts_code": "000001.SZ",
"name": "平安银行",
"industry": "银行",
"score": 78.5,
"strategies_hit": ["roe", "valuation"],
"scores": {"roe": 45.2, "valuation": 33.3},
# 以下为各策略专属字段
"roe": 16.5, "roa": 8.2, "gross_margin": 35.1,
"pe_ttm": 12.3, "pb": 1.1, "peg": 0.74,
},
...
],
"count": 42,
"message": "[stock-selecter] AND 模式,耗时 89.3s",
"metadata": {
"strategies_used": ["roe", "valuation"],
"mode": "and",
"execution_time": 89.3,
"per_strategy_counts": {"roe": 312, "valuation": 185},
"saved_files": {
"json": "/path/to/...",
"csv": "/path/to/...",
"html": "/path/to/...",
}
}
}
| 参数 | 默认 | 说明 |
|---|---|---|
strategy | roe | 策略名,逗号分隔,all=全部 |
mode | and | and/or/score |
top_n | 0 | 结果截断(0=不限) |
workers | 1 | 并发线程数(>1启用并发) |
report | False | 是否生成 HTML 报告 |
save | True | 是否保存 JSON/CSV |
output_dir | 自动 | 输出目录 |
ROE (roe)
roe_threshold=15.0 # ROE 最低阈值(%)
roa_threshold=5.0 # ROA 最低阈值(%)
include_roa=True # 是否同时筛选 ROA
min_report_periods=4 # 最少财报期数
MACD (macd)
k_slope_max=0.0 # K线斜率上限(正值=向上)
k_r2_min=0.3 # K线趋势 R² 下限
macd_slope_min=0.0 # MACD 斜率下限(正值=向上)
macd_r2_min=0.2 # MACD 趋势 R² 下限
require_divergence=True # 要求底背离
require_volume_surge=True# 要求放量
volume_surge_weeks=5 # 放量对比周数
volume_surge_threshold=1.5 # 放量倍数阈值
股息 (dividend)
min_dv_ratio=3.0 # 最低股息率(%)
min_consecutive_years=3 # 最少连续分红年数
min_roe=8.0 # 最低 ROE(%)
max_pe=30 # PE 上限
估值 (valuation)
max_pe=25.0 # PE 上限
max_pb=3.0 # PB 上限
max_peg=1.5 # PEG 上限(<1为低估)
industry_discount=0.85 # 行业基准折扣
min_roe=8.0 # 最低 ROE(%)
成长股 (growth)
min_revenue_growth=20.0 # 营收增速下限(%)
min_profit_growth=20.0 # 净利润增速下限(%)
min_gross_margin=30.0 # 毛利率下限(%)
min_consecutive_quarters=3# 连续净利润正增长季度数
min_roe=12.0 # 最低 ROE(%)
长期低位 (low_position)
lookback_days=250 # 历史价格窗口
low_position_pct=25.0 # 底部分位阈值(%)
rsi_max=40.0 # RSI 上限
rsi_window=14 # RSI 计算周期
data_period_years=2 # 数据拉取年数
近期放量 (volume_surge)
volume_surge_ratio=2.0 # 放量倍数阈值
volume_avg_days=20 # 均量计算周期
rsi_max=45.0 # RSI 上限
rebound_pct_min=3.0 # 最小反弹幅度(%)
rebound_days=5 # 反弹检测窗口
price_change_max=10.0 # 当日涨幅上限(%)
data_period_years=1 # 数据拉取年数
趋势 (trend)
ma_short=5 # 短期均线周期
ma_mid=20 # 中期均线周期
ma_long=60 # 长期均线周期
trend_r2_min=0.5 # 趋势 R² 下限
adx_min=25.0 # ADX 趋势强度下限
require_ma_bullish=True # 要求均线多头排列
形态 (pattern)
detect_double_bottom=True
detect_head_shoulders_bottom=True
detect_flag_breakout=True
detect_golden_cross=True
detect_morning_star=True
detect_bullish_engulfing=True
detect_cup_handle=True
min_pattern_score=1 # 最少命中形态数
布林带下轨 (bollinger)
bb_window=20 # 布林带周期
bb_std=2.0 # 标准差倍数
rsi_max=45.0 # RSI 上限
rsi_window=14 # RSI 周期
lookback_days=120 # 回看天数
price_change_max=9.0 # 当日涨幅上限(排除涨停)
筹码集中 (shareholder_concentration)
min_consecutive_quarters=3 # 连续减少季度数
max_holder_growth=-5.0 # 最大季度增长上限
min_roe=8.0 # 最低ROE
data_period_quarters=8 # 数据拉取期数
现金流质量 (cashflow_quality)
min_match_quarters=3 # 经营现金流>=净利润的季度数
total_periods=4 # 检测总期数
min_cashflow_ratio=0.8 # 经营现金流/净利润最小比率
min_roe=8.0 # 最低ROE
max_goodwill_pct=30.0 # 商誉/净资产上限(%)
北向资金 (northbound_flow)
min_consecutive_days=5 # 最少连续净买入天数
min_daily_net=1.0 # 单日最低净买入额(亿元)
min_total_net=5.0 # 累计最低净买入额(亿元)
lookback_days=20 # 回看天数
north_type=all # all=全部/sh=沪股通/sz=深股通
股东增持 (shareholder_buyback)
min_buyback_ratio=0.5 # 最低增持占总股本比例(%)
min_consecutive_periods=1 # 最少增持期数
lookback_days=90 # 回看天数
holder_type=all # all=任意/major=大股东/manager=高管
min_roe=8.0 # 最低ROE
分析师目标价 (analyst_target)
min_target_upside=20.0 # 最低目标价上行空间(%)
min_consecutive_forecasts=2# 最少连续盈利预测期数
forecast_years=2 # 预测年数
min_roe=8.0 # 最低ROE
自动保存到 /Volumes/Alan HD/股票筛选/(Mac 外置硬盘),或指定目录:
screener_{策略}_{时间}.json — 完整原始数据screener_{策略}_{时间}.csv — 表格格式选股报告_{时间}.html — 可交互可视化报告(需 --report)stock-selecter/
├── main.py ← 统一入口(CLI + execute())
├── SKILL.md ← 本文件
├── config.json ← 默认配置
├── strategies/
│ ├── base.py ← 抽象基类(含并发执行引擎)
│ ├── roe.py
│ ├── macd.py
│ ├── dividend.py
│ ├── valuation.py
│ ├── growth.py
│ ├── low_position.py
│ ├── volume_surge.py
│ ├── trend.py
│ ├── pattern.py
│ ├── bollinger.py ← v3.2 新增
│ ├── shareholder_concentration.py ← v3.2 新增
│ ├── cashflow_quality.py ← v3.2 新增
│ ├── northbound_flow.py ← v3.3 新增
│ ├── shareholder_buyback.py ← v3.3 新增
│ └── analyst_target.py ← v3.3 新增
└── utils/
├── loader.py ← 共享库动态加载
└── report.py ← HTML 报告生成器
workers=1(默认):串行执行,稳定可靠workers>1:ThreadPoolExecutor 并发,适合 IO 密集型(大量 API 调用等待)--workers 8)