MT5 Web Terminal 命令覆盖情况

本页跟踪在私下保留的 MT5 Web Terminal 前端分块文件 D8ROuLSQ.js (捕获于 2026-03-12) 中发现的命令 ID,并将其与截至 2026-03-16 的公开 pymt5 API 进行比较。第三方 JavaScript 快照保存在公开仓库之外;项目中仅保留由此得出的协议事实和本地静态分析辅助工具。

已于 2026-03-16 重新检查线上站点。当前官方终端入口页报告构建版本为 5687 ,构建日期为 2026-03-15,并且仍加载同名 API 分块文件( D8ROuLSQ.js ),其中具有相同的直接 sendCommand(...) 调用集合。

观察到的前端请求命令

当前前端快照包含以下命令的直接 sendCommand(...) 调用点:

  • 0 引导握手

  • 2 注销

  • 3 获取账户

  • 4 获取持仓和订单

  • 5 获取交易历史

  • 6 获取交易品种

  • 7 订阅报价

  • 9 获取交易品种组

  • 11 获取 K 线

  • 12 交易请求

  • 18 获取完整交易品种信息

  • 20 获取点差

  • 22 订阅订单簿

  • 24 修改密码

  • 27 验证码 / 验证流程

  • 28 登录

  • 29 初始化

  • 30 开设模拟账户

  • 34 获取交易品种(gzip)

  • 39 开设真实账户

  • 40 发送验证码

  • 41 交易者参数

  • 42 通知

  • 43 OTP 设置 / 连接 OTP

  • 44 获取公司链接

  • 51 心跳

观察到的前端事件处理程序包括 8 、 10 、 13 、 14 、 15 、 17 、 19 和 23 , 分别对应报价、交易、交易品种、账户、登录、交易品种详情、交易结果和订单簿推送。

pymt5 中已实现

pymt5 现在已覆盖可见的前端命令接口:

  • 会话/身份验证: 0 、 2 、 24 、 27 、 28 、 29 、 30 、 39 、 40 、 41 、 42 、 43 、 51

  • 账户/交易数据: 3 、 4 、 5 、 12

  • 市场数据: 6 、 7 、 9 、 11 、 18 、 20 、 22 、 34 、 44

  • 推送处理程序: 8 、 10 、 13 、 14 、 15 、 17 、 19 、 23

命令含义

  • cmd=27 开户验证请求: 当前前端发送 int16 build + cid + base opening payload 。 pymt5 通过 request_opening_verification() 提供此功能,并将双字节响应解析为 VerificationStatus(email, phone) 。

  • cmd=30 开设模拟账户: 当前前端发送完整的注册负载,而不是较早的类初始化负载。 pymt5 现在通过 open_demo_account() 镜像此行为。旧版 open_demo() 封装仍为兼容性而保留。

  • cmd=39 开设真实账户: 此命令在模拟账户负载的基础上扩展了身份/KYC 字段、一个 propType=9 出生日期字段, 以及零个或多个已上传文档。 pymt5 通过 open_real_account() 实现此功能。

  • cmd=40 提交验证码: 此命令重新发送基础开户负载,并填入电子邮件/电话验证码字段。 pymt5 通过 submit_opening_verification() 提供此功能,并解析与 cmd=27 相同的双标志响应结构。

  • cmd=43 OTP 设置: 前端在启用和禁用 TOTP 时使用同一种负载结构。 pymt5 将其映射为 enable_otp() 和 disable_otp() 。

根据前端用法确认的响应结构

  • cmd=27 和 cmd=40 返回两个 u8 标志。 推断:这些标志表示电子邮件和电话验证状态,因为前端使用它们来决定显示哪些确认字段, 以及提交的验证码是否被接受。

  • cmd=30 和 cmd=39 返回 [code, login, password, investor_password] 。 这一点已由前端控制器确认:它将第一个字段视为错误代码,并将其余三个值保存为新账户凭据。

未知或保留的 ID

前端传输允许列表还接受以下 ID:

21 、 25 、 33 、 37 、 50 、 52 、 100 、 101 、 102 、 103 、 104 、 105 、 106 、 107 、 108 、 109 、 110 、 111 、 112 。

在当前前端快照或 2026-03-16 的线上分块文件中,均未发现这些 ID 的直接 sendCommand(...) 调用点。

线上探测结果

2026-03-16 对 web.metatrader.app 进行的最小化线上探测产生了以下可重复的结果:

  • 21 、 25 、 33 、 37 、 50 、 100-112 : 传输层接受这些命令,但无论登录前还是登录后,空负载在客户端超时前都未产生响应。 推断:这些命令可能需要专用负载,或者在 MetaQuotes-Demo 服务器上被禁用。

  • 52 : 仅在刚完成引导握手、尚未执行其他命令的套接字上返回 code=0 和空响应体。 执行 cmd=29 或 cmd=28 后,同一命令会导致服务器在不发送关闭帧的情况下断开连接。 pymt5 通过实验性辅助函数 send_bootstrap_command_52() 提供这一确切行为。

在更新的分块文件、较早的历史分块文件或特定经纪商的捕获数据揭示其负载模式和业务含义之前, 这些 ID 仍应视为保留或尚未识别。

  • [ ] 重新扫描未来的 Web Terminal 分块文件,并在为未解析的 ID 添加命名业务 API 之前完成映射。