Exemples d'Utilisation du Graphique

Cette section contient des exemples d'utilisation des propriétés du graphique. Une ou deux fonctions complètes sont affichées pour chaque propriété. Ces fonctions permettent de définir/récupérer la valeur de la propriété. Ces fonctions peuvent être utilisées telles quelles dans les applications mql5 personnalisées.

La copie d'écran ci-dessous montre le panneau graphique illustrant comment le changement des propriétés du graphique change son apparence. La nouvelle valeur est définie lors du clic sur le bouton Suivant de la propriété correspondante et le changement est ensuite effectué dans la fenêtre du graphique.

chart_properties_panel

Le code source du panneau est situé en-dessous.

Propriétés du Graphiques et Exemples de Fonctions pour Les utiliser

  • CHART_IS_OBJECT définit si un objet est un graphique réel ou un objet graphique.

//+----------------------------------------------------------------------------------------------------+
//| Vérifie si un objet est un graphique. Si c'est un objet graphique,                                 |
//| le résultat vaut true. Si c'est un graphique réel, la variable résultat                            |
//| a la valeur false.                                                                                 |
//+----------------------------------------------------------------------------------------------------+
bool ChartIsObject(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- récupère la propriété du graphique
   if(!ChartGetInteger(chart_ID,CHART_IS_OBJECT,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      //--- retourne false
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }

 

  • CHART_BRING_TO_TOP affiche le graphique par-dessus tous les autres.

//+------------------------------------------------------------------------------------------------+
//| Envoie une commande au terminal pour afficher le graphique par-dessus tous les autres          |
//+------------------------------------------------------------------------------------------------+
bool ChartBringToTop(const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- affiche le graphique par-dessus tous les autres
   if(!ChartSetInteger(chart_ID,CHART_BRING_TO_TOP,0,true))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_MOUSE_SCROLL est une propriété pour défiler le graphique avec le bouton gauche de la souris.

//+----------------------------------------------------------------------------------------+
//| Vérifie si le défilement du graphique avec le bouton gauche de la souris est activé    |
//+----------------------------------------------------------------------------------------+
bool ChartMouseScrollGet(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_MOUSE_SCROLL,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Active/désactive le défilement du graphique avec le bouton gauche de la souris |
//+--------------------------------------------------------------------------------+
bool ChartMouseScrollSet(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_MOUSE_SCROLL,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_EVENT_MOUSE_MOVE est une propriété d'envoi de messages aux application mql5 concernant les évènements de déplacement et de clics de souris (CHARTEVENT_MOUSE_MOVE).

//+----------------------------------------------------------------------------------------------------+
//| Vérifie si les messages des évènements de déplacement et de clics de souris                        |
//| sont envoyés à toutes les applications MQL5 du graphique                                           |
//+----------------------------------------------------------------------------------------------------+
bool ChartEventMouseMoveGet(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_EVENT_MOUSE_MOVE,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+------------------------------------------------------------------------------------------------+
//| Active/désactive le mode d'envoi des messages concernant les évènements des mouvements et      |
//| de clics de souris à toutes les applications MQL5 sur le graphique                             |
//+------------------------------------------------------------------------------------------------+
bool ChartEventMouseMoveSet(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_EVENT_MOUSE_MOVE,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_EVENT_OBJECT_CREATE est une propriété d'envoi de messages aux application mql5 concernant les évènements de création d'un objet graphique (CHARTEVENT_OBJECT_CREATE).

//+-----------------------------------------------------------------------+
//| Vérfie si les messages concernant l'évènement de création d'un objet  |
//| graphique sont envoyés aux applications MQL5 sur le graphique         |
//+-----------------------------------------------------------------------+
bool ChartEventObjectCreateGet(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_EVENT_OBJECT_CREATE,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------+
//| Active/désactive le mode d'envoi des messages concernant les évènements de création    |
//| d'un objet graphique aux applications mql5 sur le graphique                            |
//+----------------------------------------------------------------------------------------+
bool ChartEventObjectCreateSet(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_EVENT_OBJECT_CREATE,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_EVENT_OBJECT_DELETE est une propriété d'envoi de messages aux application mql5 concernant les évènements de suppression d'un objet graphique (CHARTEVENT_OBJECT_DELETE).

//+-----------------------------------------------------------------------+
//| Vérifie si les messages concernant l'évènement de suppression d'un    |
//| objet graphique sont envoyés aux applications mql5 sur le graphique   |
//+-----------------------------------------------------------------------+
bool ChartEventObjectDeleteGet(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_EVENT_OBJECT_DELETE,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------+
//| Active/désactive le mode d'envoi des messages concernant les évènements de suppression |
//| d'un objet graphique aux applications mql5 sur le graphique                            |
//+----------------------------------------------------------------------------------------+
bool ChartEventObjectDeleteSet(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_EVENT_OBJECT_DELETE,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_MODE type du graphique (chandeliers, barres ou ligne brisée).

//+----------------------------------------------------------------------------------------------------+
//| Récupère le type d'affichage du graphique (chandeliers, bougies ou ligne brisée)                   |
//+----------------------------------------------------------------------------------------------------+
ENUM_CHART_MODE ChartModeGet(const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long result=WRONG_VALUE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_MODE,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((ENUM_CHART_MODE)result);
  }
//+----------------------------------------------------------------------------------------------------+
//| Définit le type d'affichage du graphique (chandeliers, bougies ou ligne brisée)                    |
//+----------------------------------------------------------------------------------------------------+
bool ChartModeSet(const long value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_MODE,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_FOREGROUND est une propriété d'affichage du graphique des prix au premier plan.

//+----------------------------------------------------------------------------------------------------+
//| Vérifie si le graphique des prix est affiché au premier plan                                       |
//+----------------------------------------------------------------------------------------------------+
bool ChartForegroundGet(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_FOREGROUND,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Active/désactive l'affichage du graphique des prix au premier plan                                 |
//+----------------------------------------------------------------------------------------------------+
bool ChartForegroundSet(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_FOREGROUND,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_SHIFT mode de décalage du graphique des prix du bord droite.

//+-----------------------------------------------------------------------+
//| Vérifie si le décalage du graphique des prix du bord droit est activé |
//+-----------------------------------------------------------------------+
bool ChartShiftGet(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_SHIFT,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+---------------------------------------------------------------------------------+
//| Active/désactive le décalage du graphique des prix du bord droit                |
//+---------------------------------------------------------------------------------+
bool ChartShiftSet(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_SHIFT,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_AUTOSCROLL le mode de décalage automatique du bord droit du graphique.

//+----------------------------------------------------------------------------------------------------+
//| Vérifie si le défilement automatique du graphique vers la droite à l'arrivée                       |
//| des nouveaux ticks est activé                                                                      |
//+----------------------------------------------------------------------------------------------------+
bool ChartAutoscrollGet(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_AUTOSCROLL,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Active/désactive le défilement automatique du graphique vers la droite à l'arrivée                 |
//| à l'arrivée des nouveaux ticks                                                                     |
//+----------------------------------------------------------------------------------------------------+
bool ChartAutoscrollSet(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_AUTOSCROLL,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_SCALE propriété de l'échelle du graphique.

//+----------------------------------------------------------------------------------------------------+
//| Récupère l'échelle du graphique (de 0 à 5)                                                         |
//+----------------------------------------------------------------------------------------------------+
int ChartScaleGet(const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long result=-1;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_SCALE,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((int)result);
  }
//+----------------------------------------------------------------------------------------------------+
//| Définit l'échelle du graphique (de 0 à 5)                                                          |
//+----------------------------------------------------------------------------------------------------+
bool ChartScaleSet(const long value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_SCALE,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_SCALEFIX le mode d'échelle fixe du graphique.

//+----------------------------------------------------------------------------------------------------+
//| Vérifie si le mode d'échelle fixe est activé                                                       |
//+----------------------------------------------------------------------------------------------------+
bool ChartScaleFixGet(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_SCALEFIX,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Active/désactive le mode d'échelle fixe                                                            |
//+----------------------------------------------------------------------------------------------------+
bool ChartScaleFixSet(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_SCALEFIX,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_SCALEFIX_11 mode d'échelle 1:1 du graphique.

//+----------------------------------------------------------------------------------------------------+
//| Vérifie si l'échelle "1:1" est activée                                                             |
//+----------------------------------------------------------------------------------------------------+
bool ChartScaleFix11Get(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_SCALEFIX_11,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Active/désactive le mode d'échelle "1:1"                                                           |
//+----------------------------------------------------------------------------------------------------+
bool ChartScaleFix11Set(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_SCALEFIX_11,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_SCALE_PT_PER_BAR le mode de spécification de l'échelle du graphique en points par barre.

//+----------------------------------------------------------------------------------------------------+
//| Vérifie si le mode d'échelle "points par barre" est activé                                         |
//+----------------------------------------------------------------------------------------------------+
bool ChartScalePerBarGet(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_SCALE_PT_PER_BAR,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Active/désactive le mode d'échelle "points par barre"                                              |
//+----------------------------------------------------------------------------------------------------+
bool ChartScalePerBarSet(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_SCALE_PT_PER_BAR,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_SHOW_OHLC la propriété d'affichage des valeurs OHLC dans le coin supérieur gauche.

//+-----------------------------------------------------------------------------------------------+
//| Vérifie si l'affichage des valeurs OHLC dans le coin supérieur gauche du graphique est activé |
//+-----------------------------------------------------------------------------------------------+
bool ChartShowOHLCGet(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_SHOW_OHLC,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+------------------------------------------------------------------------------------------------+
//| Active/désactive l'affichage des valeurs OHLC dans le coin supérieur gauche du graphique       |
//+------------------------------------------------------------------------------------------------+
bool ChartShowOHLCSet(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_SHOW_OHLC,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_SHOW_BID_LINE la propriété d'affichage de la valeur Bid sous forme d'une ligne horizontale sur le graphique.

//+----------------------------------------------------------------------------------------------------+
//| Vérifie si l'affichage du prix Bid sous forme d'une ligne horizontale est activé                   |
//+----------------------------------------------------------------------------------------------------+
bool ChartShowBidLineGet(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_SHOW_BID_LINE,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Active/désactive l'affichage de la ligne Bid sur le graphique                                      |
//+----------------------------------------------------------------------------------------------------+
bool ChartShowBidLineSet(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_SHOW_BID_LINE,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_SHOW_ASK_LINE la propriété d'affichage de la valeur Ask sous forme d'une ligne horizontale sur le graphique.

//+----------------------------------------------------------------------------------------------------+
//| Vérifie si l'affichage du prix Ask sous forme d'une ligne horizontale est activé                   |
//+----------------------------------------------------------------------------------------------------+
bool ChartShowAskLineGet(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_SHOW_ASK_LINE,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Active/désactive l'affichage de la ligne Ask sur le graphique                                      |
//+----------------------------------------------------------------------------------------------------+
bool ChartShowAskLineSet(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_SHOW_ASK_LINE,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_SHOW_LAST_LINE la propriété d'affichage de la valeur Last sous forme d'une ligne horizontale sur le graphique.

//+-----------------------------------------------------------------------------------------------------+
//| Vérifie si l'affichage du prix Last sous forme d'une ligne horizontale est activé                   |
//+-----------------------------------------------------------------------------------------------------+
bool ChartShowLastLineGet(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_SHOW_LAST_LINE,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+--------------------------------------------------------------------------------------+
//| Active/désactive l'affichage d'une ligne au prix de la dernière transaction effectué |
//+--------------------------------------------------------------------------------------+
bool ChartShowLastLineSet(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_SHOW_LAST_LINE,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_SHOW_PERIOD_SEP la propriété d'affichage de séparateurs verticaux entre les périodes adjacentes.

//+---------------------------------------------------------------------------------+
//| Vérifie si l'affichage de séparateurs verticaux entre les périodes est activé   |
//+---------------------------------------------------------------------------------+
bool ChartShowPeriodSeparatorGet(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_SHOW_PERIOD_SEP,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+-----------------------------------------------------------------------------------------------------+
//| Active/désactive l'affichage de séparateurs verticaux entre les périodes adjacentes                 |
//+-----------------------------------------------------------------------------------------------------+
bool ChartShowPeriodSepapatorSet(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_SHOW_PERIOD_SEP,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_SHOW_GRID la propriété d'affichage de la grille du graphique.

//+----------------------------------------------------------------------------------------------------+
//| Vérifie si la grille est affichée sur le graphique                                                 |
//+----------------------------------------------------------------------------------------------------+
bool ChartShowGridGet(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_SHOW_GRID,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Active/désactive l'affichage de la grille sur le graphique                                         |
//+----------------------------------------------------------------------------------------------------+
bool ChartShowGridSet(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_SHOW_GRID,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_SHOW_VOLUMES la propriété d'affichage des volumes sur le graphique.

//+----------------------------------------------------------------------------------------------------+
//| Vérifie si les volumes sont affichés sur le graphique.                                             |
//| Le flag indique le mode d'affichage des volumes                                                    |
//+----------------------------------------------------------------------------------------------------+
ENUM_CHART_VOLUME_MODE ChartShowVolumesGet(const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long result=WRONG_VALUE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_SHOW_VOLUMES,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((ENUM_CHART_VOLUME_MODE)result);
  }
//+----------------------------------------------------------------------------------------------------+
//| Définit le mode d'affichage des volumes sur le graphique                                           |
//+----------------------------------------------------------------------------------------------------+
bool ChartShowVolumesSet(const long value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_SHOW_VOLUMES,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

 

  • CHART_SHOW_OBJECT_DESCR la propriété d'affichage des descriptions des objets graphiques.

//+-----------------------------------------------------------------------+
//| Vérifie si les descriptions des objets graphiques s'affichent lorsque |
//| la souris passe au-dessus d'eux                                       |
//+-----------------------------------------------------------------------+
bool ChartShowObjectDescriptionGet(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_SHOW_OBJECT_DESCR,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+--------------------------------------------------------------------------------------+
//| Active/désactive l'affichage des descriptions des objets graphiques lorsque          |
//| la souris passe au-dessus d'eux                                                      |
//+--------------------------------------------------------------------------------------+
bool ChartShowObjectDescriptionSet(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_SHOW_OBJECT_DESCR,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_VISIBLE_BARS définit le nombre de barres disponibles pour l'affichage sur le graphique.

//+------------------------------------------------------------------------------------------------+
//| Récupère le nombre de barres qui sont affichées (visibles) sur le graphique                    |
//+------------------------------------------------------------------------------------------------+
int ChartVisibleBars(const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long result=-1;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_VISIBLE_BARS,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((int)result);
  }

 

  • CHART_WINDOWS_TOTAL définit le nombre total de fenêtres incluant les sous-fenêtres des indicateurs.

//+--------------------------------------------------------------------------------------------+
//| Récupère le nombre total de fenêtres graphiques incluant les sous-fenêtres des indicateurs |
//+--------------------------------------------------------------------------------------------+
int ChartWindowsTotal(const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long result=-1;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_WINDOWS_TOTAL,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((int)result);
  }

 

  • CHART_WINDOW_IS_VISIBLE définit la visibilité des sous-fenêtres.

//+----------------------------------------------------------------------------------------------------+
//| Vérifie si la fenêtre actuelle du graphique ou la sous-fenêtre est visible                         |
//+----------------------------------------------------------------------------------------------------+
bool ChartWindowsIsVisible(bool &result,const long chart_ID=0,const int sub_window=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_WINDOW_IS_VISIBLE,sub_window,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }

 

  • CHART_WINDOW_HANDLE retourne le handle du graphique.

//+----------------------------------------------------------------------------------------------------+
//| Récupère le handle du graphique                                                                    |
//+----------------------------------------------------------------------------------------------------+
int ChartWindowsHandle(const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long result=-1;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_WINDOW_HANDLE,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((int)result);
  }

 

  • CHART_WINDOW_YDISTANCE définit la distance en pixels entre le cadre supérieur de la sous-fenêtre d'indicateur et le cadre supérieur de la fenêtre principale du graphique.

//+----------------------------------------------------------------------------------------------------+
//| Récupère la distance en pixels entre la bordure supérieure de la sous-fenêtre et                   |
//| la bordure supérieure de la fenêtre principale du graphique                                        |
//+----------------------------------------------------------------------------------------------------+
int ChartWindowsYDistance(const long chart_ID=0,const int sub_window=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long result=-1;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_WINDOW_YDISTANCE,sub_window,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((int)result);
  }

 

  • CHART_FIRST_VISIBLE_BAR retourne le numéro de la première barre visible sur le graphique (l'indexation des barres correspond aux time series).

//+------------------------------------------------------------------------------------------------+
//| Récupère l'index de la première barre visible sur le graphique.                                |
//| L'indexation est comme pour les timeseries : les dernières barres ont les plus petits indices. |
//+------------------------------------------------------------------------------------------------+
int ChartFirstVisibleBar(const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long result=-1;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_FIRST_VISIBLE_BAR,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((int)result);
  }

 

  • CHART_WIDTH_IN_BARS retourne la largeur du graphique en barres.

//+----------------------------------------------------------------------------------------------------+
//| Récupère la largueur du graphique (en barres)                                                      |
//+----------------------------------------------------------------------------------------------------+
int ChartWidthInBars(const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long result=-1;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_WIDTH_IN_BARS,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((int)result);
  }

 

  • CHART_WIDTH_IN_PIXELS retourne la largeur du graphique en pixels.

//+----------------------------------------------------------------------------------------------------+
//| Récupère la largeur du graphique (en pixels)                                                       |
//+----------------------------------------------------------------------------------------------------+
int ChartWidthInPixels(const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long result=-1;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_WIDTH_IN_PIXELS,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((int)result);
  }

 

  • CHART_HEIGHT_IN_PIXELS propriété de hauteur du graphique en pixels.

//+----------------------------------------------------------------------------------------------------+
//| Récupère la hauteur du graphique (en pixels)                                                       |
//+----------------------------------------------------------------------------------------------------+
int ChartHeightInPixelsGet(const long chart_ID=0,const int sub_window=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long result=-1;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_HEIGHT_IN_PIXELS,sub_window,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((int)result);
  }
//+----------------------------------------------------------------------------------------------------+
//| Définit la hauteur du graphique (en pixels)                                                        |
//+----------------------------------------------------------------------------------------------------+
bool ChartHeightInPixelsSet(const int value,const long chart_ID=0,const int sub_window=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_HEIGHT_IN_PIXELS,sub_window,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_COLOR_BACKGROUND - couleur d'arrière plan du graphique.

//+----------------------------------------------------------------------------------------------------+
//| Récupère la couleur d'arrière plan d'un graphique                                                  |
//+----------------------------------------------------------------------------------------------------+
color ChartBackColorGet(const long chart_ID=0)
  {
//--- prépare la variable pour recevoir la couleur
   long result=clrNONE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- récupère la couleur d'arrière plan du graphique
   if(!ChartGetInteger(chart_ID,CHART_COLOR_BACKGROUND,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((color)result);
  }
//+----------------------------------------------------------------------------------------------------+
//| Définit la couleur d'arrière plan du graphique                                                     |
//+----------------------------------------------------------------------------------------------------+
bool ChartBackColorSet(const color clr,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la couleur d'arrière plan du graphique
   if(!ChartSetInteger(chart_ID,CHART_COLOR_BACKGROUND,clr))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_COLOR_FOREGROUND couleur des axes, de l'échelle et de la ligne OHLC.

//+----------------------------------------------------------------------------------------------------+
//| Récupère la couleur des axes, de l'échelle et de la ligne OHLC                                     |
//+----------------------------------------------------------------------------------------------------+
color ChartForeColorGet(const long chart_ID=0)
  {
//--- prépare la variable pour recevoir la couleur
   long result=clrNONE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- récupère la couleur des axes, de l'échelle et de la ligne OHLC
   if(!ChartGetInteger(chart_ID,CHART_COLOR_FOREGROUND,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((color)result);
  }
//+----------------------------------------------------------------------------------------------------+
//| Définit la couleur des axes, de l'échelle et de la ligne OHLC                                      |
//+----------------------------------------------------------------------------------------------------+
bool ChartForeColorSet(const color clr,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la couleur des axes, de l'échelle et de la ligne OHLC
   if(!ChartSetInteger(chart_ID,CHART_COLOR_FOREGROUND,clr))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_COLOR_GRID couleur de la grille du graphique.

//+----------------------------------------------------------------------------------------------------+
//| Récupère la couleur de la grille du graphique                                                      |
//+----------------------------------------------------------------------------------------------------+
color ChartGridColorGet(const long chart_ID=0)
  {
//--- prépare la variable pour recevoir la couleur
   long result=clrNONE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- récupère la couleur de la grille du graphique
   if(!ChartGetInteger(chart_ID,CHART_COLOR_GRID,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((color)result);
  }
//+----------------------------------------------------------------------------------------------------+
//| Définit la couleur de la grille du graphique                                                       |
//+----------------------------------------------------------------------------------------------------+
bool ChartGridColorSet(const color clr,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la couleur de la grille du graphique
   if(!ChartSetInteger(chart_ID,CHART_COLOR_GRID,clr))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_COLOR_VOLUME - couleur des volumes et des niveaux d'ouverture des positions.

//+----------------------------------------------------------------------------------------------------+
//| Récupère la couleur des volumes et des niveaux d'entrée sur le marché                              |
//+----------------------------------------------------------------------------------------------------+
color ChartVolumeColorGet(const long chart_ID=0)
  {
//--- prépare la variable pour recevoir la couleur
   long result=clrNONE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- récupère la couleur des volumes et des niveaux d'entrée sur le marché
   if(!ChartGetInteger(chart_ID,CHART_COLOR_VOLUME,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((color)result);
  }
//+----------------------------------------------------------------------------------------------------+
//| Définit la couleur des volumes et des niveaux d'entrée sur le marché                               |
//+----------------------------------------------------------------------------------------------------+
bool ChartVolumeColorSet(const color clr,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la couleur des volumes et des niveaux d'entrée sur le marché
   if(!ChartSetInteger(chart_ID,CHART_COLOR_VOLUME,clr))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_COLOR_CHART_UP couleur d'une barre haussière, de l'ombre et du contour du corps d'une bougie haussière.

//+-----------------------------------------------------------------------------------------------------+
//| Récupère la couleur d'une barre haussière, de l'ombre et du contour du corps d'une bougie haussière |
//+-----------------------------------------------------------------------------------------------------+
color ChartUpColorGet(const long chart_ID=0)
  {
//--- prépare la variable pour recevoir la couleur
   long result=clrNONE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- récupère la couleur d'une barre haussière, de l'ombre et du contour du corps d'une bougie haussière
   if(!ChartGetInteger(chart_ID,CHART_COLOR_CHART_UP,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((color)result);
  }
//+----------------------------------------------------------------------------------------------------+
//| Définit la couleur d'une barre haussière, de l'ombre et du contour du corps d'une bougie haussière |
//+----------------------------------------------------------------------------------------------------+
bool ChartUpColorSet(const color clr,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la couleur d'une barre haussière, de l'ombre et du contour du corps d'une bougie haussière
   if(!ChartSetInteger(chart_ID,CHART_COLOR_CHART_UP,clr))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_COLOR_CHART_DOWN couleur d'une barre baissière, de l'ombre et du contour du corps d'une bougie baissière.

//+-----------------------------------------------------------------------------------------------------+
//| Récupère la couleur d'une barre baissière, de l'ombre et du contour du corps d'une bougie baissière |
//+-----------------------------------------------------------------------------------------------------+
color ChartDownColorGet(const long chart_ID=0)
  {
//--- prépare la variable pour recevoir la couleur
   long result=clrNONE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- récupère la couleur d'une barre baissière, de l'ombre et du contour du corps d'une bougie baissière
   if(!ChartGetInteger(chart_ID,CHART_COLOR_CHART_DOWN,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((color)result);
  }
//+-----------------------------------------------------------------------------------------------------+
//| Définit la couleur d'une barre baissière, de l'ombre et du contour du corps d'une bougie baissière  |
//+-----------------------------------------------------------------------------------------------------+
bool ChartDownColorSet(const color clr,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la couleur d'une barre baissière, de l'ombre et du contour du corps d'une bougie baissière
   if(!ChartSetInteger(chart_ID,CHART_COLOR_CHART_DOWN,clr))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_COLOR_CHART_LINE couleur de la ligne du graphique et des bougies en forme de Doji.

//+----------------------------------------------------------------------------------------------------+
//| Récupère la couleur de la ligne du graphique et des bougies en forme de Doji                       |
//+----------------------------------------------------------------------------------------------------+
color ChartLineColorGet(const long chart_ID=0)
  {
//--- prépare la variable pour recevoir la couleur
   long result=clrNONE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- récupère la couleur de la ligne du graphique et des bougies en forme de Doji
   if(!ChartGetInteger(chart_ID,CHART_COLOR_CHART_LINE,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((color)result);
  }
//+----------------------------------------------------------------------------------------------------+
//| Définit la couleur de la ligne du graphique et des bougies en forme de Doji                        |
//+----------------------------------------------------------------------------------------------------+
bool ChartLineColorSet(const color clr,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la couleur de la ligne du graphique et des bougies en forme de Doji
   if(!ChartSetInteger(chart_ID,CHART_COLOR_CHART_LINE,clr))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_COLOR_CANDLE_BULL couleur du corps des chandeliers haussiers.

//+----------------------------------------------------------------------------------------------------+
//| Récupère la couleur du corps des chandeliers haussiers                                             |
//+----------------------------------------------------------------------------------------------------+
color ChartBullColorGet(const long chart_ID=0)
  {
//--- prépare la variable pour recevoir la couleur
   long result=clrNONE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- récupère la couleur du corps des chandeliers haussiers
   if(!ChartGetInteger(chart_ID,CHART_COLOR_CANDLE_BULL,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((color)result);
  }
//+----------------------------------------------------------------------------------------------------+
//| Définit la couleur du corps des chandeliers haussiers                                              |
//+----------------------------------------------------------------------------------------------------+
bool ChartBullColorSet(const color clr,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la couleur du corps des chandeliers haussiers
   if(!ChartSetInteger(chart_ID,CHART_COLOR_CANDLE_BULL,clr))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_COLOR_CANDLE_BEAR couleur du corps des chandeliers baissiers.

//+----------------------------------------------------------------------------------------------------+
//| Récupère la couleur du corps des chandeliers baissiers                                             |
//+----------------------------------------------------------------------------------------------------+
color ChartBearColorGet(const long chart_ID=0)
  {
//--- prépare la variable pour recevoir la couleur
   long result=clrNONE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- récupère la couleur du corps des chandeliers baissiers
   if(!ChartGetInteger(chart_ID,CHART_COLOR_CANDLE_BEAR,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((color)result);
  }
//+----------------------------------------------------------------------------------------------------+
//| Définit la couleur du corps des chandeliers baissiers                                              |
//+----------------------------------------------------------------------------------------------------+
bool ChartBearColorSet(const color clr,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la couleur du corps des chandeliers baissiers
   if(!ChartSetInteger(chart_ID,CHART_COLOR_CANDLE_BEAR,clr))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_COLOR_BID couleur de la ligne du prix Bid.

//+----------------------------------------------------------------------------------------------------+
//| Récupère la couleur de la ligne du prix Bid                                                        |
//+----------------------------------------------------------------------------------------------------+
color ChartBidColorGet(const long chart_ID=0)
  {
//--- prépare la variable pour recevoir la couleur
   long result=clrNONE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- récupère la couleur de la ligne du prix Bid
   if(!ChartGetInteger(chart_ID,CHART_COLOR_BID,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((color)result);
  }
//+----------------------------------------------------------------------------------------------------+
//| Définit la couleur de la ligne du prix Bid                                                         |
//+----------------------------------------------------------------------------------------------------+
bool ChartBidColorSet(const color clr,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la couleur de la ligne du prix Bid
   if(!ChartSetInteger(chart_ID,CHART_COLOR_BID,clr))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_COLOR_ASK couleur de la ligne du prix Ask.

//+----------------------------------------------------------------------------------------------------+
//| Récupère la couleur de la ligne du prix Ask                                                        |
//+----------------------------------------------------------------------------------------------------+
color ChartAskColorGet(const long chart_ID=0)
  {
//--- prépare la variable pour recevoir la couleur
   long result=clrNONE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- récupère la couleur de la ligne du prix Ask
   if(!ChartGetInteger(chart_ID,CHART_COLOR_ASK,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((color)result);
  }
//+----------------------------------------------------------------------------------------------------+
//| Définit la couleur de la ligne du prix Ask                                                         |
//+----------------------------------------------------------------------------------------------------+
bool ChartAskColorSet(const color clr,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la couleur de la ligne du prix Ask
   if(!ChartSetInteger(chart_ID,CHART_COLOR_ASK,clr))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_COLOR_LAST couleur de la ligne du prix de la dernière transaction effectuée (Last).

//+----------------------------------------------------------------------------------------------------+
//| Récupère la couleur de la ligne du prix de la dernière transaction effectuée                       |
//+----------------------------------------------------------------------------------------------------+
color ChartLastColorGet(const long chart_ID=0)
  {
//--- prépare la variable pour recevoir la couleur
   long result=clrNONE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- récupère la couleur de la ligne du prix de la dernière transaction effectuée (Last)
   if(!ChartGetInteger(chart_ID,CHART_COLOR_LAST,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((color)result);
  }
//+----------------------------------------------------------------------------------------------------+
//| Définit la couleur de la ligne du prix de la dernière transaction effectuée                        |
//+----------------------------------------------------------------------------------------------------+
bool ChartLastColorSet(const color clr,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la couleur de la ligne du prix de la dernière transaction effectuée (Last)
   if(!ChartSetInteger(chart_ID,CHART_COLOR_LAST,clr))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_COLOR_STOP_LEVEL couleur des niveaux des ordres stop (Stop Loss et Take Profit).

//+----------------------------------------------------------------------------------------------------+
//| Récupère la couleur des niveaux des Stop Loss et Take Profit                                       |
//+----------------------------------------------------------------------------------------------------+
color ChartStopLevelColorGet(const long chart_ID=0)
  {
//--- prépare la variable pour recevoir la couleur
   long result=clrNONE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- récupère la couleur des niveaux des ordres stop (Stop Loss et Take Profit)
   if(!ChartGetInteger(chart_ID,CHART_COLOR_STOP_LEVEL,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return((color)result);
  }
//+----------------------------------------------------------------------------------------------------+
//| Définit la couleur des niveaux des Stop Loss et Take Profit                                        |
//+----------------------------------------------------------------------------------------------------+
bool ChartStopLevelColorSet(const color clr,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la couleur des niveaux des ordres stop (Stop Loss et Take Profit)
   if(!ChartSetInteger(chart_ID,CHART_COLOR_STOP_LEVEL,clr))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_SHOW_TRADE_LEVELS propriété d'affichage des niveaux de trading sur le graphique (niveaux des positions ouvertes, des Stop Loss, Take Profit et des ordres en attente).

//+----------------------------------------------------------------------------------------------------+
//| Vérifie les niveaux de trading sont affichés sur le graphique                                      |
//+----------------------------------------------------------------------------------------------------+
bool ChartShowTradeLevelsGet(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_SHOW_TRADE_LEVELS,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Active/désactive l'affichage des niveaux de trading                                                |
//+----------------------------------------------------------------------------------------------------+
bool ChartShowTradeLevelsSet(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_SHOW_TRADE_LEVELS,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_DRAG_TRADE_LEVELS propriété d'activation de la possiblité de glisser les niveaux de trading sur un graphique avec la souris.

//+------------------------------------------------------------------------------------------------+
//| Vérifie si le glissement des niveaux de trading avec la souris est autorisé                    |
//+------------------------------------------------------------------------------------------------+
bool ChartDragTradeLevelsGet(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_DRAG_TRADE_LEVELS,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Active/désactive le glissement des niveaux de trading sur le graphique en utilisant la souris      |
//+----------------------------------------------------------------------------------------------------+
bool ChartDragTradeLevelsSet(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_DRAG_TRADE_LEVELS,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_SHOW_DATE_SCALE propriété d'affichage de l'échelle du temps sur le graphique.

//+----------------------------------------------------------------------------------------------------+
//| Vérifie si l'échelle du temps est affichée sur le graphique                                        |
//+----------------------------------------------------------------------------------------------------+
bool ChartShowDateScaleGet(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_SHOW_DATE_SCALE,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Active/désactive l'affichage de l'échelle du temps sur le graphique                                |
//+----------------------------------------------------------------------------------------------------+
bool ChartShowDateScaleSet(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_SHOW_DATE_SCALE,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_SHOW_PRICE_SCALE propriété d'affichage de l'échelle des prix sur le graphique.

//+----------------------------------------------------------------------------------------------------+
//| Vérifie si l'échelle des prix est affichée sur le graphique                                        |
//+----------------------------------------------------------------------------------------------------+
bool ChartShowPriceScaleGet(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_SHOW_PRICE_SCALE,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Active/désactive l'affichage de l'échelle des prix sur le graphique                                |
//+----------------------------------------------------------------------------------------------------+
bool ChartShowPriceScaleSet(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_SHOW_PRICE_SCALE,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_SHOW_ONE_CLICK propriété d'affichage du panneau de "Trading En Un Clic" sur le graphique.

//+----------------------------------------------------------------------------------------------------+
//| Vérifie si le panneau de "Trading En Un Clic" est affiché sur le graphique                         |
//+----------------------------------------------------------------------------------------------------+
bool ChartShowOneClickPanelGet(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_SHOW_ONE_CLICK,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique en mémoire
   result=value;
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Active/désactive l'affichage du panneau de "Trading En Un Clic"                                    |
//| sur le graphique                                                                                   |
//+----------------------------------------------------------------------------------------------------+
bool ChartShowOneClickPanelSet(const bool value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetInteger(chart_ID,CHART_SHOW_ONE_CLICK,0,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_SHIFT_SIZE taille du décalage de la barre zéro depuis le bord droit en pourcentage.

//+-------------------------------------------------------------------------+
//| Récupère la taille du décalage de la barre zéro depuis le bord droit    |
//| du graphique en pourcentage (de 10% à 50%)                              |
//+-------------------------------------------------------------------------+
double ChartShiftSizeGet(const long chart_ID=0)
  {
//--- prépare la variable pour récupérer le résultat
   double result=EMPTY_VALUE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetDouble(chart_ID,CHART_SHIFT_SIZE,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return(result);
  }
//+-----------------------------------------------------------------------------------------------------+
//| Récupère la taille du décalage de la barre zéro depuis le bord droit |
//| du graphique en pourcentage (de 10% à 50%). |
//| Pour activer le décalage, la propriété CHART_SHIFT doit être à true. |
//+-----------------------------------------------------------------------------------------------------+
bool ChartShiftSizeSet(const double value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetDouble(chart_ID,CHART_SHIFT_SIZE,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_FIXED_POSITION position fixée du graphique depuis le bord gauche en pourcentage.

//+---------------------------------------------------------------------------------------------------+
//| Récupère la localisation de la position fixée du graphique depuis le bord gauche (en pourcentage) |
//+---------------------------------------------------------------------------------------------------+
double ChartFixedPositionGet(const long chart_ID=0)
  {
//--- prépare la variable pour récupérer le résultat
   double result=EMPTY_VALUE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetDouble(chart_ID,CHART_FIXED_POSITION,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return(result);
  }
//+---------------------------------------------------------------------------------------------------------+
//| Récupère la localisation de la position fixée du graphique depuis le bord gauche (en pourcentage)       |
//| Pour voir la localisation de la position fixée du graphique, la valeur de la propriété CHART_AUTOSCROLL |
//| doit être à false.                                                                                      |
//+---------------------------------------------------------------------------------------------------------+
bool ChartFixedPositionSet(const double value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetDouble(chart_ID,CHART_FIXED_POSITION,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_FIXED_MAX propriété du maximum fixé du graphique.

//+----------------------------------------------------------------------------------------------------+
//| Récupère la valeur du maximum fixé du graphique                                                    |
//+----------------------------------------------------------------------------------------------------+
double ChartFixedMaxGet(const long chart_ID=0)
  {
//--- prépare la variable pour récupérer le résultat
   double result=EMPTY_VALUE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetDouble(chart_ID,CHART_FIXED_MAX,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return(result);
  }
//+----------------------------------------------------------------------------------------------------+
//| Définit la valeur du maximum fixé du graphique.                                                    |
//| Pour changer la valeur de la propriété, la propriété CHART_SCALEFIX                                |
//| doit être à true.                                                                                  |
//+----------------------------------------------------------------------------------------------------+
bool ChartFixedMaxSet(const double value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetDouble(chart_ID,CHART_FIXED_MAX,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_FIXED_MIN propriété du minimum fixé du graphique.

//+----------------------------------------------------------------------------------------------------+
//| Récupère la valeur du minimum fixé du graphique                                                    |
//+----------------------------------------------------------------------------------------------------+
double ChartFixedMinGet(const long chart_ID=0)
  {
//--- prépare la variable pour récupérer le résultat
   double result=EMPTY_VALUE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetDouble(chart_ID,CHART_FIXED_MIN,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return(result);
  }
//+----------------------------------------------------------------------------------------------------+
//| Définit la valeur du minimum fixé du graphique.                                                    |
//| Pour changer la valeur de la propriété, la propriété CHART_SCALEFIX                                |
//| doit être à true.                                                                                  |
//+----------------------------------------------------------------------------------------------------+
bool ChartFixedMinSet(const double value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetDouble(chart_ID,CHART_FIXED_MIN,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_POINTS_PER_BAR valeur de l'échelle en points par barre.

//+----------------------------------------------------------------------------------------------------+
//| Récupère la valeur de l'échelle du graphique en points par barre                                   |
//+----------------------------------------------------------------------------------------------------+
double ChartPointsPerBarGet(const long chart_ID=0)
  {
//--- prépare la variable pour récupérer le résultat
   double result=EMPTY_VALUE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetDouble(chart_ID,CHART_POINTS_PER_BAR,0,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return(result);
  }
//+------------------------------------------------------------------------------------------------+
//| Définit la valeur de l'échelle du graphique en points par barre                                |
//| Pour voir le résultat du changement de valeur de cette propriété, la valeur                    |
//| la propriété CHART_SCALE_PT_PER_BAR doit être à true.                                          |
//+------------------------------------------------------------------------------------------------+
bool ChartPointsPerBarSet(const double value,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetDouble(chart_ID,CHART_POINTS_PER_BAR,value))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_PRICE_MIN retourne la valeur du minimum du graphique.

//+------------------------------------------------------------------------------------------------+
//| Récupère la valeur du minimum du graphique dans la fenêtre principale ou dans une sous-fenêtre |
//+------------------------------------------------------------------------------------------------+
double ChartPriceMin(const long chart_ID=0,const int sub_window=0)
  {
//--- prépare la variable pour récupérer le résultat
   double result=EMPTY_VALUE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetDouble(chart_ID,CHART_PRICE_MIN,sub_window,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return(result);
  }

 

  • CHART_PRICE_MAX retourne la valeur du maximum du graphique.

//+------------------------------------------------------------------------------------------------+
//| Récupère la valeur du maximum du graphique dans la fenêtre principale ou dans une sous-fenêtre |
//+------------------------------------------------------------------------------------------------+
double ChartPriceMax(const long chart_ID=0,const int sub_window=0)
  {
//--- prépare la variable pour récupérer le résultat
   double result=EMPTY_VALUE;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetDouble(chart_ID,CHART_PRICE_MAX,sub_window,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
     }
//--- retourne la valeur de la propriété du graphique
   return(result);
  }

 

  • CHART_COMMENT commentaire sur le graphique.

//+----------------------------------------------------------------------------------------------------+
//| Retourne le commentaire du coin supérieur gauche du graphique                                      |
//+----------------------------------------------------------------------------------------------------+
bool ChartCommentGet(string &result,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- reçoit la valeur de la propriété
   if(!ChartGetString(chart_ID,CHART_COMMENT,result))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Retourne le commentaire du coin supérieur gauche du graphique                                      |
//+----------------------------------------------------------------------------------------------------+
bool ChartCommentSet(const string str,const long chart_ID=0)
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit la valeur de la propriété
   if(!ChartSetString(chart_ID,CHART_COMMENT,str))
     {
      //--- affiche le message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }

 

  • CHART_IS_MAXIMIZED - la fenêtre du graphique est maximisée.

//+------------------------------------------------------------------+
//| Détermine si la fenêtre actuelle du graphique est maximisée      |
//+------------------------------------------------------------------+
bool ChartWindowsIsMaximized(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur de l'erreur
   ResetLastError();
//--- récupère la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_IS_MAXIMIZED))
     {
      //--- affiche un message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique dans la variable
   result=value;
//--- exécution réussie
   return(true);
  }
  

 

  • CHART_IS_MINIMIZED - la fenêtre du graphique est minimisée.

//+------------------------------------------------------------------+
//| Détermine si la fenêtre actuelle du graphique est minimisée      |
//+------------------------------------------------------------------+
bool ChartWindowsIsMinimized(bool &result,const long chart_ID=0)
  {
//--- prépare la variable pour récupérer la valeur de la propriété
   long value;
//--- réinitialise la valeur de l'erreur
   ResetLastError();
//--- récupère la valeur de la propriété
   if(!ChartGetInteger(chart_ID,CHART_IS_MINIMIZED))
     {
      //--- affiche un message d'erreur dans le journal des Experts
      Print(__FUNCTION__+", Code d'Erreur = ",GetLastError());
      return(false);
     }
//--- stocke la valeur de la propriété du graphique dans la variable
   result=value;
//--- exécution réussie
   return(true);
  }
  

 

Panneau des propriétés du graphique

//--- inclut la bibliothèque des éléments de contrôle
#include <ChartObjects\ChartObjectsTxtControls.mqh>
//--- constantes prédéfinies
#define X_PROPERTY_NAME_1    10  // coordonnée x du nom de la propriété dans la première colonne
#define X_PROPERTY_VALUE_1   225 // coordonnée x de la valeur de la propriété dans la première colonne
#define X_PROPERTY_NAME_2    345 // coordonnée x du nom de la propriété dans les deuxième et troisième colonnes
#define X_PROPERTY_VALUE_2   550 // coordonnée x de la valeur de la propriété dans les deuxième et troisième colonnes
#define X_BUTTON_1           285 // coordonnée x du bouton dans la première colonne
#define X_BUTTON_2           700 // coordonnée x du bouton dans la deuxième colonne
#define Y_PROPERTY_1         30  // coordonnée y du début des première et deuxième colonne
#define Y_PROPERTY_2         286 // coordonnée y du début de la troisième colonne
#define Y_DISTANCE           16  // distance axiale y entre les lignes
#define LAST_PROPERTY_NUMBER 111 // numéro de la dernière propriété graphique
//--- paramètres d'entrée
input color InpFirstColor=clrDodgerBlue// Couleur des lignes impaires
input color InpSecondColor=clrGoldenrod// Couleur des lignes paires
//--- variables et tableaux
CChartObjectLabel  ExtLabelsName[];  // étiquettes pour afficher les noms des propriétés
CChartObjectLabel  ExtLabelsValue[]; // étiquettes pour affichers les valeurs des propriétés
CChartObjectButton ExtButtons[];     // boutons
int                ExtNumbers[];     // indices des propriétés
string             ExtNames[];       // nom des propriétés
uchar              ExtDataTypes[];   // type de données des propriétés (integer, double, string)
uint               ExtGroupTypes[];  // tableau pour stocker les données appartenant aux propriétés de l'un des groupes
uchar              ExtDrawTypes[];   // tableau pour stocker les données du type d'affichage des propriétés
double             ExtMaxValue[];    // valeurs maximum possibles des propriétés lors de l'utilisation du panneau
double             ExtMinValue[];    // valeurs minimum possibles des propriétés lors de l'utilisation du panneau
double             ExtStep[];        // pas de changement des propriétés
int                ExtCount;         // nombre total de propriétés
color              ExtColors[2];     // tableau de couleurs pour l'affichage des lignes
string             ExtComments[2];   // tableau de commentaires (pour la propriété CHART_COMMENT)
//+----------------------------------------------------------------------------------------------------+
//| Fonction d'initialisation d'un indicateur personnalisé                                             |
//+----------------------------------------------------------------------------------------------------+
int OnInit()
  {
//--- affichage d'un commentaire sur le graphique
   Comment("SomeComment");
//--- stocke les couleurs dans le tableau pour pouvoir basculer entre elles par la suite
   ExtColors[0]=InpFirstColor;
   ExtColors[1]=InpSecondColor;
//--- stocke les commentaires dans le tableau pour pouvoir basculer entre eux par la suite
   ExtComments[0]="FirstComment";
   ExtComments[1]="SecondComment";
//--- prépare et affiche le panneau de contrôle pour gérer les propriétés du graphique
   if(!PrepareControls())
      return(INIT_FAILED);
//--- exécution réussie
   return(INIT_SUCCEEDED);
  }
//+----------------------------------------------------------------------------------------------------+
//| Fonction de désinitialisation de l'expert                                                          |
//+----------------------------------------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- efface le commentaire sur le graphique
   Comment("");
  }
//+----------------------------------------------------------------------------------------------------+
//| Handler d'un évènement du graphique                                                                |
//+----------------------------------------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- vérifie l'évènement de clic sur l'objet graphique
   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      //--- sépare le nom de l'objet avec un séparateur
      string obj_name[];
      StringSplit(sparam,'_',obj_name);
      //--- vérifie si l'objet est un bouton
      if(obj_name[0]=="Button")
        {
         //--- récupère l'indice du bouton
         int index=(int)StringToInteger(obj_name[1]);
         //--- relâche le bouton
         ExtButtons[index].State(false);
         //--- définit la nouvelle valeur de la propriété suivant son type
         if(ExtDataTypes[index]=='I')
            ChangeIntegerProperty(index);
         if(ExtDataTypes[index]=='D')
            ChangeDoubleProperty(index);
         if(ExtDataTypes[index]=='S')
            ChangeStringProperty(index);
        }
     }
//--- redessine les valeurs de la propriété
   RedrawProperties();
   ChartRedraw();
  }
//+----------------------------------------------------------------------------------------------------+
//| Change une propriété de type integer du graphique                                                  |
//+----------------------------------------------------------------------------------------------------+
void ChangeIntegerProperty(const int index)
  {
//--- récupère la valeur courante de la propriété
   long value=ChartGetInteger(0,(ENUM_CHART_PROPERTY_INTEGER)ExtNumbers[index]);
//--- définit la valeur suivante de la propriété
   switch(ExtDrawTypes[index])
     {
      case 'C':
         value=GetNextColor((color)value);
         break;
      default:
         value=(long)GetNextValue((double)value,index);
         break;
     }
//--- définit la nouvelle valeur de la propriété
   ChartSetInteger(0,(ENUM_CHART_PROPERTY_INTEGER)ExtNumbers[index],0,value);
  }
//+----------------------------------------------------------------------------------------------------+
//| Change une propriété de type double du graphique                                                   |
//+----------------------------------------------------------------------------------------------------+
void ChangeDoubleProperty(const int index)
  {
//--- récupère la valeur courante de la propriété
   double value=ChartGetDouble(0,(ENUM_CHART_PROPERTY_DOUBLE)ExtNumbers[index]);
//--- définit la valeur suivante de la propriété
   value=GetNextValue(value,index);
//--- définit la nouvelle valeur de la propriété
   ChartSetDouble(0,(ENUM_CHART_PROPERTY_DOUBLE)ExtNumbers[index],value);
  }
//+----------------------------------------------------------------------------------------------------+
//| Change une propriété de type string du graphique                                                   |
//+----------------------------------------------------------------------------------------------------+
void ChangeStringProperty(const int index)
  {
//--- variable statique pour basculer dans le tableau ExtComments
   static uint comment_index=1;
//--- change l'indice pour récupérer un autre commentaire
   comment_index=1-comment_index;
//--- définit la nouvelle valeur de la propriété
   ChartSetString(0,(ENUM_CHART_PROPERTY_STRING)ExtNumbers[index],ExtComments[comment_index]);
  }
//+----------------------------------------------------------------------------------------------------+
//| Récupère la valeur de la propriété suivante                                                        |
//+----------------------------------------------------------------------------------------------------+
double GetNextValue(const double value,const int index)
  {
   if(value+ExtStep[index]<=ExtMaxValue[index])
      return(value+ExtStep[index]);
   else
      return(ExtMinValue[index]);
  }
//+----------------------------------------------------------------------------------------------------+
//| Récupère la couleur suivante pour une propriété de type color                                      |
//+----------------------------------------------------------------------------------------------------+
color GetNextColor(const color clr)
  {
//--- retourne la couleur suivante
   switch(clr)
     {
      case clrWhitereturn(clrRed);
      case clrRed:   return(clrGreen);
      case clrGreenreturn(clrBlue);
      case clrBlue:  return(clrBlack);
      default:       return(clrWhite);
     }
  }
//+----------------------------------------------------------------------------------------------------+
//| Redessine les valeurs de la propriété                                                              |
//+----------------------------------------------------------------------------------------------------+
void RedrawProperties(void)
  {
//--- valeur textuelle de la propriété
   string text;
   long   value;
//--- boucle sur les propriétés
   for(int i=0;i<ExtCount;i++)
     {
      text="";
      switch(ExtDataTypes[i])
        {
         case 'I':
            //--- récupère la valeur courante de la propriété
            if(!ChartGetInteger(0,(ENUM_CHART_PROPERTY_INTEGER)ExtNumbers[i],0,value))
            break;
            //--- propriété de type integer
            switch(ExtDrawTypes[i])
              {
               //--- propriété de type color
               case 'C':
                  text=(string)((color)value);
                  break;
                  //--- propriété de type boolean
               case 'B':
                  text=(string)((bool)value);
                  break;
                  //--- propriété de type énumération ENUM_CHART_MODE
               case 'M':
                  text=EnumToString((ENUM_CHART_MODE)value);
                  break;
                  //--- propriété de type énumération ENUM_CHART_VOLUME_MODE
               case 'V':
                  text=EnumToString((ENUM_CHART_VOLUME_MODE)value);
                  break;
                  //--- propriété de type int
               default:
                  text=IntegerToString(value);
                  break;
              }
            break;
         case 'D':
            //--- propriété de type double
            text=DoubleToString(ChartGetDouble(0,(ENUM_CHART_PROPERTY_DOUBLE)ExtNumbers[i]),4);
            break;
         case 'S':
            //--- propriété de type string
            text=ChartGetString(0,(ENUM_CHART_PROPERTY_STRING)ExtNumbers[i]);
            break;
        }
      //--- affiche la valeur de la propriété
      ExtLabelsValue[i].Description(text);
     }
  }
//+----------------------------------------------------------------------------------------------------+
//| Crée le panneau de gestion des propriétés du graphique                                             |
//+----------------------------------------------------------------------------------------------------+
bool PrepareControls(void)
  {
//--- alloue la mémoire pour les tableaux avec une réserve
   MemoryAllocation(LAST_PROPERTY_NUMBER+1);
//--- variables
   int i=0;     // variable de boucle
   int col_1=0; // nombre de propriétés dans la première colonne
   int col_2=0; // nombre de propriétés dans la deuxième colonne
   int col_3=0; // nombre de propriétés dans la troisième colonne
//--- nombre actuel de propriétés - 0
   ExtCount=0;
//--- recherche des propriétés dans la boucle
   while(i<=LAST_PROPERTY_NUMBER)
     {
      //--- stocke le numéro actuel de la propriété
      ExtNumbers[ExtCount]=i;
      //--- augmente la valeur de la variable de boucle
      i++;
      //--- vérifie s'il existe une propriété avec ce numéro
      if(CheckNumber(ExtNumbers[ExtCount],ExtNames[ExtCount],ExtDataTypes[ExtCount],ExtGroupTypes[ExtCount],ExtDrawTypes[ExtCount]))
        {
         //--- crée les éléments de contrôle pour la propriété
         switch(ExtGroupTypes[ExtCount])
           {
            case 1:
               //--- crée les étiquettes et un bouton pour la propriété
               if(!ShowProperty(ExtCount,0,X_PROPERTY_NAME_1,X_PROPERTY_VALUE_1,X_BUTTON_1,Y_PROPERTY_1+col_1*Y_DISTANCE,true))
               return(false);
               //--- le nombre d'éléments dans la première colonne a augmenté
               col_1++;
               break;
            case 2:
               //--- crée les étiquettes et un bouton pour la propriété
               if(!ShowProperty(ExtCount,1,X_PROPERTY_NAME_2,X_PROPERTY_VALUE_2,X_BUTTON_2,Y_PROPERTY_1+col_2*Y_DISTANCE,true))
               return(false);
               //--- le nombre d'éléments dans la deuxième colonne a augmenté
               col_2++;
               break;
            case 3:
               //--- ne crée que les étiquettes pour la propriété
               if(!ShowProperty(ExtCount,2,X_PROPERTY_NAME_2,X_PROPERTY_VALUE_2,0,Y_PROPERTY_2+col_3*Y_DISTANCE,false))
               return(false);
               //--- le nombre d'éléments dans la troisième colonne a augmenté
               col_3++;
               break;
           }
         //--- définit les valeurs maximum et minimum de la propriété et le pas
         GetMaxMinStep(ExtNumbers[ExtCount],ExtMaxValue[ExtCount],ExtMinValue[ExtCount],ExtStep[ExtCount]);
         //--- augmente le nombre de propriétés
         ExtCount++;
        }
     }
//--- libère la mémoire non utilisée par les tableaux
   MemoryAllocation(ExtCount);
//--- redessine les valeurs de la propriété
   RedrawProperties();
   ChartRedraw();
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Alloue la mémoire pour les tableaux                                                                |
//+----------------------------------------------------------------------------------------------------+
void MemoryAllocation(const int size)
  {
   ArrayResize(ExtLabelsName,size);
   ArrayResize(ExtLabelsValue,size);
   ArrayResize(ExtButtons,size);
   ArrayResize(ExtNumbers,size);
   ArrayResize(ExtNames,size);
   ArrayResize(ExtDataTypes,size);
   ArrayResize(ExtGroupTypes,size);
   ArrayResize(ExtDrawTypes,size);
   ArrayResize(ExtMaxValue,size);
   ArrayResize(ExtMinValue,size);
   ArrayResize(ExtStep,size);
  }
//+----------------------------------------------------------------------------------------------------+
//| Vérifie si l'indice de la propriété appartient à l'une des                                         |
//| énumérations ENUM_CHART_PROPERTIES                                                                 |
//+----------------------------------------------------------------------------------------------------+
bool CheckNumber(const int ind,string &name,uchar &data_type,uint &group_type,uchar &draw_type)
  {
//--- vérifie si la propriété est de type integer
   ResetLastError();
   name=EnumToString((ENUM_CHART_PROPERTY_INTEGER)ind);
   if(_LastError==0)
     {
      data_type='I';                      // propriété de l'énumération ENUM_CHART_PROPERTY_INTEGER
      GetTypes(ind,group_type,draw_type); // définit les paramètres d'affichage de la propriété
      return(true);
     }
//--- vérifie si la propriété est de type double
   ResetLastError();
   name=EnumToString((ENUM_CHART_PROPERTY_DOUBLE)ind);
   if(_LastError==0)
     {
      data_type='D';                      // propriété de l'énumération ENUM_CHART_PROPERTY_DOUBLE
      GetTypes(ind,group_type,draw_type); // définit les paramètres d'affichage de la propriété
      return(true);
     }
//--- vérifie si la propriété est de type string
   ResetLastError();
   name=EnumToString((ENUM_CHART_PROPERTY_STRING)ind);
   if(_LastError==0)
     {
      data_type='S';                      // propriété de l'énumération ENUM_CHART_PROPERTY_STRING
      GetTypes(ind,group_type,draw_type); // définit les paramètres d'affichage de la propriété
      return(true);
     }
//--- la propriété n'appartient à aucune énumeration
   return(false);
  }
//+----------------------------------------------------------------------------------------------------+
//| Définit le groupe dans lequel la propriété devrait être stockée,                                   |
//| ainsi que son type d'affichage                                                                     |
//+----------------------------------------------------------------------------------------------------+
void GetTypes(const int property_number,uint &group_type,uchar &draw_type)
  {
//--- vérifie si la propriété appartient au troisième groupe
//--- les propriétés du troisième groupe sont affichées dans la deuxième colonne à partir de CHART_BRING_TO_TOP
   if(CheckThirdGroup(property_number,group_type,draw_type))
      return;
//--- vérifie si la propriété appartient au deuxième groupe
//--- les propriétés du deuxième groupe sont affichées au début de la deuxième colonne
   if(CheckSecondGroup(property_number,group_type,draw_type))
      return;
//--- si vous vous retrouvez ici, la propriété appartient au premier groupe (première colonne)
   CheckFirstGroup(property_number,group_type,draw_type);
  }
//+------------------------------------------------------------------------------------------------+
//| Vérifie si la propriété appartient au troisième groupe et                                      |
//| définit son type d'affichage si c'est le cas                                                   |
//+------------------------------------------------------------------------------------------------+
bool CheckThirdGroup(const int property_number,uint &group_type,uchar &draw_type)
  {
//--- vérifie si la propriété appartient au troisième groupe
   switch(property_number)
     {
      //--- propriétés de type boolean
      case CHART_IS_OBJECT:
      case CHART_WINDOW_IS_VISIBLE:
         draw_type='B';
         break;
         //--- propriétés de type integer
      case CHART_VISIBLE_BARS:
      case CHART_WINDOWS_TOTAL:
      case CHART_WINDOW_HANDLE:
      case CHART_WINDOW_YDISTANCE:
      case CHART_FIRST_VISIBLE_BAR:
      case CHART_WIDTH_IN_BARS:
      case CHART_WIDTH_IN_PIXELS:
         draw_type='I';
         break;
         //--- propriétés de type double
      case CHART_PRICE_MIN:
      case CHART_PRICE_MAX:
         draw_type='D';
         break;
         //--- en fait, cette propriété est une commande pour afficher le graphique par-dessus tous les autres
         //--- il n'y a pas besoin d'appliquer ce panneau, puisque la fenêtre sera toujours
         //--- par-dessus toutes les autres avant qu'on ne l'utilise
      case CHART_BRING_TO_TOP:
         draw_type=' ';
         break;
         //--- la propriété n'appartient pas au troisième groupe
      default:
         return(false);
     }
//--- la propriété appartient au troisième groupe
   group_type=3;
   return(true);
  }
//+------------------------------------------------------------------------------------------------+
//| Vérifie si la propriété appartient au deuxième groupe et                                       |
//| définit son type d'affichage si c'est le cas                                                   |
//+------------------------------------------------------------------------------------------------+
bool CheckSecondGroup(const int property_number,uint &group_type,uchar &draw_type)
  {
//--- vérifie si la propriété appartient au deuxième groupe
   switch(property_number)
     {
      //--- propriété de type ENUM_CHART_MODE
      case CHART_MODE:
         draw_type='M';
         break;
         //--- propriété de type ENUM_CHART_VOLUME_MODE
      case CHART_SHOW_VOLUMES:
         draw_type='V';
         break;
         //--- propriété de type string
      case CHART_COMMENT:
         draw_type='S';
         break;
         //--- propriété de type color
      case CHART_COLOR_BACKGROUND:
      case CHART_COLOR_FOREGROUND:
      case CHART_COLOR_GRID:
      case CHART_COLOR_VOLUME:
      case CHART_COLOR_CHART_UP:
      case CHART_COLOR_CHART_DOWN:
      case CHART_COLOR_CHART_LINE:
      case CHART_COLOR_CANDLE_BULL:
      case CHART_COLOR_CANDLE_BEAR:
      case CHART_COLOR_BID:
      case CHART_COLOR_ASK:
      case CHART_COLOR_LAST:
      case CHART_COLOR_STOP_LEVEL:
         draw_type='C';
         break;
         //--- la propriété n'appartient pas au deuxième groupe
      default:
         return(false);
     }
//--- la propriété appartient au deuxième groupe
   group_type=2;
   return(true);
  }
//+--------------------------------------------------------------------------------------------+
//| Appelé seulement s'il est déjà connu que la propriété n'appartient pas                     |
//| au deuxième ou au troisième groupe de propriétés                                           |
//+--------------------------------------------------------------------------------------------+
void CheckFirstGroup(const int property_number,uint &group_type,uchar &draw_type)
  {
//--- la propriété appartient au premier groupe
   group_type=1;
//--- définit le type d'affichage de la propriété
   switch(property_number)
     {
      //--- propriété de type integer
      case CHART_SCALE:
      case CHART_HEIGHT_IN_PIXELS:
         draw_type='I';
         return;
         //--- propriétés de type double
      case CHART_SHIFT_SIZE:
      case CHART_FIXED_POSITION:
      case CHART_FIXED_MAX:
      case CHART_FIXED_MIN:
      case CHART_POINTS_PER_BAR:
         draw_type='D';
         return;
         //--- il ne reste que les propriétés de type boolean
      default:
         draw_type='B';
         return;
     }
  }
//+----------------------------------------------------------------------------------------------------+
//| Crée l'étiquette et le bouton pour la propriété                                                    |
//+----------------------------------------------------------------------------------------------------+
bool ShowProperty(const int ind,const int type,const int x1,const int x2,
                  const int xb,const int y,const bool btn)
  {
//--- tableau statique pour basculer dans le tableau des couleurs ExtColors
   static uint color_index[3]={1,1,1};
//--- change l'indice pour récupérer une autre couleur
   color_index[type]=1-color_index[type];
//--- affiche les étiquettes et un bouton (si btn=true) pour la propriété
   if(!LabelCreate(ExtLabelsName[ind],"name_"+(string)ind,ExtNames[ind],ExtColors[color_index[type]],x1,y))
      return(false);
   if(!LabelCreate(ExtLabelsValue[ind],"value_"+(string)ind,"",ExtColors[color_index[type]],x2,y))
      return(false);
   if(btn && !ButtonCreate(ExtButtons[ind],(string)ind,xb,y+1))
      return(false);
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Crée l'étiquette                                                                                   |
//+----------------------------------------------------------------------------------------------------+
bool LabelCreate(CChartObjectLabel &lbl,const string name,const string text,
                 const color clr,const int x,const int y)
  {
   if(!lbl.Create(0,"Label_"+name,0,x,y)) return(false);
   if(!lbl.Description(text))             return(false);
   if(!lbl.FontSize(10))                  return(false);
   if(!lbl.Color(clr))                    return(false);
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Crée le bouton                                                                                     |
//+----------------------------------------------------------------------------------------------------+
bool ButtonCreate(CChartObjectButton &btn,const string name,
                  const int x,const int y)
  {
   if(!btn.Create(0,"Button_"+name,0,x,y,50,15)) return(false);
   if(!btn.Description("Suivant"))                  return(false);
   if(!btn.FontSize(10))                         return(false);
   if(!btn.Color(clrBlack))                      return(false);
   if(!btn.BackColor(clrWhite))                  return(false);
   if(!btn.BorderColor(clrBlack))                return(false);
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Définit les valeurs maximum et minimum de la propriété et le pas                                   |
//+----------------------------------------------------------------------------------------------------+
void GetMaxMinStep(const int property_number,double &max,double &min,double &step)
  {
   double value;
//--- définit les valeurs suivant le type de la propriété
   switch(property_number)
     {
      case CHART_SCALE:
         max=5;
         min=0;
         step=1;
         break;
      case CHART_MODE:
      case CHART_SHOW_VOLUMES:
         max=2;
         min=0;
         step=1;
         break;
      case CHART_SHIFT_SIZE:
         max=50;
         min=10;
         step=2.5;
         break;
      case CHART_FIXED_POSITION:
         max=90;
         min=0;
         step=15;
         break;
      case CHART_POINTS_PER_BAR:
         max=19;
         min=1;
         step=3;
         break;
      case CHART_FIXED_MAX:
         value=ChartGetDouble(0,CHART_FIXED_MAX);
         max=value*1.25;
         min=value;
         step=value/32;
         break;
      case CHART_FIXED_MIN:
         value=ChartGetDouble(0,CHART_FIXED_MIN);
         max=value;
         min=value*0.75;
         step=value/32;
         break;
      case CHART_HEIGHT_IN_PIXELS:
         max=700;
         min=520;
         step=30;
         break;
         //--- valeurs par défaut
      default:
         max=1;
         min=0;
         step=1;
     }
  }