Skip to content

Latest commit

 

History

History
341 lines (256 loc) · 9.4 KB

File metadata and controls

341 lines (256 loc) · 9.4 KB

同花顺/东方财富概念股对照功能

📖 功能概述

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

主要特性

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

🚀 快速开始

1. 基本用法

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. 获取所有支持的概念

use rustdx_complete::tcp::stock::get_concept_names;

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

3. 获取概念信息

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 脚本获取

🔄 与通达信数据的结合

综合使用示例

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 脚本定期更新:

# 运行脚本获取最新的概念板块数据
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. 板块轮动分析

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

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

2. 股票筛选

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

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

3. 投资组合分析

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

📊 数据来源对比

通达信 vs 东方财富

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

🧪 运行示例

概念查询示例

cargo run --example test_concept_query

输出示例:

🚀 概念股查询示例

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

综合信息示例

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

示例:

let stocks = get_concept_stocks("新能源汽车");
assert!(stocks.is_some());

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

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

返回:

  • Vec<&'static str>: 概念名称列表

示例:

let names = get_concept_names();
assert!(names.contains(&"新能源汽车"));

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

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

参数:

  • concept: 概念名称

返回:

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

示例:

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

自定义概念板块

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

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

📚 相关资源

🎯 总结

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

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

结合使用建议:

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

Sources: