← Browse

@nnnightglow/visualization

B

一个专业的A股市场复盘分析系统,助力投资者回溯历史、发现机会、优化策略

skillclaude

Install

agr install @nnnightglow/visualization --target claude

Writes 1 file into .claude/skills/, pinned to git-cc061bc9.

  • .claude/skills/visualization/SKILL.md

Document


名称

name: visualization

# 描述

description: 构建并路由 A 股可视化任务到 utils/visualizersutils/visualizer_manager.py 的正确图表管线。用于用户请求个股、指数、板块、市场情绪或模型结果图表,且需要判断所需输入字段、方法选择与输出格式(嵌入式 HTML 或 ECharts 选项)。


# A 股可视化

将可视化请求路由到稳定的图表 API。 在绘图前校验数据契约,并输出前端可直接使用的结果。

# 工作流程

  1. 按领域分类请求。
  2. 选择精确的图表 API。
  3. 校验必需字段与数据质量。
  4. 生成符合约定的输出格式。
  5. 报告限制与降级行为。

# 步骤 1:分类请求

将请求映射到一个领域:

  • stock:个股 K 线、换手率、多股对比、新高股视图
  • index:指数 K 线、多指数对比、盘中成交量对比
  • sector:板块 K 线、成交额榜、排行、分布
  • market:情绪、涨跌停、炸板、连板梯队
  • model:模型选股结果可视化

不确定时先查看 references/api-map.md

# 步骤 2:选择 API

优先使用 VisualizerManager 的门面方法。 仅在管理器未覆盖所需变体时直接调用可视化器方法。 关键路由规则:

  • K 线相关优先使用 UniversalKlineChart.plot_kline_with_volume 系列。
  • 前端需要 ECharts 选项时使用 IndexVisualizer.get_multi_index_kline_options
  • 前端需要嵌入式 HTML 时使用 plot_*().render_embed() 路径。

# 步骤 3:校验数据契约

绘图前执行以下检查:

  • 数据框非空。
  • 必需字段存在。
  • 日期字段排序与字符串格式归一。

# 使用方法

使用:

  • ChartUtils.validate_data_columns
  • ChartUtils.prepare_chart_data

所需字段参考 references/data-contracts.md

# 步骤 4:生成输出

返回以下之一:

  • embedded_htmlrender_embed() 返回的字符串,用于直接页面渲染
  • echarts_option:前端自定义渲染使用的 dict
  • chart_map:多组件 HTML 字典(市场元数据组)

必须说明:

  • 使用的方法
  • 必需输入字段
  • 已知限制或降级模式

# 步骤 5:处理失败

失败需要明确、可执行:

  • 空输入:返回简洁的“无数据”提示。
  • 缺字段:列出缺失字段。
  • 不支持请求:给出最接近的可支持图表及所需补充数据。

避免静默失败。

# 参考资料

  • references/api-map.md:领域到方法的路由表
  • references/data-contracts.md:各图表所需字段契约
  • references/output-contract.md:返回类型与前端集成约定

# 资源文件

  • assets/visualization-request-template.md:可复用的请求模板

# 脚本扩展(新增图表能力)

新增图表函数请放在:

  • scripts/chart_*.py
  • 每个脚本通过 CHART_SPECS 暴露图表函数(推荐)或使用 plot_* 函数自动注册

运行时入口:

  • scripts/visualization_gateway.py
  • utils/visualizer_manager.py
    • VisualizerManager.list_skill_charts()
    • VisualizerManager.render_skill_chart(chart_id, **kwargs)

建议约定:

  • 图表函数返回 embedded_html(字符串)或 echarts_option(dict)
  • 函数参数使用显式命名,避免隐式全局状态
  • 对空数据/缺字段返回清晰错误信息

Repository README

Describes NNNightglow/replay as a whole, which may contain artifacts other than this one. Where this artifact had no useful description of its own, its summary was taken from here.

🚀 A股复盘系统 - Vue.js + Flask 现代化架构

License Python Vue Flask

一个专业的A股市场复盘分析系统,助力投资者回溯历史、发现机会、优化策略

功能特性快速开始技术架构使用文档贡献指南


📋 项目简介

本项目是一个基于 Vue.js + Flask 前后端分离架构的专业股票复盘系统,内置近十年A股日线级别数据,支持从指数、市场情绪、板块、个股等多维度进行深度复盘分析。

✨ 核心优势

特性说明
🔍 历史回溯可查看任意历史交易日的市场状态,发现当时错过的信号
📊 多维分析指数、板块、个股、市场情绪四大维度立体分析
🎯 数据驱动基于公开数据源(AKShare、BaoStock),透明可靠
高性能相比streamlit方案性能提升90%+,内存占用降低81%
💼 资金管理内置止损计算工具,参考《交易圣经》理论
🔄 自动更新每日18:00后自动更新最近30天数据

🆚 与同花顺等软件的区别

  1. 开源透明:数据来源公开(AKShare、BaoStock),代码完全开源
  2. 历史回溯:可查看任意历史时点的市场状态,帮助复盘改进交易系统
  3. 资金管理:集成建仓止损计算,科学管理风险
  4. 可定制化:开源代码,可根据个人需求自由扩展

