- 显示:
- 1742
- 等级:
- 已发布:
- 2014.01.28 06:45
- 已更新:
- 2017.05.02 10:03
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
该 CFastFile 省略了写数据至物理磁盘的中间过程。它在处理数据时可以显著加速。
它的功能, 类似于标准 FileWriteXXX / FileReadXXX 功能。这意味着您可以很容易地从使用物理文件, 移植到更快速的与内存 "虚拟" 文件工作。数据存储及读写, 基于使用 uchar-数组, 替带了物理文件。
函数列表:
CFastFile(uchar &data[]); // 自数组至文件数据的构造器及初始化 void Clear(); //清空文件 //--- 与文件属性工作的函数 void Delim(uchar delim=';'); // 设置 CSV 模式的分界符 (数据分隔) int Size(); // 得到文件大小 int Tell(); // 得到当前位置 void Seek(int offset, int origin); // 寻位 bool IsEnding(); // 检查文件结尾 (EOF) bool IsLineEnding(); // 检查行结尾 //--- 写数据至文件函数 uint WriteArray(uchar &src[], uint src_start=0, int src_cnt=WHOLE_ARRAY); // 写字符数组 uint WriteDouble(double v); // 写双精度数 uint WriteFloat(float v); uint WriteLong(long v); uint WriteInt(int v); uint WriteShort(short v); uint WriteChar(char v); uint WriteInteger(int v, int sz=INT_VALUE); // 写整数 - 与标准 FileWriteInteger 兼容 uint WriteString(string v, int cnt); // 写字符串 cnt=-1 意味 CSV 模式与附加的 \r\n //--- 从文件读函数 uint ReadArray(uchar &dst[], uint dst_start=0, int cnt=WHOLE_ARRAY); // 读数组 double ReadDouble(); // 读双精度数 float ReadFloat(); long ReadLong(); int ReadInt(); short ReadShort(); char ReadChar(); int ReadInteger(int sz=INT_VALUE); // 读整数 - 与标准 FileReadInteger 函数兼容 double ReadNumber(); // string ReadString(int cnt); // 读字符串. cnt=-1 意味着 CSV 模式 - 读至分界符 (数据分割) //--- 保存数据函数 uint Save(uchar &v[]); // 保存文件至字符数组 uint Save(int h); // 保存文件至实际磁盘文件. h - 文件句柄 (文件必须被打开) uint Save(string file); // 保存文件至实际磁盘文件. file - 文件名 //--- 加载文件函数 uint Load(uchar &v[]); // 从字符数组加载文件 uint Load(int h); // 从实际磁盘文件加载数据. h - 文件句柄 (文件必须被打开) uint Load(string file); // 从实际磁盘文件加载数据. file - 文件名
可以看到,该函数命名类似于标准文件操作。
从真实文件移植到 CFastFile 十分容易。替代文件打开和取文件句柄 (例如, int h) 您需要创建 CFastFile 类的实例, 例如:
CFastFile f;
接下来你需要根据规则来改变传统的文件功能:
FileWriteDouble(h, 10) -> f.WriteDouble(10)
为 方便起见, 添加了 保存/加载 功能 - 它可以让您保存/加载"虚拟"文件数据至磁盘上的真实文件。
使用 CFastFile 类的演示例子包含在内。
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/845

用 OpenCL 实现的 Mandelbrot 分形计算的小例子。该 OpenCL 加速分形计算相比 CPU 计算大约高 100 倍。

此 CEnvelopesOnArray 类的目的是在指标缓存区中计算包络线。