rustdx-complete 1.0.0

功能完整的 A 股数据获取库,支持数据验证、技术指标、智能缓存、交易日历
docs.rs failed to build rustdx-complete-1.0.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.

rustdx

⚠️ 网络连接问题? 请查看 网络连接说明指南 或运行 ./scripts/diagnose_network.sh 诊断

pytdx 启发的 A 股数据获取工具,包含:

  1. 一个 Rust 通用库 rustdx-complete
  2. 一个命令行工具 rustdx-cmd

🎉 v1.0.0 重大更新 (2025-01-06)

✨ 企业级功能完整版

rustdx 现已升级为功能完整的企业级A股数据获取库,在保持原有核心功能的基础上,新增了大量企业级特性:

📊 P0 核心功能

功能 模块 说明 测试
数据完整性验证 validator K线连续性、财务一致性、异常检测 ✅ 12个测试
技术指标计算 indicators SMA/EMA/MACD/RSI/布林带/KDJ ✅ 9个测试
智能缓存层 cache 内存缓存、文件缓存、TTL自动过期 ✅ 8个测试
增强错误处理 error 分层错误类型、详细错误信息 ✅ 6个测试

🚀 P1 增强功能

功能 模块 说明 测试
中国A股交易日历 calendar 零网络依赖、自动节假日和调休 ✅ 8个测试
Builder 模式 API builder 流畅链式调用、参数验证 ✅ 7个测试
TCP 连接池 pool 连接复用、性能优化、线程安全 ✅ 7个测试

📈 测试覆盖

  • 总测试数: 94个 (✅ 100% 通过)
  • 代码覆盖率: 核心模块 100%
  • 示例程序: 6个完整示例

🌟 核心特性

1️⃣ 数据完整性验证

use rustdx_complete::tcp::stock::validator;

// 验证K线数据连续性
let result = validate_kline_continuity(&data, "600000");

// 检测异常数据
let anomalies = detect_anomalies(&data, 0.10); // 10%阈值

2️⃣ 技术指标计算

use rustdx_complete::indicators::{sma, ema, macd, rsi, bollinger_bands};

// 计算移动平均线
let sma20 = sma(&closes, 20);

// 计算MACD
let macd_result = macd(&closes, 12, 26, 9);

// 计算布林带
let bb = bollinger_bands(&closes, 20, 2.0);

3️⃣ 智能缓存层

use rustdx_complete::cache::Cache;
use std::time::Duration;

// 创建内存缓存(5分钟TTL)
let cache = Cache::memory(Duration::from_secs(300));

// 自动缓存-回源模式
let data = cache.get_or_fetch("kline:600000", || {
    // 只在缓存未命中时执行
    fetch_from_server()
});

4️⃣ 增强错误处理

use rustdx_complete::error::{TcpError, ValidationError};

// 分层错误类型
match tcp_connection() {
    Ok(data) => Ok(data),
    Err(e) => Err(TcpError::ConnectionFailed {
        host: "server".to_string(),
        port: 7709,
        reason: e.to_string(),
    }),
}

5️⃣ 中国A股交易日历

use rustdx_complete::calendar::TradingCalendar;

// 判断是否交易日
let is_trading = TradingCalendar::is_trading_day(&date);

// 获取前一个交易日
let prev = TradingCalendar::previous_trading_day(&date);

// 获取最近N个交易日
let days = TradingCalendar::get_trading_days(&date, 10);

6️⃣ Builder 模式 API

use rustdx_complete::builder::KlineBuilder;

// 流畅的链式调用
let kline = KlineBuilder::new()
    .code("600000")
    .category(9)  // 日线
    .count(100)
    .build()?;

// 或使用便捷方法
let kline = KlineBuilder::daily("600000", 100)?;

7️⃣ TCP 连接池

use rustdx_complete::pool::ConnectionPool;

// 创建连接池(最大3个连接)
let pool = ConnectionPool::new(3)?;

// 获取连接(自动复用)
let mut conn = pool.get_connection()?;

// 连接自动归还到池中

📦 快速开始

安装

# Cargo.toml
[dependencies]
rustdx-complete = "1.0"

基础使用

