Proprietà degli oggetti

Gli oggetti grafici possono avere diverse proprietà in base al tipo di oggetto. I valori delle proprietà degli oggetti vengono impostati e ricevuti tramite la funzione corrispondente per lavorare con gli oggetti grafici.

Tutti gli oggetti utilizzati in analisi tecnica sono legati alle coordinate di tempo e prezzo: trendline, canali, gli strumenti di Fibonacci,etc. Ma c'è una serie di oggetti ausiliari destinati a migliorare l'interfaccia utente che sono legati alla parte sempre visibile di un grafico (finestre principali dei grafici o sottofinestre degli indicatori):

Oggetto

ID

X/Y

Larghezza/Altezza

Data/Prezzo

OBJPROP_CORNER

OBJPROP_ANCHOR

OBJPROP_ANGLE

Text

OBJ_TEXT

Si

Si

Si

Label

OBJ_LABEL

Si

Si (solo lettura)

Si

Si

Si

Button

OBJ_BUTTON

Si

Si

Si

Bitmap

OBJ_BITMAP

Si (solo lettura)

Si

Si

Bitmap Label

OBJ_BITMAP_LABEL

Si

Si (solo lettura)

Si

Si

Edit

OBJ_EDIT

Si

Si

Si

Rectangle Label

OBJ_RECTANGLE_LABEL

Si

Si

Si

Nella tabella vengono utilizzate le seguenti designazioni:

  • X/Y — le coordinate specificate dei punti di ancoraggio relative ad un angolo del grafico;
  • Larghezza/Altezza — gli oggetti hanno larghezza e altezza. Per "sola lettura", i valori di larghezza e altezza vengono calcolati solo dopo che l'oggetto è rappresentato sul grafico;
  • Data/Prezzo — le coordinate del punto di ancoraggio sono specificate utilizzando i valori di data e prezzo;
  • OBJPROP_CORNER — definisce l'angolo del grafico in base al quale sono specificate le coordinate del punto di ancoraggio. Può essere uno dei 4 valori dell'enumerazione ENUM_BASE_CORNER;
  • OBJPROP_ANCHOR — definisce il punto di ancoraggio dell'oggetto stesso e può essere uno dei 9 valori dell'enumerazione ENUM_ANCHOR_POINT. Le coordinate in pixel sono specificate da questo punto all'angolo del grafico selezionato;
  • OBJPROP_ANGLE — definisce l'angolo di rotazione dell'oggetto in senso antiorario.

Le funzioni che definiscono le proprietà degli oggetti grafici, nonché le operazioni ObjectCreate() e ObjectMove() per creare e spostare gli oggetti lungo il chart vengono effettivamente utilizzate per l'invio di comandi al chart. Se queste funzioni vengono eseguite correttamente, il comando viene incluso nella coda comune degli eventi chart. Alterazioni visive nelle proprietà degli oggetti grafici vengono implementate quando si maneggia la coda degli eventi del grafico.

Quindi, non aspettatevi un aggiornamento visivo immediato di oggetti grafici dopo la chiamata di queste funzioni. In generale, gli oggetti grafici sul chart vengono aggiornati automaticamente dal terminale in seguito agli eventi di cambiamento - un nuovo arrivo di quotazione, il ridimensionamento della finestra chart, ecc. Usare la funzione ChartRedraw() per aggiornare con forza gli oggetti grafici.

Per le funzioni ObjectSetInteger() ed ObjectGetInteger()

ENUM_OBJECT_PROPERTY_INTEGER

Identificatore

Descrizione

Tipo di proprietà

OBJPROP_COLOR

Color

color

OBJPROP_STYLE

Style

ENUM_LINE_STYLE

OBJPROP_WIDTH

Spessore della linea

int

OBJPROP_BACK

Oggetto sullo sfondo

bool

OBJPROP_ZORDER

