Files
stock/stock-html/docs/算法分析.md
T

34 KiB
Raw Blame History

股票投资分析系统 — 算法分析文档

最后更新: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.pycalc_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.pyget_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.pyget_us_market_overview()
  • 数据来源AKShare index_global(全球指数)
  • 板块映射:内置 美股板块→A股板块 映射表
  • 评分范围:±10

4.5 大宗商品价格(P4,已实现)

白话解释:石油、黄金、铜等大宗商品价格变化,直接影响A股相关板块。

商品 影响板块 传导逻辑 评分
原油 石油开采(利好)、航空(利空) 油价涨→开采盈利增→航空成本增 ±1
黄金 黄金股、珠宝 金价涨→黄金企业盈利增 ±1
有色金属、电缆 铜价涨→铜企受益 ±1
螺纹钢 钢铁(利好)、基建/地产(利空) 钢价涨→钢企受益,基建成本增 ±1
碳酸锂 锂矿/锂电池(利好)、新能源车(利空) 锂价涨→锂矿受益,新能源车成本增 ±1

实现模块

  • 模块文件services/external_factors.pyget_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.pyanalyze_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.pyanalyze_policy_impact()
  • 数据来源AKShare stock_info_global_em(财经新闻)
  • 关键词分类:扶持/监管/货币/财政/资本市场
  • LLM深度分析:重大政策调用豆包AI分析(规则评分兜底)
  • 评分范围:±10

4.8 汇率变化(P7,已实现)

白话解释:人民币升值利好进口型企业(航空、造纸),贬值利好出口型企业(纺织、电子代工)。

汇率变化 受益板块 受损板块 评分
人民币升值 航空、造纸、房地产 纺织、家电出口、电子代工 +2
人民币贬值 纺织、家电、电子代工 航空、造纸 -2
汇率稳定 0

实现模块

  • 模块文件services/external_factors.pyget_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_flowP0
   ├─ market_sentiment.calc_market_sentimentP1
   ├─ external_factors.get_all_external_factorsP2-P4,P7
   └─ news_analyzer.analyze_news_factorsP5-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 通俗解说

系统会将以上技术分析结果自动转成口语化的中文解说,涵盖:

  1. 当前走势概况(涨跌情况+均线趋势)
  2. 价格位置(在高位还是低位)
  3. 支撑压力(上方压力位和下方支撑位在哪)
  4. 成交量情况(放量还是缩量)
  5. 形态识别(发现了什么技术形态)
  6. 综合建议(根据评分给出操作建议)
  7. 空间估算(风险收益比如何)
  8. 外部因素(资金面/市场情绪/南向资金/美股/消息面等综合影响)

还可以调用豆包 LLM 对规则文本进行润色,让表达更自然生动。


六、数据源优先级

K线数据获取的多级容灾机制:

优先级 数据源 覆盖范围 说明
1 本地数据库 全市场 最快(毫秒级),优先使用
2 阿里云API 沪深(不含北交所) 最稳定的云端源
3 腾讯API 全市场(含北交所) 阿里云不支持北交所时使用
4 麦蕊API 沪深 第三方付费数据源
5 AKShare 全市场 开源免费数据源,兜底

七、性能优化

优化点 说明
numpy 向量化 信号检测使用 .values numpy 数组替代 pandas iloc,元素访问从 5μs 降到 50ns
智能类型转换 已是 float64 的列跳过转换,避免重复 astype
线程本地连接 多线程扫描时使用 threading.local() 复用 DB 连接
连接池 全局 ThreadedConnectionPool2-20连接),避免频繁建连
API Session 复用 阿里云/腾讯 API 使用 requests.Session 单例 + 连接池 + 自动重试