| Crates.io | rustdx-complete |
| lib.rs | rustdx-complete |
| version | 1.0.0 |
| created_at | 2025-12-27 14:38:03.260892+00 |
| updated_at | 2026-01-06 02:47:17.774461+00 |
| description | 功能完整的 A 股数据获取库,支持数据验证、技术指标、智能缓存、交易日历 |
| homepage | |
| repository | https://github.com/jackluo2012/rustdx |
| max_upload_size | |
| id | 2007358 |
| size | 504,498 |
⚠️ 网络连接问题? 请查看 网络连接说明指南 或运行
./scripts/diagnose_network.sh诊断
受 pytdx 启发的 A 股数据获取工具,包含:
rustdx 现已升级为功能完整的企业级A股数据获取库,在保持原有核心功能的基础上,新增了大量企业级特性:
| 功能 | 模块 | 说明 | 测试 |
|---|---|---|---|
| 数据完整性验证 | validator |
K线连续性、财务一致性、异常检测 | ✅ 12个测试 |
| 技术指标计算 | indicators |
SMA/EMA/MACD/RSI/布林带/KDJ | ✅ 9个测试 |
| 智能缓存层 | cache |
内存缓存、文件缓存、TTL自动过期 | ✅ 8个测试 |
| 增强错误处理 | error |
分层错误类型、详细错误信息 | ✅ 6个测试 |
| 功能 | 模块 | 说明 | 测试 |
|---|---|---|---|
| 中国A股交易日历 | calendar |
零网络依赖、自动节假日和调休 | ✅ 8个测试 |
| Builder 模式 API | builder |
流畅链式调用、参数验证 | ✅ 7个测试 |
| TCP 连接池 | pool |
连接复用、性能优化、线程安全 | ✅ 7个测试 |
use rustdx_complete::tcp::stock::validator;
// 验证K线数据连续性
let result = validate_kline_continuity(&data, "600000");
// 检测异常数据
let anomalies = detect_anomalies(&data, 0.10); // 10%阈值
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);
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()
});
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(),
}),
}
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);
use rustdx_complete::builder::KlineBuilder;
// 流畅的链式调用
let kline = KlineBuilder::new()
.code("600000")
.category(9) // 日线
.count(100)
.build()?;
// 或使用便捷方法
let kline = KlineBuilder::daily("600000", 100)?;
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(())
}
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 |
| 类别 | 功能 | 说明 |
|---|---|---|
| 数据质量 | 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
使用连接池
启用缓存
批量查询
使用 release 模式
cargo run --release
欢迎贡献代码、报告问题或提出建议!
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
详细更新记录请查看 CHANGELOG.md
rustdx - 功能完整的企业级 A 股数据获取库 🚀