La priorità di un oggetto grafico per la ricezione degli eventi cliccando su un grafico (CHARTEVENT_CLICK). Il valore zero predefinito viene impostato durante la creazione di un oggetto; la priorità può essere aumentata se necessario. Quando si applica uno degli oggetti su un altro, solo uno di essi con la priorità più alta riceverà l'evento CHARTEVENT_CLICK.

long

OBJPROP_FILL

Riempire un oggetto con il colore (per OBJ_RECTANGLE, OBJ_TRIANGLE, OBJ_ELLIPSE, OBJ_CHANNEL, OBJ_STDDEVCHANNEL, OBJ_REGRESSION)

bool

OBJPROP_HIDDEN

Proibire mostrando il nome di un oggetto grafico all'interno della lista degli oggetti dal menu del terminale "Grafici" - "Oggetti" - "Lista degli Oggetti". Il valore true consente di nascondere un oggetto dalla lista. Per impostazione predefinita, true è impostato per gli oggetti che visualizzano gli eventi del calendario, la storia di trading ed agli oggetti creati da programmi MQL5. Per vedere tali oggetti grafici e accedere alle loro proprietà, fare clic sul pulsante "Tutti" nella finestra "Lista degli oggetti".

bool

OBJPROP_SELECTED

L'oggetto è selezionato

bool

OBJPROP_READONLY

Possibilità di modificare il testo nell' oggetto Edit

bool

OBJPROP_TYPE

Tipo di oggetto

ENUM_OBJECT   r/o

OBJPROP_TIME

Coordinate temporali

modificatore datetime=numero punto di ancoraggio

OBJPROP_SELECTABLE

Disponibilità oggetto

bool

OBJPROP_CREATETIME

Orario di creazione di oggetti

datetime    r/o

OBJPROP_LEVELS

Numero di livelli

int

OBJPROP_LEVELCOLOR

Colore del livello-linea

color modifier=numero del livello

OBJPROP_LEVELSTYLE

Stile della linea-di-livello

ENUM_LINE_STYLE modifier=numero di livello

OBJPROP_LEVELWIDTH

Spessore della linea-di-livello

int      modifier=numero di livello

OBJPROP_ALIGN

Allineamento orizzontale del testo nell'oggetto "Edit" (OBJ_EDIT)

ENUM_ALIGN_MODE

OBJPROP_FONTSIZE

Dimensione carattere

int

OBJPROP_RAY_LEFT

Il raggio va a sinistra

bool

OBJPROP_RAY_RIGHT

Il raggio va a destra

bool

OBJPROP_RAY

Una linea verticale passa attraverso tutte le finestre di un grafico

bool

OBJPROP_ELLIPSE

Mostra l'ellisse completa dell'oggetto Arco di Fibonacci (OBJ_FIBOARC)

bool

OBJPROP_ARROWCODE

Codice per l'oggetto Freccia

uchar

OBJPROP_TIMEFRAMES

La visibilità di un oggetto al timeframes

impostazione dei flagsflags

OBJPROP_ANCHOR

Posizione del punto di ancoraggio di un oggetto grafico

ENUM_ARROW_ANCHOR (for OBJ_ARROW),

ENUM_ANCHOR_POINT (for OBJ_LABEL, OBJ_BITMAP_LABEL and OBJ_TEXT)

OBJPROP_XDISTANCE

La distanza in pixel lungo l'asse X dal angolo vincolante (see note)

int

OBJPROP_YDISTANCE

La distanza in pixel lungo l'asse Y dall'angolo vincolante (see note)

int

OBJPROP_DIRECTION

Trend dell'oggetto Gann

ENUM_GANN_DIRECTION

OBJPROP_DEGREE

Livello di Elliott Wave Marcatura

ENUM_ELLIOT_WAVE_DEGREE

OBJPROP_DRAWLINES

Visualizzazione righe per creare la Elliott Wave

bool

OBJPROP_STATE

Status del Bottone (premuto/non premuto)

bool

OBJPROP_CHART_ID

