一款基于 PyQt5 + Matplotlib 的桌面 K 线推演训练工具。从本地通达信数据文件中随机抽取 A 股历史片段,逐根隐藏未来走势,让你在真实行情中磨练买卖判断力,训练结束后自动生成详尽的 Markdown 分析报告。
| 模块 | 功能 |
|---|---|
| 随机选股 | 自动扫描通达信 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 / 自定义端点,训练结束后一键 AI 分析 |
| 训练统计 | 历史训练数据持久化,统计面板展示累计训练、胜率、收益率趋势 |
| 训练报告 | 自动生成 Markdown 报告,包含 K 线数据、指标快照、交易评分与收益总结 |
| 配置持久化 | 所有训练参数、指标参数、AI 配置保存到 config.yaml,重启自动恢复 |
learn_kline/
├── main.py # 主窗口(PyQt5)、暗色主题、快捷键、操作日志
├── chart_canvas.py # Matplotlib 画布:K 线图 + 成交量 + 副图指标 + 拖拽缩放
├── indicators.py # 技术指标计算中心(基于 easy_tdx.MyTT)+ 动态均线
├── data_loader.py # 通达信日线数据加载、随机选股、前复权
├── trade_manager.py # 模拟交易仓位管理、止损止盈、收益计算
├── portfolio.py # 仓位管理器(分批买卖、浮动盈亏、时机评分)
├── report_generator.py # 训练报告生成(Markdown)
├── ai_analyzer.py # AI 复盘分析(QThread 异步调用)
├── db.py # SQLite 训练历史数据库
├── stats_panel.py # 训练统计面板(概览卡片 + 趋势图表)
├── config.py # YAML 配置读写、默认值合并
├── config.example.yaml # 配置文件示例(首次使用请复制为 config.yaml)
├── requirements.txt # Python 依赖
└── logo.ico # 窗口图标
- Python 3.10+
- 通达信客户端(需要本地日线数据文件)
pip install -r requirements.txt依赖清单:
| 包名 | 用途 |
|---|---|
PyQt5 |
GUI 框架 |
matplotlib |
K 线图表渲染 |
numpy |
数值计算 |
pandas |
数据处理 |
pyyaml |
YAML 配置读写 |
easy-tdx |
通达信数据文件解析 + MyTT 指标库 |
requests |
AI 分析 API 调用 |
首次使用前,将配置文件模板复制为正式配置:
cp config.example.yaml config.yaml然后编辑 config.yaml,填入通达信安装目录等配置。
⚠️ 注意:config.yaml包含个人敏感信息(如 AI API Key),已被.gitignore排除,不会被提交到仓库。
python main.py首次启动时,程序会尝试自动检测通达信安装目录。如果检测失败,在右侧面板手动选择通达信安装路径即可。
开始训练 → 随机选股 → 逐根推演 K 线 → 买入/卖出/观望 → 结束训练 → 查看报告 → AI 分析
- 点击 🚀 开始新训练,程序随机选取一只 A 股的历史片段
- K 线从左到右逐根揭开,你只能看到已揭开的走势
- 根据已有走势和技术指标,判断下一步方向
- 按 ↑ 买入 或 ↓ 卖出 进行模拟交易
- 到达最后一根 K 线或按 Esc 结束训练
- 程序自动生成训练报告到
docs/目录 - 可在日志 Tab 点击 🤖 AI 分析 获取 AI 复盘建议
| 按键 | 功能 |
|---|---|
→ |
逐根前进 |
← |
逐根后退 |
PgDn |
快进 10 根 |
↑ |
买入(默认仓位) |
↓ |
卖出(默认仓位) |
1/2/3/4 |
买入 25%/33%/50%/100% |
Shift+1/2/3/4 |
卖出 25%/33%/50%/100% |
Space |
观望 |
Esc |
结束训练 |
| 操作 | 功能 |
|---|---|
| 左键拖拽 | 平移查看历史 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: ""
# 止损止盈
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
# ... 更多指标参数项目已包含 PyInstaller spec 文件(盘感训练器.spec),可打包为独立 exe:
pyinstaller 盘感训练器.spec打包产物在 dist/ 目录下,包含 盘感训练器.exe 和 _internal 子目录(运行时依赖),分发时需将整个目录一起打包。
- GUI:PyQt5(Fusion 风格 + 自定义暗色调色板)
- 图表:Matplotlib FigureCanvasQTAgg 嵌入式画布
- 数据源:easy-tdx 离线解析通达信
.day二进制文件 - 指标库:easy-tdx 内置 MyTT(通达信指标公式 Python 实现)
- 数据处理:Pandas + NumPy
- AI 分析:requests(支持 OpenAI / Anthropic / DeepSeek / 自定义端点)
- 数据库:SQLite(训练历史持久化)
- 配置:PyYAML
Bug 修复:
- 训练开始后 K 线未自动滚动到当前位置:
_on_load_done中新增scroll_to_latest调用,确保视口对齐到 cursor 位置
新功能:
- 技术指标实时数值:副图指标(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 数据
新功能:
- 加载动画:训练开始时显示居中遮罩 + 旋转点动画,后台线程加载数据,不再卡死 UI
- 均线实时更新:修改均线周期后立即重新计算并刷新图表,无需重启训练
- 自动更新:启动时静默检查新版本,菜单栏「帮助 → 检查更新」手动触发,支持跳过版本
- 升级服务端:Flask Blueprint(
server/api/update.py),部署到stock.maolige.com
Bug 修复:
- 修改均线周期输入框后图表无变化:
_on_ma_periods_changed现在同步更新indicator_hub并重算指标 - 均线周期减少后旧均线残留:
calculate_all重算前自动清除旧的 MA 数据
新功能:
- 加载动画:训练开始时显示居中遮罩 + 旋转点动画,后台线程加载数据,不再卡死 UI
- 均线实时更新:修改均线周期后立即重新计算并刷新图表,无需重启训练
Bug 修复:
- 修改均线周期输入框后图表无变化:
_on_ma_periods_changed现在同步更新indicator_hub并重算指标 - 均线周期减少后旧均线残留:
calculate_all重算前自动清除旧的 MA 数据
新功能:
- 可配置均线:最多 6 条均线,周期可自定义(默认 5/10/20/30/60/120 日)
- 图表拖拽缩放:左键拖拽平移、滚轮缩放,推演时自动跟随最新 K 线
- 前复权处理:自动读取通达信除权除息数据,对历史 K 线进行前复权
- 数据量增强:根据最长均线周期动态调整缓冲区,确保长周期指标有效
- AI 分析手动触发:训练结束后手动点击「🤖 AI 分析」按钮,结果保存到
docs/目录 - AI 配置保存按钮:配置面板新增「💾 保存 AI 配置」按钮
- 训练统计面板:历史训练数据持久化到 SQLite,展示累计训练、胜率、收益率趋势
改进:
- 右侧面板字体放大(适配老花眼用户)
- 左侧图表边距优化,减少黑边
- 右侧面板宽度增加
- 均线 UI 从固定 checkbox 改为可编辑的周期输入框
- 初始版本:K 线推演、模拟交易、多指标面板、训练报告、暗色主题
本项目仅供个人学习与研究使用。