不装终端、不写 EA,用任意语言在 15 分钟内读出账户数据并发出第一笔订单
接入 MetaTrader API 只需要三样东西:一个 API Key、一个绑定后返回的账户 UUID、一个能发 HTTPS 请求的运行环境。全部流程通常在 15 分钟内完成,不需要安装 MetaTrader 终端,也不需要编写任何 MQL 代码。
在控制台注册后进入设置页生成 API Key。Key 等同于账户凭据,只保存在服务端环境变量里,不要提交进代码仓库,也不要出现在前端页面。
在控制台的账户页填写经纪商服务器名、交易账号与密码并提交,系统会返回一个账户 UUID。这个 UUID 代表一个持续维护的账户会话,之后所有接口调用都用它来指定操作的账户。
先用只读接口验证链路是否通。返回中包含余额、净值、保证金与可用保证金,能拿到这条数据就说明认证、账户绑定与网络三个环节全部正常。
轮询适合低频查询,实时行情、订单状态与净值变化应该用 WebSocket 长连接接收。生产环境务必实现断线重连与心跳检测,网络抖动是长连接最常见的故障来源。
第一,先在模拟账户上跑通;第二,确认经纪商的品种命名(EURUSD 与 EURUSD.m 是两个不同的符号);第三,确认最小手数与手数步长,取整错误是新接入时最常见的失败原因。
下面的例子调用账户摘要接口,这是验证接入是否成功最快的方式。请求成功即代表认证、账户会话与网络链路三项全部正常。
# 读取账户摘要(余额 / 净值 / 保证金) curl -X GET "https://api.api2trade.com/AccountSummary?id=YOUR_ACCOUNT_UUID" \ -H "x-api-key: YOUR_API_KEY"
import os, requests BASE = "https://api.api2trade.com" HEADERS = {"x-api-key": os.environ["MT_API_KEY"]} ACCOUNT = os.environ["MT_ACCOUNT_ID"] # 控制台绑定账户后得到的 UUID r = requests.get(f"{BASE}/AccountSummary", params={"id": ACCOUNT}, headers=HEADERS, timeout=10) r.raise_for_status() acc = r.json() print("余额", acc["balance"], "净值", acc["equity"])
const BASE = "https://api.api2trade.com"; async function accountSummary(id) { const res = await fetch(`${BASE}/AccountSummary?id=${id}`, { headers: { "x-api-key": process.env.MT_API_KEY } }); if (!res.ok) throw new Error(`HTTP ${res.status}`); return res.json(); } accountSummary(process.env.MT_ACCOUNT_ID).then(console.log);
// 实时推送:行情、订单状态与净值变化 // 连接地址与订阅报文格式以控制台中显示的连接信息为准 const ws = new WebSocket(WS_URL); ws.onopen = () => ws.send(JSON.stringify({ action: "subscribe", id: ACCOUNT_UUID })); ws.onmessage = (e) => { const msg = JSON.parse(e.data); /* 处理报价 / 订单更新 / 净值变化 */ }; ws.onclose = () => setTimeout(reconnect, backoff()); // 必须实现重连
| 套餐 | 认证方式 | 请求头 | 适用场景 |
|---|---|---|---|
| 入门版(单账户) | API Key | x-api-key: YOUR_API_KEY | 个人项目、单账户脚本、快速验证 |
| 专业版 / 旗舰版 | HTTP Basic | Authorization: Basic base64(用户名:密码) | 多账户管理、SaaS 平台、跟单系统 |
升级套餐后认证方式会随之改变,记得同步修改代码中的请求头,否则会收到 401。凭据一律通过环境变量注入,不要写进代码仓库。
| 错误 | 常见原因 | 处理方式 |
|---|---|---|
401 Unauthorized | 认证头缺失或错误 | 检查 x-api-key 拼写与 Key 内容;Pro 套餐应改用 Basic 认证 |
403 Forbidden | 套餐权限不足或该账户不属于当前 Key | 确认账户绑定在当前 Key 所属的组织下 |
404 / 无效 id | 账户 UUID 不存在或会话已失效 | 回到控制台确认账户状态,必要时重新绑定 |
Invalid symbol | 品种名称与经纪商不一致 | 先拉取该账户可交易品种列表,按返回的原始名称下单 |
Not enough money | 可用保证金不足或手数过大 | 按净值与杠杆重新计算手数,并留出至少 30% 保证金缓冲 |
Timeout / 连接中断 | 网络链路不稳定或长连接未重连 | 实现指数退避重连;大陆访问优先选择三网直连的香港节点 |
接口本身没有地域限制,真正影响体验的是线路质量。三条实践建议:
需要固定线路或独立节点的团队,可以查看中国大陆专属方案获取定制配置与报价。