ID dell'oggetto "Chart" (OBJ_CHART). Esso permette di lavorare con le proprietà di questo oggetto, come con un chart normale utilizzando le funzioni descritte in Operazioni Chart, ma ci sono delle eccezioni.

long   r/o

OBJPROP_XSIZE

Larghezza dell'oggetto lungo l'asse X in pixel. Specificato per oggetti OBJ_LABEL (solo lettura), OBJ_BUTTON, OBJ_CHART, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL.

int

OBJPROP_YSIZE

L'altezza dell'oggetto lungo l'asse Y in pixel. Specificato per oggetti OBJ_LABEL (solo lettura), OBJ_BUTTON, OBJ_CHART, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL.

int

OBJPROP_XOFFSET

La coordinata X dell'angolo superiore sinistro della area visibile rettangolare negli oggetti grafici "Label Bitmap" e "Bitmap" (OBJ_BITMAP_LABEL e OBJ_BITMAP). Il valore è impostato in pixel rispetto all'angolo superiore sinistro dell'immagine originale.

int

OBJPROP_YOFFSET

La coordinata Y dell'angolo superiore sinistro dell' area visibile rettangolare negli oggetti grafici "Label Bitmap" e "Bitmap" (OBJ_BITMAP_LABEL e OBJ_BITMAP). Il valore è impostato in pixel rispetto all'angolo superiore sinistro dell'immagine originale.

int

OBJPROP_PERIOD

Timeframe per l'oggetto del Chart

ENUM_TIMEFRAMES

OBJPROP_DATE_SCALE

Visualizzazione della scala temporale per l'oggetto Chart

bool

OBJPROP_PRICE_SCALE

Visualizzazione della scala di prezzo per l'oggetto Chart

bool

OBJPROP_CHART_SCALE

La scala per l'oggetto Chart

int   value in the range 0–5

OBJPROP_BGCOLOR

Il colore di sfondo per OBJ_EDIT, OBJ_BUTTON, OBJ_RECTANGLE_LABEL

color

OBJPROP_CORNER

L'angolo del chart per collegare un oggetto grafico

ENUM_BASE_CORNER

OBJPROP_BORDER_TYPE

Tipo di bordo per l'oggetto "label Rectangle"

ENUM_BORDER_TYPE

OBJPROP_BORDER_COLOR

Colore del bordo per gli oggetti OBJ_EDIT e OBJ_BUTTON

color

Quando si utilizzano operazioni del chart per l'oggetto "Chart" (OBJ_CHART), vengono inflitte le seguenti limitazioni:

 

È possibile impostare una modalità speciale di visualizzazione dell'immagine per gli oggetti OBJ_BITMAP_LABEL e OBJ_BITMAP. In questa modalità, viene visualizzata solo una parte dell'immagine originale (a cui è applicata una zona visibile rettangolare), mentre il resto dell'immagine diventa invisibile. La grandezza di questa area dovrebbe essere impostata utilizzando le proprietà OBJPROP_XSIZE e OBJPROP_YSIZE. L'area visibile può essere "spostata" solo all'interno l'immagine originale utilizzando le proprietà OBJPROP_XOFFSET e OBJPROP_YOFFSET.

 

For the fixed-sized objects: OBJ_BUTTON, OBJ_RECTANGLE_LABEL, OBJ_EDIT and OBJ_CHART properties OBJPROP_XDISTANCE and OBJPROP_YDISTANCE set the position of the top left point of the object relative to the chart corner (OBJPROP_CORNER), from which the X and Y coordinates will be counted in pixels.

 

Per le funzioni ObjectSetDouble() e ObjectGetDouble()

ENUM_OBJECT_PROPERTY_DOUBLE

Identificatore

Descrizione

Tipo di proprietà

OBJPROP_PRICE

Coordinate Prezzo

double    modifier=numero di punti di ancoraggio

OBJPROP_LEVELVALUE

Valore del livello

