Skip to content

About

盘感训练器 — K线推演模拟交易桌面应用 | PyQt5 + Matplotlib + 通达信数据

Topics

Resources

Stars

35 stars

Watchers

2 watching

Forks

Latest commit

 

History

34 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

盘感训练器 — K线推演模拟交易

一款基于 PyQt5 + Matplotlib 的桌面 K 线技术选时训练工具。从本地通达信数据文件中抽取 A 股历史片段,逐根隐藏未来走势,让你在真实行情中磨练买卖判断力;答题模式更进一步——出现信号时你怎么做,由该股之后的实际走势来判分。训练结束后自动生成 Markdown 分析报告,并支持把 K 线截图连同报告一起交给 AI 做视觉复盘。


功能概览

模块 功能
六大训练模式 经典 / 限时 / 多周期 / 板块联动 / 综合训练 / 答题模式,首页卡片一键进入
答题模式 从信号题库随机出题,按持仓状态二选一(持币:买入/观望;持股:卖出/观望),按该股之后 20 日实际走势判分
随机选股 自动扫描通达信 vipdoc 目录,随机抽取指定天数的 A 股日线片段
逐根推演 逐根揭开 K 线,模拟真实看盘体验,完全隐藏未来走势
模拟交易 键盘一键买入 / 卖出,支持分批建仓减仓,实时标注买卖点
止损止盈 可配置止损/止盈百分比,触发时自动平仓
多指标面板 3–5 个副图指标面板自由切换,支持 MACD / KDJ / RSI / CCI / OBV 等 12+ 种指标
可配置均线 最多 6 条均线,周期自定义(默认 5/10/20/30/60/120 日)
图表拖拽缩放 左键拖拽平移、滚轮缩放查看历史 K 线,推演时自动跟随
前复权处理 自动读取通达信除权除息数据,对历史 K 线进行前复权
主图叠加 均线 / EXPMA / BBI / BOLL 一键叠加显示
十字光标 鼠标移动时所有子图联动显示十字光标
暗色主题 全局深色调色板,适合长时间训练
AI 复盘分析 支持 OpenAI / Anthropic / DeepSeek / 自定义端点,训练结束弹窗一键触发;可将 K 线截图随报告发给视觉模型(纯文本模型自动降级)
训练统计 历史训练数据持久化,统计面板展示累计训练、胜率、收益率趋势
训练报告 自动生成 Markdown 报告,包含 K 线数据、指标快照、交易评分、收益总结与答题记录
训练小结 训练结束弹窗展示本次收益 / 持有不动 / 择时超额;答题模式只展示正确率与分信号统计
新手引导 首次启动三页向导(数据源 / 快捷键 / 模式介绍),F1 随时查看快捷键速查
配置持久化 所有训练参数、指标参数、AI 配置保存到 config.yaml,重启自动恢复

项目结构

├── main.py              # 主窗口:双页栈导航(首页/训练页)、模式编排、快捷键、训练流程
├── modes.py             # 训练模式注册表(模式下拉/首页卡片/名称映射的唯一定义处)
├── home_page.py         # 首页(模式选择卡片 + 高级设置/重建题库入口)
├── dialogs.py           # 训练小结弹窗、新手引导向导
├── quiz_panel.py        # 答题模式面板(出题/作答/自动播放/揭晓)+ 加载线程
├── signal_bank.py       # 信号题库引擎(6 类信号检测 + 前瞻收益 + SQLite 缓存)
├── chart_canvas.py      # Matplotlib 画布:K 线图 + 成交量 + 副图指标 + 拖拽缩放
├── multi_tf_canvas.py   # 多周期模式周线画布
├── sector_panel.py      # 板块联动面板(同板块多股同步推演)
├── timer_bar.py         # 限时模式倒计时条
├── psychology_tracker.py# 综合训练心理状态记录
├── indicators.py        # 技术指标计算中心(基于 easy_tdx.MyTT)+ 动态均线
├── data_loader.py       # 通达信日线数据加载、随机选股、前复权
├── trade_manager.py     # 模拟交易仓位管理、止损止盈、compute_session_stats 会话统计
├── portfolio.py         # 仓位管理器(分批买卖、浮动盈亏、时机评分)
├── report_generator.py  # 训练报告生成(Markdown)
├── ai_analyzer.py       # AI 复盘分析(QThread 异步调用,支持附 K 线截图)
├── db.py                # SQLite 训练历史数据库(sessions/trades/quiz_answers)
├── stats_panel.py       # 训练统计面板(概览卡片 + 趋势图表 + 答题正确率)
├── updater.py           # 版本号定义与自动更新
├── config.py            # YAML 配置读写、默认值合并
├── config.example.yaml  # 配置文件示例(首次使用请复制为 config.yaml)
├── requirements.txt     # Python 依赖
└── logo.ico             # 窗口图标

