Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

CFastFile - класс для работы с байтовым массивом как с файлом - библиотека для MetaTrader 5

Просмотров:
3084
Рейтинг:
(38)
Опубликован:
2012.02.29 15:57
Обновлен:
2017.05.01 16:44
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Класс 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();                   // проверка достигнут ли конец файла
    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)

Для удобства работы добавлены функции Save/Load для удобного сохранения/чтения данных в обычный файл.

В комплекте находится скрипт с демонстрацией работы класса.


Модуль торговых сигналов, выполненный на основе индикатора ColorJFatl Модуль торговых сигналов, выполненный на основе индикатора ColorJFatl

Модуль торговых сигналов для Мастера MQL5. Сигналом для открытия позиций служит изменение цвета индикатора ColorJFatl.

Модуль торговых сигналов, выполненный на основе индикатора SilverTrend_Signal Модуль торговых сигналов, выполненный на основе индикатора SilverTrend_Signal

Модуль торговых сигналов для Мастера MQL5. Сигналом для открытия позиций служит появление цветной точки индикатора SilverTrend_Signal.

MA-Env MA-Env

Индикатор Moving Average Envelopes.

Статистические функции statistics.mqh Статистические функции statistics.mqh

Библиотека, которая содержит статистические функции, такие как вычисление среднего, дисперсии, асимметрии, эксцесса, ковариации, корреляции и т.д.