diff --git a/README.md b/README.md index ed96ddb..07603f3 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,32 @@ -# A股板块监控系统 +# A股板块盘后分析系统 -自动获取东方财富板块数据,监控异动并发送邮件通知。 +自动获取东方财富板块数据,生成盘后分析报告并发送邮件。 ## 功能特点 -- 获取行业板块涨跌幅排行 -- 获取概念板块涨跌幅排行 -- 监控主力资金流入/流出 -- 检测板块异动(涨跌幅≥3%、资金流入≥10亿) -- 自动发送HTML格式邮件通知 +- 每个交易日17:00自动执行 +- 获取行业板块和概念板块完整数据 +- 生成分析总结邮件正文 +- 详细数据CSV文件作为附件 +- 发送到指定邮箱 -## 数据来源 +## 邮件内容 -东方财富HTTP API (http://push2.eastmoney.com) +### 正文(分析总结) + +- 市场整体趋势判断 +- 热门概念板块 TOP5 +- 行业涨幅/跌幅 TOP5 +- 主力资金大幅流入 TOP10 +- 主力资金大幅流出 TOP10 + +### 附件(详细数据) + +CSV文件包含: +- 行业板块涨跌幅排行(完整) +- 行业板块资金流向排行(完整) +- 概念板块涨跌幅排行(完整) +- 概念板块资金流向排行(完整) ## 使用方法 @@ -25,52 +39,32 @@ python3 board_monitor.py test ### 获取板块数据 ```bash -# 获取行业板块涨跌幅TOP20 -python3 board_monitor.py get industry --sort pct --limit 20 - -# 获取概念板块资金流入TOP20 -python3 board_monitor.py get concept --sort flow --limit 20 +python3 board_monitor.py get industry --limit 20 +python3 board_monitor.py get concept --limit 20 ``` -### 执行监控检查 +### 手动发送报告 ```bash -# 监控并发送通知(发现异动时) -python3 board_monitor.py monitor -v +python3 board_monitor.py report -v -# 监控但不发送通知 -python3 board_monitor.py monitor --no-notify +# 发送到其他邮箱 +python3 board_monitor.py report --to other@example.com ``` ## 定时任务配置 -```bash -# 添加到crontab -crontab -e +每个交易日(周一至周五)17:00自动执行: -# 盘中每小时检查(9:30-15:00) -30-59 9 * * 1-5 /usr/bin/python3 /home/xian/.openclaw/workspace-coder/works/board-monitor/board_monitor.py monitor -0-15 10-14 * * 1-5 /usr/bin/python3 /home/xian/.openclaw/workspace-coder/works/board-monitor/board_monitor.py monitor -0-0 15 * * 1-5 /usr/bin/python3 /home/xian/.openclaw/workspace-coder/works/board-monitor/board_monitor.py monitor +``` +0 17 * * 1-5 python3 board_monitor.py report ``` -## 异动检测阈值 +## 数据来源 -| 类型 | 阈值 | -|------|------| -| 涨幅异动 | ≥ 3% | -| 跌幅异动 | ≤ -3% | -| 资金流入 | ≥ 10亿 | -| 资金流出 | ≤ -10亿 | - -可在 `board_monitor.py` 中修改 `check_anomaly()` 函数的参数调整阈值。 - -## 通知邮箱 - -默认发送到: zuitoushang@tphai.com - -可在 `send_notification()` 函数中修改。 +东方财富HTTP API (http://push2.eastmoney.com) ## 版本历史 +- v1.1.0 (2026-04-10) - 改为盘后报告模式,正文分析+附件详细数据 - v1.0.0 (2026-04-10) - 初始版本 \ No newline at end of file diff --git a/board_monitor.py b/board_monitor.py index 08a2a8e..4208c55 100644 --- a/board_monitor.py +++ b/board_monitor.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 """ -A股板块监控系统 -获取东方财富板块数据,监控异动,发送通知 +A股板块盘后分析系统 +获取东方财富板块数据,生成分析报告,发送邮件通知 """ import urllib.request @@ -33,23 +33,15 @@ BOARD_TYPES = { # 数据字段 FIELDS = "f12,f14,f2,f3,f62,f66,f84,f104,f125,f126,f127,f128" -# f12: 板块代码 -# f14: 板块名称 -# f2: 最新价 -# f3: 涨跌幅 -# f62: 主力净流入 -# f66: 主力净流入-陆股通 -# f84: 领涨股代码 -# f104: 领涨股名称 -def get_board_data(board_type: str, sort_by: str = "f3", limit: int = 50) -> Optional[List[Dict]]: +def get_board_data(board_type: str, sort_by: str = "f3", limit: int = 100) -> Optional[List[Dict]]: """ 获取板块数据 参数: board_type: 板块类型 (industry/concept) - sort_by: 排序字段 (f3=涨跌幅, f66=主力资金) + sort_by: 排序字段 (f3=涨跌幅, f62=主力资金) limit: 返回数量 返回: @@ -82,7 +74,6 @@ def get_board_data(board_type: str, sort_by: str = "f3", limit: int = 50) -> Opt 'price': item.get('f2', 0) / 100 if item.get('f2') else 0, 'pct_change': item.get('f3', 0) / 100 if item.get('f3') else 0, 'main_flow': item.get('f62', 0) / 1e8 if item.get('f62') else 0, # 亿元 - 'main_flow_lgt': item.get('f66', 0) / 1e8 if item.get('f66') else 0, # 陆股通流入 'leader_code': item.get('f84', ''), 'leader_name': item.get('f104', ''), } @@ -96,157 +87,163 @@ def get_board_data(board_type: str, sort_by: str = "f3", limit: int = 50) -> Opt except urllib.error.URLError as e: print(f"❌ 网络请求失败: {e}") return None - except json.JSONDecodeError as e: - print(f"❌ JSON解析失败: {e}") - return None except Exception as e: print(f"❌ 获取数据异常: {e}") return None -def check_anomaly(boards: List[Dict], pct_threshold: float = 3.0, flow_threshold: float = 10.0) -> Dict: +def generate_daily_report(boards_data: Dict, to_email: str = "wlq@tphai.com") -> bool: """ - 检查板块异动 + 生成盘后分析报告并发送邮件 参数: - boards: 板块数据列表 - pct_threshold: 涨跌幅阈值 (%) - flow_threshold: 资金流入阈值 (亿元) + boards_data: 板块数据字典 {'industry': [], 'concept': []} + to_email: 收件人邮箱 返回: - Dict: 异动信息,包含涨跌异动和资金异动 + bool: 是否发送成功 """ - anomaly = { - 'pct_up': [], # 涨幅异动 - 'pct_down': [], # 跌幅异动 - 'flow_in': [], # 资金流入异动 - 'flow_out': [], # 资金流出异动 - 'timestamp': datetime.now().strftime("%Y-%m-%d %H:%M:%S") - } + all_industry = boards_data.get('industry', []) + all_concept = boards_data.get('concept', []) - for board in boards: - # 涨跌幅异动 - if board['pct_change'] >= pct_threshold: - anomaly['pct_up'].append(board) - elif board['pct_change'] <= -pct_threshold: - anomaly['pct_down'].append(board) - - # 资金流向异动 - if board['main_flow'] >= flow_threshold: - anomaly['flow_in'].append(board) - elif board['main_flow'] <= -flow_threshold: - anomaly['flow_out'].append(board) + if not all_industry and not all_concept: + print("❌ 无数据,无法生成报告") + return False - return anomaly - - -def format_board_line(board: Dict) -> str: - """格式化单行板块信息""" - pct = board['pct_change'] - flow = board['main_flow'] - leader = board['leader_name'] or board['leader_code'] + # 分析总结 + timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") - pct_str = f"+{pct:.2f}%" if pct > 0 else f"{pct:.2f}%" - flow_str = f"+{flow:.2f}亿" if flow > 0 else f"{flow:.2f}亿" - leader_str = f"领涨: {leader}" if leader else "" + # 计算市场趋势 + avg_pct = 0 + if all_industry: + avg_pct = sum(b['pct_change'] for b in all_industry) / len(all_industry) - return f"{board['name']}: {pct_str}, 主力{flow_str} {leader_str}" - - -def print_board_summary(boards: List[Dict], title: str, limit: int = 10): - """打印板块摘要""" - if not boards: - return + market_trend = '平稳' + if avg_pct > 0.5: + market_trend = '上涨' + elif avg_pct < -0.5: + market_trend = '下跌' - print(f"\n{title}") - print("=" * 50) - for board in boards[:limit]: - print(format_board_line(board)) - - -def print_anomaly_report(anomaly: Dict): - """打印异动报告""" - print(f"\n📊 板块异动报告 [{anomaly['timestamp']}]") - print("=" * 60) + # 排序数据 + industry_by_pct = sorted(all_industry, key=lambda x: x['pct_change'], reverse=True) + industry_by_flow = sorted(all_industry, key=lambda x: x['main_flow'], reverse=True) + concept_by_pct = sorted(all_concept, key=lambda x: x['pct_change'], reverse=True) + concept_by_flow = sorted(all_concept, key=lambda x: x['main_flow'], reverse=True) - has_anomaly = False - - if anomaly['pct_up']: - has_anomaly = True - print(f"\n🔴 涨幅异动 (涨幅 ≥ 3%)") - for board in anomaly['pct_up']: - print(f" {format_board_line(board)}") - - if anomaly['pct_down']: - has_anomaly = True - print(f"\n🟢 跌幅异动 (跌幅 ≥ 3%)") - for board in anomaly['pct_down']: - print(f" {format_board_line(board)}") - - if anomaly['flow_in']: - has_anomaly = True - print(f"\n💰 资金大幅流入 (≥ 10亿)") - for board in anomaly['flow_in']: - print(f" {format_board_line(board)}") - - if anomaly['flow_out']: - has_anomaly = True - print(f"\n💸 资金大幅流出 (≥ 10亿)") - for board in anomaly['flow_out']: - print(f" {format_board_line(board)}") - - if not has_anomaly: - print("\n✅ 今日无明显异动") - - return has_anomaly - - -def generate_html_report(anomaly: Dict, board_type: str) -> str: - """生成HTML格式报告""" - lines = [ - "

