Stock-Scanner 是一个集成了 25 项财务指标、新闻情绪分析、技术指标计算和 AI 深度解读的开源 A 股量化分析系统。它支持 OpenAI、Claude、智谱 AI 等多种大语言模型,并提供桌面 GUI 和 Web 两种界面。本教程将详细介绍多种部署方式。


1. 系统概述与准备工作

1.1 核心特性

  • 多维度分析:涵盖盈利能力、偿债能力、营运能力等 25 项财务指标,以及移动平均线、RSI、MACD 等技术指标。
  • AI 智能解读:支持 OpenAI GPT、Claude、智谱 AI 等模型,提供流式推理和专业投资建议。
  • 多端支持:提供 PyQt6 桌面版 GUI、Flask Web 版(支持 SSE 流式推送)和 Docker 容器化部署。
  • 多市场覆盖:V3.0 版本已支持 A 股、港股和美股。

1.2 环境要求

  • 操作系统:Windows、Linux、macOS。
  • Python 版本:Python 3.8 或更高版本。
  • 网络:能够访问互联网以获取股票数据和调用 AI API。
  • (可选)AI API 密钥:至少配置一个 AI 服务商的 API 密钥(OpenAI、Anthropic、智谱 AI 等)以启用 AI 分析功能。

2. 安装与配置

2.1 克隆项目并安装依赖

首先,从 GitHub 克隆项目到本地:

1
2
git clone https://github.com/DR-lin-eng/stock-scanner.git
cd stock-scanner

推荐使用 Python 虚拟环境,以避免依赖冲突:

1
2
3
4
5
6
7
8
9
10
11
# 创建虚拟环境
python -m venv venv

# 激活虚拟环境
# Windows:
venv\Scripts\activate
# Linux / macOS:
source venv/bin/activate

# 安装依赖(以 3.0 版本为例)
pip install -r "3.0 webapp(支持港股美股)/requirements.txt"

如果安装缓慢,可以使用国内镜像源加速,例如:pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

2.2 配置文件详解

项目根目录下有一个 config - 示例.json 文件,你需要将其复制为 config.json 并进行配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{
"api_keys": {
"openai": "sk-your-openai-key",
"anthropic": "sk-ant-your-claude-key",
"zhipu": "your-zhipu-key",
"siliconflow": "your-siliconflow-key"
},
"ai": {
"model_preference": "openai",
"models": {
"openai": "gpt-4o-mini",
"anthropic": "claude-3-haiku-20240307",
"zhipu": "chatglm_turbo"
},
"max_tokens": 4000,
"temperature": 0.7
},
"analysis_weights": {
"technical": 0.4,
"fundamental": 0.4,
"sentiment": 0.2
},
"web_auth": {
"enabled": true,
"password": "your_strong_password",
"session_timeout": 3600
},
"cache": {
"price_hours": 1,
"fundamental_hours": 6,
"news_hours": 2
}
}

关键配置项说明

  • api_keys:至少配置一个 AI 服务的 API 密钥。如果使用本地模型(如 Ollama),此处可留空或随意填写。
  • model_preference:首选 AI 服务商,系统会优先使用此处的模型。
  • analysis_weights:技术面、基本面和情绪面在综合评分中的权重。
  • web_auth:Web 版的认证配置,建议启用密码保护。
  • cache:不同数据类型在内存中的缓存时间(小时),可减少 API 调用。

3. 部署方式

Stock-Scanner 提供了多种部署方式,你可以根据需求选择。

3.1 方式一:直接运行 Web 版(推荐用于生产)

这是功能最全的方式,支持 SSE 流式输出,适合部署在服务器上。

  1. 进入 Web 版目录(以最新的 3.0 版本为例):

    1
    cd "3.0 webapp(支持港股美股)"
  2. 直接运行 Flask 开发服务器(仅用于测试):

    1
    python flask_web_server.py

    服务默认运行在 http://localhost:5000

  3. 使用 Gunicorn 部署(生产环境推荐)

    1
    2
    pip install gunicorn
    gunicorn -w 4 -b 0.0.0.0:5000 flask_web_server:app

    此命令会启动 4 个工作进程,监听所有网络接口的 5000 端口。

