Rejoignez notre page de fans
CFastFile - classe permettant de travailler avec un tableau d'octets en tant que fichier - bibliothèque pour MetaTrader 5
- Vues:
- 44
- Note:
- Publié:
-
Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance
La classe CFastFile élimine le besoin d'écriture intermédiaire des données dans un fichier physique sur le disque. Cela vous permet d'obtenir une accélération significative lorsque vous travaillez avec des données.
Toutes les fonctions de base de la famille FileWriteXXX/FileReadXXX sont implémentées dans la classe. Ainsi, sans modifier la logique et le code de votre programme, vous pouvez facilement passer de l'utilisation de fichiers physiques à un travail rapide avec leurs images en mémoire. Le stockage et la lecture des données s'effectuent à l'aide d'un tableau de caractères au lieu d'un véritable fichier physique.
Liste des fonctions implémentées :
CFastFile(uchar &data[]); // constructeur avec initialisation des données du fichier à partir d'un tableau void Clear(); // effacer le fichier //--- fonctions pour travailler avec les propriétés des fichiers void Delim(uchar delim=';'); // réglage du séparateur de données en mode CSV int Size(); // obtenir la taille du fichier int Tell(); // obtient la position actuelle du pointeur void Seek(int offset, int origin); // déplacer la position du pointeur bool IsEnding(); // vérifier si la fin du fichier a été atteinte bool IsLineEnding(); // vérifier si la fin de la chaîne a été atteinte //--- fonctions pour écrire dans un fichier uint WriteArray(uchar &src[], uint src_start=0, int src_cnt=WHOLE_ARRAY); // écrire un tableau d'octets uint WriteDouble(double v); // enregistrer un nombre 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); // écrire un nombre - pour des raisons de compatibilité avec FileWriteInteger. uint WriteString(string v, int cnt); // écrire une chaîne de caractères. cnt=-1 indique le mode d'enregistrement CSV avec ajout de \r\n. //--- fonctions de lecture de fichiers uint ReadArray(uchar &dst[], uint dst_start=0, int cnt=WHOLE_ARRAY); // lecture du tableau double ReadDouble(); // lire le nombre float ReadFloat(); long ReadLong(); int ReadInt(); short ReadShort(); char ReadChar(); int ReadInteger(int sz=INT_VALUE); // lecture d'un nombre - pour la compatibilité de la transition avec FileReadInteger double ReadNumber(); // string ReadString(int cnt); // lecture d'une chaîne de caractères. cnt=-1 indique le mode de lecture CSV jusqu'au délimiteur // fonctions d'enregistrement d'un fichier vers une autre source uint Save(uchar &v[]); // enregistrement du fichier dans un tableau d'octets uint Save(int h); // enregistrement du fichier dans un vrai fichier sur le disque. h - descripteur pré-ouvert uint Save(string file); // enregistrer le fichier dans un vrai fichier sur le disque. file - nom du fichier sur le disque // fonctions de chargement d'un fichier à partir d'une autre source uint Load(uchar &v[]); // lecture d'un fichier à partir d'un tableau d'octets uint Load(int h); // lecture d'un fichier à partir d'un fichier réel sur le disque. h - descripteur pré-ouvert uint Load(string file); // lecture d'un fichier à partir d'un fichier réel sur le disque. file - nom du fichier sur le disque
Comme vous pouvez le constater, toutes les fonctions sont nommées par analogie avec les fonctions de fichier standard du terminal.
La transition entre l'utilisation de fichiers et CFastFile est très simple. Au lieu d'ouvrir et d'obtenir la poignée d'un fichier normal (par exemple int h), il suffit de créer une instance de CFastFile, par exemple :
CFastFile f;
Ensuite, dans le code, remplacez toutes les fonctions de fichiers ordinaires correspondantes selon ce principe :
FileWriteDouble(h, 10) -> f.WriteDouble(10)
Des fonctions Save/Load ont été ajoutées pour faciliter l'enregistrement/la lecture de données dans un fichier normal.
Un script avec une démonstration du travail en classe est inclus.
Traduit du russe par MetaQuotes Ltd.
Code original : https://www.mql5.com/ru/code/845
Module de signaux de trading basé sur l'indicateur WPRSIsignal
Module de signaux de trading pour l'assistant MQL5. Le signal d'ouverture des positions est l'apparition de la flèche colorée de l'indicateur WPRSIsignal.
Module de signaux de trading basé sur l'indicateur NonLagDot
Module de signaux de trading pour l'assistant MQL5. Le signal d'ouverture des positions est un changement de couleur de l'indicateur NonLagDot.
CVD (Cumulative Volume Delta)
Lightweight CVD (Cumulative Volume Delta) pour MT5 - basé sur M1, montre la pression d'achat/vente sous forme de bougies avec des réinitialisations optionnelles.
Local Timezones and Local Session Hours
Classe permettant d'accéder à l'heure locale pour le lieu spécifié, ainsi qu'aux informations relatives au fuseau horaire et aux heures de la séance boursière locale.