rustdx-complete 0.6.6

功能完整的 A 股数据获取库,完全对标 pytdx
# 同花顺/东方财富概念股对照功能

## 📖 功能概述

rustdx 现已支持**同花顺/东方财富概念板块**的查询功能,与通达信行业分类形成互补。

### 主要特性

✅ **概念板块查询**: 支持 10+ 个热门概念板块(新能源汽车、锂电池、芯片、AI等)
✅ **成分股列表**: 每个概念提供前 20 只成分股信息
✅ **与通达信互补**: 通达信用于行业分类,东方财富用于概念热点
✅ **完整示例**: 提供多个使用示例和综合应用场景

## 🚀 快速开始

### 1. 基本用法

```rust
use rustdx_complete::tcp::stock::get_concept_stocks;

fn main() {
    // 获取新能源汽车概念的成分股
    if let Some(stocks) = get_concept_stocks("新能源汽车") {
        println!("新能源汽车概念成分股:");
        for stock in stocks {
            println!("  {}: {}", stock.code, stock.name);
        }
    }
}
```

### 2. 获取所有支持的概念

```rust
use rustdx_complete::tcp::stock::get_concept_names;

fn main() {
    let concepts = get_concept_names();
    println!("支持的概念板块:");
    for concept in concepts {
        println!("  - {}", concept);
    }
}
```

### 3. 获取概念信息

```rust
use rustdx_complete::tcp::stock::get_concept_info;

fn main() {
    if let Some((name, count)) = get_concept_info("新能源汽车") {
        println!("概念: {}, 成分股数量: {}", name, count);
    }
}
```

## 📊 支持的概念板块

目前支持以下热门概念板块:

| 概念名称 | 板块代码 | 说明 |
|---------|---------|------|
| 新能源汽车 | BK0493 | 216只成分股 |
| 锂电池 | BK0885 | 19只成分股 |
| 芯片 | BK0456 | 91只成分股 |
| 军民融合 | BK0808 | 183只成分股 |
| 北斗导航 | BK0629 | 82只成分股 |
| AIGC概念 | BK1111 | 123只成分股 |
| 航母概念 | BK0715 | 32只成分股 |
| 5G概念 | BK0476 | 67只成分股 |
| 数字货币 | BK1035 | 28只成分股 |
| 人工智能 | BK0718 | 217只成分股 |

> 💡 **提示**: 每个概念返回前 20 只成分股,完整数据可通过 Python 脚本获取

## 🔄 与通达信数据的结合

### 综合使用示例

```rust
use rustdx_complete::tcp::{Tcp, Tdx};
use rustdx_complete::tcp::stock::{FinanceInfo, get_industry_name, get_concept_stocks};

fn main() {
    let mut tcp = Tcp::new()?;

    // 1. 通过通达信获取股票的行业分类
    let mut finance = FinanceInfo::new(1, "600519");  // 贵州茅台
    finance.recv_parsed(&mut tcp)?;
    let info = &finance.result()[0];

    println!("股票: {}", info.code);
    println!("行业: {}", get_industry_name(info.industry));  // 酒类
    println!("省份: {}", get_province_name(info.province));  // 贵州

    // 2. 查询该股票可能所属的概念板块
    if let Some(stocks) = get_concept_stocks("新能源汽车") {
        println!("\n新能源汽车概念成分股:");
        for stock in stocks.iter().take(5) {
            println!("  {}: {}", stock.code, stock.name);
        }
    }
}
```

## 🛠️ 数据更新

概念板块数据是静态的,可以通过 Python 脚本定期更新:

```bash
# 运行脚本获取最新的概念板块数据
python3 scripts/generate_concept_mapping.py
```

### 更新步骤

1. 运行脚本获取最新数据
2. 将生成的 `concept_mapping.rs` 复制到 `src/tcp/stock/` 目录
3. 重新编译项目

## 📁 文件结构

```
rustdx/
├── src/tcp/stock/
│   ├── concept_mapping.rs       # 概念板块映射模块
│   ├── industry_mapping.rs      # 行业代码映射模块
│   └── finance_info.rs          # 财务信息(含行业代码)
├── scripts/
│   └── generate_concept_mapping.py  # 数据生成脚本
├── examples/
│   ├── test_concept_query.rs    # 概念查询示例
│   ├── test_industry_info.rs    # 行业信息示例
│   └── test_combined_info.rs    # 综合使用示例
└── CONCEPT_STOCK.md             # 本文档
```

## 🎯 应用场景

### 1. 板块轮动分析

```rust
// 结合通达信行业和东方财富概念
fn analyze_sector_rotation() {
    // 获取热门概念
    let hot_concepts = vec!["新能源汽车", "人工智能", "锂电池"];

    // 结合行业数据进行分析
    for concept in hot_concepts {
        if let Some(stocks) = get_concept_stocks(concept) {
            println!("{} 概念热门股:", concept);
            // 进一步分析每只股票的基本面
        }
    }
}
```

### 2. 股票筛选

```rust
// 筛选特定地区和概念的股票
fn filter_stocks() {
    let target_province = "深圳";
    let target_concept = "人工智能";

    // 获取人工智能概念的成分股
    if let Some(stocks) = get_concept_stocks(target_concept) {
        // 进一步筛选深圳地区的股票
        // ...
    }
}
```