double    modifier=numero livello

OBJPROP_SCALE

Scala (proprietà degli oggetti di Gann e Fibonacci Arcs)

double

OBJPROP_ANGLE

Angolo. Per gli oggetti con nessun angolo specificato, creato da un programma, il valore è pari a EMPTY_VALUE

double

OBJPROP_DEVIATION

Deviazione per il Canale di Deviazione Standard

double

 

Per le funzioni ObjectSetString() e ObjectGetString()

ENUM_OBJECT_PROPERTY_STRING

Identificatore

Descrizione

Tipo di proprietà

OBJPROP_NAME

Nome oggetto

string

OBJPROP_TEXT

Descrizione dell'oggetto (il testo contenuto nell'oggetto)

string

OBJPROP_TOOLTIP

Il testo del tooltip. Se la proprietà non è impostata, allora viene visualizzato il tooltip generato automaticamente dal terminale. Un tooltip può essere disabilitato impostando il valore "\n" (line feed) ad esso

string

OBJPROP_LEVELTEXT

Descrizione del Livello

string    modifier=numero livello

OBJPROP_FONT

Font

string

OBJPROP_BMPFILE

Il nome del file-BMPper Bitmap Label. Vedi anche Risorse

string    modifier: 0-state ON, 1-state OFF

OBJPROP_SYMBOL

Simbolo per l'oggetto Chart

string

 

Per l' Oggetto OBJ_RECTANGLE_LABEL ("Label Rettangolo") può essere impostata una delle tre modalità di design, a cui i seguenti valori di ENUM_BORDER_TYPE corrispondono.

ENUM_BORDER_TYPE

Identificatore

Descrizione

BORDER_FLAT

Forma piatta

BORDER_RAISED

Forma sporgente

BORDER_SUNKEN

Forma concava

 

Per l'oggetto OBJ_EDIT ("Modifica") e per la funzione ChartScreenShot(), è possibile specificare il tipo di allineamento orizzontale utilizzando i valori dell'enumerazione ENUM_ALIGN_MODE.

ENUM_ALIGN_MODE

Identificatore

Descrizione

ALIGN_LEFT

L'allineamento a sinistra

ALIGN_CENTER

Centrato (solo per l'oggetto Edit)

ALIGN_RIGHT

Allineamento a destra

Esempio:

#define  UP          "\x0431"
//+--------------------------------------------------------------------------------+
//| Funzione di avvio del programma Script                                         |
//+--------------------------------------------------------------------------------+
voidOnStart()
  {
//---
   string label_name="my_OBJ_LABEL_object";
   if(ObjectFind(0,label_name)<0)
     {
      Print("Oggetto",label_name," non trovato. Error code = ",GetLastError());
      //--- crea oggetto Label
      ObjectCreate(0,label_name,OBJ_LABEL,0,0,0);           
      //--- imposta coordinate X
      ObjectSetInteger(0,label_name,OBJPROP_XDISTANCE,200);
      //--- imposta coordinate Y
      ObjectSetInteger(0,label_name,OBJPROP_YDISTANCE,300);
      //--- definisce il colore del testo
      ObjectSetInteger(0,label_name,OBJPROP_COLOR,clrWhite);
      //--- definisce il testo per l'oggetto Label
      ObjectSetString(0,label_name,OBJPROP_TEXT,UP);
      //--- definisce il font
      ObjectSetString(0,label_name,OBJPROP_FONT,"Wingdings");
      //--- definisce grandezza font
      ObjectSetInteger(0,label_name,OBJPROP_FONTSIZE,10);
      //--- 45 gradi di rotazione in senso orario
      ObjectSetDouble(0,label_name,OBJPROP_ANGLE,-45);
      //--- disabilita il mouse per la selezione
      ObjectSetInteger(0,label_name,OBJPROP_SELECTABLE,false);
      //--- lo disegna su un chart
      ChartRedraw(0);                                      
     }
  }