- 显示:
- 2124
- 等级:
- 已发布:
- 2014.01.27 08:17
- 已更新:
- 2016.11.22 07:33
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
该项目 (Visual C++ 2010) 包含 2 个类 - CMemMapApi 和 CMemMapFile。
它们设计用来与内存映射文件工作。您可以:
- 创建内存文件;
- 从内存映射文件读写数据;
- 它提供一个机会在应用之间交换数据, 包括 MetaTrader 4 和 MetaTrader 5。
主要应用是数据交换:
- 在同一台 PC 上的几个终端之间复制交易
- 套利 EA 的行情数据交换等等。
内存映射文件可用于 EA 的临时数据。
该 CMemMapApi 类仅是 WinApi 函数的包装, CMemMapFile 和 CMemMapApi 之间是不同的。
该 CMemMapFile 十分有用, 因为它可处理文件名, 文件句柄并且控制文件大小。相比之下, CMemMapApi 类可与几个内存映射文件工作。
在当前项目中导出的 DLL 函数被组织在 CMemMapApi 中, 与几个内存映射文件工作。
该 CMemMapFile 类设计用来与其它 C++ 项目的内存映射文件工作。
//--- 打开/创建内存映射文件并返回句柄 int MemOpen(string path,int size,int mode,int &err[]); //--- 关闭内存映射文件 void MemClose(int hmem); //--- 增加内存映射文件数量 int MemGrows(int hmem,string path,int newsize,int &err[]); //--- 返回内存映射文件大小 int MemGetSize(int hmem, int &err[]); //--- 设置 内存映射文件大小 int MemSetSize(int hmem, int size, int &err[]); //--- 写 v 向量 (字节大小) 至内存映射文件, 起始位置 pos int MemWrite(int hmem,int &v[], int pos, int size, int &err[]); //--- 读 v 向量 (字节大小) 自内存映射文件, 起始位置 pos int MemRead(int hmem, int &v[], int pos, int size, int &err[]); //--- 写一个字符串 (字节大小) 至内存映射文件, 起始位置 pos int MemWriteStr(int hmem, string buf, int pos, int size, int &err[]); //--- 读一个字符串 (字节大小) 自内存映射文件, 起始位置 pos int MemReadStr(int hmem, string buf, int pos, int &size, int &err[]);
使用 DLL 例子: 行情监视 (内存映射文件)
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/816

这个 EA 是利用内存映射 DLL 与文件映射功能的例子。在此例中, EA 创建一个虚拟 (内存映射) 文件并开始更新符号行情。使用这种方式, EA 可以使用常用内存映射文件来交换数据 (例如, 行情)。

这个类 (转换自 C++ 至 MQL5) 可与内存映射文件工作。