ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

用多个 AI Agent 分工监管 MT5 EA:交易指挥官 / EA 监管员 / 策略分析师 / 风控员怎么协作

用多个 AI Agent 分工监管 MT5 EA:交易指挥官 / EA 监管员 / 策略分析师 / 风控员怎么协作 1. 为什么单个 AI 管不住 MT5 EA多 Agent 分工的真实痛点如果你正在用 MT5 跑 EA大概率经历过这种场景半夜手机弹出一条推送说某个货币对的浮亏已经吃掉本周利润你爬起来打开终端发现 EA 还在按原逻辑加仓。你想让 AI 帮你盯着于是把持仓查询、策略分析、风险判断、消息回复全塞给一个大模型会话——结果它开始自信地编造明明账户净值是 9820 美元它回你当前净值约 12000 美元风险可控。这不是模型不够聪明而是角色串味。一个会话里同时存在只读监控策略解读下单执行闲聊回复四种意图模型在生成时无法稳定区分哪条结论该被当成事实、哪条该被当成建议、哪条该被当成指令。更麻烦的是上下文爆炸把持仓历史、策略文档、风控规则、微信聊天记录全塞进一个窗口token 成本翻倍不说模型注意力被稀释越到后面越容易跑偏。我试过用单 Agent 管一个 3 个 EA 的账户前 20 轮对话还算正常到第 30 轮它开始把分析师建议减仓直接理解成执行减仓差点在非农数据前平掉一个正常持仓。从那以后我改成多 Agent 分工交易指挥官负责调度、EA 监管员只读取真实数据、策略分析师负责解读、风控员负责阈值报警。每个 Agent 的人格定义SOUL.md短而硬工具集小约束清晰。这套思路在开源项目 EasyDeal 的openclaw-agent/目录里有现成模板四个角色各一份 SOUL.md通过 MCP 工具读 MT5 真实状态动钱操作一律先经人类确认。下面我把这套协作机制拆开讲包括可复制的角色配置、SOUL.md 提示词模板以及一轮从信号触发到风控拦截的完整验证流程。你可以在 TaoToken 统一 Key/API 通道下快速搭起自己的 EA 监管小队。2. TaoToken 前置统一 Key 与 MCP 通道怎么接多 Agent 协作的第一个坑不是提示词而是每个 Agent 都要单独配 API Key、单独处理限流、单独记模型 ID。四个角色如果各接各的通道调试时你根本分不清是哪个 Agent 的请求失败了。我的做法是全部走 TaoToken 的统一入口一个 Key 覆盖四个 Agent 的模型调用MCP 工具服务单独跑在本地。先拿 Key。打开 https://taotoken.net/api-keys 登录后创建一个新 Key权限选默认的对话与工具调用即可。复制出来的字符串形如sk-xxxxxxxx只显示一次先存到密码管理器。注意不要把它写进会提交到 Git 的配置文件里后面我们用环境变量注入。Base URL 用https://taotoken.net/api这个地址同时兼容 OpenAI 风格的/v1/chat/completions和 Anthropic 风格的/v1/messages所以 openclaw、Claude Code、Cline 这些客户端都能直接填。模型 ID 按你的场景选调度和风控这种要求稳定输出的角色用claude-sonnet-4-5或gpt-4.1这类指令跟随强的分析师做长文本解读可以用claude-opus-4-1如果只是定时播报gpt-4.1-mini就够成本低很多。MCP 侧EasyDeal 提供的easydeal_mcp_server.py暴露了一组工具核心的有get_trading_status读账户与持仓、get_trade_history读历史成交、close_position平仓、modify_sl_tp改止损止盈。前两个是只读后两个是动钱操作。多 Agent 协作的关键设计就在这里监管员只被授予只读工具的权限动钱工具只挂给指挥官且指挥官调用前必须拿到人类确认标记。环境变量建议这样组织四个 Agent 共用一份export TAOTOKEN_API_KEYsk-你的key export TAOTOKEN_BASE_URLhttps://taotoken.net/api export EASYDEAL_MCP_CMDpython /opt/easydeal/easydeal_mcp_server.py export MT5_TERMINAL_PATHC:/Program Files/MetaTrader 5/terminal64.exe如果你用 Claude Code 接入可以在项目根目录建.mcp.json把 MCP Server 注册进去模型侧仍然走 TaoToken 的 Base URL。这样一套配置同时服务四个角色换平台不用换角色定义。文档在 https://taotoken.net/doc 里面有各客户端的完整接入示例遇到 401 先查 Key 有没有多余空格遇到连接超时先确认 Base URL 没写成带/v1的旧格式。3. 可复制配置openclaw.json 与四份 SOUL.md 模板这一节是全文最核心的部分直接给你能落地的配置。目录结构照 EasyDeal 的openclaw-agent/来openclaw-agent/ ├── openclaw.json # 多 Agent 编排配置 ├── forex-commander/ # 交易指挥官主调度 │ ├── SOUL.md │ └── AGENTS.md ├── ea-supervisor/ # EA 监管员只读 │ └── SOUL.md ├── strategy-analyst/ # 策略分析师 │ └── SOUL.md └── risk-guard/ # 风控员 └── SOUL.mdopenclaw.json负责声明四个 Agent 的模型、工具权限和路由关系。下面这份是我实测可用的精简版把模型 ID 和 Base URL 换成你自己的{ provider: { base_url: https://taotoken.net/api, api_key_env: TAOTOKEN_API_KEY }, agents: { forex-commander: { model: claude-sonnet-4-5, soul: forex-commander/SOUL.md, tools: [get_trading_status, get_trade_history, close_position, modify_sl_tp], require_human_confirm: [close_position, modify_sl_tp], routes: [ea-supervisor, strategy-analyst, risk-guard] }, ea-supervisor: { model: gpt-4.1, soul: ea-supervisor/SOUL.md, tools: [get_trading_status, get_trade_history], require_human_confirm: [] }, strategy-analyst: { model: claude-opus-4-1, soul: strategy-analyst/SOUL.md, tools: [get_trade_history], require_human_confirm: [] }, risk-guard: { model: gpt-4.1, soul: risk-guard/SOUL.md, tools: [get_trading_status], require_human_confirm: [] } }, mcp: { command: python, args: [/opt/easydeal/easydeal_mcp_server.py] } }注意require_human_confirm这个字段它是整套设计的保险丝。指挥官虽然持有动钱工具但调用前必须收到带用户已确认标记的消息否则只返回建议不执行。监管员和分析师压根没有动钱工具从权限层就杜绝了越权。接下来是四份 SOUL.md。SOUL.md 是纯文本人格定义写的是你是谁、你能做什么、你绝不能做什么。监管员的模板# ea-supervisor 你是 EA 监管员只负责读取 MT5 的真实状态不做任何解读和判断。 ## 硬规则 1. 所有数字必须来自 MCP 工具返回绝不编造余额、持仓、盈亏。 2. 工具调用失败时如实报告错误码和错误信息不要猜测数据。 3. 你只读不调用 close_position / modify_sl_tp。 4. 返回结构化数据字段包括账户净值、可用保证金、持仓列表品种/方向/手数/浮盈、最近成交。 ## 输出格式 用 JSON 返回不要加解释性文字。解读交给 strategy-analyst。风控员的模板重点在阈值# risk-guard 你是风控员独立于分析逻辑只盯三条红线。 ## 监控阈值 - 保证金率低于 200% 报警 - 单品种持仓占比超过账户净值 30% 报警 - 单日浮亏超过账户净值 5% 报警 ## 硬规则 1. 数据只来自 get_trading_status不编造。 2. 触发阈值时向 forex-commander 上报格式[RISK-ALERT] 类型 | 当前值 | 阈值 | 建议动作。 3. 你只报警不执行任何交易操作。策略分析师负责看懂# strategy-analyst 你拿 ea-supervisor 提供的真实数据做评估输出策略表现、偏差和优化建议。 ## 硬规则 1. 只基于传入的数据分析数据缺失就说明缺失不脑补。 2. 建议必须可执行例如将 EURUSD 的止损从 30 点放宽到 45 点不要写注意风险这种空话。 3. 你不下单建议交给 forex-commander 决策。交易指挥官是唯一面向人类的入口# forex-commander 你是人类与 EA 之间的调度层不直接交易。 ## 职责 1. 接收各渠道消息识别意图调度子 Agent。 2. 汇总子 Agent 结果按渠道调整输出微信简短关键数字突出、不超 200 字UI 可出完整表格。 3. 任何平仓 / 改止损 / 暂停 EA必须先明确告知用户并等待确认收到用户已确认标记才执行。 ## 硬规则 1. 数据来自 ea-supervisor解读来自 strategy-analyst报警来自 risk-guard你不自己编。 2. 动钱操作 human-in-the-loop确认环节绝不关闭。这四份模板加起来不到 800 字但把谁只读、谁能动钱、谁只报警的边界钉死了。你可以直接改阈值、改输出格式但建议保留角色边界——这是整套设计最值钱的部分。4. 验证请求一轮从信号触发到风控拦截的完整流程配置写完必须验证否则你不知道 Agent 是真读了 MT5 还是在编。下面演示一轮完整协作假设 EURUSD 持仓浮亏扩大触发风控阈值看四个 Agent 怎么流转。第一步手动触发监管员取数。在 openclaw 里发一条消息给ea-supervisor读取当前账户状态和全部持仓。预期它调用get_trading_status返回类似{ equity: 9820.50, margin_free: 4210.30, margin_level: 186.4, positions: [ {symbol: EURUSD, type: buy, volume: 0.5, profit: -412.80}, {symbol: XAUUSD, type: sell, volume: 0.2, profit: 88.10} ] }如果它返回的文字里出现大约估计这类词说明人格约束没生效回去检查 SOUL.md 是否被正确加载。第二步把这份数据传给risk-guard让它判断基于以下持仓数据判断是否触发风控阈值{上面的JSON}风控员应该输出[RISK-ALERT] 保证金率 | 当前 186.4% | 阈值 200% | 建议动作减仓或入金注意它只报警不给具体减多少手——那是分析师的活。第三步把同样数据传给strategy-analyst评估当前 EURUSD 持仓的策略表现给出可执行建议。它可能返回EURUSD 多单浮亏 412.80占净值 4.2%未达单日 5% 红线但接近建议将止损从当前位收紧至 1.0820或减仓 0.2 手降低敞口。第四步指挥官汇总。给forex-commander发风控报警和策略建议如下{两段输出}。请汇总并给出处理方案。指挥官应该输出一段面向人类的简报并明确问是否执行减仓 0.2 手回复用户已确认后我将调用 close_position。第五步验证拦截。如果你只回复好的指挥官不应该执行而应再次确认。只有回复包含用户已确认字样它才调用动钱工具。这一步是整套流程的安全底线务必测。整个链路跑通后你可以把监管员挂到 cron 上每 5 分钟取一次数风控员每次取数后自动判断触发阈值才唤醒指挥官。这样 token 消耗集中在真正需要决策的时刻而不是让大模型 24 小时空转。5. 本篇常见错排查401、local proxy failed 与 OAuth 报错多 Agent 协作最容易在接入层翻车下面是我踩过的几类真实报错和定位方法。401 Unauthorized。九成是 Key 问题。先确认TAOTOKEN_API_KEY环境变量在当前 shell 里生效用echo $TAOTOKEN_API_KEY看有没有值。如果值正确仍报 401检查 Base URL 是不是写成了https://taotoken.net/api/v1——正确写法是https://taotoken.net/api客户端会自己拼/v1/chat/completions。另外确认 Key 没有多余换行从密码管理器复制时经常带尾部空格。local proxy failed / connection refused。这个报错通常出现在 MCP Server 没起来的时候。先单独跑python /opt/easydeal/easydeal_mcp_server.py看它是否正常监听。如果报缺依赖装mcp和MetaTrader5两个包。如果 MCP 起来了但 Agent 连不上检查openclaw.json里mcp.command的路径是不是绝对路径相对路径在不同工作目录下会失效。reading choices of undefined。这是 OpenAI 风格响应解析失败的典型报错说明返回体不是预期的 chat completion 结构。常见原因是模型 ID 写错比如把claude-sonnet-4-5填到了只认 OpenAI 格式的客户端里。解决方法是确认客户端支持的协议走/v1/chat/completions的用 OpenAI 系模型 ID走/v1/messages的用 Claude 系模型 ID。TaoToken 两种都支持但客户端要匹配。OAuth 相关报错。如果你用 Claude Code 接入它默认可能走 OAuth 流程。多 Agent 场景下建议改用 API Key 模式在 settings 里把认证方式切成 KeyBase URL 填https://taotoken.net/apiModel ID 填claude-sonnet-4-5。这三件套Base URL Key Model ID缺一不可任何一项错都会导致认证失败。Agent 编造数据。这不是接入错误是人格约束没生效。检查 SOUL.md 是否被正确加载以及监管员的工具权限里是不是混进了非只读工具。如果监管员能调close_position它就可能顺手执行务必在openclaw.json的tools字段里严格限制。风控不报警。先确认阈值单位保证金率是百分比单品种占比是净值百分比别把 0.3 当成 30%。再确认风控员拿到的是监管员的原始 JSON而不是被指挥官转述过的文字——转述过程会丢精度。6. 把监管小队跑起来从模板到你自己团队的下一步到这里你已经有了完整的一套四个角色定义、一份编排配置、一轮验证流程、一份排错清单。接下来最实际的动作是把它跑起来然后按自己的交易习惯裁剪。先克隆 EasyDeal找到openclaw-agent/目录把四份 SOUL.md 和openclaw.json拷到你的工作目录。改openclaw.json里的 Base URL 和模型 ID注入 TaoToken 的 Key启动 MCP Server然后按第 4 节的五步流程走一遍。跑通后再挂 cron 做定时监管。裁剪时优先改这三处风控员的阈值改成你的风险偏好比如保证金率红线从 200% 调到 250%策略分析师的评估基准换成你自己的策略文档让它按你的规则判断偏差指挥官的输出渠道按需调整微信推送就压到 200 字以内UI 展示可以出完整表格。角色边界建议原样保留。谁只读、谁能动钱、谁只报警这三条线一旦模糊多 Agent 就退化成单 Agent 的老问题。动钱必须人类确认这一条尤其别关它是整套系统里唯一能兜住模型幻觉的环节。如果你还想加角色比如一个定时把日报推到微信群的播报员直接复制一份 SOUL.md 改职责即可工具只给只读的get_trading_status和get_trade_history。模型调用继续走 TaoToken 的统一通道不用为每个新角色单独配 Key。需要看更多接入示例可以去 https://taotoken.net/doc 模型对话调试在 https://taotoken.net/chat 长期跑 Agent 的话 Coding Plan 在 https://taotoken.net/coding-plan 有更划算的额度方案。
返回列表