AI K线分析辅助工具,基于价格行为学(Price Action),通过 DeepSeek / Claude 等大模型进行市场结构分析与交易决策。
- 启动与初始配置
- 主界面概览
- 实时K线图表
- 提交分析(核心功能)
- 增量分析
- 等待K线收盘后分析
- 两阶段分析流程详解
- AI 侧边栏六大标签页
- 决策面板详解
- 决策树与决策树可视化
- 分析后自由对话(Free Chat)
- 演示模式
- 设置对话框
- 交易倾向(Decision Stance)
- 策略文件路由机制
- 数据源与K线刷新
- 经验库系统
- 记录持久化
- 安全与密钥管理
- 常见问题与故障排除
# 方式一:直接运行
python run.py
# 方式二:模块方式运行
python -m pa_agent.main
# 方式三:安装后使用命令行入口
pip install -e ".[dev]"
pa-agent- 程序启动后自动创建
config/settings.json(默认配置) - 如提示 MT5 未连接,确保 MetaTrader 5 终端已打开并登录
- 首次使用需在 菜单 → 设置 中填写 API Key
- API Key 通过 Windows DPAPI 加密存储,不会明文写入磁盘
| 项目 | 要求 |
|---|---|
| 操作系统 | Windows 10/11 |
| Python | 3.11+ |
| MT5 终端 | 需运行并登录(用于获取实时行情) |
| 网络 | 需访问 AI API 服务(DeepSeek / PackyAPI 等) |
程序主窗口分为左侧图表区和右侧 AI 侧边栏,顶部为操作控制栏。
┌──────────────────────────────────────────────────────────────────────┐
│ [数据来源▼] [交易所▼] [品种▼] [周期▼] ☑等待收盘 [提交分析] [增量分析] [演示模式] │
├─────────────────────────────────┬────────────────────────────────────┤
│ │ ┌──────────────────────────────┐ │
│ │ │ 实时│决策树│可视化│决策│原始│调试│ │
│ K线图表(pyqtgraph) │ ├──────────────────────────────┤ │
│ - 蜡烛图 + EMA20 │ │ │ │
│ - 入场/止损/止盈线 │ │ AI 侧边栏内容 │ │
│ - 序号标签 │ │ (按标签页切换) │ │
│ │ │ │ │
│ │ └──────────────────────────────┘ │
├─────────────────────────────────┴────────────────────────────────────┤
│ 状态栏:就绪 / 分析中 / 等待收盘… │
└──────────────────────────────────────────────────────────────────────┘
| 控件 | 功能 |
|---|---|
| 品种 | 可编辑下拉框,输入 MT5 品种名称(如 XAUUSDm、US500m) |
| 周期 | K线周期选择:1m / 5m / 15m / 1h / 4h / 1d |
| 用于分析的 K 线数量 | 在 设置 → 通用设置 中配置(2–5000),默认 100;主窗口不再显示该输入框 |
| 等待收盘 | 勾选后,提交分析时先等待当前未收盘K线走完 |
| 提交分析 | 发起完整两阶段 AI 分析 |
| 增量分析 | 基于上一次成功记录做增量分析(跳过已分析K线) |
| 演示模式 | 回放已保存的分析记录,无需真实 API 调用 |
| 图表实时更新 | 分析进行中图表暂停刷新,点击此按钮可恢复 |
- 蜡烛图渲染:使用 pyqtgraph,30Hz 刷新率
- EMA20 叠加线:自动计算并绘制 20 周期指数移动平均线
- K线序号标签:已收盘棒显示 #1、#3…(K1 = 最新已收盘);实时更新时最右侧 未收盘 棒为 浅色空心 K 线,不参与 AI 分析
- 分析后少一根? 提交分析后图表冻结为「仅已收盘」快照,未收盘棒会消失,与发给 AI 的 K1 对齐 — 详见
[docs/图表K线与分析快照说明.md](docs/图表K线与分析快照说明.md) - 交易决策叠加:分析完成后自动绘制入场价、止损价、TP1、TP2 水平线
- 入场线:白色实线
- 止损线:红色虚线
- TP1 线:绿色虚线
- TP2 线:浅绿色虚线
- 方向标记:做多↑ / 做空↓
- 鼠标滚轮:缩放图表
- 鼠标拖拽:平移图表
- 切换品种/周期时,图表自动重置
控制栏 「数据来源」 可选:
| 来源 | 说明 |
|---|---|
| MT5 | 需 MetaTrader 5 终端运行并登录(默认) |
| TradingView | tvDatafeed,现货黄金等 |
- 默认 1 秒刷新间隔(可在设置中调整)
- 数据源未连接时,状态栏会提示
- 在控制栏选择 品种、周期(K 线数量在 设置 里配置)
- 点击 「提交分析」 按钮
- 图表自动冻结(暂停实时更新),状态栏显示"分析中…"
- 右侧 AI 侧边栏切换到「实时」标签,展示分析流式输出
- 分析完成后状态栏显示"分析完成",图表恢复刷新
- 图表冻结在提交瞬间的K线快照上
- 「图表实时更新」按钮变为可用,可手动恢复图表刷新
- 提交按钮锁定,不可重复提交
- 品种/周期切换会取消当前分析
- 确保品种名与 MT5「市场报价」中名称完全一致(含后缀如
m) - 品种名输入错误时,输入框下方显示红色警告
- K线数据不足时提示"数据不足,请等待缓冲区填满后再提交"
当同品种同周期已有成功分析记录,且新增已收盘K线数量不超过阈值(默认 10 根)时,提交分析自动走增量模式:
- AI 可看到上一次分析的结论作为上下文
- 只对新增K线做增量判断,而非从零开始
- 节省 token 消耗,提升分析速度
- 自动增量:当新增K线 ≤ 阈值时,点「提交分析」自动走增量模式
- 强制增量:点「增量分析」按钮,无视阈值限制,强制基于上一次记录做增量
- 阈值在 设置 → 通用 → 「增量分析最大新增K线」 中配置(0 = 关闭自动增量)
- 未找到该品种/周期的成功分析记录
- 当前K线与上一轮记录无法对齐(缺口过大)
- 此时应改用「提交分析」做完整分析
当前最新K线尚未收盘(正在形成中),希望等它收盘后再提交分析,确保数据完整性。
- 勾选 「等待最新K线收盘后再提交分析」 复选框
- 输入框旁出现倒计时(如"还剩 23 秒")
- 点击「提交分析」或「增量分析」
- 程序等待当前K线收盘,倒计时实时更新
- K线收盘后自动提交分析
- 取消勾选复选框 → 取消等待
- 等待期间状态栏显示"等待当前K线收盘…还剩 XX 秒"
PA Agent 的核心分析采用两阶段(Two-Stage)架构:
目的:识别当前市场结构、通道形态与周期位置。
流程:
- 组装阶段一 Prompt(K线数据 + 市场诊断框架 + 人设提示词 + 逐棒分析检查单 + K线信号识别 + 经验库案例)
- 调用 AI API,流式输出
- 解析返回的 JSON,验证格式
- 提取关键字段:
cycle_position:市场周期位置(尖峰/微型通道/窄通道/正常通道/宽通道/趋势型交易区间/交易区间/极端交易区间)direction:方向(bullish / bearish / neutral)gate_trace:闸门决策路径gate_result:闸门结果(proceed / wait / unknown)detected_patterns:检测到的形态(楔形/反转尝试/H1H2/突破失败等)
目的:基于阶段一诊断结果,给出具体交易建议。
流程:
- 根据阶段一的
cycle_position+direction+detected_patterns,路由加载对应策略文件 - 加载经验库中相关案例
- 组装阶段二 Prompt(策略文件 + 决策树 + 交易倾向 + 经验库 + 二元决策指引)
- 调用 AI API,流式输出
- 解析返回的 JSON,验证格式
- 提取关键字段:
order_type:下单类型(限价单/突破单/市价单/不下单)order_direction:方向(做多/做空)entry_price:入场价stop_loss_price:止损价take_profit_price:TP1(主止盈价)take_profit_price_2:TP2(延伸止盈价)trade_confidence:信心分数(0–100)decision_trace:决策树追踪路径terminal.outcome:最终结果(trade / wait / reject)
如果阶段一的 gate_result 为 wait 或 unknown,阶段二将被跳过(闸门短路),直接输出"不下单"结论。
右侧 AI 侧边栏包含六个标签页,按功能分类:
主要功能:展示 AI 分析的流式实时输出。
- 分析进行时,实时显示思考过程(reasoning)和正文内容(content)
- 阶段一/阶段二分别显示,有清晰的标题分隔
- 底部显示 Token 用量进度条:
- 绿色(< 80%):正常
- 黄色(80%–95%):警告
- 红色(> 95%):危险
- 分析完成后,底部出现 自由对话输入框,可与 AI 继续讨论
- 支持「重发上一条消息」(自动丢弃已发送消息中的思考内容以节省 token)
主要功能:以文本列表形式展示决策树追踪路径。
- 显示闸门(Gate)追踪:每个闸门节点的问题、回答、结果
- 显示策略(Decision)追踪:每个决策节点的问题、回答、结果
- 终端结果标注:wait / reject / trade / proceed
主要功能:以科幻风格分支流程图可视化决策路径。
- 节点分为「闸门」和「策略」两种类型
- 分支路径用线条连接,动画播放从根节点到终端节点
- 自动播放功能:分析完成后自动播放路径动画
- 支持缩放和拖拽查看
- 颜色编码:
- 绿色 → 是/trade
- 红色 → 否/reject
- 黄色 → 中性/wait
- 蓝色 → proceed
主要功能:以结构化卡片展示最终交易决策。
- 市场概览:趋势方向、周期位置、市场阶段
- 交易决策:下单类型、方向、入场价、止损价、止盈价
- 信心评分:AI 信心分数(0–100),带颜色进度条
- 交易者方程:风险回报比、预估胜率、是否通过交易者方程
- 诊断摘要:市场结构诊断的简要说明
主要功能:展示 AI 请求和响应的原始数据。
- 阶段一/阶段二的 System Prompt、User Prompt 完整内容
- AI 原始响应(含 reasoning_content)
- 验证信息:JSON 解析是否通过、缺失字段、无效字段
- 异常信息:网络错误、超时、JSON 截断等
- 「复制调试信息」按钮:一键复制完整调试数据
主要功能:展示本次分析使用的所有提示词文件。
- 阶段一文件列表:市场诊断框架、人设、K线信号识别等
- 阶段二文件列表:根据路由加载的策略文件
- 经验库条目数:本次分析加载的历史案例数量
决策面板在「决策」标签中展示,包含以下信息块:
| 字段 | 说明 |
|---|---|
| 趋势方向 | 上涨 / 下跌 / 震荡 |
| 周期位置 | 尖峰 / 微型通道 / 窄通道 / 正常通道 / 宽通道 / 趋势型交易区间 / 交易区间 / 极端交易区间 |
| 市场阶段 | 稳定 / 过渡 |
| 字段 | 说明 |
|---|---|
| 下单类型 | 限价单 / 突破单 / 市价单 / 不下单 |
| 方向 | 做多 / 做空 |
| 入场价 | 进场价格 |
| 止损价 | 止损价格 |
| TP1(止盈价) | 主止盈目标价格(用于 1.0–1.5R 交易者方程) |
| TP2(延伸价) | 延伸止盈目标价格(MM/更远结构,不参与方程) |
| 字段 | 说明 |
|---|---|
| 信心分数 | 0–100,>=70 绿色,50–69 黄色,<50 红色 |
| 风险回报比 | R:R(如 2.5:1) |
| 预估胜率 | 基于交易者方程计算 |
| 交易者方程 | 通过 / 未通过 |
PA Agent 内置一套二元决策树(基于 prompt_engineering/二元决策.txt),用于引导 AI 按固定逻辑链路做交易决策:
- 闸门阶段(Gate):节点 0.1–0.3,判断市场是否具备交易条件
- 0.1:是否有足够K线数据
- 0.2:是否存在可识别的市场结构
- 0.3:是否处于可交易环境(非铁丝网/极端混乱)
- 策略阶段(Decision):节点 3–14,具体的交易逻辑决策
- 入场信号识别(§9)
- 入场方式选择(§11)
- 止损止盈设定(§10.3)
- 交易者方程验证
- 硬性禁止项检查(§14)
- 分析完成后自动切换到此标签(如果设置了自动播放)
- 点击「播放路径」按钮手动播放
- 鼠标滚轮缩放,拖拽平移
- 设置中可配置默认缩放比例和播放时长
两阶段分析完成后,可以在「实时」标签底部的输入框与 AI 继续对话:
- AI 已掌握本次分析的完整上下文(K线数据、诊断结果、决策过程)
- 每次发送消息时自动附加最新K线快照,确保 AI 看到最新市场数据
- 对话记录自动持久化到
.followups.jsonl文件
- 分析完成后,输入框变为可用
- 输入问题(如"如果明天跌破止损位怎么办?")
- AI 流式回复,实时显示
- 可多次对话,上下文保持
- 自由对话消耗额外 token
- Token 用量进度条实时更新
- 切换品种/周期会销毁当前对话会话
使用已保存的分析记录(records/pending/ 中的 .json 文件)回放界面,无需真实 API 调用。
- 点击「演示模式」按钮
- 选择回放方式:
- 手动选择记录:弹出文件对话框,选择
.json记录文件 - 自动随机记录:从 pending 目录随机选取记录
- 自动模式下,每条记录回放完成后自动切换下一条
- 决策树可视化播放结束后自动切换到下一条记录
- 无可用记录时自动退出演示模式
- 点击「退出演示模式」按钮(原「演示模式」按钮变为退出按钮)
- 提交真实分析时自动退出演示模式
- 切换品种/周期时自动退出
通过 菜单栏 → 设置 → 打开设置 打开。
| 设置项 | 说明 | 默认值 |
|---|---|---|
| 模型 (model) | AI 模型名称 | claude-sonnet-4-6 |
| Base URL | API 接口地址 | https://www.packyapi.com/v1 |
| API Key | API 密钥(加密存储) | 空 |
| Thinking | 是否启用扩展思考 | 开启 |
| Reasoning Effort | 思考深度 | max |
| Context Window | 上下文窗口大小 | 2,000,000 |
| 点击获取模型 API KEY | 打开帮助页面获取 API Key | — |
常用 API 配置:
| 提供商 | Base URL | 模型名 |
|---|---|---|
| DeepSeek | https://api.deepseek.com |
deepseek-v4-pro |
| PackyAPI | https://www.packyapi.com/v1 |
claude-sonnet-4-6 |
| KKAI | https://api.kkone.vip/v1 |
— |
| 云雾 | https://api.yunwu.ai/v1 |
— |
| 设置项 | 说明 | 默认值 |
|---|---|---|
| 用于分析的 K 线数量 | 提交分析时发送的已收盘 K 线根数 | 100 |
| 刷新间隔 | MT5 数据刷新频率 | 1000 ms |
| 上下文警告阈值 | Token 用量警告线 | 80% |
| 增量分析最大新增K线 | 自动增量的阈值 | 10 根(0 = 关闭) |
| 交易倾向 | 保守/均衡/激进/极度激进 | 均衡 |
| 上次品种 / 上次周期 | 记忆上次使用的品种和周期 | XAUUSDm / 15m |
| 决策树播放 | 分析完成后自动播放路径 | 开启 |
| 播放时长 | 路径动画持续时间 | 50 秒 |
| 决策树可视化默认缩放 | 相对整图适配的缩放百分比 | 500% |
交易倾向影响阶段二的交易决策倾向,不影响阶段一的市场诊断。
| 档位 | 说明 | 典型行为 |
|---|---|---|
| 保守 | 默认裁定标准,与旧版一致 | 优先清晰信号;边际情况倾向不下单;§10.3 须 RR≥1.0 且交易者方程通过 |
| 均衡 | 比保守更愿意交易 | 允许次优但可执行的二类 setup;边际方程通过时可下单;RR≥1.0(程序在 RR>1.5 时自动扩 stop) |
| 激进 | 比均衡更愿意交易 | 接受更早更不完美的入场;RR≥1.0 且方程通过即可评估下单 |
| 极度激进 | 强制选方向和进场方式 | 必须给出具体做多/做空方案;不可因犹豫输出"不下单"(§14 硬性禁止除外) |
- 设置对话框 → 通用 → 交易倾向
- 或直接修改
config/settings.json中的general.decision_stance
阶段一诊断完成后,系统根据 cycle_position + direction + detected_patterns 自动路由加载对应策略文件到阶段二 Prompt。
| 市场状态 | 方向 | 加载的策略文件 |
|---|---|---|
| 微型/窄/正常/宽通道 | 上涨 | 上涨通道分析识别.txt + 上涨通道交易策略.txt + 窄通道与宽通道策略.txt |
| 微型/窄/正常/宽通道 | 下跌 | 下跌通道分析识别.txt + 下跌通道交易策略.txt + 窄通道与宽通道策略.txt |
| 尖峰 | 上涨 | 极速上涨分析识别.txt + 极速上涨交易策略.txt |
| 尖峰 | 下跌 | 极速下跌分析识别.txt + 极速下跌交易策略.txt |
| 尖峰(过渡中) | — | 按通道文件加载 |
| 尖峰(结束中) | — | 尖峰文件 + 通道文件 |
| 交易区间 / 趋势型交易区间 | — | 震荡区间分析识别.txt + 震荡区间交易策略.txt |
| 极端交易区间 / 未知 | — | 不加载策略文件(不下单) |
| 检测到的形态 | 叠加文件 |
|---|---|
| 楔形 (wedge) | 文件14-楔形形态分析交易.txt |
| 反转尝试 / H2 / L2 / MTR / final_flag | 文件15-二次入场机会.txt |
| H1 / H2 / L1 / L2 | 文件19-H1H2-L1L2计数.txt |
| 突破失败 / 突破测试 | 文件18-突破失败与突破测试.txt |
| AlwaysIn / 20GB / Gap Bar | 文件20-AlwaysIn与20GB.txt |
| 铁丝网 / 重叠 / 中间区域 | 文件21-铁丝网与无交易环境.txt |
| 失败信号 / 磁力位 / 被困交易者 | 文件22-信号失败后的磁力位.txt |
提示词大纲_人设与思维方式.txt市场诊断框架.txt文件16-K线信号识别.txt文件17-止损和止盈与仓位管理.txt逐棒分析检查单.txt二元决策.txt(阶段二)
- 程序启动时自动连接本地 MetaTrader 5 终端
- 支持 MT5 所有时间周期:1m / 2m / 3m / 5m / 10m / 15m / 30m / 1h / 2h / 3h / 4h / 6h / 8h / 12h / 1d / 1w / 1M
- 品种名称需与 MT5「市场报价」中完全一致(含后缀如
m)
- 通过 tvDatafeed 拉取(可无账号匿名,数据可能受限)
- 现货黄金等需配置 交易所(如 OANDA + XAUUSD)
- 默认每 1 秒从当前数据源拉取最新 K 线
- 新数据到达后自动更新图表
- 刷新间隔可在设置中调整(100–10000 ms)
- 提交分析时,图表自动冻结在分析瞬间的K线快照
- 防止分析期间K线更新导致 AI 看到的数据与图表不一致
- 点击「图表实时更新」可手动恢复
experience/
├── broad_channel/ # 宽通道
│ ├── success_cases/ # 成功案例
│ └── failure_cases/ # 失败案例
├── extreme_tr/ # 极端交易区间
├── micro_channel/ # 微型通道
├── normal_channel/ # 正常通道
├── spike/ # 尖峰
├── tight_channel/ # 窄通道
├── trading_range/ # 交易区间
├── trending_tr/ # 趋势型交易区间
└── unknown/ # 未知/其他
- 每次分析完成后,系统根据诊断结果的
cycle_position在对应目录中加载经验案例 - 成功案例和失败案例都会被加载
- 经验案例作为 Prompt 的一部分发送给 AI,帮助其参考历史类似行情
- 在「调试」标签中可查看本次加载的经验条目数
每次分析完成后自动保存到 records/pending/ 目录:
- 主文件:
YYYY-MM-DD_HH-mm-SS_品种_周期.json- 包含完整的两阶段数据:K线、Prompt、AI 响应、诊断结果、决策结果、Token 用量
- 对话文件:
YYYY-MM-DD_HH-mm-SS_品种_周期.followups.jsonl- 自由对话的逐条记录
每条分析记录包含:
| 字段 | 说明 |
|---|---|
| meta | 时间戳、品种、周期、K线数、AI 配置快照、交易倾向 |
| kline_data | 发送给 AI 的K线数据 |
| htf_text | 高级时间框架文本 |
| stage1_messages | 阶段一发送的完整消息(system + user) |
| stage1_response | 阶段一 AI 原始响应(含 reasoning_content) |
| stage1_diagnosis | 阶段一解析后的诊断 JSON |
| stage2_messages | 阶段二发送的完整消息 |
| stage2_response | 阶段二 AI 原始响应 |
| stage2_decision | 阶段二解析后的决策 JSON |
| strategy_files_used | 使用的策略文件列表 |
| experience_loaded | 加载的经验案例列表 |
| exception | 异常信息(如有) |
| usage_total | Token 用量汇总 |
- 使用 Windows DPAPI(Data Protection API)加密
- 存储在
settings.json中的api_key_encrypted字段(Base64 编码) - 明文
api_key永远不会写入磁盘 - 加密/解密类:
pa_agent.security.secret_store.SecretStore
- 所有日志输出中 API Key 自动替换为
**** 掩码 - 调试面板中 API Key 同样脱敏显示
settings.json在.gitignore中排除- 提供
tools/setup_git_secrets.ps1脚本,设置 pre-commit hook 拦截敏感文件
| 问题 | 解决方案 |
|---|---|
ModuleNotFoundError: No module named 'pa_agent' |
在项目根目录执行 pip install -e ".[dev]" |
No module named 'PyQt6' |
执行 pip install PyQt6 |
DLL load failed |
安装 Visual C++ 运行库 |
| MT5 未连接 | 确保 MT5 终端已打开并登录 |
| 问题 | 原因与解决方案 |
|---|---|
| 品种红色警告 | 品种名与 MT5 不一致,检查后缀(如 XAUUSDm) |
| "数据不足" | 等待缓冲区填充(几秒后重试) |
| 阶段一/阶段二 JSON 验证失败 | 不会自动重试 API;会弹出调试对话框并切到「原始」页,可复制完整 exception / 规则列表排查 |
| 阶段二感觉像「又跑了一遍」 | 程序内仅单次阶段二请求;日志里 retrying without stream_options 是网络层兼容重试,不是业务重试 |
| JSON 截断 | 思考区 token 用尽导致正文未写完;可缩短 prompt 或调整 Reasoning Effort |
| 网络超时 | 检查网络连接和 API 服务可用性 |
| 问题 | 解决方案 |
|---|---|
settings.json 损坏 |
删除该文件,程序自动重建默认配置 |
| API Key 无效 | 在设置中重新输入;点击"显示"确认输入正确 |
| 模型与 Base URL 填反 | 设置对话框会自动检测并提示 |
| 问题 | 解决方案 |
|---|---|
| 图表卡顿 | 减少 K线数量;降低刷新间隔 |
| Token 用量过高 | 减少 K线数量;使用增量分析;降低 Reasoning Effort |
| 分析耗时过长 | 使用更快模型;降低思考深度 |
┌─────────────────────────────────────────────────────┐
│ PA Agent 核心操作速查 │
├─────────────────────────────────────────────────────┤
│ python run.py 启动程序 │
│ [提交分析] 完整两阶段 AI 分析 │
│ [增量分析] 基于上次记录做增量分析 │
│ ☑等待收盘 → [提交分析] 等K线收盘后自动分析 │
│ [演示模式] 回放历史记录(不消耗API) │
│ 菜单→设置 配置 API Key / 模型 / 倾向 │
│ 「实时」标签 查看流式分析输出 + 自由对话 │
│ 「决策树可视化」标签 查看决策路径流程图 │
│ 「决策」标签 查看结构化交易决策 │
│ 「原始」标签 调试 AI 请求/响应原始数据 │
└─────────────────────────────────────────────────────┘