### 3. 投资组合分析

```rust
// 分析投资组合的行业和概念分布
fn analyze_portfolio(codes: Vec<&str>) {
    // 使用通达信获取行业分布
    // 使用概念板块获取主题暴露
    // 生成分析报告
}
```

## 📊 数据来源对比

### 通达信 vs 东方财富

| 特性 | 通达信 | 东方财富概念 |
|------|--------|------------|
| 数据类型 | 行业分类、财务数据 | 概念板块、市场热点 |
| 更新频率 | 实时 | 定期更新 |
| 分类标准 | 官方行业分类 | 市场主题概念 |
| 使用场景 | 基本面分析、价值投资 | 热点追踪、主题投资 |
| 数据来源 | 通达信行情接口 | AKShare (东方财富) |

## 🧪 运行示例

### 概念查询示例

```bash
cargo run --example test_concept_query
```

**输出示例**:
```
🚀 概念股查询示例

📗 新能源汽车概念成分股(前20只):
   代码         名称
   ------------------------------
   603278     大业股份
   002634     棒杰股份
   ...
```

### 综合信息示例

```bash
cargo run --example test_combined_info
```

**输出示例**:
```
🚀 综合示例:通达信行业 + 东方财富概念板块

1️⃣  通过通达信获取股票行业信息:
   股票           名称         行业           省份
   --------------------------------------------------
   000001       平安银行       银行           深圳
   600519       贵州茅台       酒类           贵州
   300750       宁德时代       电气设备         福建

2️⃣  通过东方财富查询热门概念板块:
   📗 新能源汽车 概念 (显示前5只):
   ...
```

## 📝 API 文档

### `get_concept_stocks(concept: &str) -> Option<Vec<ConceptStock>>`

获取指定概念的成分股列表。

**参数**:
- `concept`: 概念名称(如 "新能源汽车")

**返回**:
- `Option<Vec<ConceptStock>>`: 成分股列表,如果概念不存在则返回 None

**示例**:
```rust
let stocks = get_concept_stocks("新能源汽车");
assert!(stocks.is_some());
```

### `get_concept_names() -> Vec<&'static str>`

获取所有支持的概念板块名称。

**返回**:
- `Vec<&'static str>`: 概念名称列表

**示例**:
```rust
let names = get_concept_names();
assert!(names.contains(&"新能源汽车"));
```

### `get_concept_info(concept: &str) -> Option<(&'static str, usize)>`

获取概念板块的详细信息。

**参数**:
- `concept`: 概念名称

**返回**:
- `Option<(&'static str, usize)>`: 元组包含(概念名称,成分股总数)

**示例**:
```rust
let info = get_concept_info("新能源汽车");
assert_eq!(info, Some(("新能源汽车", 216)));
```

## ⚠️ 注意事项

1. **数据时效性**: 概念板块数据需要定期更新,建议每周或每月运行一次更新脚本
2. **数据完整性**: 当前只保存每个概念的前 20 只成分股,完整数据可自行扩展
3. **概念匹配**: 不同数据源的概念名称可能不同,需要手动映射
4. **网络依赖**: Python 脚本需要网络连接才能获取最新数据

## 🔧 扩展功能

### 添加新的概念板块

1. 修改 `scripts/generate_concept_mapping.py`,添加新的概念代码
2. 运行脚本生成新的映射代码
3. 更新 `src/tcp/stock/concept_mapping.rs`

### 自定义概念板块

可以基于实际需求创建自己的概念板块映射表:

```rust
pub fn get_custom_concept_stocks() -> Vec<ConceptStock> {
    vec![
        ConceptStock { code: "600519", name: "贵州茅台" },
        // ... 更多股票
    ]
}
```

## 📚 相关资源

- [AKShare 项目地址]https://github.com/jindaxiang/akshare
- [AKShare 概念板块文档]https://akshare.akfamily.xyz/data/stock/stock.html
- [通达信行业分类]https://zhuanlan.zhihu.com/p/1961011810472814438
- [东方财富概念板块]https://q.10jqka.com.cn/gn/

## 🎯 总结

rustdx 的概念板块功能为用户提供了:

✅ **双数据源支持**: 通达信(行业)+ 东方财富(概念)
✅ **灵活应用**: 基本面分析 + 热点追踪
✅ **易于更新**: Python 脚本自动生成映射代码
✅ **完整示例**: 多个使用场景和示例程序

**结合使用建议**:
- 使用通达信行业分类进行基本面分析
- 使用东方财富概念板块追踪市场热点
- 两者结合可以获得更全面的股票特征分析

---

**Sources:**
- [通达信全能实战指南·板块管理]https://zhuanlan.zhihu.com/p/1961011810472814438
- [AKShare-股票数据-概念板块]https://zhuanlan.zhihu.com/p/358386212
- [通达信板块概念如何和同花顺统一]https://www.douyin.com/search/%E9%80%9A%E8%BE%BE%E4%BF%A1%E6%9D%BF%E5%9D%97%E6%A6%82%E5%BF%B5%E5%A6%82%E4%BD%95%E5%92%8C%E5%90%8C%E8%8A%B1%E9%A1%BA%E7%BB%9F%E4%B8%80