【内存跟单】支持服务端/客户端模式切换,使用共享内存实现零延迟通信。无任何限制,本地纯净ea。

| 发表于 昨天 20:04 | 显示全部楼层 |复制链接
最后由 lh5200 于 2026-4-27 20:06 编辑

# 暴龙跟单系统 — Tyrannosaurus Copy Trading Engine

---
1.png
## 一句话定义

暴龙跟单系统是一款基于 Windows 内核级共享内存(Shared Memory IPC)架构的超低延迟跨终端信号复制引擎,专为 MetaTrader 5 平台打造。它不依赖任何第三方中间件、不经过任何网络协议栈、不使用任何数据库或文件中转,而是直接将交易信号写入操作系统内核管理的命名内存映射区域,由跟单端以近零开销的方式实时读取并执行,端到端延迟压入亚毫秒级,彻底碾压市面上所有基于文件、邮件、HTTP 接口或数据库中转的传统跟单方案。

---

## 核心理念:为什么选择暴龙

传统跟单系统本质上是"信号源产生信号 → 写入某种存储 → 跟单端轮询读取 → 解析执行"这条链路。这条链路上的每一个环节——文件 I/O、网络请求、数据库读写、JSON 序列化——都在引入延迟和不确定性。暴龙跟单系统的设计哲学只有一句话:**砍掉一切中间层,让信号从一个进程的内存直接流入另一个进程的内存,就像水流过管道一样自然。**

这正是暴龙选择 Windows 共享内存作为核心通信层的原因。通过 kernel32.dll 的 CreateFileMappingW 和 MapViewOfFile,暴龙在操作系统内核中开辟了一块命名的、受保护的、所有进程均可访问的内存区域。服务端将序列化后的完整持仓数据以 WriteProcessMemory 写入这块区域,客户端以 ReadProcessMemory 读取——整个过程不涉及任何磁盘操作、不经过任何网络协议栈、不产生任何系统调用的上下文切换开销。数据从一个进程的虚拟地址空间流向另一个进程的虚拟地址空间,延迟由操作系统的内存管理器决定,通常在微秒量级。

---

## 传输层双模架构

暴龙并非只有共享内存这一种传输方式。系统内置了双模传输引擎,通过一个参数即可在两种模式之间无缝切换。

**共享内存模式**是暴龙的王牌。它通过 kernel32.dll 的原生 API 创建命名共享内存区域,服务端写入、客户端读取,延迟低于一毫秒。这种模式适用于同一台机器上运行多个 MT5 终端的场景——比如一台专用的交易服务器上同时跑着信号源终端和跟单终端,或者局域网内通过远程桌面在同一台 Windows 服务器上部署多个实例。这是延迟最低、性能最强的模式,也是暴龙存在的根本意义。

**文件传输模式**是暴龙的保底方案。它利用 MT5 平台内置的 FILE_COMMON 通用文件夹机制进行数据交换。这种模式不依赖任何 DLL 导入,兼容性拉满,适用于无法开启 DLL 权限的环境、跨机器部署的场景,或者通过网络共享文件夹实现局域网内多机跟单。在 SSD 环境下延迟通常低于五毫秒,在 HDD 环境下低于二十毫秒——虽然比不上共享内存,但对于绝大多数交易策略而言已经完全够用。

两种模式共享完全相同的序列化协议、完全相同的跟单逻辑、完全相同的参数接口。切换模式不需要修改任何代码,不需要重新编译,只需要改一个输入参数。

---

## 自定义二进制帧协议

暴龙没有使用 JSON、XML 或任何文本格式来传输数据。文本格式的解析开销在高频轮询场景下会累积成不可忽视的性能负担。暴龙设计了一套自定义的紧凑二进制协议,通过联合体(Union)实现 double、long、int 与原始字节的零开销转换。

