ChartIndicatorDelete

Supprime l'indicateur avec le nom spécifié de la fenêtre indiquée du graphique.

bool  ChartIndicatorDelete(
   long           chart_id,              // l'identificateur du graphique
   int            sub_window             // le numéro de la sous-fenêtre
   const string   indicator_shortname    // le nom court de l'indicateur
   );

Paramètres

chart_id

[in]  L'identificateur du graphique. 0 signifie le graphique actuel.

sub_window

[in]  Le numéro de la sous-fenêtre du graphique. 0 signifie la fenêtre principale du graphique.

const indicator_shortname

[in]  Le nom court de l'indicateur, qui est spécifié dans la propriété INDICATOR_SHORTNAME par la fonction IndicatorSetString(). On peut recevoir le nom court de l'indicateur par la fonction ChartIndicatorName().

La valeur rendue

Rend true si l'indicateur a été supprimé avec succès, autrement rend false. Pour recevoir l'information sur l'erreuril faut appeler la fonction GetLastError () .

Note

S'il y a plusieurs indicateurs avec le même nom court dans la sous-fenêtre spécifiée du graphique, sera supprimé le premier indicateur.

Si les autres indicateurs sont construits sur les valeurs de l'indicateur supprimé sur le même graphique, ils seront également supprimés.

Il ne faut pas confondre un nom court et de l'indicateur et le nom du fichier qui est spécifié pendant la création de l'indicateur par les fonctionsiCustom() et IndicatorCreate(). Si le nom court de l'indicateur n'est pas spécifié explicitement, alors pendant la compilation le nom du fichier avec le code initial de l'indicateur y est spécifié.

La suppression de l'indicateur du graphique ne signifie pas que la partie calculé de l'indicateur sera aussi supprimée de la mémoire du terminal. Pour vider le handle de l'indicateur utiliser la fonctionIndicatorRelease().

Il est nécessaire de former correctement un nom court de l'indicateur, qui s'écrit dans la propriété INDICATOR_SHORTNAME à l'aide de la fonctionIndicatorSetString () . Nous recommandons que le nom court contienne les valeurs des paramètres d'entrée de l'indicateur, puisque l'identification de l'indicateur supprimé du graphique dans la fonctionChartIndicatorDelete()est faite selon le nom court.

L'exemple de la suppression de l'indicateur pendant la mauvaise initialisation:

//+------------------------------------------------------------------+
//|                                    Demo_ChartIndicatorDelete.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_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Histogram
#property indicator_label1  "Histogram"
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
input int      first_param=1;
input int      second_param=2;
input int      third_param=3;
input bool     wrong_init=true;
//--- indicator buffers
double         HistogramBuffer[];
string         shortname;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   int res=INIT_SUCCEEDED;
//--- attachons le tableau HistogramBuffer au tampon d'indicateur
   SetIndexBuffer(0,HistogramBuffer,INDICATOR_DATA);
//--- construisons le nom court de l'indicateur à la base des paramètres d'entrée
   shortname=StringFormat("Demo_ChartIndicatorDelete(%d,%d,%d)",
                          first_param,second_param,third_param);
   IndicatorSetString(INDICATOR_SHORTNAME,shortname);
//--- si on a spécifié l'achèvement forcé de l'indicateur, rendons la valeur non nulle
   if(wrong_init) res=INIT_FAILED;
   return(res);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//--- la position initiale pour le travail dans la boucle
   int start=prev_calculated-1;
   if(start<0) start=0;
//--- remplissons le tampon d'indicateur par les valeurs
   for(int i=start;i<rates_total;i++)
     {
      HistogramBuffer[i]=close[i];
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| gestionnaire d'événements Deinit                                        |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   PrintFormat("%s: le code de la raison de la désinitialisation =%d",__FUNCTION__,reason);
   if(reason==REASON_INITFAILED)
     {
      PrintFormat("L'indicateur avec le nom court %s (le fichier %s) se supprime du graphique",shortname,__FILE__);
      int window=ChartWindowFind();
      bool res=ChartIndicatorDelete(0,window,shortname);
      //--- analysons le résultat de l'appel ChartIndicatorDelete()
      if(!res)
        {
         PrintFormat("On n'a pas réussi à supprimer l'indicateur %s de la fenêtre #%d. Le code de l'erreur %d",
                     shortname,window,GetLastError());
        }
     }
  }

Voir aussi

ChartIndicatorAdd(), ChartIndicatorName(), ChartIndicatorsTotal(), iCustom(), IndicatorCreate(), IndicatorSetString()