OBJ_EVENT

Objet évènement.

ObjEvent

Note

Lorsque la souris passe au-dessus de l'évènement, son texte apparaît.

Exemple

Le script suivant crée et déplace l'objet Evènement 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 dessine un objet graphique \"Evènement\"."
#property description "Le point d'ancrage de la date est défini en pourcentage de"
#property description "la largeur de la fenêtre du graphique en barres."
//--- 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="Event";    // Nom de l'évènement
input int             InpDate=25;         // Date de l'évènement, %
input string          InpText="Text";     // Texte de l'évènement
input color           InpColor=clrRed;    // Couleur de l'évènement
input int             InpWidth=1;         // Taille du point pour le déplacement
input bool            InpBack=false;      // Evènement en arrière plan
input bool            InpSelection=false// mise en surbrillance pour le déplacement
input bool            InpHidden=true;     // caché dans la liste des objets
input long            InpZOrder=0;        // priorité pour le clic de souris
//+----------------------------------------------------------------------------------------------------+
//| Crée l'objet Evènement sur le graphique                                                            |
//+----------------------------------------------------------------------------------------------------+
bool EventCreate(const long            chart_ID=0,      // identifiant du graphique
                 const string          name="Event",    // nom de l'évènement
                 const int             sub_window=0,    // indice de sous-fenêtre
                 const string          text="Text",     // texte de l'évènement
                 datetime              time=0,          // heure
                 const color           clr=clrRed,      // couleur
                 const int             width=1,         // largeur du point lors de la mise en surbrillance
                 const bool            back=false,      // en arrière plan
                 const bool            selection=false// mise en surbrillance pour le déplacement
                 const bool            hidden=true,     // caché dans la liste des objets
                 const long            z_order=0)       // priorité pour le clic de souris
  {
//--- si l'heure n'est pas définie, crée l'objet sur la dernière barre
   if(!time)
      time=TimeCurrent();
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- crée l'objet Evènement
   if(!ObjectCreate(chart_ID,name,OBJ_EVENT,sub_window,time,0))
     {
      Print(__FUNCTION__,
            " : échec de création de l'objet \"Evènement\" ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- définit le texte de l'évènement
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- définit la couleur
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- définit la largeur du point d'ancrage si l'objet est mis en surbrillance
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,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'évènement à 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);
  }
//+----------------------------------------------------------------------------------------------------+
//| Change le texte de l'objet Evènement                                                               |
//+----------------------------------------------------------------------------------------------------+
bool EventTextChange(const long   chart_ID=0,   // identifiant du graphique
                     const string name="Event"// nom de l'évènement
                     const string text="Text")  // texte
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- modifie le texte de l'objet
   if(!ObjectSetString(chart_ID,name,OBJPROP_TEXT,text))
     {
      Print(__FUNCTION__,
            " : impossible de modifier le texte ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Déplace l'objet Evènement                                                                          |
//+----------------------------------------------------------------------------------------------------+
bool EventMove(const long   chart_ID=0,   // identifiant du graphique
               const string name="Event"// nom de l'évènement
               datetime     time=0)       // heure
  {
//--- si l'heure n'est pas définie, déplace l'évènement sur la dernière barre
   if(!time)
      time=TimeCurrent();
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- déplace l'objet
   if(!ObjectMove(chart_ID,name,0,time,0))
     {
      Print(__FUNCTION__,
            " : échec du déplacement de l'objet \"Evènement\" ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Supprime l'objet Evènement                                                                         |
//+----------------------------------------------------------------------------------------------------+
bool EventDelete(const long   chart_ID=0,   // identifiant du graphique
                 const string name="Event"// nom de l'évènement
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- supprime l'objet
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            " : échec de suppression de l'objet \"Evènement\" ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Fonction de démarrage du script                                                                    |
//+----------------------------------------------------------------------------------------------------+
void OnStart()
  {
//--- vérifie l'exactitude des paramètres d'entrée
   if(InpDate<0 || InpDate>100)
     {
      Print("Erreur ! Valeurs incorrectes des paramètres d'entrée !");
      return;
     }
//--- nombre de barres visibles dans la fenêtre du graphique
   int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tableau pour stocker les valeurs de date à utiliser
//--- pour définir et changer les coordonnées des points d'ancrage de l'objet Evènement
   datetime date[];
//--- allocation mémoire
   ArrayResize(date,bars);
//--- remplit le tableau de dates
   ResetLastError();
   if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
     {
      Print("N'a pas réussi à copier les valeurs de l'heure ! Code d'erreur = ",GetLastError());
      return;
     }
//--- définit les points pour créer un objet
   int d=InpDate*(bars-1)/100;
//--- crée l'objet Evènement
   if(!EventCreate(0,InpName,0,InpText,date[d],InpColor,InpWidth,
      InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- redéssine le graphique et attend 1 seconde
   ChartRedraw();
   Sleep(1000);
//--- déplace maintenant l'objet
//--- compteur de boucle
   int h_steps=bars/2;
//--- déplace l'objet
   for(int i=0;i<h_steps;i++)
     {
      //--- utilise la valeur suivante
      if(d<bars-1)
         d+=1;
      //--- déplace le point
      if(!EventMove(0,InpName,date[d]))
         return;
      //--- vérifie si l'exécution du script a été stoppée
      if(IsStopped())
         return;
      //--- redessine le graphique
      ChartRedraw();
      // délai de 0,05 secondes
      Sleep(50);
     }
//--- délai de 1 seconde
   Sleep(1000);
//--- supprime le canal du graphique
   EventDelete(0,InpName);
   ChartRedraw();
//--- délai de 1 seconde
   Sleep(1000);
//---
  }