【AI交易系统】黄金纯AI决策EA —— 把交易方向、手数、止损止盈全部交给大模型
一句话介绍:这不是又一个"调参数"的黄金 EA。它把全部交易判断外包给大模型——EA 只负责采集行情、组装报文、执行下单与风控校验;方向、手数、止损、止盈四位一体全部由 AI 输出。为了不把 API 密钥散落在 EA 里,配套一个只监听 127.0.0.1 的本地中转程序。需要自己去deepseek 配置api
项目
| 说明
| 品种
| XAUUSD(其他品种亦可,逻辑与品种无关)
| 推荐周期
| M5 / M15(自己任意)
| 参数数量
| 18 个,其中核心只有 2 个(魔术码、最大手数)
| 输入参数
| 魔术码、最大手数、API地址、超时、K线根数、布林/ATR/RSI 周期、看板外观
| 决策来源
| DeepSeek(任何 OpenAI 兼容接口均可替换)
| 外部依赖
| 需常驻运行配套的本地 Python 中转程序
| 版本
| v1.00
|
一、为什么做这个 EA:说清楚它和传统 EA 的区别传统 EA 的本质是"人把交易逻辑写死",参数就是这套逻辑的旋钮。它的天花板在于——写代码的人想到多少,EA 就只能做到多少。
这个 EA 换了个思路:把"看图做判断"这件事本身交给大模型。
为什么不直接在 EA 里调 API? 三个现实原因:
- 密钥安全:MT5 EA 是二进制文件,把 API 密钥写进参数等于公开。密钥只存在你本机的配置文件里,EA 完全接触不到。
- MQL5 的 HTTP 能力有限:JSON 组装/解析、超时重试、错误分类,在 MQL5 里都要手写;放在 Python 里是几十行的事,也好维护。
- 可替换性:想换模型、换供应商、加一个备用通道,改配置文件即可,EA 不用动。
二、核心设计:只在最该花钱的时刻请求 AI大模型调用是有成本的,所以这个 EA 在"什么时候请求"上做得非常克制:
触发条件:无持仓 + 新K线收盘 + 本根K线尚未请求过 + AI 模块启用 + 无请求进行中
也就是说:
- 只在空仓时请求 —— 有持仓就不打扰 AI,持仓管理完全交给已下好的止损止盈单,不会出现"AI 中途改主意"导致的来回砍单。
- 只在 K 线收盘时请求 —— tick 级抖动不会触发请求,同一个信号不会问两遍。
- 持仓归零后自动解禁 —— 上一笔平掉后,下一根 K 线收盘即可重新评估,不会漏掉新机会。
按 M5 周期、日均活跃时段估算,一天的请求次数是个位数量级,不是"每根 K 线都问一次"。实际用量取决于行情活跃度,你可以在看板上直接看到「累计请求 N 次」。
三、发给 AI 的是什么(信息透明,无黑箱)EA 每次组装的报文包含:
类别
| 字段
| 市场快照
| 品种、图表周期、数据时间、Ask / Bid / 点差(点数)
| 技术指标
| 布林带上轨/中轨/下轨/带宽、ATR、RSI(周期可调)
| 近期K线
| 最近 30 根(可调)的 时间/开/高/低/收/量
| 账户状态
| 余额、净值、可用保证金、账户币种
| 持仓状态
| 无持仓 / 持仓中、持仓手数、浮动盈亏
| 风控约束
| 本策略魔术码、本次允许的最大开仓手数
| AI 需要返回一个 JSON:
order 只允许三个取值:做多 / 做空 / 观望。当行情不清晰、风险过大或数据不足时,AI 会明确选择"观望",此时手数/止损/止盈全部为 0,EA 不会下单。
entry 是可选的挂单进场价:填 0 表示市价进场;填了价位表示"等价格回到这里再进",配合 InpEnablePending 开关使用(默认关闭)。
四、EA 侧的风控与容错(AI 说了不算的部分)把决策交给 AI,不等于把风控也交出去。下单前后 EA 会做一层独立校验,任何一项不过就不开仓:
校验项
| 行为
| 手数上限
| AI 给出手数 > 面板最大手数 → 直接拒绝开仓,并在看板提示(不是悄悄改成上限,避免你误以为按 AI 原意成交了)
| 手数有效性
| 手数 ≤ 0 或无法解析 → 拒绝开仓
| 方向合法性
| 返回非"做多/做空/观望" → 拒绝开仓,看板显示"无法识别"
| 止损/止盈方向
| 按持仓方向自动规范化,保证满足经纪商的最小止损距离要求,避免因 SL/TP 非法被拒单
| 挂单合法性
| AI 给的挂单价若不满足限价单条件 → 自动降级为市价执行,并在日志说明
| 手数精度
| 按经纪商的 LOT_STEP / LOT_MIN / LOT_MAX 归一化,避免小数位不合法
| 异常冻结
| 请求失败、返回空、解析异常 → 记录原因并暂停开新仓,看板红色显示"[已暂停开仓] 原因",不会带着脏数据下单。冻结是自愈的:下一次 AI 正常返回(含正常"观望")即自动解除,无需重启 EA
| 错误提示也做到了可自解释,不用去猜错误码:
- 4014 → 未勾选"允许 WebRequest"或未把 127.0.0.1 加入白名单
- 中转服务 HTTP 非 200 → 明确报出状态码
五、图表看板(不用翻日志)EA 在图表上常驻一块看板(可设字号、透明度、停靠角落),17 行内容分三块:
① 运行状态
- AI 模块状态(启用 / 关闭 / 请求中…)、上次请求时间、累计请求次数
- AI 交易指令(做多绿色 / 做空红色 / 观望黄色)与建议手数
- AI 建议正文(自动按看板宽度换行,最多多行完整显示)
② 交易绩效(仅统计本魔术码的已平仓订单)
指标
| 指标
| 总交易次数
| 交易胜率
| 盈利订单
| 亏损订单
| 净盈亏
| 总盈利 / 总亏损
| 平均盈利
| 平均亏损
| 盈亏比
| 单笔最大盈利 / 最大亏损
|
|
|
|
|
|
|
|
|
D
可以配置好信息接口 这样随时随地有通知 |
|
|
|
|
|
|
|
D