下载MetaTrader 5

请观看如何免费下载自动交易

有趣的脚本?
因此发布一个链接 -
让其他人评价

喜欢这个脚本? 在MetaTrader 5客户端尝试它

2014.01.27 08:17
程序库

内存映射 - MetaTrader 5程序库

| Chinese English Русский Español Deutsch 日本語 Português

显示:
597
等级:
投票: 22
memmap32.zip (754.96 KB)
memmapdll.zip (29.22 KB)

该项目 (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 例子:  行情监视 (内存映射文件)

12.03. 2012: 修复错误 MemWriteStr


本文译自 MetaQuotes Software Corp. 撰写的俄文原文
官方代码: https://www.mql5.com/ru/code/816

爆仓价 爆仓价

这段脚本计算持仓的爆仓价 (在此价位交易商会强制平仓), 在此价位可用保证金变为负值 (闭锁价)。

轴点 轴点

经典轴点指标, 喷涂轴点以及所有数据点的三条阻力和支撑级别。

行情监视 (内存映射文件) 行情监视 (内存映射文件)

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

无需 DLL 的文件映射 无需 DLL 的文件映射

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