SuperAPI AI 工具集

mt5-trading

数据与分析

查看项目

更新于 10-15 09:52

技能介绍

MetaTrader 5 Python Algotrading 是一个用于构建生产级 MetaTrader 5 Python 算法交易系统的知识库。

用途 该知识库面向使用 MetaTrader 5 Python API 开发算法交易系统的场景,涵盖从连接终端、事件检测、订单执行到历史数据获取和生产环境容错的全流程。

适用时机

  • 通过官方 Python API 连接 MT5 终端
  • 构建基于轮询的事件系统(on_tick、on_new_candle、on_position)
  • 以正确的成交模式(FOK、IOC、Return)执行订单
  • 下载历史数据(copy_rates、copy_ticks)
  • 处理 MT5 断线与终端重启
  • 在 Windows 上部署 MT5 机器人并进行进程监控
  • 在官方 API、aiomql 与 ZeroMQ 桥接之间做选择

快速上手 对于 80% 的使用场景,建议从以下配置开始:

  • 库:pip install MetaTrader5(官方)或 pip install aiomql(异步封装)
  • 连接:mt5.initialize(path=..., login=..., server=..., password=...)
  • 事件系统:使用轮询循环检测 K 线、tick 与持仓变化
  • 订单:在 order_send() 之前调用 order_check(),始终动态检测成交模式
  • 风险:每个持仓都设置服务器端 SL/TP(不可妥协)
  • 容错:每 30-60 秒健康检查,使用 psutil 进行进程监控,指数退避

随后逐步加固:

  • 静默错误:为每个 API 调用包裹 None 检查与 last_error()
  • 成交模式被拒(10030):按品种动态检测 filling_mode
  • 终端崩溃:psutil 看门狗 + subprocess 重启
  • 周末处理:使用 datetime.weekday() 进入休眠模式

参考材料

  • api-architecture.md:MT5 Python API 架构、32 个函数、命名管道 IPC、MQL5 EA 与 Python 对比、库比较
  • event-system-polling.md:轮询模式、新 K 线检测、tick 监控、持仓跟踪、并发规则
  • order-execution.md:order_send、成交模式(FOK/IOC/Return)、对冲与净额、返回码、风险检查、魔术数字
  • data-feed-historical.md:copy_rates、copy_ticks、深度、时区注意事项、缓存、数据质量、经纪商差异
  • production-resilience.md:断线处理、重连、周末管理、Windows 部署、社区资源

关键决策点

  • 库:默认官方 MetaTrader5;需要异步时用 aiomql;需要真正流式时用 ZeroMQ 桥接
  • 事件模型:默认轮询(1-5 秒间隔);对 tick 敏感时轮询 100-250 毫秒;需要真正事件时用 ZeroMQ EA 桥接
  • 成交模式:按品种动态检测;切勿硬编码——不同经纪商/品种会变化
  • 账户模式:默认对冲(多数外汇经纪商);启动时检查 account_info().margin_mode
  • 数据缓存:Parquet + Zstandard;tick 数据按日/月分区
  • 并发:asyncio(单线程);多账户时每个终端使用独立进程
  • 回测:Python 框架(Backtrader、Backtesting.py);需要 MT5 测试器时用 MQL5 EA 封装
  • SL/TP:始终使用服务器端;Python 移动止损仅作补充,绝不作为唯一保护

限制 资料未提供具体收费、价格、平台支持范围、性能指标或效果承诺等信息。