Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5

CFastFile - класс для работы с байтовым массивом как с файлом - библиотека для MetaTrader 5
- Просмотров:
- 3214
- Рейтинг:
- Опубликован:
- 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 для удобного сохранения/чтения данных в обычный файл.
В комплекте находится скрипт с демонстрацией работы класса.

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

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

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

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