---
title: stock-predict
canonical_url: "https://www.modelscope.cn/studios/lydqh6/stock-predict"
md_url: "https://www.modelscope.cn/studios/lydqh6/stock-predict.md"
repository: lydqh6/stock-predict
chinese_name: "股票行情预测"
last_updated: 2026-08-06
sdk_type: gradio
sdk_version: 6.17.3
downloads: 0
stars: 1
---

# stock-predict

> stock-predict - lydqh6 在 ModelScope 创建的在线 Demo。股票行情分析系统（华中科技大学 郝家辉）

lydqh6/stock-predict 是 ModelScope 魔搭社区上的在线可交互 Demo（创空间），基于 gradio 6.17.3 构建，中文名为「股票行情预测」。

- **Repository**: lydqh6/stock-predict
- **SDK**: gradio
- **SDK version**: 6.17.3
- **Downloads**: 0
- **Stars**: 1
- **Last updated**: 2026-08-06

Source: https://www.modelscope.cn/studios/lydqh6/stock-predict

---

# 股票行情分析系统（华中科技大学 郝家辉）

一个可部署到魔搭（ModelScope）创空间的 **股票行情分析系统**（Python + Gradio Web 应用），
CPU 即可运行，支持全 A 股任意代码查询与实时行情。

> ⚠️ 行情数据来自公开接口，仅供学习演示，不构成任何投资建议。
> 本项目不收费、无用户系统、不提供投资建议、不做数据持久化、不保存用户上传文件。

## 功能特性

- **全 A 股任意代码查询**：输入 6 位代码或股票名称（支持汉字，如「贵州茅台」）即可分析（6 → 沪市，0/3 → 深市，8/4 → 北交所），无需内置股票、无需上传历史数据；名称搜索走腾讯 smartbox + 东方财富 suggest，内置 10 只股票可离线识别
- **实时行情**：腾讯 `qt.gtimg.cn` + 东方财富双源自动切换（免费公开接口、GB18030 解码、5 秒超时、45 秒缓存），任一被网络阻断自动切换另一数据源
- **历史 K 线**：腾讯 newfqkline/fqkline + 东方财富三地址自动切换（前复权），支持 **日线 / 周线 / 月线** 与日期区间过滤
- **全天候可用**：历史 K 线 24 小时可取，任何时间都能分析；只要取到数据就展示 K 线图（数据不足时仅跳过 AR/GA 预测并提示，绝不隐藏图表）；非交易时段自动展示最近收盘数据并标注「非交易时段」，0 价/过期等异常行情数据不会破坏 K 线与预测
- **技术指标**：MA(5/10/20)、EXPMA(12/50)、薛斯通道(20/60)、KDJ(9)、MACD(12/26/9)、威廉指标 WR(14)
- **AR(p) 时间序列**：AIC 准则自动定阶、Levinson-Durbin 递推求解系数，预测未来 3 期收盘价
- **遗传算法权重优化**：7 个技术指标因子、200 个体 × 300 代进化，输出最优权重、样本内准确率、无泄漏交叉验证准确率与上涨概率
- **中文 Web 界面**：实时行情卡片、K 线 + 主图指标、KDJ/MACD/威廉副图、预测结果表；一个「开始分析」按钮即完成「实时行情 + K 线 + 指标 + 预测」全流程（实时行情默认开启，失败自动回退离线数据）
- **防卡死**：名称搜索 / 实时行情 / K 线使用相互独立的网络“黑名单”，任一接口被屏蔽不会连坐其他接口；实时行情与在线 K 线获取都带硬预算（超时即跳过/回退内置数据，不拖垮分析），失败或非交易时段自动用最近 K 线收盘兜底；事件装配不依赖 `gr.State`，兼容 Gradio 5/6

## 快速开始（本地）

```bash
cd stock-predictor-modern-lite
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python app.py          # 浏览器打开 http://127.0.0.1:7860
```

运行测试：

```bash
pytest -q
```

> 单元测试覆盖数据解析、指标计算、AR/GA 核心逻辑与行情解析（含代码映射、GB18030 解码、缓存与兜底）。

## 部署到魔搭（ModelScope）创空间

1. 新建创空间：选择 **编程式创建** → **Gradio 模板**，运行时选 **Python 3.10+ / CPU**（免费即可）；
2. **必须上传**：`app.py`、`data_loader.py`、`indicators.py`、`ar_model.py`、`ga_model.py`、`quotes.py`、`requirements.txt`、`README.md`、`data/` 目录（10 只股票离线数据，首次加载示例与断网兜底都靠它）、`assets/` 目录（支付宝收款码图片，缺省时打赏区块自动隐藏）；
   可选：`tests/`（`final/`、`doc/`、`PORTING.md`、`README_C.md`、`.venv/`、`__pycache__/` 等内部文件不要传）；
3. 平台会自动执行 `python app.py`（`server_name="0.0.0.0"`）并暴露 Gradio 界面；
   代码已兼容 **Gradio 5.27 / 5.50 / 6.x**（theme 参数按版本自动放到 `Blocks()` 或 `launch()`），
   无论平台预装哪个版本的 Gradio 都能正常出图；
4. **首次打开页面不联网**：直接用内置离线数据秒出 K 线图（页面会标注「首次加载不联网」）；点击「开始分析」即请求实时行情与在线 K 线；
5. 若创空间出网受限，腾讯/东方财富接口均不可达时，实时行情卡片会显示不可用，但 K 线图仍用内置离线数据正常展示，不会崩溃；
6. 启动日志中会打印运行环境（`gradio=… numpy=… pandas=… matplotlib=…`），并在启动阶段预热 matplotlib 字体缓存，
   避免首次绘图因字体缓存构建卡顿 30–60 秒而被网关超时中断。