快速开始

1. 环境要求

  • Python 3.10+
  • 通达信客户端(需要本地日线数据文件)

2. 安装依赖

pip install -r requirements.txt

依赖清单:

包名 用途
PyQt5 GUI 框架
matplotlib K 线图表渲染
numpy 数值计算
pandas 数据处理
pyyaml YAML 配置读写
easy-tdx 通达信数据文件解析 + MyTT 指标库
requests AI 分析 API 调用

3. 配置

首次使用前,将配置文件模板复制为正式配置:

cp config.example.yaml config.yaml

然后编辑 config.yaml,填入通达信安装目录等配置。

⚠️ 注意:config.yaml 包含个人敏感信息(如 AI API Key),已被 .gitignore 排除,不会被提交到仓库。

4. 运行

python main.py

首次启动时,程序会尝试自动检测通达信安装目录。如果检测失败,在右侧面板手动选择通达信安装路径即可。


使用方法

训练流程

开始训练 → 随机选股 → 逐根推演 K 线 → 买入/卖出/观望 → 结束训练 → 查看报告 → AI 分析
  1. 点击 🚀 开始新训练,程序随机选取一只 A 股的历史片段
  2. K 线从左到右逐根揭开,你只能看到已揭开的走势
  3. 根据已有走势和技术指标,判断下一步方向
  4. 按 ↑ 买入 或 ↓ 卖出 进行模拟交易
  5. 到达最后一根 K 线或按 Esc 结束训练
  6. 程序自动生成训练报告到 docs/ 目录
  7. 可在日志 Tab 点击 🤖 AI 分析 获取 AI 复盘建议

答题模式流程

首页点「答题模式」→(首次自动构建题库,约 1 分钟)→ 出题 → 1/2 作答 → 自动播放后续 20 根 → 揭晓 → 回车下一题
  1. 题库从随机抽取的股票历史中检测 6 类经典信号(MACD 金叉 / KDJ 低位金叉 / 突破 20 日新高 / 回踩 MA20 / 放量突破 / RSI 超买)
  2. 题目会告知持仓状态:持币时按 1 买入 / 2 观望,持股时按 1 卖出 / 2 观望
  3. 作答后自动播放该股之后 20 个交易日的真实走势,按实际涨跌判分:持币买入后涨了就是对,持股没卖而下跌就是错(横盘两种都对)
  4. 揭晓时同时展示该信号的历史统计作为参考;分信号正确率在「📊 统计」页查看
  5. 首页「🔄 重建题库」可随时换一批新题

快捷键

按键 功能
→ 逐根前进
← 逐根后退
PgDn 快进 10 根
↑ 买入(默认仓位)
↓ 卖出(默认仓位)
1/2/3/4 买入 25%/33%/50%/100%
Shift+1/2/3/4 卖出 25%/33%/50%/100%
Space 观望
Esc 结束训练
F1 快捷键速查

答题模式下 1/2 变为作答键(买入/卖出与推进键自动屏蔽)。

图表交互

操作 功能
左键拖拽 平移查看历史 K 线
滚轮 放大/缩小可见 K 线范围
鼠标移动 十字光标联动所有子图

训练参数

在右侧控制面板可配置:

  • TDX 目录:通达信安装路径(支持自动检测)
  • 训练天数:30–500 天,默认 120 天
  • 副图数量:3–5 个副图指标面板
  • 副图指标:每个面板独立选择指标
  • 均线周期:自定义均线周期(逗号分隔,最多 6 条)
  • 主图叠加:均线 / BBI / EXPMA / BOLL 复选切换
  • 止损/止盈:可配置自动止损止盈百分比

支持的技术指标

副图指标

指标 输出 说明
MACD DIF, DEA, MACD 柱 趋势动能指标
KDJ K, D, J 随机摆动指标
RSI RSI6, RSI12, RSI24 相对强弱指标(多周期)
CCI CCI 顺势指标
OBV OBV + OBV_MA30 能量潮指标
CR CR + CR_MA(10/20/40/62) 能量指标
TRIX TRIX, TRMA 三重平滑指标
DMI PDI, MDI, ADX, ADXR 趋向指标
BIAS BIAS1, BIAS2, BIAS3 乖离率指标
WR WR1, WR2 威廉指标
捉妖大师 LONG, MID, SHORT, TREND 自定义趋势指标
MA30乖离 X, S_SMA, X_LMA MA30 乖离信号指标

