OBJ_CHART

Objet Graphique.

ObjChart

Note

L'objet de type "OBJ_CHART" n'est pas supporté (non affiché) lors d'un test visuel.

Les coordonnées du point d'ancrage sont définies en pixels. Vous pouvez sélectionner le coin d'ancrage avec l'énumération ENUM_BASE_CORNER.

Le symbole, la période et l'échelle peuvent être sélectionnés pour l'objet Graphique. Les modes d'affichage des échelles des prix et des dates peuvent également être activés/désactivés.

Exemple

Le script suivant crée et déplace l'objet Graphique sur le graphique. Des fonctions spéciales ont été développées pour créer et modifier les propriétés de l'objet graphique. Vous pouvez utiliser ces fonctions "telles quelles" dans vos propres applications.

 

//--- description
#property description "Le script crée un objet \"Graphique\"."
//--- affichage de la fenêtre des paramètres d'entrée lors du lancement du script
#property script_show_inputs
//--- paramètres d'entrée du script
input string           InpName="Chart";             // nom de l'objet
input string           InpSymbol="EURUSD";          // Symbole
input ENUM_TIMEFRAMES  InpPeriod=PERIOD_H1;         // Période
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER// Coin d'ancrage
input int              InpScale=2;                  //Echelle
input bool             InpDateScale=true;           // Affichage de l'échelle des heures
input bool             InpPriceScale=true;          // Affichage de l'échelle des prix
input color            InpColor=clrRed;             // Couleur de la bordure au moment de la surbrillance
input ENUM_LINE_STYLE  InpStyle=STYLE_DASHDOTDOT;   // Style de ligne lors qu'il est mis en surbrillance
input int              InpPointWidth=1;             // Taille du point pour le déplacement
input bool             InpBack=false;               // Objet en arrière-plan
input bool             InpSelection=true;           // Mise en surbrillance pour déplacer
input bool             InpHidden=true;              // Caché dans la liste des objets
input long             InpZOrder=0;                 // Priorité du clic de souris
//+----------------------------------------------------------------------------------------------------+
//| Création de l'objet Graphique                                                                      |
//+----------------------------------------------------------------------------------------------------+
bool ObjectChartCreate(const long              chart_ID=0,               // identifiant du graphique
                       const string            name="Chart",             // nom de l'objet
                       const int               sub_window=0,             // indice de la sous-fenêtre
                       const string            symbol="EURUSD",          // symbole
                       const ENUM_TIMEFRAMES   period=PERIOD_H1,         // période
                       const int               x=0,                      // coordonnée X
                       const int               y=0,                      // coordonnée Y
                       const int               width=300,                // largeur
                       const int               height=200,               // hauteur
                       const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER// coin d'ancrage
                       const int               scale=2,                  // échelle
                       const bool              date_scale=true,          // Affichage de l'échelle des heures
                       const bool              price_scale=true,         // Affichage de l'échelle des prix
                       const color             clr=clrRed,               // couleur de la bordure en surbrillance
                       const ENUM_LINE_STYLE   style=STYLE_SOLID,        // Style de trait en surbrillance
                       const int               point_width=1,            // déplace la taille du point
                       const bool              back=false,               // en arrière-plan
                       const bool              selection=false,          // mise en surbrillance pour déplacer
                       const bool              hidden=true,              // caché dans la liste des objets
                       const long              z_order=0)                // priorité du clic de souris
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- crée l'objet Graphique
   if(!ObjectCreate(chart_ID,name,OBJ_CHART,sub_window,0,0))
     {
      Print(__FUNCTION__,
            " : échec de création del'objet \"Graphique\" ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- définit les coordonnées de l'objet
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- définit la taille de l'objet
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- définit le coin du graphique, relativement auquel les coordonnées du point sont définies
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- définit le symbole
   ObjectSetString(chart_ID,name,OBJPROP_SYMBOL,symbol);
//--- définit la période
   ObjectSetInteger(chart_ID,name,OBJPROP_PERIOD,period);
//--- définit l'échelle
   ObjectSetInteger(chart_ID,name,OBJPROP_CHART_SCALE,scale);
//--- affiche (true) ou cache (false) l'échelle des heures
   ObjectSetInteger(chart_ID,name,OBJPROP_DATE_SCALE,date_scale);
//--- affiche (true) ou cache (false) l'échelle des prix
   ObjectSetInteger(chart_ID,name,OBJPROP_PRICE_SCALE,price_scale);
//--- définit la couleur de la bordure lorsque le mode de mise en surbrillance de l'objet est activé
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- définit le style de ligne de la bordure lorsque le mode de mise en surbrillance de l'objet est activé
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- définit la taille du point d'ancrage pour déplacer un objet
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_width);
//--- affiche en premier plan (false) ou en arrière-plan (true)
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- active (true) ou désactive (false) le mode de déplacement de l'étiquette par la souris
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- masque (true) ou affiche (false) le nom de l'objet graphique dans la liste des objets
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- définit la priorité pour recevoir l'événement d'un clic de souris dans le graphique
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Définit le symbole et la période de l'objet Graphique                                              |
//+----------------------------------------------------------------------------------------------------+
bool ObjectChartSetSymbolAndPeriod(const long            chart_ID=0,       // identifiant du graphique (not Chart object's one)
                                   const string          name="Chart",     // nom de l'objet
                                   const string          symbol="EURUSD",  // symbole
                                   const ENUM_TIMEFRAMES period=PERIOD_H1// période
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- définit le symbole et la période de l'objet Graphique
   if(!ObjectSetString(chart_ID,name,OBJPROP_SYMBOL,symbol))
     {
      Print(__FUNCTION__,
            " : échec de sélection du symbole pour l'objet \"Graphique\" ! Code d'erreur = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_PERIOD,période))
     {
      Print(__FUNCTION__,
            ": échec de sélection de la période pour l'objet \"Graphique\" ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Déplace l'objet Graphique                                                                          |
//+----------------------------------------------------------------------------------------------------+
bool ObjectChartMove(const long   chart_ID=0,   // identifiant du graphique (not Chart object's one)
                     const string name="Chart"// nom de l'objet
                     const int    x=0,          // Coordonnée X
                     const int    y=0)          // Coordonnée Y
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- déplace l'objet
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            " : échec du déplacement de la coordonnée X de l'objet \"Graphique\" ! Code d'erreur = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            " : échec du déplacement de la coordonnée Y de l'objet \"Graphique\" ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Change la taille de l'objet Graphique                                                              |
//+----------------------------------------------------------------------------------------------------+
bool ObjectChartChangeSize(const long   chart_ID=0,   // identifiant du graphique (not Chart object's one)
                           const string name="Chart"// nom de l'objet
                           const int    width=300,    // largeur
                           const int    height=200)   // hauteur
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- modifie la taille de l'objet
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            " : échec du changement de largeur de l'objet \"Graphique\" ! Code d'erreur = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            " : échec du changement de hauteur de l'objet \"Graphique\" ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Retourne l'identifiant de l'objet Graphique                                                        |
//+----------------------------------------------------------------------------------------------------+
long ObjectChartGetID(const long   chart_ID=0,   // identifiant du graphique (not Chart object's one)
                      const string name="Chart"// nom de l'objet
  {
//--- prépare la variable pour récupérer l'identifiant de l'objet Graphique
   long id=-1;
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- récupère l'identifiant
   if(!ObjectGetInteger(chart_ID,name,OBJPROP_CHART_ID,0,id))
     {
      Print(__FUNCTION__,
            " : échec de récupération de l'identifiant de l'objet \"Graphique\" ! Code d'erreur = ",GetLastError());
     }
//--- retourne le résultat
   return(id);
  }
//+----------------------------------------------------------------------------------------------------+
//| Supprime l'objet Graphique                                                                         |
//+----------------------------------------------------------------------------------------------------+
bool ObjectChartDelete(const long   chart_ID=0,   // identifiant du graphique (not Chart object's one)
                       const string name="Chart"// nom de l'objet
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- supprime le bouton
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            " : échec de la suppression de l'objet \"Graphique\" ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Fonction de démarrage du script                                                                    |
//+----------------------------------------------------------------------------------------------------+
void OnStart()
  {
//--- récupère le nombre de symboles dans le Market Watch
   int  symbols=SymbolsTotal(true);
//--- vérife si le symbole ayant le nom spécifié est présent dans la liste des symboles
   bool exist=false;
   for(int i=0;i<symbols;i++)
      if(InpSymbol==SymbolName(i,true))
        {
         exist=true;
         break;
        }
   if(!exist)
     {
      Print("Erreur ! Le symbole ",InpSymbol," n'existe pas dans le \"Market Watch\" !");
      return;
     }
//--- vérifie la validité des paramètres d'entrée
   if(InpScale<0 || InpScale>5)
     {
      Print("Erreur ! Valeurs incorrectes des paramètres d'entrée !");
      return;
     }
 
//--- taille de la fenêtre du graphique
   long x_distance;
   long y_distance;
//--- définit la taille de la fenêtre
   if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
     {
      Print("Impossible d'obtenir la largeur du graphique ! Code d'erreur = ",GetLastError());
      return;
     }
   if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
     {
      Print("Impossible d'obtenir la hauteur du graphique ! Code d'erreur = ",GetLastError());
      return;
     }
//--- définit les coordonnées et la taille de l'objet Graphique
   int x=(int)x_distance/16;
   int y=(int)y_distance/16;
   int x_size=(int)x_distance*7/16;
   int y_size=(int)y_distance*7/16;
//--- crée l'objet Graphique
   if(!ObjectChartCreate(0,InpName,0,InpSymbol,InpPeriod,x,y,x_size,y_size,InpCorner,InpScale,InpDateScale,
      InpPriceScale,InpColor,InpStyle,InpPointWidth,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- redéssine le graphique et attend 1 seconde
   ChartRedraw();
   Sleep(1000);
//--- élargit l'objet Graphique
   int steps=(int)MathMin(x_distance*7/16,y_distance*7/16);
   for(int i=0;i<steps;i++)
     {
      //--- redimmensionnement
      x_size+=1;
      y_size+=1;
      if(!ObjectChartChangeSize(0,InpName,x_size,y_size))
         return;
      //--- vérifie si l'exécution du script a été stoppée
      if(IsStopped())
         return;
      //--- redessine le graphique et attend 0.01 seconde
      ChartRedraw();
      Sleep(10);
     }
//--- délai d'une demie seconde
   Sleep(500);
//--- change la période du graphique
   if(!ObjectChartSetSymbolAndPeriod(0,InpName,InpSymbol,PERIOD_M1))
      return;
   ChartRedraw();
//--- trois secondes de délai
   Sleep(3000);
//--- supprime l'objet
   ObjectChartDelete(0,InpName);
   ChartRedraw();
//--- attente d'1 seconde
   Sleep(1000);
//---
  }