核心用法
mt5-httpapi 是一款将 MetaTrader 5 封装为 REST API 的开源工具,允许用户通过纯 HTTP/JSON 接口与 MT5 交互,彻底摆脱 Windows 环境和 MT5 原生库依赖。
典型场景:
- 程序化交易:通过 curl/Python 直接下单、修改止盈止损、平仓
- 量化策略回测:获取历史 K 线、Tick 数据、交易记录
- 账户监控:实时查询余额、净值、保证金、持仓盈亏
- 多终端管理:支持多账户、多端口并行运行
关键端点:
GET /account/GET /symbols/{symbol}/tick— 账户与行情POST /orders— 市价单/限价单/止损单PUT /positions/{id}— 修改持仓 SL/TPDELETE /positions/{id}— 全平/部分平仓GET /history/orders|deals— 历史数据
显著优点
1. 跨平台无依赖:仅需 curl,Linux/macOS 服务器即可运行
2. 标准化接口:RESTful 设计,JSON 数据,与任何语言生态兼容
3. 完整功能覆盖:订单、持仓、历史、账户、终端状态全 API 化
4. 灵活部署:多终端配置,支持账户隔离与负载分散
潜在局限
- 基础设施复杂:需自建 Windows VM 运行 MT5,维护成本较高
- 网络延迟敏感:HTTP 往返 + VM 中转,高频策略需评估延迟
- 无原生错误恢复:交易失败需自行重试,无内置订单路由优化
- 文档依赖社区:部分高级参数(如填充策略、到期类型)需经验调优
适合人群
- 量化开发者(Python/Go/Node.js 等)需对接 MT5 但不愿使用 Windows
- 资管团队需集中化部署多账户交易系统
- 个人交易者希望用自定义脚本自动化交易流程
常规风险
- 交易权限检查:必须前置验证
trade_allowed、trade_mode、connected,否则订单静默失败 - 合约规模误读:
trade_contract_size通常以万为单位,直接下单 1 手可能远超预期名义本金 - 滑点与拒单:波动市场需调整
deviation,被拒时尝试切换type_filling策略 - 止损距离限制:
trade_stops_level强制最小 SL/TP 间距,设置过近会导致下单失败