主图叠加

指标 说明
MA(可配置) 最多 6 条均线,默认 5/10/20/30/60/120 日
EXPMA 12/50 日指数移动平均线
BBI 多空指标
BOLL 布林带(上/中/下轨)

所有指标参数均可在 config.yaml 中自定义。


训练报告

训练结束后自动在 docs/ 目录下生成 Markdown 报告,文件名格式:

report_{股票代码}_{时间戳}.md

报告内容包含:

  • 基本信息:股票代码、数据区间、价格统计
  • 交易操作记录:每次买卖的时间、价格、仓位比例、K 线上下文
  • 完整 K 线数据表:逐日开盘/最高/最低/收盘/成交量/涨跌幅,标记买卖点
  • 技术指标数据:关键指标逐日数值
  • 决策点指标快照:每次买卖时所有技术指标的精确数值
  • 交易评分:5/10/20 日时机评分
  • 收益总结:每笔交易收益率、总收益率、持仓天数统计

报告设计为 AI 可直接解析的格式,方便配合大模型进行交易复盘分析。


配置文件

⚠️ 重要:首次使用请将 config.example.yaml 复制为 config.yaml:

cp config.example.yaml config.yaml

config.yaml 包含个人敏感信息(API Key 等),已被 .gitignore 排除,不会被提交到仓库。

config.yaml 主要配置项:

# 通达信安装目录(留空自动检测)
tdx_home: ""

# 训练天数
training_days: 120

# 副图面板数量(3-5)
panel_count: 3

# 均线配置(最多 6 条,周期自定义)
ma_periods: [5, 10, 20, 30, 60, 120]
ma_enabled: true

# AI 分析配置
ai:
  provider: ""        # openai / anthropic / deepseek / custom
  api_key: ""
  base_url: ""
  model: ""
  send_chart: true    # AI 复盘附带 K 线截图(模型不支持时自动降级纯文本)

# 训练模式
mode:
  current: classic    # classic / timed / multi_tf / sector / comprehensive / quiz
  quiz_questions: 10  # 答题模式:每次会话题数

# 止损止盈
trading:
  default_buy_ratio: 1.0
  default_sell_ratio: 1.0
  stop_loss_pct: 0.0
  take_profit_pct: 0.0

# 各指标参数(可自定义)
indicators:
  MACD:
    SHORT: 12
    LONG: 26
    M: 9
  # ... 更多指标参数

打包发布

推送 v* 标签后,GitHub Actions(.github/workflows/build-release.yml)会自动完成 Windows x64/ARM64、Linux x64/ARM64、macOS ARM 五个平台的 PyInstaller 打包, 并创建 GitHub Release(gh release 页面下载)。x86 平台使用 PyQt5,ARM 平台使用 PySide6。

本地打包:

pyinstaller StockTraining.spec

产物在 dist/ 目录,分发时需整个目录一起打包。


技术栈

  • GUI:PyQt5(Fusion 风格 + 自定义暗色调色板)
  • 图表:Matplotlib FigureCanvasQTAgg 嵌入式画布
  • 数据源:easy-tdx 离线解析通达信 .day 二进制文件
  • 指标库:easy-tdx 内置 MyTT(通达信指标公式 Python 实现)
  • 数据处理:Pandas + NumPy
  • AI 分析:requests(支持 OpenAI / Anthropic / DeepSeek / 自定义端点)
  • 数据库:SQLite(训练历史持久化)
  • 配置:PyYAML

Changelog

v1.3.1 (2026-09-06)

新功能:

  • 答题模式:从信号题库随机出题(MACD 金叉 / KDJ 低位金叉 / 突破 20 日新高 / 回踩 MA20 / 放量突破 / RSI 超买 6 类信号),按持仓状态二选一,按该股之后 20 日实际走势判分;题库随机抽样建库约 1 分钟,重建即换新题
  • AI 复盘带图:训练结束自动导出 K 线截图随报告发给视觉模型,纯文本模型自动降级
  • 训练小结弹窗:训练结束展示本次收益 / 持有不动 / 择时超额;答题模式只展示正确率与分信号统计
  • 模式选择首页:6 张模式卡片一键开训;首次启动三页新手引导;F1 快捷键速查
  • 答题正确率与分信号薄弱分析进入统计面板与训练报告

