34 KiB
股票投资分析系统 — 算法分析文档
最后更新:2026-07-18
一、整体架构
系统分为五层,数据从下往上流动:
技术指标层(technical_indicators.py) ← 第二章
↓ 计算MACD、SKDJ、KDJ、EMA、MA等基础指标
信号检测层(signal_detector.py) ← 第三章
↓ 基于7个信号检测买卖点
外部因素模块(fund_flow/sentiment/external/news)← 第四章
↓ 资金面/情绪/南向/美股/商品/公告/政策/汇率 → 各因素评分
算法决策层(stock_algorithms.py) ← 第五章
↓ 统一推荐逻辑、牛股阶段识别、技术面深度分析(7维度)→ 技术面基础分
综合评分引擎(score_engine.py)
↓ 技术面基础分 + 外部因素加减分 → 最终评分 → AI解说
| 层级 | 文件 | 职责 | 章节 |
|---|---|---|---|
| 技术指标层 | services/technical_indicators.py |
计算 MACD、SKDJ、KDJ、EMA、MA 等基础指标 | 二 |
| 信号检测层 | services/signal_detector.py |
基于7个信号检测买卖点 | 三 |
| 外部因素模块 | fund_flow_analyzer.py / market_sentiment.py / external_factors.py / news_analyzer.py |
资金面、市场情绪、南向资金、美股、大宗商品、公告/政策、汇率 | 四 |
| 算法决策层 | services/stock_algorithms.py |
统一推荐逻辑、牛股阶段识别、技术面深度分析 | 五 |
| 综合评分引擎 | services/score_engine.py |
整合外部因素(P0-P7)与技术面评分,输出最终评分 | 五 |
二、技术指标层
calc_all_indicators 一次性计算所有指标,附加到 DataFrame 的列中。
2.1 EMA(指数移动平均线)
白话解释:均线就是最近N天价格的平均值,用来判断趋势方向。EMA 比普通均线更敏感,越近的价格权重越大,反应更快。
| 指标 | 参数 | 用途 |
|---|---|---|
| EMA3 | 3日 | 超短期均线,反映最近3天的平均价格 |
| EMA21 | 21日 | 中期均线,反映最近21天的平均价格 |
怎么用:当 EMA3 从下往上穿过 EMA21,说明短期价格变强了,是反弹信号。
2.2 MACD(指数平滑异同移动平均线)
白话解释:MACD 是最经典的趋势指标。它用两条均线(快线12日、慢线26日)的差值来判断趋势的方向和强弱。
| 输出 | 含义 | 白话 |
|---|---|---|
| DIF | 快线减慢线的差值 | 短期价格和中期价格的差距,正数说明短期比中期强 |
| DEA | DIF 的9日均线 | DIF的平均值,用来判断DIF的趋势 |
| MACD柱 | 2 × (DIF - DEA) | 红绿柱子,红柱=DIF在DEA上方=多头力量,绿柱=空头力量 |
怎么用:
- 金叉:DIF 从下往上穿过 DEA → 买入信号
- 死叉:DIF 从上往下穿过 DEA → 卖出信号
- 零轴上方金叉:DIF 和 DEA 都在0以上时金叉 → 主升浪,最强买入信号
- 底背离:价格创新低但 DIF 没创新低 → 下跌动力不足,可能要反转
2.3 KDJ(随机指标)
白话解释:KDJ 用来判断价格是在"超买"还是"超卖"。就像弹簧,压得太紧(超卖)容易弹起来,拉得太开(超买)容易缩回去。
| 输出 | 含义 | 白话 |
|---|---|---|
| K | 快线 | 对价格变化最敏感,反应最快 |
| D | 慢线 | K的平均值,更平稳 |
| J | 超前线 | 3K-2D,比K更超前,可以提前预判 |
怎么用:
- K > 80 → 超买区,价格可能要回调
- K < 20 → 超卖区,价格可能要反弹
- K 上穿 D → 金叉,买入信号
- K 下穿 D → 死叉,卖出信号
2.4 SKDJ(慢速随机指标)
白话解释:SKDJ 是 KDJ 的"慢速版",对价格变化做了两次平滑,信号更少但更可靠。龙抬头信号就是用 SKDJ 来判断的。
| 输出 | 含义 | 白话 |
|---|---|---|
| K | 慢速K值 | 经过两次平滑的K线,比普通KDJ的K更稳 |
| D | 慢速D值 | K的平均值,最平稳 |
怎么用:
- K < 20 → 超卖区,股票被过度抛售
- K 从超卖区上穿 D → 龙抬头信号,短线起爆点
- 还要检查最近3天K值的波动不能太大(标准差<15),确保信号稳定
2.5 MA(简单移动平均线)
白话解释:最基础的均线,就是最近N天收盘价的简单平均。用来判断中长期趋势方向。
| 指标 | 参数 | 用途 |
|---|---|---|
| MA5 | 5日 | 一周均价,超短期趋势 |
| MA10 | 10日 | 两周均价,短期趋势 |
| MA20 | 20日 | 一个月均价,中期趋势 |
| MA60 | 60日 | 三个月均价,长期趋势 |
怎么用:
- MA5 > MA10 > MA20 > MA60 → 多头排列(从短期到长期依次排列),强势上涨趋势
- MA5 < MA10 < MA20 < MA60 → 空头排列,弱势下跌趋势
- 交叉纠缠 → 趋势不明,需要等待
三、信号检测层
3.1 7个交易信号(按胜率从高到低排名)
信号1:主升浪(胜率85%)
白话解释:主升浪就是股票进入"加速上涨"的阶段。就像汽车挂了最高档,速度最快,利润兑现最快。
触发条件:
- DIF > 0 且 DEA > 0(两条线都在零轴上方,说明大趋势向上)
- DIF 从下往上穿过 DEA(金叉,说明短期又开始加速)
含义:趋势大好,进入加速拉升阶段。持仓者应该加仓,不要轻易出场。
信号2:日线底背离(胜率80%)
白话解释:股价创新低了,但 MACD 指标没有创新低。这说明"虽然价格还在跌,但下跌的动力已经不足了",就像皮球落地,虽然还在最低点,但已经开始反弹了。
触发条件:
- 收盘价创20日新低(最近20天最低价)
- 但 DIF 值没有创20日新低(下跌动力在减弱)
- DIF < 0(还在零轴下方,确认是在下跌趋势中)
含义:大级别反转信号,真正"跌透了",可能迎来一波像样的反弹。
信号3:龙抬头(胜率75%)
白话解释:龙抬头是短线最佳买点。经过一段下跌后,SKDJ指标在超卖区(K<20)发生金叉,就像龙从水面抬起头来,说明资金开始进场了。
触发条件:
- SKDJ 的 K 值在超卖区(前一天 K < 20,或今天 K < 30)
- K 从下往上穿过 D(金叉)
- 最近3天 K 值标准差 < 15(信号稳定,不是剧烈波动中的假信号)
含义:短线起爆点,反弹稳定性强。这是体系中的实操核心买点。
信号4:真龙(胜率70%)
白话解释:真龙是趋势正式确立的信号。价格站上20日均线,短期均线上穿中期均线,MACD翻红,成交量放大——多个条件同时满足,说明趋势真的来了。
触发条件(4个条件满足3个即可,但价格必须在MA20上方):
- 价格 > MA20(站上中期均线)
- MA5 上穿 MA20(短期均线金叉中期均线)
- MACD柱从负转正(多头力量开始占优)
- 成交量 > 10日均量的1.2倍(放量确认)
含义:中期趋势刚刚启动,可以追入,但最好等回调买入。
信号5:短底背离(胜率65%)
白话解释:和日线底背离类似,但看的是10日窗口。价格创10日新低但DIF没创新低,说明短期下跌动力不足。
触发条件:
- 收盘价创10日新低
- 但 DIF 值没有创10日新低
含义:小级别反弹信号,灵敏度高但力度偏弱。适合短线操作。
信号6:老鼠仓(胜率60%)
白话解释:盘中突然急跌(跌了3%以上),但收盘又收回来了,而且成交量放大。这很可能是主力在"偷偷吸筹"——故意打压价格吓跑散户,然后低价买入。
触发条件:
- 盘中最大跌幅 > 3%(最低价远低于开盘价)
- 收盘回收 > 60%(从最低点反弹回大部分)
- 收盘价接近开盘价(跌幅不超过1%)
- 成交量 > 10日均量的1.3倍(放量)
含义:主力吸筹信号,上涨可能不会立竿见影,但后续大概率会涨。
信号7:反弹(胜率55%)
白话解释:最简单的均线金叉信号——EMA3(3日均线)从下往上穿过 EMA21(21日均线)。说明短期价格开始强于中期价格了。
触发条件:
- 前一天 EMA3 ≤ EMA21
- 今天 EMA3 > EMA21
含义:普通均线金叉,震荡市适用,但熊市中容易出现假反弹,需要结合其他信号确认。
3.2 信号状态检查
系统不仅检测信号是否触发,还会计算每个信号的就绪程度(readiness 0-100),告诉用户"距离触发还有多远"。
例如龙抬头信号:
- K < 20 且 K > D 且 前一天 K ≤ D → readiness = 100(已触发)
- K < 20 → readiness = 70(在超卖区,等金叉)
- K < 30 → readiness = 40(接近超卖区)
- K < 50 → readiness = 20(在中位,还远)
- K ≥ 50 → readiness = 5(偏高,不满足条件)
四、外部影响因素分析与实现
系统已将以下外部因素全部纳入综合评分引擎,与技术面评分叠加为最终评分。 各因素独立计算,失败时返回0分不影响主流程。
4.1 主力资金进出(P0,已实现)
白话解释:股市里的"主力"就是那些资金量很大的机构投资者(基金、券商、险资等)。他们买卖的金额巨大,足以影响股价走向。就像一条大鱼在小池塘里游,方向一目了然。
影响机制
| 资金类型 | 单笔金额 | 影响力 | 白话 |
|---|---|---|---|
| 超大单 | ≥100万/笔 | 最强 | 大机构的大动作,直接推动股价 |
| 大单 | 20-100万/笔 | 强 | 中型机构的操作,趋势的重要推手 |
| 中单 | 4-20万/笔 | 中等 | 游资和大户,短期波动源 |
| 小单 | <4万/笔 | 弱 | 散户交易,通常被主力"收割" |
主力净流入 = 超大单净流入 + 大单净流入,正值说明主力在买入,负值说明在卖出。
预测信号(已实现)
| 信号 | 含义 | 可靠度 | 评分 |
|---|---|---|---|
| 连续3日主力净流入 | 主力持续吸筹,后市看涨 | ★★★★ | +10 |
| 主力净流入+价格不涨 | 暗中吸筹(压价买货),可能即将拉升 | ★★★★★ | +8 |
| 主力净流出+价格不跌 | 暗中出货(托价卖出),危险信号 | ★★★★★ | -8 |
| 超大单突然大幅流入 | 大机构突击入场,短线可能拉升 | ★★★ | +5 |
| 主力净流入占比>10% | 主力主导行情,散户跟风空间大 | ★★★★ | +5 |
实现模块
- 模块文件:
services/fund_flow_analyzer.py - 数据来源:
stock_fund_flow_history表(由sync_fund_flow.py每日同步) - API端点:
GET /api/fund_flow_analysis/<code> - 评分范围:±20
4.2 市场情绪指标(P1,已实现)
白话解释:市场情绪是整个A股的"温度计"。涨停的股票多说明市场热情高,跌停的多说明恐慌蔓延。情绪好的时候,技术面信号更容易兑现;情绪差的时候,再好的形态也可能被砸盘。
| 指标 | 含义 | 获取方式 | 评分 |
|---|---|---|---|
| 涨停/跌停家数比 | >5:1 偏多,<1:1 偏空 | 从实时行情统计 | +5/-5 |
| 连板高度 | 最高连板数,反映市场热度 | 从涨停家数估算 | +3 |
| 换手率中位数 | 反映市场活跃度 | 从实时行情统计 | — |
| 两市成交额 | >1.2万亿偏热,<6000亿偏冷 | 从行情数据 | +2/-2 |
实现模块
- 模块文件:
services/market_sentiment.py→calc_market_sentiment() - 数据来源:
stock_realtime_price表(已有数据,无需额外数据源) - API端点:
GET /api/market_sentiment - 评分范围:±10
4.3 南向资金(P2,已实现)
白话解释:南向资金是内地通过港股通配置港股的资金,反映跨境资金情绪。南向大幅流入说明内地资金积极配置港股,大中华区risk-on,对A股偏正面。注:2024年8月起北向资金实时数据已停止公布,改用南向资金作为替代指标。
| 信号 | 含义 | 可靠度 | 评分 |
|---|---|---|---|
| 南向单日净流入>80亿 | 跨境资金情绪偏暖 | ★★★★ | +5 |
| 南向单日净流出>80亿 | 跨境资金情绪偏冷 | ★★★★ | -5 |
| 南向连续3日净流入 | 资金持续流入,中期偏多 | ★★★★★ | +3 |
| 南向连续3日净流出 | 资金持续流出,中期偏空 | ★★★★ | -3 |
实现模块
- 模块文件:
services/external_factors.py→get_southbound_capital() - 数据来源:AKShare
stock_hsgt_fund_flow_summary_em(今日汇总)+stock_hsgt_hist_em(南向资金历史) - 评分范围:±10
4.4 美股隔夜板块变化(P3,已实现)
白话解释:美股是全球股市的"风向标"。美股晚上涨跌,第二天A股往往跟着反应。尤其是美股的板块变化——如果美股科技股大涨,A股科技板块大概率高开;美股新能源车跌了,A股相关产业链也容易跟跌。
影响机制
| 美股板块 | 对应A股板块 | 影响强度 | 传导逻辑 |
|---|---|---|---|
| 科技(纳斯达克) | 半导体、软件、消费电子 | ★★★★★ | 全球科技产业链联动 |
| 新能源车(特斯拉) | 锂电池、汽车零部件 | ★★★★★ | 产业链直接关联 |
| 金融(银行/保险) | 银行、保险、券商 | ★★★★ | 全球金融情绪传导 |
| 能源(石油) | 石油开采、化工 | ★★★★ | 大宗商品价格联动 |
| 医药生物 | 创新药、医疗器械 | ★★★ | 审批/研发进展联动 |
| 消费零售 | 消费、白酒 | ★★ | 消费趋势参考 |
| 房地产 | 地产链 | ★★ | 政策面差异大 |
预测场景
| 场景 | A股大概率反应 | 注意事项 |
|---|---|---|
| 美股三大指数全线大涨 | A股高开0.5-1.5% | 高开后可能回落,不追高 |
| 美股某板块暴涨>3% | A股对应板块高开跟涨 | 关注龙头股,散户跟风 |
| 美股暴跌>2% | A股低开1%左右 | 低开后可能反弹,看资金面 |
| 美股V型反转 | A股影响较小 | 说明美股自身企稳 |
| 美股连续创新高 | A股情绪偏暖 | 但A股有自己的节奏 |
| 美联储加息/降息 | 全市场情绪波动 | 加息偏空,降息偏多 |
重要提醒:美股影响主要是开盘阶段(9:25-10:00),之后A股会回归自身逻辑。不能仅凭美股涨跌做全天决策。
实现模块
- 模块文件:
services/external_factors.py→get_us_market_overview() - 数据来源:AKShare
index_global(全球指数) - 板块映射:内置 美股板块→A股板块 映射表
- 评分范围:±10
4.5 大宗商品价格(P4,已实现)
白话解释:石油、黄金、铜等大宗商品价格变化,直接影响A股相关板块。
| 商品 | 影响板块 | 传导逻辑 | 评分 |
|---|---|---|---|
| 原油 | 石油开采(利好)、航空(利空) | 油价涨→开采盈利增→航空成本增 | ±1 |
| 黄金 | 黄金股、珠宝 | 金价涨→黄金企业盈利增 | ±1 |
| 铜 | 有色金属、电缆 | 铜价涨→铜企受益 | ±1 |
| 螺纹钢 | 钢铁(利好)、基建/地产(利空) | 钢价涨→钢企受益,基建成本增 | ±1 |
| 碳酸锂 | 锂矿/锂电池(利好)、新能源车(利空) | 锂价涨→锂矿受益,新能源车成本增 | ±1 |
实现模块
- 模块文件:
services/external_factors.py→get_commodity_overview() - 数据来源:AKShare
futures_main_sina(商品期货行情) - 内置商品→A股板块影响映射表:
COMMODITY_A_SECTOR_MAP - 评分范围:±5
4.6 上市公司并购消息(P5,已实现)
白话解释:并购就是一家公司买下或合并另一家公司。好的并购能让公司"1+1>2",股价暴涨;坏的并购可能拖累业绩,股价下跌。并购消息往往是股价的"催化剂"——技术面再好,没有消息催化也涨不起来;技术面一般,一个并购消息就能连续涨停。
影响机制
| 消息类型 | 影响方向 | 持续时间 | 典型幅度 | 评分 |
|---|---|---|---|---|
| 被收购溢价并购 | 大涨 | 1-3个涨停 | +10%~+30% | +10 |
| 收购优质资产 | 大涨 | 3-5日 | +5%~+20% | +10 |
| 收购劣质资产 | 下跌 | 3-5日 | -5%~-15% | -8 |
| 合并重组 | 看涨 | 5-10日 | +5%~+30% | +10 |
| 资产剥离 | 看涨 | 1-3日 | +3%~+10% | +5 |
| 股权转让 | 看涨 | 1-3日 | +3%~+10% | +5 |
| 定增引入战投 | 看涨 | 3-5日 | +3%~+15% | +5 |
| 商誉减值 | 大跌 | 1-2日 | -5%~-20% | -8 |
预测策略
| 策略 | 可行性 | 说明 |
|---|---|---|
| 消息面监控 | ★★★★ | 监控公司公告/新闻,第一时间发现并购消息 |
| 股价异动预警 | ★★★★ | 监测异常放量涨跌,反推可能有消息 |
| 停牌复牌跟踪 | ★★★★ | 停牌公司复牌后通常有大幅波动 |
| 龙虎榜数据 | ★★★ | 看到机构大举买入,可能提前知道消息 |
| 技术面预判 | ★★ | 有些股票并购前有资金提前布局的痕迹 |
实现模块
- 模块文件:
services/news_analyzer.py→analyze_announcement_sentiment()+detect_price_anomaly() - 数据来源:AKShare
stock_notice_report(公告数据) - LLM分析:豆包AI 对重要公告做情感分析(规则评分兜底)
- 异动检测:量比>3 + 涨跌幅>5% 标记为"可能有消息面催化"
- API端点:
GET /api/news_analysis/<code> - 评分范围:±15
4.7 政策面(P6,已实现)
白话解释:A股是"政策市",政策的影响力往往超过技术面。一个政策出台,整个板块可能集体涨停或跌停。
| 政策类型 | 影响范围 | 典型案例 | 评分 |
|---|---|---|---|
| 行业扶持政策 | 对应板块暴涨 | 新能源补贴、芯片国产替代 | +2/条 |
| 行业监管政策 | 对应板块暴跌 | 教育双减、互联网反垄断 | -3/条 |
| 货币政策(降准/降息) | 全市场偏多 | 流动性增加,资金入市 | +2/条 |
| 财政政策(基建/减税) | 相关板块受益 | 基建投资、减税降费 | +2/条 |
| IPO/再融资政策 | 市场情绪 | 加速IPO偏空,放缓偏多 | 中性 |
| 交易规则变化 | 短期情绪 | 降印花税、限制减持 | 中性 |
实现模块
- 模块文件:
services/news_analyzer.py→analyze_policy_impact() - 数据来源:AKShare
stock_info_global_em(财经新闻) - 关键词分类:扶持/监管/货币/财政/资本市场
- LLM深度分析:重大政策调用豆包AI分析(规则评分兜底)
- 评分范围:±10
4.8 汇率变化(P7,已实现)
白话解释:人民币升值利好进口型企业(航空、造纸),贬值利好出口型企业(纺织、电子代工)。
| 汇率变化 | 受益板块 | 受损板块 | 评分 |
|---|---|---|---|
| 人民币升值 | 航空、造纸、房地产 | 纺织、家电出口、电子代工 | +2 |
| 人民币贬值 | 纺织、家电、电子代工 | 航空、造纸 | -2 |
| 汇率稳定 | — | — | 0 |
实现模块
- 模块文件:
services/external_factors.py→get_fx_overview() - 数据来源:AKShare
currency_boc_sina(人民币汇率) - 评分范围:±3
4.9 集成架构与评分体系
架构
当前架构(已实现):
K线数据 → 技术指标 → 信号检测 → 深度分析(技术面基础分) ──┐
资金流向数据 → 资金信号 ────────────────────────────────┤
美股隔夜数据 → 外盘情绪 ────────────────────────────────┤→ 综合评分引擎 → 最终评分 → 买卖建议/AI解说
公告/新闻 → LLM情感分析 ───────────────────────────────┤
南向资金 → 跨境资金情绪 ────────────────────────────────┤
市场情绪指标 → 情绪评分 ────────────────────────────────┤
大宗商品 → 板块影响 ────────────────────────────────────┤
汇率 → 进出口影响 ──────────────────────────────────────┘
评分权重
| 因素 | 评分范围 | 说明 |
|---|---|---|
| 技术面基础分 | 0-100 | compute_deep_analysis 原始分 |
| P0 资金面 | ±20 | 连续流入+10,吸筹+8,大单突击+5 |
| P1 市场情绪 | ±10 | 涨跌停比+5/-5,连板+3,成交额+2/-2 |
| P2 南向资金 | ±10 | 大幅流入+5,连续流入+3 |
| P3 美股外盘 | ±10 | 美股大涨+5,大跌-5 |
| P4 大宗商品 | ±5 | 单品种涨跌±1 |
| P5 公告/异动 | ±15 | 并购+10,业绩预增+8,异动±5 |
| P6 政策面 | ±10 | 扶持+2,监管-3 |
| P7 汇率 | ±3 | 升值+2,贬值-2 |
| P5+P6 合并上限 | ±20 | analyze_news_factors 统一计算后限制 |
| 外部总分上限 | ±40 | 避免外部因素喧宾夺主 |
核心原则:技术面仍是基础(权重60%+),外部因素作为加减分项,避免外部因素喧宾夺主。
4.10 新增模块和API
新增模块文件
| 模块 | 文件 | 功能 |
|---|---|---|
| 资金流向分析 | services/fund_flow_analyzer.py |
从DB读取资金流向,计算连续流入/流出、量价背离、大单突击 |
| 市场情绪指标 | services/market_sentiment.py |
从实时行情表计算涨停跌停比、连板高度、换手率中位数、两市成交额 |
| 外部因素 | services/external_factors.py |
南向资金、美股隔夜板块、大宗商品、汇率变化 |
| 新闻/公告分析 | services/news_analyzer.py |
公告采集+分类、LLM情感分析、异动检测、政策面监控 |
| 综合评分引擎 | services/score_engine.py |
汇总技术面+所有外部因素,输出最终评分 |
新增API端点
| 端点 | 方法 | 说明 |
|---|---|---|
/api/market_sentiment |
GET | 市场情绪指标 |
/api/external_factors |
GET | 外部因素综合数据(南向/美股/商品/汇率) |
/api/fund_flow_analysis/<code> |
GET | 个股资金流向分析 |
/api/news_analysis/<code> |
GET | 个股消息面分析(公告+政策+异动) |
4.11 数据流
deep_analyze 接口调用流程:
1. 获取K线数据 → calc_all_indicators → detect_all_signals
2. compute_deep_analysis(技术面评分 0-100)
3. score_engine.compute_comprehensive_score:
├─ fund_flow_analyzer.analyze_fund_flow(P0)
├─ market_sentiment.calc_market_sentiment(P1)
├─ external_factors.get_all_external_factors(P2-P4,P7)
└─ news_analyzer.analyze_news_factors(P5-P6)
4. 最终评分 = 技术面 + 外部加减分(上限100,下限0)
5. LLM润色AI解说
4.12 容错机制
- 所有外部因素模块均有 try/except 保护,失败时返回中性评分(0分)
- AKShare 数据源不可用时自动降级,不影响主流程
- LLM 分析失败时回退到规则评分
- 当日缓存避免重复调用外部API
五、算法决策层
本章包含四部分:5.1~5.2 基于技术信号给出买卖建议和牛股阶段识别(纯技术面);5.3 深度分析产出技术面基础分后,由综合评分引擎叠加第四章的外部因素(P0-P7)形成最终评级,并据此修正 5.1 的买卖建议;5.4 AI解说涵盖内外因素的综合解读。
5.1 统一推荐算法 compute_recommend
⚠️ 本节推荐基于技术信号(MACD/龙抬头/底背离等)。在
deep_analyze深度分析中,综合评分引擎计算完成后,会根据最终评级(含外部因素 P0-P7)修正买卖建议——当综合评级与技术面推荐矛盾时,以综合评级为准。
遵循"体系最强战法"流程,分持仓和非持仓两套逻辑:
持仓时(已经持有该股票)
| 条件 | 推荐 | 评分 | 白话 |
|---|---|---|---|
| MACD死叉 + 无主升浪 | 卖出 | 75 | 趋势走弱了,该走了 |
| 主升浪 | 加仓 | 90 | 加速拉升中,加码赚钱 |
| 真龙 | 持有 | 70 | 趋势确认了,拿着别动 |
| 其他 | 观望 | 50 | 拿着等主升浪 |
非持仓时(还没买)
| 条件 | 推荐 | 评分 | 白话 |
|---|---|---|---|
| 底背离 + 龙抬头 + MACD金叉 | 买入 | 95 | 最佳买点!跌透了+资金进场+趋势配合 |
| 龙抬头 + 主升浪 + MACD金叉 | 买入 | 90 | 强势买入!资金进场+加速段 |
| 龙抬头 + MACD金叉 | 买入 | 80 | 核心买点!资金进场了 |
| 底背离 + 龙抬头 + MACD死叉 | 关注 | 65 | 好信号但趋势没配合,等一等 |
| 龙抬头 + MACD死叉 | 关注 | 55 | 信号冲突,谨慎观望 |
| 主升浪(非持仓) | 关注 | 75 | 已过最佳买点,等回调 |
| 真龙 | 关注 | 65 | 趋势刚启动,等龙抬头确认 |
| MACD死叉 | 回避 | 25 | 趋势偏弱,别碰 |
| 底背离 | 关注 | 60 | 跌透了,纳入关注池 |
| 有信号触发 | 观察 | 40 | 有信号但不够强 |
| 无信号 | 观望 | 0 | 没机会,别动 |
5.2 牛股阶段识别 compute_bull_stage
⚠️ 本节阶段识别仅基于技术信号,不含外部因素。
把股票在"牛股启动流程"中的位置分为5个阶段:
阶段1:底部探测 → 阶段2:资金进场 → 阶段3:趋势确立 → 阶段4:加速拉升
↓
阶段5:回调补涨
| 阶段 | 名称 | 触发信号 | 进度 | 白话建议 |
|---|---|---|---|---|
| 1 | 底部探测 | 底背离/短底背离/老鼠仓 | 20% | 跌得差不多了,放进关注池盯着 |
| 2 | 资金进场 | 龙抬头 | 45% | 最佳买入时机! 资金开始进场了 |
| 3 | 趋势确立 | 真龙 | 65% | 趋势确认了,可以追,但等回调买更好 |
| 4 | 加速拉升 | 主升浪 | 85% | 已经涨起来了,持仓的加仓,没买的别追高 |
| 5 | 回调补涨 | 反弹 | 50% | 回调后可能补涨,但要小心是假反弹 |
多信号叠加会加分(底背离+10%、龙抬头+5%、真龙+5%、老鼠仓+5%),说明流程更完整,牛股可能性更大。
5.3 深度分析 compute_deep_analysis + 综合评分引擎
对单只股票进行技术面7维度 + 外部因素8维度的深度分析,最终由综合评分引擎汇总为统一评分。
技术面维度(7个,基础分0-100)
维度1:均线系统
判断 MA5/10/20/60 的排列方式:
- 多头排列:MA5 > MA10 > MA20 → 短期比中期强,中期比长期强,上涨趋势
- 空头排列:MA5 < MA10 < MA20 → 依次向下,下跌趋势
- 交叉整理:均线纠缠在一起 → 方向不明
维度2:价格位置
计算当前价格在20/60/120日高低区间的百分位(0-100%):
白话解释:就像一把尺子,0%是最低点,100%是最高点。当前价格在尺子上的位置。
- < 20% → 低位区间,可能存在反弹机会
- 20%-50% → 中低位置,相对安全
- 50%-80% → 中高位置,还有一定上涨空间
-
80% → 高位区间,追高要小心
维度3:支撑与压力位
白话解释:支撑位是"价格跌到这里容易止跌"的位置,压力位是"价格涨到这里容易受阻"的位置。
支撑位来源:
- 当前价格下方的均线(MA5/10/20/60)
- 20/60/120日的最低点
压力位来源:
- 当前价格上方的均线
- 20/60/120日的最高点
按距离当前价格从近到远排序,取前5个。
维度4:成交量分析
计算量比 = 今日成交量 / 20日平均成交量:
| 量比 | 判断 | 白话 |
|---|---|---|
| < 0.6 | 缩量 | 市场冷清,没人交易 |
| 0.6-1.3 | 平量 | 正常水平 |
| 1.3-2.0 | 温和放量 | 有资金在活跃参与 |
| > 2.0 | 大幅放量 | 市场关注度很高,要留意是主力进场还是出货 |
维度5:形态识别
系统会自动识别以下技术形态:
| 形态 | 类型 | 白话 |
|---|---|---|
| 平台突破 | 看涨 | 股价横盘了很久(10日波动率<1.5%),今天终于突破了 |
| 窄幅整理 | 中性 | 横盘中,蓄势待变,可能要选方向了 |
| 创20日新高 | 看涨 | 股价达到近20天最高点,强势 |
| 双底突破 | 看涨 | 两次探底价格接近,且突破中间的高点(颈线),经典反转形态 |
| 量价齐升 | 看涨 | 近5天成交量和价格同步上升,资金在持续买入 |
| 均线粘合发散 | 看涨 | MA5/10/20靠得很近(离散<1%)后开始多头排列,即将选择方向 |
| 大阳线 | 看涨 | 当天涨幅≥5%,强势上涨 |
| 大阴线 | 看跌 | 当天跌幅≥5%,强势下跌 |
维度6:空间估算
计算最近压力位和最近支撑位之间的风险收益比:
白话解释:往上能涨多少 vs 往下能跌多少。
- 风险收益比 ≥ 2 → 性价比不错,潜在收益是风险的2倍以上
- 1-2 → 性价比一般
- < 0.8 → 下行风险大于上涨空间,不划算
维度7:综合评分
基础分50分,根据以上各维度加减分:
| 评分项 | 加分/扣分 | 白话 |
|---|---|---|
| 均线多头排列 | +10 | 趋势向上 |
| 均线空头排列 | -10 | 趋势向下 |
| 放量(量比≥1.3) | +5 | 有资金参与 |
| 缩量(量比<0.6) | -3 | 市场冷清 |
| 平台突破 | +10 | 蓄势后突破 |
| 创20日新高 | +5 | 强势 |
| 双底突破 | +10 | 经典反转形态 |
| 量价齐升 | +8 | 资金持续买入 |
| 均线粘合发散 | +7 | 即将选择方向(多头) |
| 120日位置偏低 | +5 | 安全边际高 |
| 120日位置偏高 | -5 | 追高风险 |
| 20日位置偏低 | +3 | 相对安全 |
| 20日位置偏高 | -3 | 注意风险 |
| 3+信号共振 | +15 | 多信号确认 |
| 2信号叠加 | +10 | 信号较多 |
| 1个信号 | +5 | 有信号但不强 |
| 风险收益比≥2 | +5 | 性价比好 |
| 风险收益比<0.8 | -5 | 性价比差 |
技术面评分映射(基础分,后续叠加外部因素):
| 评分 | 判定 | 白话 |
|---|---|---|
| ≥ 80 | 强烈看多 | 各方面都很好,值得关注 |
| ≥ 65 | 看多 | 整体偏积极 |
| ≥ 50 | 中性偏多 | 多空均衡,略偏积极 |
| ≥ 35 | 中性偏空 | 多空均衡,略偏消极 |
| < 35 | 看空 | 各方面都不好,回避 |
以上为技术面基础分映射。最终评分 = 技术面基础分 + 外部因素加减分,评级标准相同,详见第四章。
外部因素维度(8个,加减分±40上限)
技术面基础分计算完成后,综合评分引擎 score_engine.compute_comprehensive_score 会叠加以下外部因素:
| 维度 | 模块 | 评分范围 | 白话 |
|---|---|---|---|
| P0 资金面 | fund_flow_analyzer |
±20 | 主力在买还是在卖?有没有暗中吸筹/出货? |
| P1 市场情绪 | market_sentiment |
±10 | 今天涨停的股票多还是跌停的多?市场热不热? |
| P2 南向资金 | external_factors |
±10 | 跨境资金今天是流入还是流出? |
| P3 美股外盘 | external_factors |
±10 | 昨晚美股涨了还是跌了? |
| P4 大宗商品 | external_factors |
±5 | 原油/黄金/铜的价格变化对相关板块的影响 |
| P5 公告/异动 | news_analyzer |
±15 | 有没有并购/业绩预告等重大消息?股价有没有异动? |
| P6 政策面 | news_analyzer |
±10 | 近期有没有行业扶持/监管政策? |
| P7 汇率 | external_factors |
±3 | 人民币升值还是贬值? |
P5+P6 由
analyze_news_factors统一计算,合计上限 ±20(非各自独立累加)。
最终评分 = 技术面基础分(0-100) + 外部因素加减分(±40上限)
各因素独立计算,失败时返回0分不影响主流程。详见第四章。
5.4 AI 通俗解说
系统会将以上技术分析结果自动转成口语化的中文解说,涵盖:
- 当前走势概况(涨跌情况+均线趋势)
- 价格位置(在高位还是低位)
- 支撑压力(上方压力位和下方支撑位在哪)
- 成交量情况(放量还是缩量)
- 形态识别(发现了什么技术形态)
- 综合建议(根据评分给出操作建议)
- 空间估算(风险收益比如何)
- 外部因素(资金面/市场情绪/南向资金/美股/消息面等综合影响)
还可以调用豆包 LLM 对规则文本进行润色,让表达更自然生动。
六、数据源优先级
K线数据获取的多级容灾机制:
| 优先级 | 数据源 | 覆盖范围 | 说明 |
|---|---|---|---|
| 1 | 本地数据库 | 全市场 | 最快(毫秒级),优先使用 |
| 2 | 阿里云API | 沪深(不含北交所) | 最稳定的云端源 |
| 3 | 腾讯API | 全市场(含北交所) | 阿里云不支持北交所时使用 |
| 4 | 麦蕊API | 沪深 | 第三方付费数据源 |
| 5 | AKShare | 全市场 | 开源免费数据源,兜底 |
七、性能优化
| 优化点 | 说明 |
|---|---|
| numpy 向量化 | 信号检测使用 .values numpy 数组替代 pandas iloc,元素访问从 5μs 降到 50ns |
| 智能类型转换 | 已是 float64 的列跳过转换,避免重复 astype |
| 线程本地连接 | 多线程扫描时使用 threading.local() 复用 DB 连接 |
| 连接池 | 全局 ThreadedConnectionPool(2-20连接),避免频繁建连 |
| API Session 复用 | 阿里云/腾讯 API 使用 requests.Session 单例 + 连接池 + 自动重试 |