返回顶部
m

mt5-httpapi

MetaTrader 5 trading via REST API — get market data, place/modify/close orders, manage positions, pull history. Use when you need to interact with forex/crypto/stock markets through MT5.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.2.0
安全检测
已通过
1,404
下载量
4
收藏
概述
安装方式
版本历史

mt5-httpapi

# mt5-httpapi REST API on top of MetaTrader 5 running inside a Windows VM. Talk to it with plain HTTP/JSON — no MT5 libraries, no Windows, no bullshit. Just curl and go. For installation and setup, see [references/setup.md](references/setup.md). ## Setup The API should already be running. Set the base URL and token: ```bash export MT5_API_URL=http://localhost:6542 export MT5_API_TOKEN=your_token_here ``` Each terminal has its own port (configured in `terminals.json`). If running multiple terminals, set `MT5_API_URL` to the port for the terminal you want to talk to. **Verify:** `curl -H "Authorization: Bearer $MT5_API_TOKEN" $MT5_API_URL/ping` — should return `{"status": "ok"}`. If not, the API isn't up yet (may still be initializing — it retries in the background). Auth is optional — if no token is configured on the server, all requests go through without a token. If a token is configured, all endpoints require `Authorization: Bearer <token>` and return `401` without it. ## How It Works GET for reading, POST for creating, PUT for modifying, DELETE for closing/canceling. All bodies are JSON. Every error response: ```json {"error": "description of what went wrong"} ``` ## Pre-Trade Checks (DO NOT SKIP) Before placing any trade: 1. `GET /account` → `trade_allowed` must be `true` 2. `GET /symbols/SYMBOL` → `trade_mode` must be `4` (full trading) 3. `GET /symbols/SYMBOL` → check `trade_contract_size` — 1 lot of EURUSD = 100,000 EUR, not 1 EUR 4. `GET /terminal` → `connected` must be `true` ## API Reference ### Health ```bash curl -H "Authorization: Bearer $MT5_API_TOKEN" $MT5_API_URL/ping # {"status": "ok"} curl -H "Authorization: Bearer $MT5_API_TOKEN" $MT5_API_URL/error # {"code": 1, "message": "Success"} ``` ### Terminal ```bash curl -H "Authorization: Bearer $MT5_API_TOKEN" $MT5_API_URL/terminal curl -X POST -H "Authorization: Bearer $MT5_API_TOKEN" $MT5_API_URL/terminal/init curl -X POST -H "Authorization: Bearer $MT5_API_TOKEN" $MT5_API_URL/terminal/shutdown curl -X POST -H "Authorization: Bearer $MT5_API_TOKEN" $MT5_API_URL/terminal/restart ``` Key fields on `/terminal`: `connected`, `trade_allowed`, `build`, `company`. ### Account ```bash curl -H "Authorization: Bearer $MT5_API_TOKEN" $MT5_API_URL/account ``` ```json { "login": 12345678, "balance": 10000.0, "equity": 10000.0, "margin": 0.0, "margin_free": 10000.0, "margin_level": 0.0, "leverage": 500, "currency": "USD", "trade_allowed": true, "margin_so_call": 70.0, "margin_so_so": 20.0 } ``` ### Symbols ```bash curl -H "Authorization: Bearer $MT5_API_TOKEN" $MT5_API_URL/symbols curl -H "Authorization: Bearer $MT5_API_TOKEN" "$MT5_API_URL/symbols?group=*USD*" curl -H "Authorization: Bearer $MT5_API_TOKEN" $MT5_API_URL/symbols/EURUSD curl -H "Authorization: Bearer $MT5_API_TOKEN" $MT5_API_URL/symbols/EURUSD/tick curl -H "Authorization: Bearer $MT5_API_TOKEN" "$MT5_API_URL/symbols/EURUSD/rates?timeframe=H4&count=100" curl -H "Authorization: Bearer $MT5_API_TOKEN" "$MT5_API_URL/symbols/EURUSD/ticks?count=100" ``` Timeframes: `M1` `M2` `M3` `M4` `M5` `M6` `M10` `M12` `M15` `M20` `M30` `H1` `H2` `H3` `H4` `H6` `H8` `H12` `D1` `W1` `MN1` Key symbol fields: `bid`, `ask`, `digits`, `point`, `trade_contract_size`, `trade_tick_value`, `trade_tick_size`, `volume_min`, `volume_max`, `volume_step`, `spread`, `swap_long`, `swap_short`, `trade_stops_level`, `trade_mode`. ### Orders ```bash # Place market order curl -X POST -H "Authorization: Bearer $MT5_API_TOKEN" $MT5_API_URL/orders \ -H 'Content-Type: application/json' \ -d '{"symbol": "EURUSD", "type": "BUY", "volume": 0.1, "sl": 1.08, "tp": 1.10}' # List pending orders curl -H "Authorization: Bearer $MT5_API_TOKEN" $MT5_API_URL/orders curl -H "Authorization: Bearer $MT5_API_TOKEN" "$MT5_API_URL/orders?symbol=EURUSD" curl -H "Authorization: Bearer $MT5_API_TOKEN" $MT5_API_URL/orders/42094812 # Modify pending order curl -X PUT -H "Authorization: Bearer $MT5_API_TOKEN" $MT5_API_URL/orders/42094812 \ -H 'Content-Type: application/json' \ -d '{"price": 1.09, "sl": 1.07, "tp": 1.11}' # Cancel pending order curl -X DELETE -H "Authorization: Bearer $MT5_API_TOKEN" $MT5_API_URL/orders/42094812 ``` Order types: `BUY`, `SELL`, `BUY_LIMIT`, `SELL_LIMIT`, `BUY_STOP`, `SELL_STOP`, `BUY_STOP_LIMIT`, `SELL_STOP_LIMIT` Fill policies: `FOK`, `IOC` (default), `RETURN` Expiration: `GTC` (default), `DAY`, `SPECIFIED`, `SPECIFIED_DAY` Required fields: `symbol`, `type`, `volume`. `price` auto-fills for market orders. Trade result: ```json { "retcode": 10009, "deal": 40536203, "order": 42094820, "volume": 0.1, "price": 1.0950, "comment": "Request executed" } ``` `retcode` 10009 = success. Anything else = something went wrong. ### Positions ```bash curl -H "Authorization: Bearer $MT5_API_TOKEN" $MT5_API_URL/positions curl -H "Authorization: Bearer $MT5_API_TOKEN" "$MT5_API_URL/positions?symbol=EURUSD" curl -H "Authorization: Bearer $MT5_API_TOKEN" $MT5_API_URL/positions/42094820 # Update SL/TP curl -X PUT -H "Authorization: Bearer $MT5_API_TOKEN" $MT5_API_URL/positions/42094820 \ -H 'Content-Type: application/json' \ -d '{"sl": 1.085, "tp": 1.105}' # Close full position curl -X DELETE -H "Authorization: Bearer $MT5_API_TOKEN" $MT5_API_URL/positions/42094820 # Partial close curl -X DELETE -H "Authorization: Bearer $MT5_API_TOKEN" $MT5_API_URL/positions/42094820 \ -H 'Content-Type: application/json' \ -d '{"volume": 0.05}' ``` Key position fields: `ticket`, `type` (0=buy, 1=sell), `volume`, `price_open`, `price_current`, `sl`, `tp`, `profit`, `swap`. ### History ```bash curl -H "Authorization: Bearer $MT5_API_TOKEN" "$MT5_API_URL/history/orders?from=$(date -d '1 day ago' +%s)&to=$(date +%s)" curl -H "Authorization: Bearer $MT5_API_TOKEN" "$MT5_API_URL/history/deals?from=$(date -d '1 day ago' +%s)&to=$(date +%s)" ``` `from` and `to` are required, unix epoch seconds. Deal fields: `type` (0=buy, 1=sell), `entry` (0=opening, 1=closing), `profit` (0 for entries, realized P&L for exits). ## Position Sizing ``` risk_amount = balance * risk_pct sl_distance = ATR * multiplier ticks_in_sl = sl_distance / trade_tick_size risk_per_lot = ticks_in_sl * trade_tick_value volume = risk_amount / risk_per_lot ``` Round down to nearest `volume_step`, clamp to `[volume_min, volume_max]`. Sanity check: `volume * trade_contract_size * price` should make sense relative to account balance. ## Tips - Always check `retcode` — 10009 = good, anything else = bad - Use `GET /error` to debug failed trades - `deviation` on orders = max slippage in points (default 20, raise for volatile markets) - `type_filling` matters — try `FOK`, `IOC`, `RETURN` if orders get rejected - Candle `time` is the open time, not close time - `trade_stops_level` = minimum SL/TP distance from current price in points - Markets have hours — check `trade_mode` before placing orders

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 mt5-httpapi-1776420088 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 mt5-httpapi-1776420088 技能

通过命令行安装

skillhub install mt5-httpapi-1776420088

下载 Zip 包

⬇ 下载 mt5-httpapi v1.2.0

文件大小: 5.12 KB | 发布时间: 2026-4-17 19:56

v1.2.0 最新 2026-4-17 19:56
- Added support for optional bearer token authentication via the MT5_API_TOKEN environment variable.
- Documentation updated to show how to use the Authorization header for all endpoints if server authentication is enabled.
- Described the behavior when no token is set or required; requests go through only if the server does not require a token.
- Added a mention of the new /terminal/restart endpoint.
- All example curl commands now include Authorization header usage where appropriate.
- Compatibility section updated to mention MT5_API_TOKEN as optional.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部