核心用法
mt5-httpapi 是一个封装在 Docker 容器中的 REST API 服务,底层运行 MetaTrader 5 终端,将 MT5 的原生功能转化为标准 HTTP/JSON 接口。用户通过 curl 或任何 HTTP 客户端即可与全球金融市场交互,彻底摆脱 Windows 依赖和复杂的 MT5 原生库。
关键功能矩阵:
- 市场数据:获取 K 线数据(OHLCV)、实时报价(Tick)、品种规格参数
- 交易执行:市价单、限价单、止损单等 6 种订单类型的创建、修改、取消
- 持仓管理:查看持仓、调整止损止盈、部分或全部平仓
- 账户信息:余额、净值、可用保证金、杠杆、交易权限状态
- 历史记录:订单历史、成交明细查询
典型调用模式:
# 获取账户状态
curl $MT5_API_URL/account
# 查询 EURUSD 品种规格(含合约大小、点值等关键参数)
curl $MT5_API_URL/symbols/EURUSD
# 市价买入 0.01 手(volume=100,合约大小 100,000)
curl -X POST $MT5_API_URL/orders \
-d '{"symbol":"EURUSD","type":"BUY","volume":100}'显著优点
1. 跨平台解耦:Linux/macOS 用户无需虚拟机或 Wine 即可调用 MT5 功能,API 设计遵循 RESTful 规范,学习成本低
2. 基础设施即代码:Docker 化部署支持自动化运维,配合 docker-compose 可实现一键启停
3. 实时性保障:直连 MT5 终端,延迟取决于网络到券商服务器的距离,无额外抽象层
4. 完整交易链路:从市场数据获取到订单执行、再到历史记录查询,覆盖量化交易全生命周期
5. 灵活的身份认证:支持多账户配置,可通过预存配置或运行时显式登录切换账户
潜在缺点与局限性
1. 部署复杂度:需要自行维护 Windows 容器或 VM(项目提供 Docker 方案但需 Windows 基础镜像),资源占用高于纯 Linux 方案
2. 无内置计算能力:技术指标计算(RSI、MACD、ATR 等)需用户自行实现,API 仅返回原始价格数据
3. 单点故障风险:MT5 终端崩溃或网络中断将直接导致 API 不可用,无内置高可用机制
4. 券商依赖性强:交易品种可用性、杠杆规则、隔夜利息等完全取决于底层券商配置
5. 版本锁定:MT5 终端版本更新可能导致兼容性问题,需同步维护 Docker 镜像
适合人群
- 量化开发者:需要程序化交易但不愿处理 MT5 原生 MQL5 语言的 Python/Go/JavaScript 开发者
- 跨平台交易员:使用 Linux/macOS 作为主开发环境,需要与 MT5 券商账户交互
- 基础设施工程师:需要将交易能力集成到现有微服务架构,通过 CI/CD 管理交易机器人
- 教育研究者:需要标准化 API 接口进行金融市场数据获取和策略回测(结合外部回测框架)
常规风险
财务风险(极高优先级):
- 合约大小陷阱:不同品种
trade_contract_size差异巨大(外汇 100,000 vs 加密货币 1),未校验直接下单可能导致 100 倍仓位误差 - 保证金爆仓:API 返回
margin_free和margin_level,但用户需自行计算并监控,系统不会阻止超杠杆交易 - 市场时间盲区:外汇周末休市、股票有交易所时段,未检查
trade_mode直接下单将被拒绝
技术风险:
- 价格滑点:市价单受
deviation参数限制,极端行情下可能因价格变动过快而连续被拒绝 - 部分成交:
IOC填充模式下,大单可能仅部分执行,需检查返回的volume确认实际成交 - API 状态漂移:MT5 终端可能意外断开券商连接,建议每次交易前调用
/terminal验证connected状态
合规与运维风险:
- 需自行确保券商允许 API 交易,部分券商条款禁止第三方自动化工具
- Docker 容器中的 MT5 需处理 Windows 授权激活问题
- 日志和审计数据分散在容器内,生产环境需配置持久化存储和监控告警