通过 WebSocket 接收 MT4 报价
连接、订阅、读取 tick,最后断开连接。
分步文字说明
- 0:00
通过 WebSocket 接收 MT4 报价
本教程演示如何通过 WebSocket 接收 MetaTrader 四的实时报价。我们会连接模拟账户,订阅一个交易品种,解读真实的服务器消息,然后停止订阅并断开终端连接。
- 0:21
打开 API 控制台
打开 M T 四点 M R P C 点 pro。系统会自动打开控制台。在连接方法中选择 Connect Ex。本教程只读取报价,不会开仓或平仓。
- 0:37
连接模拟账户
使用 Trial 或自己的 API 密钥。输入专用模拟账户的账号、交易密码,以及经纪商服务器的准确名称。这次创建新连接,因此将可选的 id 字段留空,然后点击执行请求。请勿公开账户凭据。
- 1:01
保存终端 id
对于 Connect Ex,先检查 HTTP 状态码二百,再检查 JSON 响应。如果 error 包含错误,先阅读错误详情。成功时,data 中会返回 terminal Instance Guid。控制台会保存这个 id,供后续请求使用,并显示终端已连接。
- 1:28
选择交易品种
在数据订阅中选择 On Symbol Tick,保留刚才连接的 id。在 symbol Names 中输入经纪商提供的准确品种名称,这里使用 EURUSD。不同经纪商的名称或后缀可能不同。点击连接流,开始接收更新。
- 1:52
观察实时报价
已连接标记表示 WebSocket 已打开。每次收到 tick,报价卡片都会更新。接收的帧就是真实的服务器消息。这是持续的数据流,不是重复发送 HTTP 请求。处理每条消息时,先检查 error,再读取 data 点 symbol Tick。
- 2:17
理解 bid 和 ask
在 symbol Tick 对象中,symbol 表示交易品种。Bid 是卖出报价,ask 是买入报价,两者之差就是点差。这些是报价,不是成交确认。如果经纪商没有提供该品种的最近成交数据,last 和 volume 可以为零。
- 2:42
使用 UTC 时间戳
为了在不同系统之间统一时间,请使用 time U T C,或者用 time M S C U T C 获取毫秒值。在本次截图中,经纪商时间比明确标注的 UTC 时间快两小时。不要仅因为时间字符串以 Z 结尾,就把经纪商时间当作 UTC。帧的接收时间是另一项时间记录。
- 3:13
对应的 JavaScript 示例
JavaScript 示例使用安全的 WebSocket 地址和同一个品种。浏览器的 WebSocket 无法设置自定义认证请求头,所以这里通过 URL 查询参数传递 API 密钥和终端 id。不要公开完整地址。解析 JSON 后先处理 error,再读取 tick 及其 UTC 时间。
- 3:41
停止订阅
完成后,在流面板点击断开连接。在代码中则关闭 WebSocket。这会结束订阅,但不会断开终端。没有新消息不一定意味着出错。请先检查连接状态、品种名称,以及经纪商是否正在发布报价。
- 4:05
断开终端连接
现在选择 Disconnect 方法,使用相同的终端 id 执行请求。检查 HTTP 状态码二百和 error 字段。本次成功响应包含终端标识符和运行时长,顶部状态变为已断开。到这里,报价订阅和终端会话都已结束。