Propriétés des Indicateurs Personnalisés

Le nombre de buffers pouvant être utilisés dans un indicateur personnalisé est illimité. Mais pour chaque tableau désigné comme buffer pour l'indicateur avec la fonction SetIndexBuffer(), il est nécessaire de spécifier le type des données qu'il contiendra. Cela peut être l'une des valeurs de l'énumération ENUM_INDEXBUFFER_TYPE.

ENUM_INDEXBUFFER_TYPE

Identifiant

Description

INDICATOR_DATA

Données à dessiner

INDICATOR_COLOR_INDEX

Couleur

INDICATOR_CALCULATIONS

Buffers supplémentaires pour les calculs intermédiaires

Un indicateur personnalisé doit fournir de nombreux paramètres pour un bon affichage. Ces paramètres sont définis avec l'assignation des propriétés correspondantes de l'indicateur avec les fonctions IndicatorSetDouble(), IndicatorSetInteger() et IndicatorSetString(). Les identifiants des propriétés de l'indicateur sont listés dans l'énumération ENUM_CUSTOMIND_PROPERTY.

ENUM_CUSTOMIND_PROPERTY_INTEGER

Identifiant

Description

Type de la Propriété

INDICATOR_DIGITS

Précision de dessin des valeurs de l'indicateur

int

INDICATOR_HEIGHT

Hauteur fixée de la fenêtre de l'indicateur (commande du préprocesseur #property indicator_height)

int

INDICATOR_LEVELS

Nombre de niveaux dans la fenêtre de l'indicateur

int

INDICATOR_LEVELCOLOR

Couleur de la ligne du niveau

color                      modifier = numéro du niveau

INDICATOR_LEVELSTYLE

Style de la ligne du niveau

ENUM_LINE_STYLE  modificateur = numéro du niveau

INDICATOR_LEVELWIDTH

Epaisseur de la ligne du niveau

int                         modificateur = numéro du niveau

INDICATOR_FIXED_MINIMUM

Minimum fixe pour la fenêtre de l'indicateur. La propriété ne peut être écrite que par la fonction IndicatorSetInteger()

bool

INDICATOR_FIXED_MAXIMUM

Maximum fixe pour la fenêtre de l'indicateur. La propriété ne peut être écrite que par la fonction IndicatorSetInteger()

bool

ENUM_CUSTOMIND_PROPERTY_DOUBLE

Identifiant

Description

Type de la Propriété

INDICATOR_MINIMUM

Minimum de la fenêtre de l'indicateur

double

INDICATOR_MAXIMUM

Maximum de la fenêtre de l'indicateur

double

INDICATOR_LEVELVALUE

Valeur du niveau

double                    modificateur = numéro du niveau

ENUM_CUSTOMIND_PROPERTY_STRING

Identifiant

Description

Type de la Propriété

INDICATOR_SHORTNAME

Nom court de l'indicateur

string

INDICATOR_LEVELTEXT

Description du niveau

string                    modificateur = numéro du niveau

Exemples :

//--- paramètres de l'indicateur
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots   2
#property indicator_type1   DRAW_LINE
#property indicator_type2   DRAW_LINE
#property indicator_color1  clrLightSeaGreen
#property indicator_color2  clrRed
//--- paramètres d'entrée
extern int KPeriod=5;
extern int DPeriod=3;
extern int Slowing=3;
//--- buffers de l'indicateur
double MainBuffer[];
double SignalBuffer[];
double HighesBuffer[];
double LowesBuffer[];
//+----------------------------------------------------------------------------------------------------+
//| Fonction d'initialisation d'un indicateur personnalisé                                             |
//+----------------------------------------------------------------------------------------------------+
void OnInit()
  {
//--- mapping des buffers de l'indicateur
   SetIndexBuffer(0,MainBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,SignalBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,HighesBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(3,LowesBuffer,INDICATOR_CALCULATIONS);
//--- définit la précision
   IndicatorSetInteger(INDICATOR_DIGITS,2);
//--- définit les niveaux
   IndicatorSetInteger(INDICATOR_LEVELS,2);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,0,20);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,1,80);
//--- définit le maximum et le minimum pour la sous-fenêtre
   IndicatorSetDouble(INDICATOR_MINIMUM,0);
   IndicatorSetDouble(INDICATOR_MAXIMUM,100);
//--- définit la première barre à partir de laquelle l'indicateur sera dessiné
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,KPeriod+Slowing-2);
   PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,KPeriod+Slowing+DPeriod);
//--- définit le style STYLE_DOT pour la seconde ligne
   PlotIndexSetInteger(1,PLOT_LINE_STYLE,STYLE_DOT);
//--- nom de la sous-fenêtre de l'indicateur et des données
   IndicatorSetString(INDICATOR_SHORTNAME,"Stoch("+KPeriod+","+DPeriod+","+Slowing+")");
   PlotIndexSetString(0,PLOT_LABEL,"Main");
   PlotIndexSetString(1,PLOT_LABEL,"Signal");
//--- définit la ligne de dessin à vide
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0);
//--- initialisation terminée
  }