📊 A股板块异动报告

", - f"

检测时间: {anomaly['timestamp']}

", - f"

板块类型: {board_type}

", + # 生成HTML正文(分析总结) + html_lines = [ + "

📊 A股板块盘后分析报告

", + f"

报告时间: {timestamp}

", + f"

市场整体: {market_trend} (行业平均涨跌 {avg_pct:+.2f}%)

", + "", + "
", + "", + "

🔥 今日热门概念板块 TOP5

", + "", + "", ] - if anomaly['pct_up']: - lines.append("

🔴 涨幅异动 (涨幅 ≥ 3%)

") - lines.append("") + for board in concept_by_pct[:5]: + pct_str = f"+{board['pct_change']:.2f}%" if board['pct_change'] > 0 else f"{board['pct_change']:.2f}%" + flow_str = f"+{board['main_flow']:.2f}亿" if board['main_flow'] > 0 else f"{board['main_flow']:.2f}亿" + html_lines.append(f"") - if anomaly['pct_down']: - lines.append("

🟢 跌幅异动 (跌幅 ≥ 3%)

") - lines.append("") + html_lines.append("
板块涨跌幅主力资金
{board['name']}{pct_str}{flow_str}
") + html_lines.append("") - if anomaly['flow_in']: - lines.append("

💰 资金大幅流入 (≥ 10亿)

