308 lines
7.1 KiB
Markdown
308 lines
7.1 KiB
Markdown
# 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) 或联系技术支持。
|