394 lines
10 KiB
Markdown
394 lines
10 KiB
Markdown
# 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
|
||
``` |