Description
Le CFractalsOnRingBuffer est conçu pour le calcul de l'indicateur technique des Fractales (Fractales) en utilisant l'algorithme du buffer circulaire.
Déclaration
class CFractalsOnRingBufferTitre
#include <IncOnRingBuffer\CFractalsOnRingBuffer.mqh>Le fichier CFractalsOnRingBuffer.mqh doit être placé dans le dossier IncOnRingBuffer qui doit être créé dans MQL5\Include\. Deux fichiers contenant des exemples utilisant la classe de ce dossier sont joints à la description. Le fichier contenant la classe du buffer circulaire doit également se trouver dans ce dossier.
Méthodes de la classe
//--- méthode d'initialisation : bool Init( // si erreur, retourne false, si succès - true int bars_right = 2, // le nombre de barres à droite de l'extrême int bars_left = 2, // le nombre de barres à gauche de l'extrême int size_buffer = 256, // la taille du buffer circulaire bool as_series = false // vrai, si série temporelle, sinon - faux );
//--- méthode de calcul basée sur une série temporelle ou des buffers d'indicateur : int MainOnArray( // retourne le nombre d'éléments traités const int rates_total, // la taille des tableaux const int prev_calculated, // éléments traités lors de l'appel précédent const double& high[], // le tableau des maxima const double& low[], // le tableau des minima );
//--- méthode de calcul du fractal basé sur les éléments d'une série séparée du tableau high[] double MainOnHigh( // retourne la valeur du fractal haut pour l'élément index-bars_right (bar) const int rates_total, // la taille du tableau const int prev_calculated, // éléments traités du tableau const int begin, // à partir de où commencent les données significatives du tableau const double high, // le maximum de la barre actuelle const int index // l'index de l'élément courant (bar) );
//--- méthode de calcul du fractal bas basé sur les éléments d'une série séparée du tableau low[] double MainOnLow( // retourne la valeur du fractal bas pour l'élément index-bars_right (bar) const int rates_total, // la taille du tableau const int prev_calculated, // éléments traités du tableau const int begin, // à partir de où commencent les données significatives du tableau const double low, // le minimum de la barre actuelle, le maximum de l'élément courant du tableau const int index // l'index de l'élément courant (bar) );
//--- méthodes d'accès aux données : int BarsRequired(); // Retourne le nombre de barres nécessaires pour dessiner l'indicateur string Name(); // Retourne le nom de l'indicateur string NameUpper() // Retourne le nom des fractales hautes string NameLower() // Retourne le nom des fractales basses int BarsRight() // Retourne le nombre de barres à droite de l'extrême int BarsLeft() // Retourne le nombre de barres à gauche de l'extrême int Size(); // Retourne la taille du buffer circulaire
Pour obtenir les données calculées de l'indicateur des buffers circulaires, cela est possible comme avec un tableau classique. Par exemple :
//--- la classe avec les méthodes de calcul de l'indicateur Fractals : #include <IncOnRingBuffer\CFractalsOnRingBuffer.mqh> CFractalsOnRingBuffer fractals; ... //+------------------------------------------------------------------+ //| Fonction d'itération personnalisée de l'indicateur | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime& time[], const double& open[], const double& high[], const double& low[], const double& close[], const long& tick_volume[], const long& volume[], const int& spread[]) { //--- calcul de l'indicateur basé sur la série temporelle des prix : fractals.MainOnArray(rates_total,prev_calculated,high,low); ... //--- utilisez les données des buffers circulaires "fractals", // par exemple, copiez les données dans le buffer de l'indicateur : for(int i=start;i<rates_total-BarsRight && !IsStopped();i++) { UpperBuffer[i] = fractals.upper[rates_total-1-i]; // fractales hautes LowerBuffer[i] = fractals.lower[rates_total-1-i]; // fractales basses } ... //--- retour de la valeur de prev_calculated pour le prochain appel : return(rates_total); }
Veuillez noter que l'indexation dans les buffers circulaires est la même que dans les séries temporelles.
Exemples
- L'indicateur calcule le fichier Test_Fractals_OnArrayRB.mq5 sur la base de la série temporelle des prix. L'application de la méthode MainOnArray() est démontrée.
- Le fichier Test_Fractals_OnValueRB.mq5 démontre l'utilisation de la méthode MainOnValue(). D'abord, l'indicateur Fractals est calculé et dessiné. Ensuite, sur la base de cet indicateur, un autre Fractals est dessiné à l'aide du buffer circulaire.

Le résultat du travail du Test_Fractals_OnArrayRB.mq5 avec la taille du buffer circulaire de 256 éléments

Le résultat du travail du Test_Fractals_OnValueRB.mq5 avec la taille du buffer circulaire de 256 éléments
Lors de l'écriture du code, les développements de MetaQuotes Software Corp., Integer et GODZILLA ont été utilisés.
Articles connexes
- iMAX3 : Détecteur de Tendances Rapides pour Traders
- Découvrez l'indicateur Tymen STARC Bands MTF pour MetaTrader 5
- Affichez la tendance actuelle sur tous les délais avec un indicateur pour MetaTrader 4
- Découvrez l'indicateur 3 en 1 Stochastic pour MetaTrader 5
- Améliorez vos graphiques avec ClearView : Indicateurs et modèles pour MetaTrader 5