整个数据帧由帧头和载荷区两部分组成。帧头固定二十四字节,包含魔数标识(用于数据完整性校验)、订单数量、毫秒级时间戳(用于新鲜度检测,防止过期信号被误执行)、以及服务端唯一标识 ID。载荷区由 N 条交易记录组成,每条记录一百五十六字节,完整包含 ticket、交易方向、手数、开仓价、止损、止盈、开仓时间、Magic 号、品种名称和注释信息——涵盖了执行一笔跟单所需的全部信息。

单帧最大容量为两百笔持仓,总数据量仅约三十一 KB。这意味着即使服务端满仓运行,一帧数据的写入和读取也几乎不消耗任何可感知的时间。

魔数校验确保客户端不会解析损坏的数据。时间戳新鲜度检测确保即使服务端意外断开,客户端也不会基于过期数据执行错误交易。固定长度字段填充消除了变长编码的解析复杂度和边界错误风险。

---

## 智能跟单引擎

暴龙的跟单逻辑不是简单的"服务端买我也买"。它是一套完整的、考虑了真实交易环境各种边界情况的智能执行引擎。

**信号匹配机制**:暴龙通过注释标签锚定实现服务端与客户端之间的一对一映射。每笔跟单的 Comment 字段中写入"CT_加服务端 Ticket 编号"这个唯一标识。客户端通过搜索这个标识来判断某笔服务端持仓是否已经被跟单,从而杜绝重复开仓。同时,客户端也可以通过这个标识反向查找任意一笔跟单对应的服务端信号源,实现完整的审计追踪。

**智能手数计算与累积机制**:这是暴龙最精巧的设计之一。当跟单倍数设置为小于一的值时(比如零点三倍跟单),计算出的手数很可能低于经纪商允许的最小交易量。传统跟单系统会直接丢弃这种信号——这意味着你的跟单端正在漏单。暴龙的做法完全不同:它维护一个全局手数累积池,当计算出的手数低于最小交易量时,不会丢弃信号,而是将这个微小的手数值加入累积池。当累积池中的手数总和达到可交易阈值时,暴龙一次性将累积的手数作为一笔订单执行。这确保了在任何跟单倍数设置下,零信号丢失。

举个例子:服务端每次开零点零一手,跟单倍数设为零点五,最小手数为零点零一。第一次信号计算出手数零点零零五,低于最小手数,进入累积池。第二次信号又来零点零零五,累积池变为零点零一,达到阈值,暴龙立即以零点零一手开仓。信号没有丢失,只是被智能地合并执行了。

**全生命周期跟随**:暴龙不只跟开仓。它实时监控服务端的每一次状态变更。当服务端修改某笔持仓的止损或止盈时,暴龙的 CheckModify 函数会自动检测到差异并同步修改客户端对应持仓的止损止盈。当服务端平掉某笔持仓时,暴龙的 CheckClosed 函数会检测到这笔持仓在服务端数据中消失,随即自动平掉客户端的对应持仓。当服务端全部清仓时,暴龙的 CloseAllCopied 函数会一次性平掉客户端所有跟单单据。

开仓、改仓、平仓——三个事件全覆盖,服务端与客户端的持仓状态始终保持实时一致。

---

## 风控与过滤体系

暴龙内置了多维度过滤器,让你精确控制跟单的范围和行为。

Magic 过滤器允许你只跟单特定 EA 产生的信号。如果你的服务端同时运行着多个策略,但你只想跟单其中一个,设置对应的 Magic 号即可。品种过滤器允许你只跟单特定交易品种。方向过滤器允许你选择只跟多单、只跟空单、或者两者都跟。

品种后缀映射解决了跨经纪商跟单时品种名称不一致的痛点。不同经纪商对同一品种可能有不同的命名——有的叫 EURUSD,有的叫 EURUSD.m,有的叫 EURUSD.pro。暴龙的品种后缀参数允许你在客户端自动为品种名追加指定后缀,无需手动修改任何代码。

滑点保护机制限制了每笔跟单允许的最大滑点点数。当市场波动剧烈导致实际成交价偏离预期超过阈值时,暴龙会拒绝这笔交易,保护你的资金安全。