修复:

  • 训练开始显示训练页而非首页(页栈顺序)
  • 答题揭晓后自动播放残余跳动作用到下一题 K 线
  • 答题中连按回车 / Esc 竞态导致的会话复活与重复入库
  • 题库构建重入、quiz_questions 配置项被覆盖、退出时后台线程崩溃

重构:

  • 模式注册表(modes.py)、对话框(dialogs.py)与首页(home_page.py)拆分
  • 会话收益统计三处实现合并为 compute_session_stats,「持有不动」基准起点修正为训练实际起点
  • 题库指标参数改为从 config 注入,答题面板会话级复用

v1.1.6 (2026-06-04)

Bug 修复:

  • 训练开始后 K 线未自动滚动到当前位置:_on_load_done 中新增 scroll_to_latest 调用,确保视口对齐到 cursor 位置

v1.1.5 (2026-06-03)

新功能:

  • 技术指标实时数值:副图指标(MACD/KDJ/RSI 等)和主图均线在图例中直接显示当天的具体数值
  • 加载动画:训练开始时显示居中遮罩 + 旋转点动画,后台线程加载数据,不再卡死 UI
  • 均线实时更新:修改均线周期后立即重新计算并刷新图表,无需重启训练
  • 自动更新:启动时静默检查新版本,菜单栏「帮助 → 检查更新」手动触发,支持跳过版本
  • 升级服务端:Flask Blueprint(server/api/update.py),部署到 stock.maolige.com

改进:

  • CI 精简:移除 macOS Intel 构建,仅保留 ARM64,节省约 10 分钟构建时间

Bug 修复:

  • 修改均线周期输入框后图表无变化:_on_ma_periods_changed 现在同步更新 indicator_hub 并重算指标
  • 均线周期减少后旧均线残留:calculate_all 重算前自动清除旧的 MA 数据

v1.1.2 (2026-06-03)

新功能:

  • 加载动画:训练开始时显示居中遮罩 + 旋转点动画,后台线程加载数据,不再卡死 UI
  • 均线实时更新:修改均线周期后立即重新计算并刷新图表,无需重启训练
  • 自动更新:启动时静默检查新版本,菜单栏「帮助 → 检查更新」手动触发,支持跳过版本
  • 升级服务端:Flask Blueprint(server/api/update.py),部署到 stock.maolige.com

Bug 修复:

  • 修改均线周期输入框后图表无变化:_on_ma_periods_changed 现在同步更新 indicator_hub 并重算指标
  • 均线周期减少后旧均线残留:calculate_all 重算前自动清除旧的 MA 数据

v1.1.0 (2026-06-03)

新功能:

  • 加载动画:训练开始时显示居中遮罩 + 旋转点动画,后台线程加载数据,不再卡死 UI
  • 均线实时更新:修改均线周期后立即重新计算并刷新图表,无需重启训练

Bug 修复:

  • 修改均线周期输入框后图表无变化:_on_ma_periods_changed 现在同步更新 indicator_hub 并重算指标
  • 均线周期减少后旧均线残留:calculate_all 重算前自动清除旧的 MA 数据

v1.1.0 (2026-06-03)

新功能:

  • 可配置均线:最多 6 条均线,周期可自定义(默认 5/10/20/30/60/120 日)
  • 图表拖拽缩放:左键拖拽平移、滚轮缩放,推演时自动跟随最新 K 线
  • 前复权处理:自动读取通达信除权除息数据,对历史 K 线进行前复权
  • 数据量增强:根据最长均线周期动态调整缓冲区,确保长周期指标有效
  • AI 分析手动触发:训练结束后手动点击「🤖 AI 分析」按钮,结果保存到 docs/ 目录
  • AI 配置保存按钮:配置面板新增「💾 保存 AI 配置」按钮
  • 训练统计面板:历史训练数据持久化到 SQLite,展示累计训练、胜率、收益率趋势

改进:

  • 右侧面板字体放大(适配老花眼用户)
  • 左侧图表边距优化,减少黑边
  • 右侧面板宽度增加
  • 均线 UI 从固定 checkbox 改为可编辑的周期输入框

v1.0.0 (2026-05-XX)

  • 初始版本:K 线推演、模拟交易、多指标面板、训练报告、暗色主题

License

本项目仅供个人学习与研究使用。

About

盘感训练器 — K线推演模拟交易桌面应用 | PyQt5 + Matplotlib + 通达信数据

Topics

Resources

Stars

35 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages