stock-agent/README.md
2025-12-28 10:28:18 +08:00

394 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AI 金融分析平台
基于 tushare 数据接口的智能股票筛选和分析系统,支持多种投资策略的量化评分和综合评估。
## 功能特性
- **三维度综合分析**: 价值投资、成长投资、技术分析三大策略综合评估
- **智能筛选**: AI算法自动筛选优质股票无需手动选择策略
- **交易信号分析**: 提供买入/卖出信号、止盈止损建议
- **实时数据**: 基于 tushare API 获取最新股票数据
- **智能评分**: AI 算法对股票进行综合评分和排名
- **可视化分析**: 直观的图表展示和财务指标分析
- **缓存优化**: Redis 缓存提升数据查询性能
## 技术栈
- **后端**: FastAPI + Python 3.9+
- **前端**: Flask + HTML/CSS/JavaScript
- **数据源**: Tushare API
- **数据处理**: pandas, numpy, scikit-learn
- **缓存**: Redis
- **数据库**: SQLAlchemy (支持 SQLite/PostgreSQL)
- **可视化**: Chart.js
## 快速开始
### 方法一Docker部署 (推荐)
使用Docker Compose可以一键部署整个应用包括前端、后端和Redis缓存。
#### 1. 环境准备
```bash
# 确保已安装Docker和Docker Compose
docker --version
docker-compose --version
# 克隆项目
git clone <repository-url>
cd StockAgent
```
#### 2. 配置环境变量
```bash
# 复制环境变量模板
cp .env.docker .env
# 编辑环境变量文件设置你的tushare token
vim .env # 或使用其他编辑器
```
`.env` 文件中设置:
```bash
TUSHARE_TOKEN=your_tushare_token_here
```
#### 3. 启动服务
```bash
# 一键启动所有服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f
```
#### 4. 访问应用
- **Web界面**: http://localhost:5001
- **API文档**: http://localhost:8000/docs
- **Redis管理**: localhost:6379
#### 5. 管理命令
```bash
# 停止服务
docker-compose down
# 重启服务
docker-compose restart
# 更新应用
docker-compose down
docker-compose build --no-cache
docker-compose up -d
# 清理数据
docker-compose down -v # 警告会删除Redis数据
```
### 方法二:本地开发部署
适合开发和调试环境。
#### 1. 环境配置
```bash
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
# 配置环境变量
cp .env.example .env
# 编辑 .env 文件,设置你的 tushare token
```
#### 2. 配置 tushare token
`.env` 文件中设置:
```
TUSHARE_TOKEN=your_tushare_token_here
```
#### 3. 启动服务
```bash
# 启动后端 API 服务
python main.py
# 启动前端 Web 服务 (新终端)
cd web && python app.py
```
#### 4. 访问应用
- **Web界面**: http://localhost:5001 (主要入口)
- **API文档**: http://localhost:8000/docs (后端API)
## 投资策略详解
### 价值投资策略 (40%权重)
- **关注指标**: PE、PB、ROE、负债率、净利率、现金流
- **适合场景**: 寻找被低估的优质股票,长期投资
- **评分标准**: PE<15() PB<2() ROE>15%(优) 负债率<50%()
### 成长投资策略 (30%权重)
- **关注指标**: 营收增长率利润增长率ROE毛利率趋势
- **适合场景**: 寻找高成长潜力的股票中长期投资
- **评分标准**: 营收增长>20%(优) 利润增长>15%(优) ROE>20%(优)
### 技术分析策略 (30%权重)
- **关注指标**: 移动平均线、RSI、MACD、成交量、布林带、ADX
- **适合场景**: 短期交易和趋势跟踪,交易时机判断
- **评分标准**: 趋势向上(25%) 动量健康(20%) 成交量配合(15%)
## 主要功能
### 🔍 智能筛选
- **综合评分**: 三种策略加权平均,智能筛选优质股票
- **固定标准**: 综合评分≥60分最多返回50只股票
- **自动识别**: 输入6位股票代码自动识别交易所
### 📊 综合分析
- **多维评估**: 同时从价值、成长、技术三个角度分析
- **详细评分**: 显示各策略的具体得分和综合评分
- **投资建议**: 基于评分给出BUY/HOLD/WATCH建议
### 💹 交易信号
- **买卖时机**: 基于技术分析提供具体的买入/卖出信号
- **价格建议**: 智能推荐买入价格和卖出价格
- **风险管理**: 提供止盈止损建议和仓位管理
- **市场时机**: 评估当前市场环境和交易时机
## API 接口
### 单股综合分析
```http
POST /api/analyze
Content-Type: application/json
{
"ts_code": "000001",
"strategy": "technical" # value/growth/technical
}
```
### 智能综合筛选
```http
POST /api/screen
Content-Type: application/json
{
"strategy": "comprehensive",
"min_score": 60,
"limit": 50
}
```
### 获取股票基础数据
```http
GET /api/stocks
```
## 项目结构
```
StockAgent/
├── src/
│ ├── data/ # 数据获取和存储
│ │ ├── tushare_client.py # Tushare数据接口
│ │ ├── database.py # 数据库操作
│ │ └── redis_cache.py # Redis缓存
│ ├── analysis/ # 分析计算模块
│ │ ├── financial_indicators.py # 财务指标计算
│ │ ├── technical_indicators.py # 技术指标计算
│ │ └── trading_signals.py # 交易信号分析
│ ├── strategies/ # 投资策略实现
│ │ ├── value_strategy.py # 价值投资策略
│ │ ├── growth_strategy.py # 成长投资策略
│ │ └── technical_strategy.py # 技术分析策略
│ └── utils/ # 工具函数
├── web/ # Web前端
│ ├── app.py # Flask应用
│ ├── templates/ # HTML模板
│ └── static/ # CSS/JS静态文件
├── config/ # 配置文件
├── main.py # FastAPI后端主程序
└── requirements.txt # 依赖包
```
## 使用示例
### Python API调用
```python
from src.data import TushareClient
from src.strategies import ValueStrategy, GrowthStrategy, TechnicalStrategy
# 初始化
client = TushareClient()
value_strategy = ValueStrategy()
growth_strategy = GrowthStrategy()
technical_strategy = TechnicalStrategy()
# 获取股票数据
financial_data = client.get_financial_data('000001.SZ')
daily_data = client.get_stock_daily('000001.SZ')
# 多策略评分
stock_data = {
'ts_code': '000001.SZ',
'financial_ratios': financial_data,
'technical_indicators': daily_data
}
value_score = value_strategy.calculate_score(stock_data)
growth_score = growth_strategy.calculate_score(stock_data)
technical_score = technical_strategy.calculate_score(stock_data)
# 综合评分 (40% + 30% + 30%)
comprehensive_score = value_score * 0.4 + growth_score * 0.3 + technical_score * 0.3
print(f"价值投资评分: {value_score}")
print(f"成长投资评分: {growth_score}")
print(f"技术分析评分: {technical_score}")
print(f"综合评分: {comprehensive_score}")
```
### Web界面使用
1. **访问**: 打开 http://localhost:5001
2. **筛选**: 点击"开始智能筛选"获取优质股票列表
3. **分析**: 输入股票代码进行单股详细分析
4. **决策**: 查看交易信号和投资建议
## 特色功能
### 🤖 智能化特性
- **自动股票代码识别**: 输入6位数字自动添加交易所后缀
- **综合策略评估**: 无需选择策略,自动三维度分析
- **智能交易建议**: 根据综合评分智能调整交易信号强度
### 🛡️ 风险控制
- **多重验证**: 三种策略交叉验证,提高准确性
- **止损建议**: 基于ATR、布林带等技术指标动态计算
- **仓位管理**: 根据风险评级提供合理的仓位建议
## 部署说明
### 🐳 Docker部署架构
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Frontend │ │ Backend │ │ Redis Cache │
│ (Flask) │────│ (FastAPI) │────│ (Redis) │
│ Port: 5001 │ │ Port: 8000 │ │ Port: 6379 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
└────────────────────────┼────────────────────────┘
Docker Network: stockagent-network
```
### 🔧 生产环境优化
对于生产环境部署,可以使用以下优化配置:
#### 1. 创建生产环境Docker Compose文件
```bash
# 创建生产环境配置
cp docker-compose.yml docker-compose.prod.yml
```
#### 2. 生产环境配置优化
- 使用nginx反向代理
- 添加SSL证书支持
- 配置日志轮转
- 设置资源限制
- 添加监控和告警
### 🔍 故障排除
#### 常见问题及解决方案
**1. Tushare Token配置问题**
```bash
# 检查环境变量
docker-compose exec backend env | grep TUSHARE_TOKEN
# 如果未设置,停止服务并重新配置
docker-compose down
vim .env # 设置正确的token
docker-compose up -d
```
**2. Redis连接问题**
```bash
# 检查Redis服务状态
docker-compose exec redis redis-cli ping
# 查看Redis日志
docker-compose logs redis
```
**3. 服务启动失败**
```bash
# 查看详细日志
docker-compose logs backend
docker-compose logs frontend
# 重新构建镜像
docker-compose build --no-cache
docker-compose up -d
```
**4. 端口冲突**
```bash
# 检查端口占用
netstat -tlnp | grep :5001
netstat -tlnp | grep :8000
# 修改docker-compose.yml中的端口映射
```
### 📊 监控和维护
#### 1. 服务监控
```bash
# 查看服务状态
docker-compose ps
# 查看资源使用情况
docker stats $(docker-compose ps -q)
# 查看实时日志
docker-compose logs -f --tail=100
```
#### 2. 数据备份
```bash
# 备份Redis数据
docker-compose exec redis redis-cli BGSAVE
docker cp stockagent-redis:/data/dump.rdb ./backup/redis-$(date +%Y%m%d).rdb
# 备份配置文件
tar -czf backup/config-$(date +%Y%m%d).tar.gz config/ .env
```
#### 3. 更新和维护
```bash
# 拉取最新代码
git pull
# 停止服务
docker-compose down
# 重新构建并启动
docker-compose build --no-cache
docker-compose up -d
# 验证服务正常
curl http://localhost:5001
curl http://localhost:8000/docs
```