🎯 核心功能

1. 📈 指数分析

  • 多指数对比:上证、深证、创业板、科创50、北证50、微盘股等
  • 5分钟量能图:实时追踪市场资金流向
  • 技术指标:MA5/MA10/MA20均线,涨跌幅统计

2. 🌡️ 市场情绪

  • 核心指标:红盘率、涨停数、跌停数、沪深成交额
  • 分布分析:涨跌幅分布、连板分布统计
  • 特殊形态:地天板、天地板、炸板分析
  • 趋势追踪:红盘率与量能走势、涨跌停数量变化

3. 🏢 板块分析

  • 板块排行:实时排名,快速定位热点
  • 成分股分析:查看板块内个股表现及K线图
  • 多对象对比:支持多板块/多指数横向对比

4. 💎 强势股分析

  • 白马分析:趋势股筛选,稳健投资标的
  • 黑马分析:连板股追踪,短线机会捕捉
  • 新高股票:突破历史高点的强势股
  • 赚亏钱效应:市场整体盈利效应分析

5. 💰 资金管理

  • 止损计算:根据《交易圣经》理论计算建仓止损位
  • 风险控制:科学的资金管理工具

6. 🧠 策略看盘(持续开发中)

  • 策略会话:支持按策略主题创建对话,沉淀复盘过程
  • 资源管理:支持上传文档并转为 Markdown 供策略引用
  • 策略看板:可生成策略视图与自定义看板界面(尚待完善),辅助盘前/盘后观察
  • 开发说明:该模块仍在持续迭代,部分字段和交互可能调整

🚀 快速开始

📋 环境要求

  • Python: 3.9+
  • Node.js: 16+
  • Anaconda/Miniconda: 推荐使用
  • 操作系统: Windows/Linux/MacOS

⚡ 方法1: 一键启动(推荐)

双击运行启动脚本,自动完成所有配置:

start_system.bat

脚本会自动:

  1. 激活 replay 虚拟环境
  2. 启动 Flask 后端服务(端口 5000)
  3. 启动 Vue 前端服务(端口 8080)
  4. 自动打开浏览器访问系统

🔧 方法2: 手动启动

步骤1: 创建虚拟环境

# 创建并激活虚拟环境
conda create -n replay python=3.10
conda activate replay

步骤2: 安装依赖

# 安装后端依赖
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

# 安装前端依赖
cd frontend
npm config set registry https://registry.npmjs.org/
npm install --no-optional

步骤3: 启动服务

# 终端1 - 启动后端
conda activate replay
python flask_app.py

# 终端2 - 启动前端
cd frontend
npm run serve

步骤4: 访问系统


🎯 技术架构

🔧 后端技术栈

技术说明
Flask轻量级Web框架,RESTful API设计
Polars高性能数据处理,比Pandas快10倍+
AKShare开源金融数据接口
BaoStock稳定的历史行情数据源
PyEchartsPython图表生成库

🎨 前端技术栈

技术说明
Vue 3渐进式JavaScript框架,Composition API
Element Plus企业级UI组件库
ECharts专业数据可视化库,支持K线图
AxiosHTTP客户端,统一请求拦截
Vue Router单页面应用路由管理

📊 性能对比

操作传统方案本系统性能提升
选择股票重新加载390行数据只加载33行K线数据92%
切换模块重新执行所有函数路由切换,瞬间响应95%
内存使用400MB75MB💾 81%
响应时间2-3秒延迟0.3秒响应🚀 90%

📖 使用说明

🔐 .env 配置与更新使用

项目根目录存在 .env 文件(E:\jupyter\大A\replay\.env),策略看盘相关的 LLM 能力通过该文件配置。

当前支持字段:

OPENAI_API_KEY=your_api_key
OPENAI_BASE_URL=https://api.302ai.cn/v1
OPENAI_MODEL=deepseek-v3.2
OPENAI_TIMEOUT_SECONDS=180
LLM_API_KEY=

使用方法:

  1. 修改 OPENAI_API_KEY 为你的真实 key(优先读取该字段)。
  2. 按你的服务商修改 OPENAI_BASE_URL(默认是 https://api.302ai.cn/v1)。
  3. 修改 OPENAI_MODEL 选择要使用的模型。
  4. 可按需调整 OPENAI_TIMEOUT_SECONDS(秒)。
  5. LLM_API_KEY 是可选别名,OPENAI_API_KEY 为空时可用它兜底。

生效方式:

  • 后端会自动读取 .env,修改后重启后端即可稳定生效。
  • 技能脚本 convert_to_markdown.py 由子进程执行,改完 .env 后下次转换任务会读取最新配置。

注意事项:

  • .env 含密钥,禁止提交到公开仓库。
  • 建议在 .gitignore 中保留 .env

🚧 策略板块看盘功能说明

策略板块看盘功能仍在持续开发中,当前版本以可用性优先,部分能力与交互仍可能调整:

  • 部分看板字段与展示规则会继续迭代。
  • 接口与配置项可能在后续版本小幅变更。
  • 如用于正式交易,请先在回测与模拟环境充分验证。

🧩 技能脚本热更新说明(convert_to_markdown.py)

当前已采用“拆分进程”的方式执行技能脚本:

  • 后端服务保持生产模式稳定运行,不会因为技能脚本改动而自动重启。
  • convert_to_markdown.py 每次转换都会通过子进程重新启动执行。
  • 因此 修改 skill 脚本后,下次转换会立即生效,不需要重启后端。

🧱 使用 skills/multiformat-to-md 的额外依赖

pip install -r requirements.txt 外,还需要系统级工具:

  • tesseract(图片/PDF OCR)
    • 建议安装中文语言包 chi_sim,否则中文 OCR 效果会明显下降。
  • ffmpeg + ffprobe.mp4 抽音与音视频处理)
  • antiword.doc 文档解析)

