mt5-rs
纯 Rust 实现的 MetaTrader 5 IPC 通信库,无需 Python 依赖。
与 Python MetaTrader5 库 API 完全兼容。
特性
- 纯 Rust 实现,无 Python 或 C++ 依赖
- 通过 Windows 命名管道与 MT5 终端进行 IPC 通信
- 与 Python
MetaTrader5 库完全兼容(32个函数中的30个)
- 支持 MT5 Build 5836+
快速开始
API 参考
初始化
| 函数 |
描述 |
Mt5Client::new() |
创建新客户端 |
initialize(pipe_name) |
初始化与 MT5 的连接 |
shutdown() |
关闭连接 |
login(login, password, server) |
登录 MT5 账户 |
账户与终端
| 函数 |
描述 |
account_info() |
获取账户信息 |
terminal_info() |
获取终端信息 |
version() |
获取 MT5 版本 |
last_error() |
获取最后错误代码和消息 |
交易品种
| 函数 |
描述 |
symbol_info(symbol) |
获取品种信息 |
symbol_info_tick(symbol) |
获取品种当前报价 |
symbols_get() |
获取所有可用品种 |
symbol_select(symbol, enable) |
在市场报价中选择/取消选择品种 |
行情数据
| 函数 |
描述 |
copy_rates_from_pos(symbol, timeframe, start_pos, count) |
从指定位置复制K线 |
copy_rates_from(symbol, timeframe, date_from, count) |
从指定日期复制K线 |
copy_rates_range(symbol, timeframe, date_from, date_to) |
复制指定范围的K线 |
copy_ticks_from(symbol, from, count, flags) |
从指定时间复制Tick |
copy_ticks_range(symbol, from, to, flags) |
复制指定范围的Tick |
持仓与订单
| 函数 |
描述 |
positions_total() |
获取未平仓持仓总数 |
positions_get(symbol) |
获取未平仓持仓 |
orders_total() |
获取挂单总数 |
orders_get(symbol) |
获取挂单 |
历史数据
| 函数 |
描述 |
history_deals_total(from, to) |
获取指定范围内成交总数 |
history_deals_get(from, to) |
获取指定范围内成交记录 |
history_orders_total(from, to) |
获取指定范围内订单总数 |
history_orders_get(from, to) |
获取指定范围内订单记录 |
市场深度
| 函数 |
描述 |
market_book_add(symbol) |
订阅市场深度 |
market_book_get(symbol) |
获取市场深度数据 |
market_book_release(symbol) |
取消订阅市场深度 |
交易计算
| 函数 |
描述 |
order_calc_margin(action, symbol, volume, price) |
计算所需保证金(本地计算) |
order_calc_profit(action, symbol, volume, price_open, price_close) |
计算预期利润(本地计算) |
未实现
| 函数 |
状态 |
order_check(request) |
TODO - 检查交易请求有效性 |
order_send(request) |
TODO - 发送交易请求到 MT5 |
实现说明
order_calc_margin 和 order_calc_profit 的本地计算
与通过命名管道发送命令 202/203 的 go-mt5 不同,本库使用本地计算(与 Python MetaTrader5 库行为一致):
order_calc_margin: margin = volume × price × margin_initial / 4
order_calc_profit: profit = volume × (price_close - price_open) × trade_contract_size
此方法避免了 MT5 Build 5836+ 使用 IPC 执行这些命令时的"管道已关闭"错误。
系统要求
- Rust 2021 edition
- Windows 操作系统(命名管道 IPC 仅限 Windows)
- MT5 终端必须正在运行
许可证
MIT