# MT5交易同步 **Repository Path**: linshuli/mt5-memory-copier ## Basic Information - **Project Name**: MT5交易同步 - **Description**: 面向Windows平台的高性能、本地化 MT5 交易订单复制系统 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-08-10 - **Last Updated**: 2026-08-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: mt5, Csharp, MQL5 ## README # MT5同步交易 面向 Windows 平台的高性能、本地化 MT5 交易跟单系统。 ## 简介 本系统旨在解决多 MT5 终端环境下的本地化、低延迟跟单需求。与传统云端跟单服务不同,本项目完全在用户本地运行,不依赖互联网传输交易信号,也不要求用户逐个在图表上挂载 EA 插件。 ### 核心特性 - **本地化 IPC 架构**: 采用 Windows 共享内存 (Shared Memory) 和 C++20 无锁环形队列 (SPSC) 实现主账号与从账号之间的高频通信。 - **灵活的复制策略**: 支持 1:1 原手数精确复制,也支持为每个从账号独立配置 1:N 手数放大/缩小倍数。 - **自动故障恢复**: 具备心跳检测功能。当 Bridge 意外断开时,系统会自动撤销“复制中”状态,并尝试重启对应的 MT5 终端以恢复连接。 - **批量异步平仓**: 从账号以最多 50 路有界流水线调用 `OrderSendAsync()`,连续快速提交平仓;市价请求不设置 Bridge 侧价格偏差上限,MT5 受理后仍会核对历史成交和目标仓位变化,只有双重确认后才报告成功。 - **无侵入式部署**: 提供终端发现与一键部署功能,通过注入常驻 MQL5 Script (`CopyBridge`) 接管交易执行,避免注入或 Hook `terminal64.exe` 进程。 ## 核心架构 项目采用分层设计,主要由以下三个核心部分组成: 1. **CopierLauncher (UI 层)**: 基于 .NET 10 WPF 的图形界面。负责自动扫描本机安装的 MT5 终端、管理配置文件、展示实时运行状态(在线/离线/恢复中)以及处理用户的手动启停操作。 2. **CopierCore (逻辑层)**: .NET 核心引擎。实现交易信号的分发逻辑,包括: * **全员握手就绪屏障**: 确保所有从账号连接就绪后再开始复制。 * **交易扇出 (Fan-out)**: 将主账号的一笔成交实时分发到 N 个从账号队列。 * **去重与幂等**: 通过交易票据 (Ticket) 和时间戳去重,防止重复下单。 3. **Native Bridge (通信层)**: 由 C++20 编写的动态链接库 (DLL)。 * 负责管理共享内存的创建、读写权限。 * 实现高性能的 CRC32C 数据校验。 * 提供高精度的 QPC 时间戳,用于测量端到端延迟。 此外,每个 MT5 终端内部会运行一个轻量级的 **MQL5 Bridge Script**,它负责监听共享内存中的指令;开仓调用 `OrderSend()` 获取精确结果,平仓调用 `OrderSendAsync()` 连续提交并在后台逐笔确认真实成交。普通平仓最终失败或超时会隔离该从账号,避免它继续消费同批积压命令,其他从账号继续独立执行。 ## 当前状态 项目正处于 **Phase 0 演示验证阶段**。当前版本已完成所有核心基建设施的开发与测试,具备了构建完整跟单闭环的能力。 **已验证功能:** - 终端自动发现与单文件发布流程。 - 跨进程共享内存通信的稳定性与基准性能。 - Core 层的 1:N 扇出逻辑与消息去重。 - 账户互斥模式(Hedging/Netting)的兼容性检查。 **下一步计划:** - 真实市场环境下的端到端延迟测试。 - 完善 Phase 1 垂直切片功能。 ## 快速开始 ### 环境要求 - **操作系统**: Windows 10 / 11 - **开发工具**: .NET 10 SDK, CMake 3.20+, Visual Studio 2022 (或 Clang/MSVC) - **运行时**: 目标机器仅需安装 MT5 终端(如果运行单文件 EXE 版本,则无需 .NET 环境) ### 构建指南 请在 PowerShell 环境中运行以下命令: ```powershell # 1. 构建完整的解决方案 (包括 .NET 和 C++ 原生项目) dotnet build MT5MemoryCopier.slnx --configuration Debug # 2. 运行部署测试 (验证终端发现算法与文件生成逻辑) dotnet run --project tests/deployment/MT5Copier.Deployment.Tests.csproj --configuration Debug # 3. 编译 MQL5 桥接脚本 (需要 MetaEditor 环境支持) ./tools/Compile-Mql5.ps1 # 4. 发布为自包含单文件 EXE ./tools/Publish.ps1 ``` ## 相关文档 - [完整实施方案](docs/IMPLEMENTATION_PLAN.md) - [共享内存通信协议详解](docs/PROTOCOL.md) - [Phase 0 详细进度](docs/PHASE0_STATUS.md) - [构建与工具链说明](docs/BUILD.md) ## 许可证 本项目基于 [MIT License](LICENSE) 开源。