OBJ_EVENT

Oggetto Evento.

ObjEvent

Nota

Quando si passa il mouse sopra l'evento, viene visualizzato il testo.

Esempio

Lo script che segue crea e sposta l' oggetto Evento sul chart. Funzioni speciali sono state sviluppate per creare e modificare le proprietà dell'oggetto grafico. È possibile utilizzare queste funzioni "come è" nelle proprie applicazioni.

 

//--- descrizione
#property description "Lo script disegna l'oggetto grafico \"Evento\"."
#property description "La data del punto di ancoraggio è impostata in percentuale dello"
#property description "spessoore in barre della finestra chart."
//--- mostra la finestra dei parametri di input durante il lancio dello script
#property script_show_inputs
//--- parametri di input dello script
input string          InpName="Event";    // Nome evento
input int             InpDate=25;         // Data evento, %
input string          InpText="Text";     // Testo Evento
input color           InpColor=clrRed;    // Colore Evento
input int             InpWidth=1;         // Grandezza del punto quando evidenziato
input bool            InpBack=false;      // Sottofondo evento
input bool            InpSelection=false// Evidenzia movimento
input bool            InpHidden=true;     // Nascosto nella lista oggetti
input long            InpZOrder=0;        // Priorità per il click del mouse
//+--------------------------------------------------------------------------------+
//--- creare l'oggetto Evento sul chart |
//+--------------------------------------------------------------------------------+
bool EventCreate(const long            chart_ID=0,      // ID del chart
                 const string          name="Event",    // nome dell'evento
                 const int             sub_window=0,    // indice sottofinestra
                 const string          text="Text",     // testo dell'evento
                 datetime              time=0,          // orario
                 const color           clr=clrRed,      // colore
                 const int             width=1,         // spessore punto quando evidenziato
                 const bool            back=false,      // in sottofondo
                 const bool            selection=false// evidenzia movimento
                 const bool            hidden=true,     // nascosto nella lista oggetti
                 const long            z_order=0)       // priorità per il click del mouse
  {
//--- se l'orario non è impostato, crea l'oggetto sull'ultima barra
   if(!time)
      time=TimeCurrent();
//--- resetta il valore dell' errore
   ResetLastError();
//--- crea l'oggetto Evento
   if(!ObjectCreate(chart_ID,name,OBJ_EVENT,sub_window,time,0))
     {
      Print(__FUNCTION__,
            ": fallimento nel creare l'oggetto \"Evento\"! Error code = ",GetLastError());
      return(false);
     }
//--- imposta il testo dell'evento
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- imposta il colore
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- imposta lo spessore del punto di ancoraggio se l'oggetto è evidenziato
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- mostra in primo piano (false) o sottofondo (true)
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- abilita (true) o disabilita (false) la modalità di movimento degli eventi da mouse
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- nascondi (true) o mostra (falso) il nome di oggetto grafico nella lista degli oggetti
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- imposta la priorità per ricevere l'evento di un clic del mouse nel grafico
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Cambia il testo dell'oggetto Evento                                            |
//+--------------------------------------------------------------------------------+
bool EventTextChange(const long   chart_ID=0,   // ID del chart
                     const string name="Event"// nome dell'evento
                     const string text="Text")  // testo
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- cambia il testo dell'oggetto
   if(!ObjectSetString(chart_ID,name,OBJPROP_TEXT,text))
     {
      Print(__FUNCTION__,
            ": fallimento nel cambiare il testo! Error code = ",GetLastError());
      return(false);
     }
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Sposta l'oggetto Evento                                                        |
//+--------------------------------------------------------------------------------+
bool EventMove(const long   chart_ID=0,   // ID del chart
               const string name="Event"// nome evento
               datetime     time=0)       // orario
  {
//--- se l'orario non è impostato, sposta l'evento sull'ultima barra
   if(!time)
      time=TimeCurrent();
//--- resetta il valore dell' errore
   ResetLastError();
//--- sposta l'oggetto
   if(!ObjectMove(chart_ID,name,0,time,0))
     {
      Print(__FUNCTION__,
            ": fallimento nello spostare l'oggetto \"Evento\"! Error code = ",GetLastError());
      return(false);
     }
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Elimina l'oggetto Evento                                                       |
//+--------------------------------------------------------------------------------+
bool EventDelete(const long   chart_ID=0,   // ID del chart
                 const string name="Event"// nome evento
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- elimina l'oggetto
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": fallimento nell'eliminare l'oggetto \"Evento\"! Error code = ",GetLastError());
      return(false);
     }
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Funzione di avvio del programma Script                                         |
//+--------------------------------------------------------------------------------+
voidOnStart()
  {
//--- imposta la correttezza dei parametri di input
   if(InpDate<0 || InpDate>100)
     {
      Print("Error! Valori non corretti dei parametri di input!");
      return;
     }
//--- Numero di barre visibili nella finestra del chart
   int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- array per memorizzare i valori data che devono essere usati
//--- per impostare e cambiare i punti di ancoraggio degli oggetti Evento
   datetime date[];
//--- allocazione della memoria
   ArrayResize(date,bars);
//--- riempie l'array delle date
   ResetLastError();
   if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
     {
      Print("Fallimento nella copia dei valori tempo! Error code = ",GetLastError());
      return;
     }
//--- definisce i punti per creare un'oggetto
   int d=InpDate*(bars-1)/100;
//--- crea l'oggetto Evento
   if(!EventCreate(0,InpName,0,InpText,date[d],InpColor,InpWidth,
      InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- redisegna il chart ed attende per 1 secondo
   ChartRedraw();
   Sleep(1000);
//--- ora, sposta l'oggetto
//---contatore del ciclo
   int h_steps=bars/2;
//--- sposta l'oggetto
   for(int i=0;i<h_steps;i++)
     {
      //--- usa il seguente valore
      if(d<bars-1)
         d+=1;
      //--- sposta il punto
      if(!EventMove(0,InpName,date[d]))
         return;
      //--- controlla se l'operazione dello script è stata disabilitata per forza
      if(IsStopped())
         return;
      //--- ridisegna il chart
      ChartRedraw();
      // 0.05 secondi di ritardo
      Sleep(50);
     }
//--- 1 secondo di ritardo
   Sleep(1000);
//--- elimina il canale dal chart
   EventDelete(0,InpName);
   ChartRedraw();
//--- 1 secondo di ritardo
   Sleep(1000);
//---
  }