3.2 方式二:Docker 部署(最便捷)

Docker 方式适合快速部署,支持 x86 和 ARM 架构。

  1. 确保 Docker 已安装,并可以考虑配置国内镜像源以加速拉取。

  2. 进入包含 Docker Compose 文件的目录

    1
    2
    cd "2.6 webapp(流式传输测试版)"
    # 或根据最新版本进入相应目录
  3. 使用 Docker Compose 一键启动

    1
    docker-compose up -d

    此命令会在后台启动容器,默认映射端口为 8888

3.3 方式三:使用预构建的 Docker 镜像

社区维护了一个可直接使用的 Docker 镜像 lanzhihong/stock-scanner

1
2
3
4
5
docker run -d \
--name stock-scanner \
-p 8888:8888 \
-e GEMINI_API_KEY=<你的API密钥> \
lanzhihong/stock-scanner:latest

注意:此镜像可能需要通过环境变量传递特定的 AI 密钥(如 Gemini)。访问 http://你的IP:8888 即可使用。


4. 使用 Nginx 进行反向代理(可选)

为了在生产环境中提供更好的性能和安全性,可以使用 Nginx 作为反向代理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
server {
listen 80;
server_name your-domain.com;

location / {
proxy_pass http://localhost:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

# SSE 流式接口需要特殊配置以禁用缓冲
location /api/sse {
proxy_pass http://localhost:5000;
proxy_set_header Connection '';
proxy_http_version 1.1;
proxy_buffering off;
proxy_cache off;
chunked_transfer_encoding off;
}
}

5. 使用与验证

5.1 Web 界面

  • 在浏览器中访问你部署的地址(如 http://localhost:5000http://你的IP:8888)。
  • 如果启用了 Web 认证,需要输入 config.json 中设置的密码。
  • 输入股票代码(A 股如 000001,港股如 00700,美股如 AAPL)即可开始分析。

5.2 API 调用示例

你也可以通过 API 方式使用:

单股票分析 (SSE 流式)

1
2
3
curl -X POST http://localhost:5000/api/analyze_stream \
-H "Content-Type: application/json" \
-d '{"stock_code": "000001", "client_id": "test_client"}'

批量分析

1
2
3
curl -X POST http://localhost:5000/api/batch_analyze_stream \
-H "Content-Type: application/json" \
-d '{"stock_codes": ["000001", "000002"], "client_id": "test_client"}'

5.3 对接本地大模型 (Ollama)

Stock-Scanner 支持对接本地部署的 Ollama 模型,实现完全私有化的分析。

  • 确保 Ollama 服务正在运行并已下载所需模型(如 qwen2.5)。
  • 在 Web 界面或配置文件中,将 API 地址指向 Ollama 的服务地址(通常为 http://localhost:11434),API Key 可随意填写。
  • 模型名称填写 Ollama 中的模型名,如 qwen2.5:7b

6. 故障排查

  • 数据获取失败:检查网络连接,确保能访问 quote.eastmoney.com 等数据源。更新 akshare 库:pip install --upgrade akshare
  • AI 分析失败:检查 config.json 中的 API 密钥是否正确,以及账户是否有余额。可以尝试切换到备用模型。
  • 端口被占用:修改启动命令或 Docker Compose 文件中的映射端口,确保端口未被占用。
  • Docker 镜像拉取慢:配置国内 Docker 镜像加速器,或在 Dockerfile 中修改 pip 源为国内源。

重要免责声明:本系统仅用于学习和研究目的,所有分析结果仅供参考,不构成投资建议。投资有风险,入市需谨慎。