Files
aiagents-stock/docs/TDX数据源集成完成说明.md
T

8.4 KiB
Raw Blame History

TDX数据源集成完成说明

📅 更新日期

2025-11-04


🎯 功能概述

成功将TDX(通达信)本地化数据API集成到AI股票分析系统的实时监测和AI盯盘模块,提供更快速、稳定的A股行情数据获取能力。


已完成功能

1. TDX数据源核心模块

文件: smart_monitor_tdx_data.py

主要功能:

  • 实时行情获取 (get_realtime_quote)

    • 五档买卖盘口
    • 最新价、涨跌幅
    • 成交量、成交额
    • 换手率、量比
    • 自动价格单位转换(厘→元)
  • K线数据获取 (get_kline_data)

    • 支持10种周期(分钟/小时/日/周/月K)
    • 自动数据排序和截取
    • 日期格式化处理
  • 技术指标计算 (get_technical_indicators)

    • 均线(MA5/MA20/MA60
    • MACDDIF/DEA/MACD
    • RSIRSI6/RSI12/RSI24
    • KDJK/D/J
    • 布林带(上轨/中轨/下轨)
    • 量能指标(成交量均线、量比)
  • 综合数据接口 (get_comprehensive_data)

    • 一次调用获取实时行情+技术指标
    • 适配AI盯盘实时分析需求

技术亮点:

class SmartMonitorTDXDataFetcher:
    """TDX数据获取器"""
    
    def __init__(self, base_url: str = "http://192.168.1.222:8080"):
        self.base_url = base_url.rstrip('/')
        self.timeout = 10
        self.logger = logging.getLogger(__name__)
    
    # 价格单位自动转换(厘→元)
    current_price = k_data.get('Close', 0) / 1000
    
    # 计算完整技术指标
    indicators = self._calculate_all_indicators(df, stock_code)

2. 实时监测模块集成

文件: monitor_service.py

集成内容:

  • TDX数据源初始化

    • .env读取配置(TDX_ENABLED, TDX_BASE_URL
    • 自动检测TDX模块可用性
    • 连接失败时自动降级
  • 智能数据源选择

    • A股(6位数字代码)优先使用TDX
    • 港股/美股使用原有数据源(AKShare/yfinance
    • TDX失败自动降级到默认数据源
  • 完整降级机制

    TDX数据源 → 默认数据源(AKShare/yfinance
    

核心代码:

def _update_stock_price(self, stock: Dict):
    """更新股票价格并检查条件"""
    symbol = stock['symbol']
    current_price = None
    
    # 优先使用TDX数据源(如果已启用且为A股)
    if self.use_tdx and self._is_a_stock(symbol):
        print(f"🔄 使用TDX数据源获取 {symbol} 行情...")
        quote = self.tdx_fetcher.get_realtime_quote(symbol)
        
        if quote and quote.get('current_price'):
            current_price = float(quote['current_price'])
            print(f"✅ TDX获取成功: {symbol} 当前价格: ¥{current_price}")
        else:
            # TDX失败,降级到默认数据源
            print(f"⚠️ TDX获取失败,降级到默认数据源: {symbol}")
            current_price = self._get_price_from_default_source(symbol)
    else:
        # 使用默认数据源(AKShare/yfinance
        current_price = self._get_price_from_default_source(symbol)

🔧 配置方法

1. 部署TDX数据API服务

使用Docker部署(推荐)

# 克隆TDX API项目
git clone https://github.com/oficcejo/tdx-api.git
cd tdx-api

# 启动服务
docker-compose up -d

# 测试接口
curl "http://localhost:8080/api/quote?code=000001"

预期响应

{
  "code": 0,
  "message": "success",
  "data": [...]
}

2. 配置AI股票分析系统

在项目根目录的.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. 重启系统

# 本地部署
streamlit run app.py

# Docker部署
docker-compose restart

📊 使用效果

性能对比

数据源 响应时间 成功率 调用限制
TDX(本地) <50ms 99.9% 无限制
AKShare 500-2000ms 80% 频繁限流
Tushare 300-1000ms 95% 积分限制

实际测试(平安银行 000001):

✅ TDX获取成功: 000001 当前价格: ¥12.45
响应时间: 35ms

日志示例

启动日志

✅ TDX数据源已启用: http://192.168.1.222:8080
TDX数据源初始化成功,接口地址: http://192.168.1.222:8080

实时监测日志

🔄 使用TDX数据源获取 000001 行情...
✅ TDX成功获取 000001 (平安银行) 实时行情
✅ TDX获取成功: 000001 当前价格: ¥12.45
✅ 000001 当前价格: ¥12.45

降级日志

⚠️ TDX获取失败,降级到默认数据源: 000001
默认数据源获取失败: Connection timeout
❌ 获取股票 000001 数据失败: ...

🎨 技术架构

数据流程图

┌─────────────────┐
│  实时监测模块    │
│ monitor_service │
└────────┬────────┘
         │
         ▼
    ┌─────────┐
    │ A股检测  │ (6位数字代码?)
    └────┬────┘
         │
    ┌────┴────┐
    │   YES   │   NO
    ▼         ▼
┌────────┐  ┌──────────────┐
│  TDX   │  │ AKShare/     │
│ 数据源  │  │ yfinance     │
└───┬────┘  └──────┬───────┘
    │              │
    │ 失败         │
    ▼              │
┌───────────┐      │
│   降级     │◄─────┘
│ AKShare   │
└─────┬─────┘
      │
      ▼
┌─────────────┐
│  更新数据库  │
│  检查触发    │
│  发送通知    │
└─────────────┘

模块关系

smart_monitor_tdx_data.py    →  TDX API核心封装
          ↓
monitor_service.py           →  实时监测服务(集成TDX)
          ↓
monitor_ui.py                →  监测管理界面

📁 文件清单

新增文件

  • smart_monitor_tdx_data.py - TDX数据源核心模块(441行)
  • docs/TDX数据源快速配置.md - 配置指南
  • docs/TDX数据源集成完成说明.md - 本文件

修改文件

  • monitor_service.py - 集成TDX数据源(新增60行)

    • 导入TDX模块
    • 初始化TDX数据源
    • 修改_update_stock_price方法
    • 新增_is_a_stock_get_price_from_default_source方法
  • README.md - 添加TDX数据源说明(待更新)

  • .env.example - 添加TDX配置示例(待更新)


🚀 后续优化方向

短期(已规划)

  • 批量分析模块集成TDX(提升分析速度)
  • K线图可视化集成TDX数据
  • 实时监测支持配置多个TDX服务器(负载均衡)

长期(待评估)

  • 支持港股TDX数据源
  • 集成TDX Level-2深度行情
  • TDX数据本地缓存机制

🐛 已知问题

1. TDX服务器连接超时

问题: 局域网IP不通导致连接失败

临时方案:

  • 检查防火墙设置
  • 使用localhost(本机部署时)
  • 系统会自动降级到AKShare

2. 股票名称获取失败

问题: TDX搜索接口返回空结果

临时方案:

  • 返回'N/A'作为占位符
  • 不影响价格获取和监测功能

📚 相关文档


🙏 致谢


📞 技术支持

如遇到问题,请:

  1. 查看 TDX数据源快速配置.md 中的常见问题章节
  2. 检查TDX服务是否正常运行
  3. 联系技术支持: ws3101001@126.com

版本: v1.0.0
更新日期: 2025-11-04
技术负责人: 山东科技大学 于舒馨