DRAW_NONE

Le style DRAW_NONE est conçu pour les cas quand il est nécessaire de calculer et afficher les valeurs du tampon dans "La fenêtre des données", mais l'affichage sur le graphique n'est pas nécessaire. Pour le réglage de l'exactitude de l'affichage utilisez l'expression IndicatorSetInteger(INDICATOR_DIGITS,le nombre_des signes)dans la fonction OnInit() :

int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,InvisibleBuffer,INDICATOR_DATA);
//--- établissons l'exactitude, avec laquelle la valeur sera affichée dans la Fenêtre des données
   IndicatorSetInteger(INDICATOR_DIGITS,0);
//---
   return(INIT_SUCCEEDED);
  }

Le nombre de tampons nécessaires pour la construction DRAW_NONE – 1.

L'exemple de l'indicateur, qui affiche dans "la Fenêtre des données" le numéro de la barre, sur lequelle se trouve la souris. La numérotation correspond à la série temporelle, c'est-à-dire la barre inachevée actuel a l'index null, et la plus ancienne barre a le plus grand index.

L'exemple du style DRAW_NONE

Prêtez attention que malgré le fait qu'à la construction graphique №1 est spécifiée la couleur rouge de l'affichage, l'indicateur ne dessine rien sur le graphique.

//+------------------------------------------------------------------+
//|                                                    DRAW_NONE.mq5 |
//|                         Copyright 2000-2024, MetaQuotes Ltd. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Invisible
#property indicator_label1  "Bar Index"
#property indicator_type1   DRAW_NONE
#property indicator_style1  STYLE_SOLID
#property indicator_color1  clrRed
#property indicator_width1  1
//--- indicator buffers
double         InvisibleBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- le binding du tableau et du tampon d'indicateur
   SetIndexBuffer(0,InvisibleBuffer,INDICATOR_DATA);
//--- établissons l'exactitude, avec laquelle la valeur sera affichée dans "la Fenêtre des données"
   IndicatorSetInteger(INDICATOR_DIGITS,0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
   static datetime lastbar=0;
//--- si c'est le premier calcul de l'indicateur
   if(prev_calculated==0)
     {
      //--- numéroterons les barres pour la première fois
      CalcValues(rates_total,close);
      //--- retiendrons le temps de l'ouverture de la barre actuelle dans lastbar
      lastbar=(datetime)SeriesInfoInteger(_Symbol,_Period,SERIES_LASTBAR_DATE);
     }
   else
     {
      //---s'il y avait une nouvelle barre, le temps de son ouverture ne coïncide pas avec lastbar
      if(lastbar!=SeriesInfoInteger(_Symbol,_Period,SERIES_LASTBAR_DATE))
        {
         //--- numéroterons les barres de nouveau
         CalcValues(rates_total,close);
         //---mettons à jour le temps de l'ouverture de la barre actuelle dans lastbar
         lastbar=(datetime)SeriesInfoInteger(_Symbol,_Period,SERIES_LASTBAR_DATE);
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| numérote les barres comme dans la série temporelle                                  |
//+------------------------------------------------------------------+
void CalcValues(int total,double const  &array[])
  {
//--- spécifions l'indexation au tampon d'indicateur comme dans la série temporelle
   ArraySetAsSeries(InvisibleBuffer,true);
//--- remplirons à chaque barre son numéro
   for(int i=0;i<total;i++) InvisibleBuffer[i]=i;
  }