下载MetaTrader 5

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

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

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

2014.01.28 06:45
程序库

CFastFile - 类可工作于 uchar 数组与虚拟文件之间 - MetaTrader 5程序库

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

显示:
476
等级:
投票: 29
\MQL5\Include\
fastfile.mqh (7.36 KB)预览
\MQL5\Scripts\

该 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 Software Corp. 撰写的俄文原文
官方代码: https://www.mql5.com/ru/code/845

OpenCL 测试 OpenCL 测试

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

IncEnvelopesOnArray IncEnvelopesOnArray

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

价格在布林通道 价格在布林通道

该指标绘制 (在分离窗口) 相对于均线的布林带以及价格柱线的投影。

EAX_Mysql - MySQL library EAX_Mysql - MySQL library

该库是连接 MySQL 的简单接口。