Accueil Indicateur technique Publication

Apprenez à dessiner l'ATR avec le buffer circulaire sur MetaTrader 5

Pièce jointe
1344.zip (8.86 KB, Télécharger 0 fois)

Description

La classe CATROnRingBuffer est conçue pour le calcul de l'indicateur Average True Range (Average True Range, ATR) en utilisant l'algorithme du buffer circulaire.

Déclaration

class CATROnRingBuffer

Titre

#include <IncOnRingBuffer\CATROnRingBuffer.mqh>

Le fichier CATROnRingBuffer.mqh doit être placé dans le dossier IncOnRingBuffer, qui doit être créé dans MQL5\Include\. Deux fichiers avec des exemples utilisant cette classe sont joints à cette description. Le fichier contenant la classe du buffer circulaire et celui de la Moyenne Mobile doivent également se trouver dans ce dossier.

Méthodes de la classe

//--- méthode d'initialisation :
bool Init(  // renvoie false en cas d'erreur, true si réussi
  int ma_period = 14, // période de lissage de la Moyenne Mobile
  ENUM_MA_METHOD ma_method = MODE_SMA, // méthode de lissage de la Moyenne Mobile
  int size_buffer = 256, // taille du buffer circulaire, nombre de données stockées
  bool as_series = false // true si série temporelle, false si indexation classique des données d'entrée
  );
//--- 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, // taille des tableaux
  const int prev_calculated, // éléments traités lors de l'appel précédent
  const double &high[], // tableau des valeurs maximales
  const double &low[], // tableau des valeurs minimales
  const double &close[] // tableau des prix de clôture
  );
//--- méthode de calcul basée sur des éléments séparés dans le tableau
double MainOnValue(  // retourne la valeur ATR pour l'élément défini
  const int rates_total, // taille du tableau
  const int prev_calculated, // éléments traités du tableau
  const int begin, // où commencent les valeurs significatives du tableau
  const double high, // valeur maximale
  const double low, // valeur minimale
  const double close, // prix de clôture
  const int index // index de l'élément
  );
//--- méthodes d'accès aux données :
int BarsRequired(); // Renvoie le nombre de barres nécessaires pour dessiner l'indicateur
string Name(); // Renvoie le nom de l'indicateur
string MAMethod(); // Renvoie la méthode de lissage sous forme de texte
int MAPeriod(); // Renvoie la période de lissage
int Size(); // Renvoie la taille du buffer circulaire

Pour obtenir les données calculées de l'indicateur à partir du buffer circulaire, c'est possible comme à partir d'un tableau classique. Par exemple :

#include <IncOnRingBuffer\CATROnRingBuffer.mqh>
CATROnRingBuffer atr;

...
//+------------------------------------------------------------------+
//| Fonction d'itération de l'indicateur personnalisé |
//+------------------------------------------------------------------+
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 :
  atr.MainOnArray(rates_total,prev_calculated,high,low,close);

  ...
//--- copier les données du buffer "atr" vers l'indicateur :
  for(int i=start;i<rates_total;i++)
  {
    ATR_Buffer[i]=atr[rates_total-1-i];
  }
  return(rates_total);
}

Veuillez noter que l'indexation dans le buffer circulaire est la même que dans la série temporelle.

Exemples

  1. Le fichier Test_ATR_OnArrayRB.mq5 calcule l'indicateur sur la base de la série temporelle des prix. L'application de la méthode MainOnArray() est démontrée.
  2. Le fichier Test_ATR_OnValueRB.mq5 démontre l'utilisation de la méthode MainOnValue(). D'abord, l'indicateur ATR est calculé et tracé. Ensuite, sur la base du buffer circulaire de cet indicateur, une autre ligne de l'indicateur ATR est calculée.


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



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


Lors de la rédaction du code, les développements de MetaQuotes Software Corp., Integer et GODZILLA ont été utilisés.

Articles connexes

Commentaire (0)