校验方式(Windows/Linux 通用思路):

  • tesseract --version
  • ffmpeg -version
  • ffprobe -version
  • antiword -h

说明:

  • .docx 使用 python-docx,不依赖 antiword
  • 若仅处理 .pdf/.docx/.png/.jpg,可以不安装 ffmpeg;若不处理 .doc,可以不安装 antiword

🔄 数据更新

系统支持自动和手动两种数据更新方式:

自动更新

  • 系统启动时自动检查数据更新
  • 每日18:00后可获取当日最新数据
  • 自动更新最近30天的增量数据

手动更新(附有自动补齐数据的时间缺口)

点击右上角设置图标,选择需要更新的数据类型:

  • 股票更新:更新个股日线数据
  • 板块更新:更新行业/概念板块数据
  • 指数更新:更新各类指数数据
  • 股票状态数据更新:更新涨停、跌停等市场状态

📅 历史回溯

  1. 在任意页面选择历史日期
  2. 系统自动加载该日期的市场状态
  3. 可对比不同时期的市场表现

💡 使用技巧

  • 板块对比:支持多选板块/指数进行横向对比
  • 自定义时间区间:可保存常用的时间区间组合
  • 股票组合管理:可创建自选股组合,快速查看
  • 资金管理计算:输入建仓价格和止损比例,自动计算止损位

🗂️ 项目结构

replay/
├── backend/                 # 后端目录
│   └── templates/          # HTML模板
├── frontend/               # 前端目录
│   ├── src/
│   │   ├── components/    # Vue组件
│   │   ├── views/         # 页面视图
│   │   ├── router/        # 路由配置
│   │   └── services/      # API服务
│   └── public/            # 静态资源
├── utils/                  # 工具模块
│   ├── metadata/          # 元数据管理
│   │   ├── stock_data_manager.py    # 股票数据
│   │   ├── index_data_manager.py    # 指数数据
│   │   ├── sector_data_manager.py   # 板块数据
│   │   └── market_data_manager.py   # 市场数据
│   ├── visualizers/       # 可视化模块
│   └── analyzer.py        # 分析工具
├── data_cache/            # 数据缓存目录
├── flask_app.py           # Flask主程序
├── requirements.txt       # Python依赖
└── start_system.bat       # 一键启动脚本

🔮 后续规划

  • 多Agent规划选股、看盘:skill使用与多agent协同:自然语言转选股条件,智能化选股,自主规划看盘界面
  • 分钟级数据:引入MySQL存储个股分钟数据(约20GB)
  • 实时推送:WebSocket实时数据推送
  • 策略回测:内置回测引擎,验证交易策略
  • 多用户系统:支持用户注册、登录、个性化配置

参考文献


📜 开源协议

本项目采用“禁止商用(仅限非商业用途)”授权协议,详情请见 LICENSE


☕ 支持作者

赞赏码


💡 技术支持 | 📅 最后更新: 2026-03-27 | 🔄 版本: v2.1

Made with ❤️ by NNNightglow 寻求合作可联系1968259857@qq.com,qq开发交流群:421648119

Trustgrade B

  • passBody integrity

    Whether the stored document is plausibly the kind of file the artifact declares, rather than something fetched by mistake.

  • passType matchnot applicable to this artifact type

    Whether the artifact is really the kind of thing its metadata claims it is.

  • passFreshness

    How long since the source repository was last pushed to.

  • passPrompt injection

    Scans the artifact's own text for instructions aimed at your agent rather than at you.

  • warnLicenseno SPDX license detected

    Whether the source repository declares an SPDX license permissive enough to redistribute.

How the grade is calculated

Each check contributes 0 points when it passes, 1 when it warns, and 2 when it fails. The total maps to a letter:

  • Aevery check passed
  • Bone warning
  • Ctwo warnings
  • Dprompt injection or body integrity failed, or three warnings
  • Fone of those failed, and something else is wrong

These are automated hygiene checks, not a security audit, and not a dependency or vulnerability scan. A grade of A means nothing was flagged — not that the artifact is safe.

Versions

  • git-cc061bc9a0852026-07-31