use rustdx_complete::tcp::{Tcp, Tdx};
use rustdx_complete::tcp::stock::Kline;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // 连接到通达信服务器
    let mut tcp = Tcp::new()?;

    // 获取K线数据
    let mut kline = Kline::new(1, "600000", 9, 0, 10);
    kline.recv_parsed(&mut tcp)?;

    // 打印结果
    for bar in kline.result() {
        println!("{}: 收盘价 {:.2}", bar.dt, bar.close);
    }

    Ok(())
}

使用 Builder 模式

use rustdx_complete::builder::KlineBuilder;

let kline = KlineBuilder::daily("600000", 100)?;
kline.recv_parsed(&mut tcp)?;

使用连接池

use rustdx_complete::pool::ConnectionPool;

let pool = ConnectionPool::new(3)?;
let mut conn = pool.get_connection()?;
// 使用conn执行查询...

📚 完整功能列表

原有核心功能

功能 模块 pytdx 对应
日K线 Kline get_security_bars
除权数据 Xdxr get_xdxr
实时行情 SecurityQuotes get_security_quotes
股票列表 SecurityList get_security_list
分时数据 MinuteTime get_minute_time_data
逐笔成交 Transaction get_transaction_data
财务信息 FinanceInfo get_finance_info

新增功能 (v1.0)

类别 功能 说明
数据质量 K线连续性验证 检测缺失交易日
财务数据一致性 验证基本面数据合理性
异常数据检测 识别价格异常波动
技术分析 移动平均线 (SMA/EMA) 趋势分析
MACD 指标 动量分析
RSI 相对强弱 超买超卖
布林带 波动率分析
KDJ 随机指标 短期买卖点
性能优化 内存缓存 快速数据访问
文件缓存 持久化存储
get_or_fetch 模式 自动缓存管理
连接管理 TCP连接池 复用连接
自动归还 Drop trait管理
健康检查 自动清理过期连接
开发体验 Builder模式 流畅API
增强错误处理 详细错误信息
交易日历 自动节假日识别
代码质量 94个单元测试 100%通过
完整文档注释 docs.rs自动生成
6个示例程序 覆盖所有功能

📝 示例程序

示例 功能
test_technical_indicators 技术指标计算
test_data_validation 数据完整性验证
test_cache 智能缓存使用
test_error_handling 错误处理演示
test_trading_calendar 交易日历查询
test_builder Builder模式API
test_connection_pool TCP连接池

运行示例:

cargo run --example test_technical_indicators

🌐 网络连接说明

重要: rustdx-complete 不需要在本地运行通达信服务!

工作原理

你的应用
    ↓
rustdx-complete (TCP 客户端)
    ↓
通达信公共服务器 (115.238.56.198:7709)
    ↓
返回股票数据

快速测试

# 测试网络连接
cargo run --example test_connection

# 运行诊断脚本
./scripts/diagnose_network.sh

📚 详细文档: NETWORK_CONNECTION_GUIDE.md


🚀 性能优化

  1. 使用连接池

    • 复用TCP连接,减少握手开销
    • 默认3个连接,适合大多数场景
  2. 启用缓存

    • 实时行情数据:3-5分钟TTL
    • 日线数据:1小时TTL
    • 财务数据:1天TTL
  3. 批量查询

    • 一次查询多只股票,而非逐个查询
    • 建议不超过80只股票/次
  4. 使用 release 模式

    cargo run --release
    

📖 API 文档


🤝 贡献指南

欢迎贡献代码、报告问题或提出建议!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。


🙏 致谢

  • pytdx - Python 版本的通达信接口
  • 通达信 - 提供数据服务器
  • trade_date_a - 中国交易日历数据

📊 版本历史

详细更新记录请查看 CHANGELOG.md

v1.0.0 (2025-01-06) - 🎉 企业级完整版

  • ✅ 新增数据完整性验证模块
  • ✅ 新增技术指标计算库
  • ✅ 新增智能缓存层
  • ✅ 新增增强错误处理系统
  • ✅ 新增中国A股交易日历
  • ✅ 新增Builder模式API
  • ✅ 新增TCP连接池
  • ✅ 94个单元测试全部通过
  • ✅ 6个完整示例程序

v0.6.6 (2025-12-31) - 行业和概念板块

  • 股票行业分类映射
  • 东方财富概念板块支持

v0.6.4 (2025-12-31) - 完整五档买卖盘

  • 补充 SecurityQuotes 完整五档买卖盘字段

rustdx - 功能完整的企业级 A 股数据获取库 🚀