### 魔搭常见问题（FAQ）

- **非交易时段（收盘后/开盘前/周末）能看 K 线与预测吗**：可以。历史 K 线 24 小时可取，K 线图、技术指标与 AR/GA 预测始终基于历史数据输出；实时行情在非交易时段自动展示最近交易日数据，行情卡片会补全昨开/昨收/最高/最低/收盘与涨跌幅（接口不可用时同样展示）。在线接口缓慢时系统会在约 9 秒内自动回退内置离线数据，不会长时间“转圈无响应”。
- **页面只有文字、没有样式/颜色、也无法点击输入**：这是魔搭把应用代理到子路径（如 `/dsw-xxx/proxy/7860/`）后，Gradio 不知道外部前缀、CSS/JS 资源 404 导致的典型症状。修复方法：
  1. 打开应用预览页，从浏览器地址栏找到形如 `dsw-xxxx` 的代理标识；
  2. 在创空间「设置 → 环境变量」中新增 `GRADIO_ROOT_PATH`，值为 `/<dsw-xxxx>/proxy/7860/`（`dsw-xxxx` 换成你的实际标识），保存后重新部署；
  3. 也可以直接在创空间 WebIDE 终端里 `export GRADIO_ROOT_PATH=/<dsw-xxxx>/proxy/7860/` 后再运行 `python app.py`。
  本版代码已内置自动探测（`X-Forwarded-Prefix` 头 / 请求路径中的 `/proxy/` 前缀），大多数情况下无需手动配置；启动日志会打印
  `已设置代理前缀 root_path=…` 或 `已启用首次请求自动探测代理前缀…`，可用它确认配置是否生效。
- **页面只有「实时行情暂不可用」没有 K 线图**：先看页面状态栏的提示文字；若提示“无法获取 … 且本地无该代码的离线数据”，说明该代码不在内置 10 只股票内且网络不可达，请检查空间运行日志（控制台 → 运行日志）确认网络，并确认已上传 `data/`。首次打开页面只显示输入提示（无默认股票），输入代码或名称后点击「开始分析」即可。
- **K 线图与预测结果全部空白**：若重新上传部署后仍空白，先看运行日志：
  1. 启动日志是否打印 `股票行情分析系统 v2026-08-05b 启动`、`运行环境：Python … gradio=…`、以及 **`启动自检：离线分析成功（K线图=True，副图=True，AR=True，GA=True）`**——自检通过说明分析流程在部署环境完全可用；
  2. 若自检失败会打印 `启动自检失败（分析流程异常…）` 完整堆栈，把该段日志发给开发者即可定位；
  3. 页面打开后若出现 `queue_join_helper` 后紧跟 `ERROR/Traceback` 也是同一种情况。新版已做异常兜底，任何失败都会在页面显示错误文字，而不是整页空白。
- **怎么确认上传成功**：看空间「运行日志」中启动时的日志：`股票行情分析系统 v2026-08-05b 启动`、`内置离线数据目录 …：10 个日线、10 个周线`、`启动自检：离线分析成功…`；若出现 `未找到内置离线数据目录` 说明 `data/` 没传上去。
- **更新代码后不生效**：每次修改后需**重新上传覆盖对应文件**并等待平台重新构建（构建完成后会显示新版运行日志）。

## 演示截图说明

| 区域 | 内容 |
| --- | --- |
| 顶部 | 项目标题 + 免责声明（行情数据来自公开接口，仅供学习演示，不构成任何投资建议） |
| 左侧 | 股票代码/名称输入框（全 A 股，支持汉字）、K 线周期（日线/周线/月线）、日期范围、「开始分析」按钮（实时行情默认开启，失败自动回退离线数据）、免责提示框 + 自愿打赏的支付宝收款码（「请作者喝杯咖啡」） |
| 实时行情卡片 | 名称、现价、涨跌额/涨跌幅、今开/最高/最低/昨收、成交量、成交额、换手率、行情时间、数据来源；非交易时段/接口不可用时自动展示最近交易日的昨开/昨收/最高/最低/收盘与涨跌幅 |
| 数据来源 | 历史 K 线来源与区间、实时行情更新时间与交易时段标注（非交易时段显示「非交易时段（显示最近收盘）」；离线时标注「已回退离线数据」） |
| 主图（Tab 1） | K 线 + MA5/10/20 + EXPMA12/50 + 薛斯通道 + 最新价标记 + AR 3 期预测延伸 |
| 副图（Tab 2） | KDJ(9)、MACD(12,26,9)、威廉指标 WR(14)，日期坐标轴与主图对齐 |
| 结果表 | 数据来源与区间、AR 阶数/系数/3 期预测、GA 最优权重/样本内准确率/交叉验证准确率/上涨概率 |

## 目录结构

```
├── app.py            # Gradio 界面（入口）
├── data_loader.py    # 数据层：解析 .d/.w 文本（测试与离线兜底用）
├── indicators.py     # 指标层：MA/EXPMA/KDJ/MACD/XUECHI/WR
├── ar_model.py       # AR(p) 模型：AIC 定阶 + Levinson-Durbin + 3 期预测
├── ga_model.py       # 遗传算法权重优化（7 因子）
├── quotes.py         # 腾讯实时行情 + 历史 K 线（GB18030、代码映射、缓存、兜底）
├── tests/            # pytest 单元测试（可选上传）
├── data/             # 内置 10 只股票日线/周线（仅离线兜底）
├── requirements.txt  # 固定依赖版本
└── README.md         # 项目说明（魔搭页面展示）
```

## 免责声明

行情数据来自公开接口（腾讯 `qt.gtimg.cn` 与历史 K 线接口），仅供学习演示，不构成任何投资建议。
指标与预测结果仅用于课程设计与技术学习，请勿据此进行实际投资决策。