品种同步等待机制确保在开仓前,目标品种的报价数据已经完全就绪。暴龙会在开仓前循环检测 SymbolIsSynchronized 状态,最多等待五百毫秒,避免在数据尚未同步时提交订单导致的成交价异常。

Magic 隔离机制确保跟单单据使用服务端 ID 作为 Magic 号,与你本地运行的其他策略完全隔离,互不干扰,互不误杀。

---

## 部署体验

暴龙是单文件 EA。一个 .mq5 文件,编译即用。不需要安装任何 Python 环境,不需要配置任何 Node.js 服务,不需要搭建任何数据库,不需要在 WebRequest 白名单中添加任何 URL,不需要任何第三方中间件。

编译后在 MT5 的设置中开启"允许 DLL 导入"(仅共享内存模式需要,文件传输模式完全不需要),然后在服务端终端附加 EA 并选择服务端模式,在客户端终端附加 EA 并选择客户端模式,配置好跟单参数,即可开始运行。

图表左上角会实时显示状态面板——服务端显示当前持仓数、传输方式和最后更新时间;客户端显示服务端持仓数、已跟单数、新开仓数、跟单倍数、累积手数和连接状态。一切信息一目了然。

---

## 性能画像

端到端延迟在共享内存模式下低于一毫秒,在文件传输模式下低于五毫秒。CPU 占用在共享内存模式下低于百分之零点一,在文件传输模式下低于百分之零点五。内存占用恒定在三十一 KB 左右,不随持仓数量增长。最大支持同时跟踪两百笔持仓,覆盖绝大多数实盘场景。

没有任何后台线程,没有任何异步回调,没有任何事件订阅。整个系统由一个固定频率的 Timer 驱动,轮询间隔默认一百毫秒,可按需调整。架构极简,故障点极少,稳定性极高。

---

## 暴龙的定位

暴龙跟单系统不是那种花里胡哨、功能堆砌、界面华丽但内核脆弱的产品。它是一件工程工具,专为追求极致延迟和绝对可靠的交易者打造。它解决的核心问题只有一个:**如何以最快速度、最高精度、最低风险,将一个终端的交易信号复制到另一个终端并执行。** 围绕这个核心,暴龙砍掉了一切不必要的复杂性,把每一行代码、每一个字节、每一次系统调用都用在了刀刃上。
2.png
关键功能
功能
说明
最少跟单数
服务端持仓数 < 阈值时不跟单,达到阈值后批量跟入
手数累计
计算手数 < 最小手数时累计,达标后一次性开仓
跟单倍数
实际手数 = 服务端手数 × 倍数
自动平仓
服务端平仓后客户端自动跟随平仓
SL/TP同步
服务端修改止损止盈后客户端自动跟随
品种后缀
支持不同经纪商品种名后缀映射(如 .m.pro)



通信方式
  • 共享内存(默认):通过 kernel32.dll 的 CreateFileMappingW 创建命名共享内存区域,延迟 < 1ms
  • 文件传输(备选):使用 MT5 的 FILE_COMMON 通用文件夹,兼容性最好,延迟取决于磁盘缓存(通常 < 5ms)

如果共享内存模式编译报错(极少数旧版MT5),将 传输方式 切换为 文件传输 即可,功能完全一致。

完整流程举例(倍数=0.5,最小手数=0.01):


次序
服务端手数
×倍数后
g_accum
是否开仓
1
0.01
0.005
0.005
2
0.01
0.005
0.010
是,开 0.01 手
3
0.01
0.005
0.005
4
0.01
0.005
0.010
是,开 0.01 手
filetype

内存跟单(发射和接收端合一).ex5

51.18 KB, 下载次数: 1, 下载积分: 活跃度 -5 售价: 2 H币  [记录]  [购买]

评分
  • 1
  • 2
  • 3
  • 4
  • 5
平均分:NAN    参与人数:0    我的评分:未评 下载时遇到问题?
举报

评论 使用道具

精彩评论1

wyyayun
D
| 发表于 昨天 22:10 | 显示全部楼层
没币怎么办,,,,,攒钱不容易啊
举报

点赞 评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册