") - lines.append("") + html_lines.append("

📈 行业板块涨幅 TOP5

") + html_lines.append("") + html_lines.append("") - if anomaly['flow_out']: - lines.append("

💸 资金大幅流出 (≥ 10亿)

") - lines.append("") + for board in industry_by_pct[:5]: + pct_str = f"+{board['pct_change']:.2f}%" if board['pct_change'] > 0 else f"{board['pct_change']:.2f}%" + flow_str = f"+{board['main_flow']:.2f}亿" if board['main_flow'] > 0 else f"{board['main_flow']:.2f}亿" + html_lines.append(f"") - if not (anomaly['pct_up'] or anomaly['pct_down'] or anomaly['flow_in'] or anomaly['flow_out']): - lines.append("

✅ 今日无明显异动

") + html_lines.append("
板块涨跌幅主力资金领涨股
{board['name']}{pct_str}{flow_str}{board['leader_name'] or '-'}
") + html_lines.append("") - return "\n".join(lines) - - -def send_notification(subject: str, html_body: str, to_email: str = "zuitoushang@tphai.com"): - """发送邮件通知""" - # 使用邮件发送技能 - email_script = Path(__file__).parent.parent.parent / "skills/email/scripts/send_email.py" + html_lines.append("

📉 行业板块跌幅 TOP5

") + html_lines.append("") + html_lines.append("") + + for board in industry_by_pct[-5:]: + pct_str = f"+{board['pct_change']:.2f}%" if board['pct_change'] > 0 else f"{board['pct_change']:.2f}%" + flow_str = f"+{board['main_flow']:.2f}亿" if board['main_flow'] > 0 else f"{board['main_flow']:.2f}亿" + html_lines.append(f"") + + html_lines.append("
板块涨跌幅主力资金
{board['name']}{pct_str}{flow_str}
") + html_lines.append("") + + html_lines.append("

💰 主力资金大幅流入 TOP10

") + html_lines.append("") + html_lines.append("") + + inflow_boards = [b for b in industry_by_flow if b['main_flow'] > 10][:10] + for board in inflow_boards: + pct_str = f"+{board['pct_change']:.2f}%" if board['pct_change'] > 0 else f"{board['pct_change']:.2f}%" + html_lines.append(f"") + + html_lines.append("
板块资金流入(亿)涨跌幅
{board['name']}+{board['main_flow']:.2f}{pct_str}
") + html_lines.append("") + + html_lines.append("

💸 主力资金大幅流出 TOP10

") + html_lines.append("") + html_lines.append("") + + outflow_boards = [b for b in industry_by_flow if b['main_flow'] < -10][:10] + for board in outflow_boards: + pct_str = f"+{board['pct_change']:.2f}%" if board['pct_change'] > 0 else f"{board['pct_change']:.2f}%" + html_lines.append(f"") + + html_lines.append("
板块资金流出(亿)涨跌幅
{board['name']}{board['main_flow']:.2f}{pct_str}
") + html_lines.append("") + html_lines.append("
") + html_lines.append("

📊 详细数据请查看附件 CSV 文件

") + + html_body = "\n".join(html_lines) + + # 生成附件文件(CSV格式) + attachment_file = DATA_DIR / f"board_detail_{datetime.now().strftime('%Y%m%d')}.csv" + + csv_lines = [ + "# A股板块详细数据", + f"# 生成时间: {timestamp}", + "", + "=== 行业板块涨跌幅排行 ===", + "板块名称,涨跌幅(%),主力资金(亿),领涨股", + ] + + for board in industry_by_pct: + csv_lines.append(f"{board['name']},{board['pct_change']:.2f},{board['main_flow']:.2f},{board['leader_name'] or ''}") + + csv_lines.append("") + csv_lines.append("=== 行业板块资金流向排行 ===") + csv_lines.append("板块名称,主力资金(亿),涨跌幅(%),领涨股") + + for board in industry_by_flow: + csv_lines.append(f"{board['name']},{board['main_flow']:.2f},{board['pct_change']:.2f},{board['leader_name'] or ''}") + + csv_lines.append("") + csv_lines.append("=== 概念板块涨跌幅排行 ===") + csv_lines.append("板块名称,涨跌幅(%),主力资金(亿),领涨股") + + for board in concept_by_pct: + csv_lines.append(f"{board['name']},{board['pct_change']:.2f},{board['main_flow']:.2f},{board['leader_name'] or ''}") + + csv_lines.append("") + csv_lines.append("=== 概念板块资金流向排行 ===") + csv_lines.append("板块名称,主力资金(亿),涨跌幅(%),领涨股") + + for board in concept_by_flow: + csv_lines.append(f"{board['name']},{board['main_flow']:.2f},{board['pct_change']:.2f},{board['leader_name'] or ''}") + + attachment_file.write_text("\n".join(csv_lines), encoding='utf-8') + + # 发送邮件 + email_script = SCRIPT_DIR.parent.parent / "skills/email/scripts/send_email.py" + + subject = f"【A股板块盘后分析】{datetime.now().strftime('%Y-%m-%d')}" cmd = [ "python3", str(email_script), @@ -254,151 +251,89 @@ def send_notification(subject: str, html_body: str, to_email: str = "zuitoushang "--to", to_email, "--subject", subject, "--body", html_body, - "--html" + "--html", + "--attach", str(attachment_file) ] try: result = subprocess.run(cmd, capture_output=True, text=True, timeout=30) if result.returncode == 0: - print(f"✅ 邮件发送成功: {to_email}") + print(f"✅ 报告发送成功: {to_email}") + print(f" 附件: {attachment_file}") return True else: - print(f"❌ 邮件发送失败: {result.stderr}") + print(f"❌ 发送失败: {result.stderr}") return False except Exception as e: - print(f"❌ 邮件发送异常: {e}") + print(f"❌ 发送异常: {e}") return False -def monitor(board_types: List[str] = ["industry", "concept"], - notify: bool = True, - verbose: bool = False) -> Dict: +def run_daily_report(to_email: str = "wlq@tphai.com", verbose: bool = False) -> bool: """ - 执行板块监控 + 执行盘后报告生成和发送 参数: - board_types: 要监控的板块类型列表 - notify: 是否发送通知(仅在发现异动时) - verbose: 显示详细日志 + to_email: 收件人邮箱 + verbose: 是否显示详细日志 返回: - Dict: 监控结果汇总 + bool: 是否成功 """ - import subprocess + if verbose: + print(f"\n📊 A股板块盘后分析") + print("=" * 50) + print(f"收件人: {to_email}") + print(f"时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}") - results = { - 'boards': {}, - 'anomalies': {}, - 'has_anomaly': False - } + # 获取所有板块数据 + boards_data = {} - for board_type in board_types: + for board_type in ["industry", "concept"]: if verbose: print(f"\n📡 获取 {board_type} 板块数据...") - # 获取板块数据(按涨跌幅排序) - boards = get_board_data(board_type, sort_by="f3", limit=100) + boards = get_board_data(board_type, limit=100) if boards: - results['boards'][board_type] = boards - - # 检查异动 - anomaly = check_anomaly(boards) - results['anomalies'][board_type] = anomaly - - if anomaly['pct_up'] or anomaly['pct_down'] or anomaly['flow_in'] or anomaly['flow_out']: - results['has_anomaly'] = True - + boards_data[board_type] = boards if verbose: - # 打印TOP10涨跌 - sorted_by_pct = sorted(boards, key=lambda x: x['pct_change'], reverse=True) - print_board_summary(sorted_by_pct[:10], f"涨幅TOP10 ({board_type})") - print_board_summary(sorted_by_pct[-10:], f"跌幅TOP10 ({board_type})") - - # 打印异动报告 - print_anomaly_report(anomaly) + print(f"✅ 成功获取 {len(boards)} 条数据") else: print(f"❌ 获取 {board_type} 数据失败") + boards_data[board_type] = [] - # 发送通知(仅在发现异动时) - if notify and results['has_anomaly']: - subject = "【板块异动警报】检测到板块异动" - - # 合并所有异动 - combined_anomaly = { - 'pct_up': [], - 'pct_down': [], - 'flow_in': [], - 'flow_out': [], - 'timestamp': datetime.now().strftime("%Y-%m-%d %H:%M:%S") - } - - for anomaly in results['anomalies'].values(): - combined_anomaly['pct_up'].extend(anomaly['pct_up']) - combined_anomaly['pct_down'].extend(anomaly['pct_down']) - combined_anomaly['flow_in'].extend(anomaly['flow_in']) - combined_anomaly['flow_out'].extend(anomaly['flow_out']) - - # 去重(按板块名称) - for key in ['pct_up', 'pct_down', 'flow_in', 'flow_out']: - seen = set() - unique = [] - for board in combined_anomaly[key]: - if board['name'] not in seen: - seen.add(board['name']) - unique.append(board) - combined_anomaly[key] = unique - - html_body = generate_html_report(combined_anomaly, "行业+概念板块") - send_notification(subject, html_body) - - return results + # 生成并发送报告 + if boards_data.get('industry') or boards_data.get('concept'): + return generate_daily_report(boards_data, to_email) + else: + print("❌ 所有数据获取失败,无法生成报告") + return False def main(): """命令行入口""" import argparse - parser = argparse.ArgumentParser(description="A股板块监控系统") + parser = argparse.ArgumentParser(description="A股板块盘后分析系统") subparsers = parser.add_subparsers(dest="command", help="可用命令") - # 获取数据命令 - get_parser = subparsers.add_parser("get", help="获取板块数据") - get_parser.add_argument("type", choices=["industry", "concept"], help="板块类型") - get_parser.add_argument("--sort", choices=["pct", "flow"], default="pct", help="排序方式") - get_parser.add_argument("--limit", type=int, default=20, help="返回数量") - - # 监控命令 - monitor_parser = subparsers.add_parser("monitor", help="执行监控检查") - monitor_parser.add_argument("--types", nargs="+", default=["industry", "concept"], help="板块类型") - monitor_parser.add_argument("--no-notify", action="store_true", help="不发送通知") - monitor_parser.add_argument("-v", "--verbose", action="store_true", help="显示详细日志") - # 测试命令 subparsers.add_parser("test", help="测试API连接") + # 获取数据命令 + get_parser = subparsers.add_parser("get", help="获取板块数据") + get_parser.add_argument("type", choices=["industry", "concept"], help="板块类型") + get_parser.add_argument("--limit", type=int, default=20, help="返回数量") + + # 发送报告命令 + report_parser = subparsers.add_parser("report", help="生成并发送盘后报告") + report_parser.add_argument("--to", default="wlq@tphai.com", help="收件人邮箱") + report_parser.add_argument("-v", "--verbose", action="store_true", help="显示详细日志") + args = parser.parse_args() - if args.command == "get": - sort_by = "f3" if args.sort == "pct" else "f66" - boards = get_board_data(args.type, sort_by=sort_by, limit=args.limit) - - if boards: - print(f"\n📊 {args.type} 板块数据 ({len(boards)} 条)") - print("=" * 50) - for board in boards: - print(format_board_line(board)) - else: - print("❌ 获取数据失败") - - elif args.command == "monitor": - monitor( - board_types=args.types, - notify=not args.no_notify, - verbose=args.verbose - ) - - elif args.command == "test": + if args.command == "test": print("\n🧪 测试东方财富API连接...") for board_type in ["industry", "concept"]: print(f"\n测试 {board_type} 板块...") @@ -406,10 +341,26 @@ def main(): if boards: print(f"✅ 成功获取 {len(boards)} 条数据") for board in boards[:3]: - print(f" - {board['name']}: {board['pct_change']:+.2f}%") + pct_str = f"+{board['pct_change']:.2f}%" if board['pct_change'] > 0 else f"{board['pct_change']:.2f}%" + print(f" - {board['name']}: {pct_str}") else: print(f"❌ {board_type} 测试失败") + elif args.command == "get": + boards = get_board_data(args.type, limit=args.limit) + if boards: + print(f"\n📊 {args.type} 板块数据 ({len(boards)} 条)") + print("=" * 50) + for board in boards: + pct_str = f"+{board['pct_change']:.2f}%" if board['pct_change'] > 0 else f"{board['pct_change']:.2f}%" + flow_str = f"+{board['main_flow']:.2f}亿" if board['main_flow'] > 0 else f"{board['main_flow']:.2f}亿" + print(f"{board['name']}: {pct_str}, 主力{flow_str}") + else: + print("❌ 获取数据失败") + + elif args.command == "report": + run_daily_report(to_email=args.to, verbose=args.verbose) + else: parser.print_help() diff --git a/data/board_detail_20260410.csv b/data/board_detail_20260410.csv new file mode 100644 index 0000000..be5e496 --- /dev/null +++ b/data/board_detail_20260410.csv @@ -0,0 +1,414 @@ +# A股板块详细数据 +# 生成时间: 2026-04-10 17:19:21 + +=== 行业板块涨跌幅排行 === +板块名称,涨跌幅(%),主力资金(亿),领涨股 +蓄电池及其他电池,0.06,6.17,9 +玻纤制造,0.05,8.50,8 +金融信息服务,0.05,1.26,3 +期货,0.04,0.98,4 +锂电池,0.04,26.46,27 +逆变器,0.04,13.09,9 +电池,0.04,46.91,94 +电池化学品,0.04,11.28,42 +品牌消费电子,0.04,1.42,10 +锂电专用设备,0.03,3.06,15 +玻璃玻纤,0.03,9.20,17 +镍,0.03,3.97,1 +锂,0.03,9.49,7 +能源金属,0.03,13.95,10 +其他数字媒体,0.03,0.33,2 +其他纺织,0.03,1.32,11 +印染,0.03,-0.46,4 +证券Ⅲ,0.03,51.05,49 +证券Ⅱ,0.03,51.05,49 +油气及炼化工程,0.03,-0.31,5 +钴,0.02,0.50,2 +塑料包装,0.02,0.63,8 +其他橡胶制品,0.02,0.10,14 +非银金融,0.02,52.66,78 +半导体设备,0.02,-3.02,16 +其他电子Ⅲ,0.02,12.39,25 +其他电子Ⅱ,0.02,12.39,25 +多业态零售,0.02,1.03,14 +商用载货车,0.02,2.06,8 +火电设备,0.02,0.04,3 +其他家居用品,0.02,0.18,20 +机器人,0.02,1.61,20 +成品家居,0.02,0.58,16 +数字芯片设计,0.02,38.64,41 +玻璃制造,0.02,0.70,9 +原材料供应链服务,0.02,0.44,11 +纺织服装设备,0.02,1.74,11 +冰洗,0.02,0.28,7 +其他电源设备Ⅱ,0.02,8.80,25 +多元金融,0.02,1.44,24 +零食,0.02,0.63,8 +其他电源设备Ⅲ,0.02,6.45,20 +大众出版,0.02,0.10,15 +资产管理,0.02,-0.06,4 +仓储物流,0.02,0.28,5 +电力设备,0.02,60.75,330 +纺织制造,0.02,1.91,25 +综合电力设备商,0.02,2.31,2 +金属包装,0.02,0.51,5 +公路货运,0.02,0.13,4 +电动乘用车,0.02,6.96,3 +其他化学纤维,0.02,-0.38,6 +教育运营及其他,0.02,0.37,3 +其他生物制品,0.02,0.15,31 +视频媒体,0.02,0.12,1 +氨纶,0.02,-0.02,1 +培训教育,0.02,0.74,10 +光伏辅材,0.02,2.57,16 +铁矿石,0.02,0.81,4 +燃料电池,0.02,-0.06,1 +物流,0.02,1.48,42 +信托,0.02,0.31,3 +家纺,0.02,0.14,6 +跨境物流,0.02,0.48,12 +商业物业经营,0.02,0.57,15 +会展服务,0.02,-0.03,3 +教育,0.02,1.18,15 +光伏主材,0.02,-0.19,3 +底盘与发动机系统,0.02,8.49,97 +旅游零售Ⅲ,0.02,0.54,2 +旅游零售Ⅱ,0.02,0.54,2 +游戏Ⅲ,0.02,7.26,22 +游戏Ⅱ,0.02,7.26,22 +其他计算机设备,0.02,6.34,53 +耐火材料,0.02,-0.13,8 +其他通用设备,0.02,0.59,43 +特种纸,0.02,1.89,11 +原料药,0.02,3.23,36 +白色家电,0.01,0.02,9 +橡胶,0.01,-0.36,18 +厨房电器,0.01,0.03,4 +生物制品,0.01,0.05,48 +非金属材料Ⅲ,0.01,1.54,9 +非金属材料Ⅱ,0.01,1.54,9 +光伏设备,0.01,12.83,56 +乘用车,0.01,9.18,9 +计算机设备,0.01,8.96,75 +造纸,0.01,2.24,20 +机床工具,0.01,0.87,19 +家居用品,0.01,0.85,66 +装修装饰Ⅲ,0.01,0.25,16 +装修装饰Ⅱ,0.01,0.25,16 +汽车零部件,0.01,6.35,222 +端到端供应链服务,0.01,-0.00,7 +半导体,0.01,21.53,129 +一般零售,0.01,2.13,53 +鞋帽及其他,0.01,0.24,10 +分立器件,0.01,-1.85,13 +商用车,0.01,1.72,11 +汽车,0.01,16.41,267 + +=== 行业板块资金流向排行 === +板块名称,主力资金(亿),涨跌幅(%),领涨股 +电力设备,60.75,0.02,330 +非银金融,52.66,0.02,78 +证券Ⅲ,51.05,0.03,49 +证券Ⅱ,51.05,0.03,49 +电池,46.91,0.04,94 +数字芯片设计,38.64,0.02,41 +锂电池,26.46,0.04,27 +半导体,21.53,0.01,129 +汽车,16.41,0.01,267 +能源金属,13.95,0.03,10 +逆变器,13.09,0.04,9 +光伏设备,12.83,0.01,56 +其他电子Ⅲ,12.39,0.02,25 +其他电子Ⅱ,12.39,0.02,25 +电池化学品,11.28,0.04,42 +锂,9.49,0.03,7 +玻璃玻纤,9.20,0.03,17 +乘用车,9.18,0.01,9 +计算机设备,8.96,0.01,75 +其他电源设备Ⅱ,8.80,0.02,25 +玻纤制造,8.50,0.05,8 +底盘与发动机系统,8.49,0.02,97 +游戏Ⅲ,7.26,0.02,22 +游戏Ⅱ,7.26,0.02,22 +电动乘用车,6.96,0.02,3 +其他电源设备Ⅲ,6.45,0.02,20 +汽车零部件,6.35,0.01,222 +其他计算机设备,6.34,0.02,53 +蓄电池及其他电池,6.17,0.06,9 +镍,3.97,0.03,1 +原料药,3.23,0.02,36 +锂电专用设备,3.06,0.03,15 +光伏辅材,2.57,0.02,16 +综合电力设备商,2.31,0.02,2 +造纸,2.24,0.01,20 +一般零售,2.13,0.01,53 +商用载货车,2.06,0.02,8 +纺织制造,1.91,0.02,25 +特种纸,1.89,0.02,11 +纺织服装设备,1.74,0.02,11 +商用车,1.72,0.01,11 +机器人,1.61,0.02,20 +非金属材料Ⅲ,1.54,0.01,9 +非金属材料Ⅱ,1.54,0.01,9 +物流,1.48,0.02,42 +多元金融,1.44,0.02,24 +品牌消费电子,1.42,0.04,10 +其他纺织,1.32,0.03,11 +金融信息服务,1.26,0.05,3 +教育,1.18,0.02,15 +多业态零售,1.03,0.02,14 +期货,0.98,0.04,4 +机床工具,0.87,0.01,19 +家居用品,0.85,0.01,66 +铁矿石,0.81,0.02,4 +培训教育,0.74,0.02,10 +玻璃制造,0.70,0.02,9 +零食,0.63,0.02,8 +塑料包装,0.63,0.02,8 +其他通用设备,0.59,0.02,43 +成品家居,0.58,0.02,16 +商业物业经营,0.57,0.02,15 +旅游零售Ⅲ,0.54,0.02,2 +旅游零售Ⅱ,0.54,0.02,2 +金属包装,0.51,0.02,5 +钴,0.50,0.02,2 +跨境物流,0.48,0.02,12 +原材料供应链服务,0.44,0.02,11 +教育运营及其他,0.37,0.02,3 +其他数字媒体,0.33,0.03,2 +信托,0.31,0.02,3 +仓储物流,0.28,0.02,5 +冰洗,0.28,0.02,7 +装修装饰Ⅲ,0.25,0.01,16 +装修装饰Ⅱ,0.25,0.01,16 +鞋帽及其他,0.24,0.01,10 +其他家居用品,0.18,0.02,20 +其他生物制品,0.15,0.02,31 +家纺,0.14,0.02,6 +公路货运,0.13,0.02,4 +视频媒体,0.12,0.02,1 +大众出版,0.10,0.02,15 +其他橡胶制品,0.10,0.02,14 +生物制品,0.05,0.01,48 +火电设备,0.04,0.02,3 +厨房电器,0.03,0.01,4 +白色家电,0.02,0.01,9 +端到端供应链服务,-0.00,0.01,7 +氨纶,-0.02,0.02,1 +会展服务,-0.03,0.02,3 +资产管理,-0.06,0.02,4 +燃料电池,-0.06,0.02,1 +耐火材料,-0.13,0.02,8 +光伏主材,-0.19,0.02,3 +油气及炼化工程,-0.31,0.03,5 +橡胶,-0.36,0.01,18 +其他化学纤维,-0.38,0.02,6 +印染,-0.46,0.03,4 +分立器件,-1.85,0.01,13 +半导体设备,-3.02,0.02,16 + +=== 概念板块涨跌幅排行 === +板块名称,涨跌幅(%),主力资金(亿),领涨股 +昨日连板,0.04,-19.86,7 +昨日连板_含一字,0.04,-20.89,11 +GDR,0.04,24.42,10 +麒麟电池,0.04,8.22,8 +纳米银,0.04,3.12,5 +刀片电池,0.04,10.08,11 +动力电池回收,0.03,40.08,40 +科创板做市商,0.03,23.30,14 +3D摄像头,0.03,22.01,8 +固态电池,0.03,51.62,178 +券商概念,0.03,52.56,55 +钠离子电池,0.03,23.34,53 +锂矿概念,0.03,28.75,29 +同步磁阻电机,0.03,2.09,7 +托育服务,0.02,1.30,7 +PLC概念,0.02,0.93,8 +数字货币,0.02,10.40,75 +商汤概念,0.02,0.94,13 +噪声防治,0.02,-0.01,9 +碳化硅,0.02,-15.10,34 +宁组合,0.02,16.40,23 +碳基材料,0.02,1.18,16 +昨日涨停_含一字,0.02,-63.25,36 +锂电池概念,0.02,45.36,324 +地摊经济,0.02,5.92,27 +玻璃基板,0.02,-1.25,26 +大盘成长,0.02,87.72,68 +氟化工概念,0.02,3.37,28 +科创板做市股,0.02,-2.96,35 +无线充电,0.02,30.49,32 +轮毂电机,0.02,-0.05,9 +ERP概念,0.02,4.14,17 +星闪概念,0.02,13.74,36 +跨境支付,0.02,4.91,47 +机器人执行器,0.02,3.39,31 +华为欧拉,0.02,0.28,14 +发电机概念,0.02,1.33,21 +参股期货,0.02,28.16,41 +创业成份,0.02,63.70,76 +互联网金融,0.02,61.70,153 +蓝宝石,0.02,-6.10,11 +电子身份证,0.02,1.16,34 +电池技术,0.02,46.49,446 +船舶制造,0.02,2.94,9 +数字哨兵,0.02,-1.53,10 +燃料电池概念,0.02,18.94,112 +移动支付,0.02,4.00,56 +生物识别,0.02,4.48,42 +汽车芯片,0.02,26.48,56 +复合集流体,0.02,-3.42,19 +换电概念,0.02,12.01,31 +华为汽车,0.02,7.88,100 +蚂蚁概念,0.02,10.98,52 +储能概念,0.01,60.46,345 +2025三季报预增,0.01,-2.91,73 +进口博览,0.01,0.35,14 +液冷概念,0.01,-4.57,90 +汽车热管理,0.01,6.16,79 +减速器,0.01,5.77,68 +昨日首板,0.01,-40.93,22 +第三代半导体,0.01,-21.82,71 +新能源车,0.01,106.69,539 +深证100R,0.01,90.28,72 +化债(AMC)概念,0.01,7.92,49 +减肥药,0.01,3.65,30 +周期股,0.01,60.08,68 +人形机器人,0.01,8.77,189 +屏下摄像,0.01,-1.27,9 +茅指数,0.01,62.71,34 +智能家居,0.01,35.06,134 +百元股,0.01,35.52,140 +消费电子概念,0.01,40.53,140 +无线耳机,0.01,34.12,65 +2025三季报扭亏,0.01,0.31,9 +汽车整车,0.01,11.00,23 +熔盐储能,0.01,0.15,9 +特斯拉概念,0.01,7.24,167 +智能穿戴,0.01,41.68,100 +昨日涨停,0.01,-64.20,31 +快递概念,0.01,2.67,35 +AIPC,0.01,14.58,37 +电子竞技,0.01,5.27,27 +高压快充,0.01,4.58,44 +石墨烯,0.01,2.43,50 +REITs概念,0.01,2.76,17 +磁悬浮概念,0.01,13.20,25 +电子烟,0.01,22.47,35 +存储芯片,0.01,31.68,69 +空气能热泵,0.01,1.79,30 +基金重仓,0.01,125.63,349 +ST股,0.01,-2.32,124 +小米概念,0.01,2.29,171 +全息技术,0.01,2.58,10 +贬值受益,0.01,8.27,143 +CRO,0.01,-4.61,31 +2025中报预增,0.01,46.18,332 +百度概念,0.01,-7.02,110 +超级电容,0.01,-11.24,25 +无人驾驶,0.01,26.46,211 +虚拟电厂,0.01,1.27,52 + +=== 概念板块资金流向排行 === +板块名称,主力资金(亿),涨跌幅(%),领涨股 +基金重仓,125.63,0.01,349 +新能源车,106.69,0.01,539 +深证100R,90.28,0.01,72 +大盘成长,87.72,0.02,68 +创业成份,63.70,0.02,76 +茅指数,62.71,0.01,34 +互联网金融,61.70,0.02,153 +储能概念,60.46,0.01,345 +周期股,60.08,0.01,68 +券商概念,52.56,0.03,55 +固态电池,51.62,0.03,178 +电池技术,46.49,0.02,446 +2025中报预增,46.18,0.01,332 +锂电池概念,45.36,0.02,324 +智能穿戴,41.68,0.01,100 +消费电子概念,40.53,0.01,140 +动力电池回收,40.08,0.03,40 +百元股,35.52,0.01,140 +智能家居,35.06,0.01,134 +无线耳机,34.12,0.01,65 +存储芯片,31.68,0.01,69 +无线充电,30.49,0.02,32 +锂矿概念,28.75,0.03,29 +参股期货,28.16,0.02,41 +汽车芯片,26.48,0.02,56 +无人驾驶,26.46,0.01,211 +GDR,24.42,0.04,10 +钠离子电池,23.34,0.03,53 +科创板做市商,23.30,0.03,14 +电子烟,22.47,0.01,35 +3D摄像头,22.01,0.03,8 +燃料电池概念,18.94,0.02,112 +宁组合,16.40,0.02,23 +AIPC,14.58,0.01,37 +星闪概念,13.74,0.02,36 +磁悬浮概念,13.20,0.01,25 +换电概念,12.01,0.02,31 +汽车整车,11.00,0.01,23 +蚂蚁概念,10.98,0.02,52 +数字货币,10.40,0.02,75 +刀片电池,10.08,0.04,11 +人形机器人,8.77,0.01,189 +贬值受益,8.27,0.01,143 +麒麟电池,8.22,0.04,8 +化债(AMC)概念,7.92,0.01,49 +华为汽车,7.88,0.02,100 +特斯拉概念,7.24,0.01,167 +汽车热管理,6.16,0.01,79 +地摊经济,5.92,0.02,27 +减速器,5.77,0.01,68 +电子竞技,5.27,0.01,27 +跨境支付,4.91,0.02,47 +高压快充,4.58,0.01,44 +生物识别,4.48,0.02,42 +ERP概念,4.14,0.02,17 +移动支付,4.00,0.02,56 +减肥药,3.65,0.01,30 +机器人执行器,3.39,0.02,31 +氟化工概念,3.37,0.02,28 +纳米银,3.12,0.04,5 +船舶制造,2.94,0.02,9 +REITs概念,2.76,0.01,17 +快递概念,2.67,0.01,35 +全息技术,2.58,0.01,10 +石墨烯,2.43,0.01,50 +小米概念,2.29,0.01,171 +同步磁阻电机,2.09,0.03,7 +空气能热泵,1.79,0.01,30 +发电机概念,1.33,0.02,21 +托育服务,1.30,0.02,7 +虚拟电厂,1.27,0.01,52 +碳基材料,1.18,0.02,16 +电子身份证,1.16,0.02,34 +商汤概念,0.94,0.02,13 +PLC概念,0.93,0.02,8 +进口博览,0.35,0.01,14 +2025三季报扭亏,0.31,0.01,9 +华为欧拉,0.28,0.02,14 +熔盐储能,0.15,0.01,9 +噪声防治,-0.01,0.02,9 +轮毂电机,-0.05,0.02,9 +玻璃基板,-1.25,0.02,26 +屏下摄像,-1.27,0.01,9 +数字哨兵,-1.53,0.02,10 +ST股,-2.32,0.01,124 +2025三季报预增,-2.91,0.01,73 +科创板做市股,-2.96,0.02,35 +复合集流体,-3.42,0.02,19 +液冷概念,-4.57,0.01,90 +CRO,-4.61,0.01,31 +蓝宝石,-6.10,0.02,11 +百度概念,-7.02,0.01,110 +超级电容,-11.24,0.01,25 +碳化硅,-15.10,0.02,34 +昨日连板,-19.86,0.04,7 +昨日连板_含一字,-20.89,0.04,11 +第三代半导体,-21.82,0.01,71 +昨日首板,-40.93,0.01,22 +昨日涨停_含一字,-63.25,0.02,36 +昨日涨停,-64.20,0.01,31 \ No newline at end of file