Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Telegram!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Bibliotheken

CFastFile - Klasse für das Arbeiten mit uchar Array als virtuelle Datei - Bibliothek für den MetaTrader 5

Ansichten:
799
Rating:
(38)
Veröffentlicht:
2016.06.13 10:58
Aktualisiert:
2017.05.02 10:02
\MQL5\Scripts\ \MQL5\Include\
FastFile.mqh (13.95 KB) ansehen
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

CFastFile macht das sofortige Schreiben von Daten in physische Plattendateien überflüssig. Das bietet eine signifikante Beschleunigung bei der Arbeit mit Daten.

Die Klasse hat Funktionen, die ähnlich wie die FileWriteXXX/FileReadXXX Funktionen sind. Das heißt, dass Sie einfach von physischen Dateien zu schnellen, virtuellen Dateien im Arbeitsspeicher migrieren können. Die Datenspeicherung und das Lesen/Schreiben basiert auf einem uchar-Array anstatt einer physischen Datei.

Liste der Funktionen:

    CFastFile(uchar &data[]);          // Konstruktor mit Initialisierung der Datendatei von einem Array

    void Clear();                         // Datei löschen
   
    //--- Funktionen für die Arbeit mit Dateieigenschaften
    void Delim(uchar delim=';');        // Trennzeichen (Spaltentrenner) für CSV-Modus
    int Size();                        // hole Dateigröße
    int Tell();                        // hole aktuelle Position
    void Seek(int offset, int origin);  // Suche
    bool IsEnding();                   // Prüfung auf Ende der Datei (EOF)
    bool IsLineEnding();                 // Prüfung auf Ende der Zeile

    //--- Funktionen zum Schreiben der Daten in die Datei
    uint WriteArray(uchar &src[], uint src_start=0, int src_cnt=WHOLE_ARRAY); // schreibe uchar Array
    uint WriteDouble(double v);          // schreibe Double
    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); // schreibe Ganzzahl - für Kompatibilität mit Standard FileWriteInteger
    uint WriteString(string v, int cnt);        // schreibe String cnt=-1 bedeutet CSV Modus mit Erweiterung von \r\n
   
    //--- Funktionen zum Lesen von der Datei
    uint ReadArray(uchar &dst[], uint dst_start=0, int cnt=WHOLE_ARRAY); //  lies Array
    double ReadDouble();                 // lies double
    float ReadFloat(); 
    long ReadLong();
    int ReadInt();
    short ReadShort();
    char ReadChar();
    int ReadInteger(int sz=INT_VALUE); // lies Ganzzahl - für Kompatibilität mit Standard FileReadInteger
    double ReadNumber(); //
    string ReadString(int cnt); //        lies String. cnt=-1 bedeutet CSV-Modus - lesen bis Trennzeichen (Spaltentrennzeichen)
   
    //--- Funktionen zum Speichern von Daten
    uint Save(uchar &v[]);     // Speichere Datei in uchar Array
    uint Save(int h);         // Speichere Datei in echte Datei auf Platte. h - Datei handle (die Datei muss geöffnet werden)
    uint Save(string file);    // speichere Datei in echte Datei auf Platte. file - Dateiname

    //--- Funktionen zum Laden von Daten
    uint Load(uchar &v[]);   // lade Datei von uchar Array
    uint Load(int h);         // lade Daten von echter Datei auf Platte. h - Datei handle (die Datei muss geöffnet werden)
    uint Load(string file);  // lade Daten von echter Datei auf Platte. file - Dateiname

Wie man sieht wurden die Funktionen ähnlich zu den Standard Datei Operationen benannt.

Die Migration von echten Dateien zu CFastFile ist sehr einfach. Statt ein Datei zu öffnen und sich einen Datei-Handle zu holen (zum Beispiel int h) müssen Sie eine CFastFile Klassen-Instanz erzeugen:

CFastFile f; 

Als nächstes müssen Sie die konventionellen Dateifunktionen nach folgender Regel anpassen:

FileWriteDouble(h, 10)  ->  f.WriteDouble(10)

Zur Bequemlichkeit wurden die  Save/Load Funktionen hinzugefügt - das erlaubt Ihnen, die "virtuellen" Dateidaten auf eine echte Datei auf der Platte zu schreiben/lesen.

Es ist ein Demobeispiel für die Verwendung der CFastFile Klasse enthalten.


Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/845

Handelssignalmodul basierend auf dem WPRSIsignal Indikator Handelssignalmodul basierend auf dem WPRSIsignal Indikator

Handelssignalmodul für den MQL5 Assistenten. Die farbigen Pfeile des WPRSIsignal Indikators dienen als Markteinstiegssignale.

Handelssignalmodul basierend auf dem SuperTrend Indikator Handelssignalmodul basierend auf dem SuperTrend Indikator

Handelssignalmodul für den MQL5 Assistenten. Farbige Punkte des SuperTrend Indikators zeigen Markteinstiege an.

Preis auf Bollinger Kanal Preis auf Bollinger Kanal

Der Indikator zeichnet (in einem separaten Fenster) die Bollinger Bänder relativ zum gleitenden Durchschnitt und eine Projektion der Preisbalken.

EAX_Mysql - MySQL Bibliothek EAX_Mysql - MySQL Bibliothek

Diese Bibliothek ermöglicht ein einfaches Interface zu MySQL.