Files
aiagents-stock/docs/TDX数据源快速配置.md
T

308 lines
7.1 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.
# TDX数据源快速配置指南
## 📖 简介
TDX(通达信)数据源是一个本地化的股票行情数据接口,提供实时行情、K线数据、技术指标等功能。相比于公网API,TDX数据源具有以下优势:
### ✨ 核心优势
- **🚀 速度快**: 本地局域网访问,响应时间<50ms
- **💰 零成本**: 完全免费,无API调用限制
- **📊 数据全**: 支持实时行情、K线、分时、技术指标
- **🔒 稳定性**: 不受公网API限流影响
- **🌐 本地化**: Docker一键部署,数据完全可控
---
## 🎯 快速开始
### 1. 部署TDX数据API服务
#### 方式一:使用Docker部署(推荐)
```bash
# 克隆TDX API项目
git clone https://github.com/oficcejo/tdx-api.git
cd tdx-api
# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f
```
**访问测试**
```bash
# 测试接口是否正常
curl "http://localhost:8080/api/quote?code=000001"
```
#### 方式二:手动构建
```bash
# 构建镜像
docker build -t tdx-api .
# 运行容器
docker run -d -p 8080:8080 --name tdx-api tdx-api
```
### 2. 配置AI股票分析系统
在项目根目录的`.env`文件中添加以下配置:
```env
# TDX数据源配置
TDX_ENABLED=true
TDX_BASE_URL=http://192.168.1.222:8080
```
**配置说明**
- `TDX_ENABLED`: 是否启用TDX数据源(`true`/`false`
- `TDX_BASE_URL`: TDX API服务地址
- 本机部署:`http://localhost:8080`
- 局域网部署:`http://192.168.1.222:8080`(替换为实际IP
### 3. 重启AI股票分析系统
```bash
# 本地部署
streamlit run app.py
# Docker部署
docker-compose restart
```
---
## 📊 功能集成说明
### 已集成模块
#### 1. AI盯盘 - 实时行情获取
**文件**: `smart_monitor_data.py`, `smart_monitor_ui.py`
**功能**
- ✅ 实时行情查询(价格、涨跌幅、成交量)
- ✅ K线数据获取(日K、周K、月K)
- ✅ 技术指标计算(MA、MACD、RSI、KDJ、布林带)
- ✅ 降级机制(TDX失败时自动切换Tushare)
**使用示例**
```python
from smart_monitor_tdx_data import SmartMonitorTDXDataFetcher
# 初始化
fetcher = SmartMonitorTDXDataFetcher(base_url="http://192.168.1.222:8080")
# 获取实时行情
quote = fetcher.get_realtime_quote('000001')
print(f"当前价: {quote['current_price']} 元")
# 获取K线数据
kline_df = fetcher.get_kline_data('000001', kline_type='day', limit=200)
# 获取技术指标
indicators = fetcher.get_technical_indicators('000001')
print(f"RSI: {indicators['rsi6']:.2f}")
```
#### 2. 实时监测 - 价格监控
**文件**: `monitor_service.py`
**功能**
- ✅ 自动价格监控(优先使用TDX数据源)
- ✅ 降级机制(TDX失败时切换AKShare/yfinance
- ✅ A股自动识别(6位数字代码)
**工作流程**
```
1. 检测股票代码是否为A股(6位数字)
2. 如果是A股且TDX已启用 → 使用TDX获取行情
3. TDX失败 → 自动降级到AKShare
4. 更新数据库 → 检查触发条件 → 发送通知
```
---
## 🔧 配置示例
### 完整.env配置
```env
# DeepSeek AI配置(必需)
DEEPSEEK_API_KEY=sk-your-api-key
# TDX数据源配置(可选,提升实时监测性能)
TDX_ENABLED=true
TDX_BASE_URL=http://192.168.1.222:8080
# Tushare配置(可选,作为降级数据源)
TUSHARE_TOKEN=your-tushare-token
# 邮件通知配置(可选)
EMAIL_ENABLED=true
SMTP_SERVER=smtp.qq.com
SMTP_PORT=587
EMAIL_FROM=your_email@qq.com
EMAIL_PASSWORD=your_authorization_code
EMAIL_TO=receiver@example.com
# Webhook通知配置(可选)
WEBHOOK_ENABLED=false
WEBHOOK_TYPE=dingtalk
WEBHOOK_URL=your_webhook_url
WEBHOOK_KEYWORD=股票
```
---
## 📈 TDX数据API接口说明
### 核心接口
| 接口 | 方法 | 说明 | 示例 |
|------|------|------|------|
| `/api/quote` | GET | 实时行情 | `?code=000001` |
| `/api/kline` | GET | K线数据 | `?code=000001&type=day` |
| `/api/minute` | GET | 分时数据 | `?code=000001` |
| `/api/trade` | GET | 分时成交 | `?code=000001` |
| `/api/search` | GET | 股票搜索 | `?keyword=平安` |
### 实时行情响应示例
```json
{
"code": 0,
"message": "success",
"data": [
{
"K": {
"Close": 12345, // 收盘价(厘,需除以1000
"Open": 12300, // 开盘价(厘)
"High": 12400, // 最高价(厘)
"Low": 12200, // 最低价(厘)
"Last": 12350 // 昨收价(厘)
},
"TotalHand": 123456, // 成交量(手)
"Amount": 1234567890 // 成交额(厘)
}
]
}
```
**注意**: 价格单位为"厘"(1元 = 1000厘),系统会自动转换。
---
## 🚨 常见问题
### 1. TDX服务无法访问
**症状**
```
❌ TDX连接失败,请检查接口地址: http://192.168.1.222:8080
```
**解决方案**
1. 检查TDX Docker容器是否运行:
```bash
docker ps | grep tdx
```
2. 测试接口可用性:
```bash
curl "http://192.168.1.222:8080/api/quote?code=000001"
```
3. 检查防火墙设置(确保8080端口开放)
4. 修改`.env`中的`TDX_BASE_URL`为正确的IP地址
### 2. TDX数据源未启用
**症状**
```
⚠️ TDX数据源模块未找到,将使用默认数据源
```
**解决方案**
1. 确认`.env`中已配置:
```env
TDX_ENABLED=true
```
2. 确认`smart_monitor_tdx_data.py`文件存在
3. 重启应用
### 3. TDX获取数据失败,降级到其他数据源
**症状**
```
⚠️ TDX获取失败,降级到默认数据源: 000001
```
**原因**
- TDX服务临时不可用
- 股票代码不存在
- 网络延迟
**解决方案**
- 系统会自动降级到AKShare,无需干预
- 如频繁降级,检查TDX服务状态
### 4. 价格数据显示为0
**原因**
- TDX接口返回的数据单位为"厘"1元=1000厘)
- 系统会自动转换,如显示为0可能是数据源问题
**解决方案**
1. 检查TDX服务日志
2. 尝试重启TDX容器:
```bash
docker-compose restart
```
---
## 🔍 性能对比
| 数据源 | 响应时间 | 调用限制 | 稳定性 | 成本 |
|--------|----------|----------|--------|------|
| **TDX(本地)** | <50ms | 无限制 | ⭐⭐⭐⭐⭐ | 免费 |
| **AKShare** | 500-2000ms | 频繁限流 | ⭐⭐⭐ | 免费 |
| **Tushare** | 300-1000ms | 积分限制 | ⭐⭐⭐⭐ | 免费/付费 |
| **yfinance** | 1000-3000ms | 有限制 | ⭐⭐⭐ | 免费 |
**结论**: TDX数据源在本地部署时,性能和稳定性远超公网API。
---
## 📚 相关资源
- **TDX API项目地址**: https://github.com/oficcejo/tdx-api
- **完整API文档**: [TDX API_接口文档.md](https://github.com/oficcejo/tdx-api/blob/main/API_接口文档.md)
- **Docker部署指南**: [TDX DOCKER_DEPLOY.md](https://github.com/oficcejo/tdx-api/blob/main/DOCKER_DEPLOY.md)
---
## 📝 版本历史
- **v1.0.0** (2025-11-04): TDX数据源集成完成
- ✅ AI盯盘模块集成TDX实时行情
- ✅ 实时监测模块集成TDX价格获取
- ✅ 降级机制(TDX→Tushare→AKShare
- ✅ 完整技术指标计算
---
**提示**: 如有问题,请查看项目 [README.md](../README.md) 或联系技术支持。