Propiedades de objetos

Los objetos gráficos pueden tener muchas propiedades, dependiendo del tipo del objeto. Para establecer y obtener los valores de las propiedades de los objetos se utilizan las correspondientes funciones de trabajo con objetos gráficos.

Todos los objetos utilizados en el análisis técnico están enlazados con los gráficos conforme a las coordenadas de precio y tiempo, la línea de tendencia, los canales, los instrumentos de Fibonacci, etc.  Pero hay una serie de objetos auxiliares pensados para mejorar el interfaz, y que tienen un enlace con una parte siempre visible del gráfico (la ventana principal del gráfico o las subventanas de los indicadores):

Objeto

Identificador

X/Y

Width/Height

Date/Price

OBJPROP_CORNER

OBJPROP_ANCHOR

OBJPROP_ANGLE

Text

OBJ_TEXT

Label

OBJ_LABEL

Sí (sólo lectura)

Button

OBJ_BUTTON

Bitmap

OBJ_BITMAP

Sí (sólo lectura)

Bitmap Label

OBJ_BITMAP_LABEL

Sí (sólo lectura)

Edit

OBJ_EDIT

Rectangle Label

OBJ_RECTANGLE_LABEL

En el recuadro se usan las siguientes denominaciones:

  • X/Y — las coordenadas del punto de enlace se establecen en píxeles con respecto a uno de los ángulos del gráfico;
  • Width/Height — el objeto tiene anchura y altura. Si se indica "sólo lectura", esto significa que los valores de la anchura y la altura se calculan sólo después de que el objeto haya sido dibujado en el gráfico;
  • Date/Price — las coordenadas del punto de enlace se dan con la pareja fecha/hora;
  • OBJPROP_CORNER — establece el ángulo del gráfico con respecto al cual se indican las coordenadas del punto de enlace. Puede ser uno de los 4 valores de la enumeración ENUM_BASE_CORNER;
  • OBJPROP_ANCHOR — establece la posición del punto de enlace en el propio objeto, y puede ser uno de los 9 valores de la enumeración ENUM_ANCHOR_POINT. Precisamente desde este punto hasta el ángulo elegido en el gráfico se indican las coordenadas en píxeles;
  • OBJPROP_ANGLE — establece el ángulo de rotación del objeto en el sentido opuesto a las agujas del reloj.

Las funciones que establecen las propiedades de objetos gráficos, así como las operaciones de creación ObjectCreate() y movimiento ObjectMove() de los objetos en el gráfico, sirven prácticamente para mandar los comandos al gráfico. Cuando estas funciones se ejecuten con éxito, el comando se coloca en la cola general de los eventos del gráfico. El cambio visual de los objetos gráficos se realiza durante el procesamiento de la cola de eventos de este gráfico.

Por esta razón no hay que esperar la modificación visual inmediata de los objetos gráficos tras la llamada de estas funciones. En general la actualización de los objetos gráficos se realiza por el terminal de forma automática según los eventos del cambio, es decir: la llegada de una nueva cotización, cambio del tamaño de la ventana, etc.

Para la actualización forzosa de los objetos gráficos, se utiliza el comando de redibujo del gráfico ChartRedraw().

Para las funciones ObjectSetInteger() y ObjectGetInteger()

ENUM_OBJECT_PROPERTY_INTEGER

Identificador

Descripción

Tipo de la propiedad

OBJPROP_COLOR

Color

color

OBJPROP_STYLE

Estilo

ENUM_LINE_STYLE

OBJPROP_WIDTH

Grosor de línea

int

OBJPROP_BACK

Objeto en el fondo

bool

OBJPROP_ZORDER

La prioridad de un objeto gráfico para obtener el evento de cliquear sobre el gráfico (CHARTEVENT_CLICK). Por defecto, cuando se crea un objeto, este valor se pone a cero; pero si hace falta, se puede subir la prioridad. Cuando los objetos se aplican uno al otro, sólo uno de ellos, cuya prioridad es superior, recibirá el evento CHARTEVENT_CLICK.

long

OBJPROP_FILL

Relleno de objeto con color (para OBJ_RECTANGLE, OBJ_TRIANGLE, OBJ_ELLIPSE, OBJ_CHANNEL, OBJ_STDDEVCHANNEL, OBJ_REGRESSION)

bool

OBJPROP_HIDDEN

Prohíbe mostrar el nombre del objeto gráfico en la lista de objetos del menú del terminal "Gráficos" - "Objetos" - "Lista de objetos". El valor true permite ocultar el objeto que el usuario no necesita. Por defecto, true se pone para los objetos que muestran los eventos del calendario, historial de trading, así como para los objetos creados en un programa MQL5. Para poder ver estos objetos gráfico y acceder a sus propiedades, hay que pulsar en el botón "Todos" en la ventana "Lista de objetos".

bool

OBJPROP_SELECTED

Selección de objeto

bool

OBJPROP_READONLY

Posibilidad de editar el texto en el objeto Edit

bool

OBJPROP_TYPE

Tipo de objeto

ENUM_OBJECT   r/o

OBJPROP_TIME

Coordenadas de tiempo

datetime   modificador=número del punto de anclaje

OBJPROP_SELECTABLE

Disponibilidad de objeto

bool

OBJPROP_CREATETIME

Tiempo de creación de objeto

datetime    r/o

OBJPROP_LEVELS

Número de niveles

int

OBJPROP_LEVELCOLOR

Color de línea-nivel

color   modificador=número del nivel

OBJPROP_LEVELSTYLE

Estilo de línea-nivel

ENUM_LINE_STYLE modificador=número del nivel

OBJPROP_LEVELWIDTH

Grosor de línea-nivel

int      modificador=número del nivel

OBJPROP_ALIGN

Alineación del texto horizontalmente en el objeto "Campo de edición" (OBJ_EDIT)

ENUM_ALIGN_MODE

OBJPROP_FONTSIZE

Tamaño de caracteres

int

OBJPROP_RAY_LEFT

Rayo va a la izquierda

bool

OBJPROP_RAY_RIGHT

Rayo va a la derecha

bool

OBJPROP_RAY

Línea vertical va a través de todas las ventanas del gráfico

bool

OBJPROP_ELLIPSE

Visualización del elipse entero para el objeto "Arcos de Fibonacci" (OBJ_FIBOARC)

bool

OBJPROP_ARROWCODE

Código de flecha para el objeto "Flecha"

uchar

OBJPROP_TIMEFRAMES

Visibilidad de objeto en períodos de tiempo

juego de banderas flags

OBJPROP_ANCHOR

Posición del punto de anclaje de un objeto gráfico

ENUM_ARROW_ANCHOR (para OBJ_ARROW),

ENUM_ANCHOR_POINT (para OBJ_LABEL, OBJ_BITMAP_LABEL y OBJ_TEXT)

OBJPROP_XDISTANCE

Distancia en píxeles por el eje X desde la esquina de enlace (ver nota)

int

OBJPROP_YDISTANCE

Distancia en píxeles por el eje Y desde la esquina de enlace (ver nota)

int

OBJPROP_DIRECTION

Tendencia del objeto de Gann

ENUM_GANN_DIRECTION

OBJPROP_DEGREE

Nivel de marcación ondulada de Elliott

ENUM_ELLIOT_WAVE_DEGREE

OBJPROP_DRAWLINES

Visualización de líneas para la marcación ondulada de Elliott

bool

OBJPROP_STATE

Estado del botón (Pulsado/Despulsado)

bool

OBJPROP_CHART_ID

Identificador del objeto "Gráfico" (OBJ_CHART). Permite trabajar con las propiedades de este objeto como con cualquier otro gráfico usando las funciones descritas en el apartado Operaciones con gráficos, pero hay algunas excepciones.

long   r/o

OBJPROP_XSIZE

Ancho del objeto por el eje X en píxeles. Se establece para los objetos OBJ_LABEL (read only), OBJ_BUTTON, OBJ_CHART, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL.

int

OBJPROP_YSIZE

Alto del objeto por el eje Y en píxeles. Se establece para los objetos OBJ_LABEL (read only), OBJ_BUTTON, OBJ_CHART, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL.

int

OBJPROP_XOFFSET

Coordenada X de la esquina superior izquierda del área rectangular de visibilidad en los objetos gráficos "Etiqueta gráfica" y "Dibujo" (OBJ_BITMAP_LABEL y OBJ_BITMAP). El valor se establece en píxeles respecto a la esquina superior izquierda de la imagen original.

int

OBJPROP_YOFFSET

Coordenada Y de la esquina superior izquierda del área rectangular de visibilidad en los objetos gráficos "Etiqueta gráfica" y "Dibujo" (OBJ_BITMAP_LABEL y OBJ_BITMAP). El valor se establece en píxeles respecto a la esquina superior izquierda de la imagen original.

int

OBJPROP_PERIOD

Período de tiempo para el objeto "Gráfico"

ENUM_TIMEFRAMES

OBJPROP_DATE_SCALE

Visualiza la escala de tiempo para el objeto "Gráfico"

bool

OBJPROP_PRICE_SCALE

Visualiza la escala de precios para el objeto "Gráfico"

bool

OBJPROP_CHART_SCALE

Escala para el objeto "Gráfico"

int   valores en el rango de 0—5

OBJPROP_BGCOLOR

Color del fondo para el  OBJ_EDIT, OBJ_BUTTON, OBJ_RECTANGLE_LABEL

color

OBJPROP_CORNER

Esquina del gráfico para enlazar un objeto gráfico

ENUM_BASE_CORNER

OBJPROP_BORDER_TYPE

Estilo del borde del objeto "Etiqueta rectangular"

ENUM_BORDER_TYPE

OBJPROP_BORDER_COLOR

Color del borde para el objeto OBJ_EDIT y OBJ_BUTTON

color

Cuando se utilizan las operaciones con gráficos para el objeto "Gráfico" (OBJ_CHART), se procede según las siguientes limitaciones:

 

Para los objetos OBJ_BITMAP_LABEL y OBJ_BITMAP se puede establecer programáticamente el modo especial de visualización de las imágenes. En este modo se muestra sólo aquella parte de la imagen original a la que se aplica el área rectangular de visibilidad, mientras que el resto de la imagen se hace invisible. El tamaño del área de visibilidad se establece mediante las propiedades OBJPROP_XSIZE y OBJPROP_YSIZE. Usted puede "mover" el área de visibilidad sólo dentro de los márgenes de la imagen original, utilizando las propiedades OBJPROP_XOFFSET y OBJPROP_YOFFSET.

 

Para los objetos con tamaños fijos: OBJ_BUTTON, OBJ_RECTANGLE_LABEL, OBJ_EDIT y OBJ_CHART, las propiedades OBJPROP_XDISTANCE y OBJPROP_YDISTANCE establecen la posición del punto superior izquierdo respecto al ángulo del gráfico (OBJPROP_CORNER) del que van a calcularse las coordenadas X y Y en píxeles.

 

Para las funciones ObjectSetDouble() y ObjectGetDouble()

ENUM_OBJECT_PROPERTY_DOUBLE

Identificador

Descripción

Tipo de la propiedad

OBJPROP_PRICE

Coordenadas de precio

double    modificador=número del punto de anclaje

OBJPROP_LEVELVALUE

Valor de nivel

double    modificador=número del nivel

OBJPROP_SCALE

Escala (propiedad de objetos de Gann y del objeto  "Arcos de Fibonacci")

double

OBJPROP_ANGLE

Ángulo.  Para los objetos con el ángulo no especificado, creados desde el programa, el valor es igual a EMPTY_VALUE

double

OBJPROP_DEVIATION

Desviación para el canal de la desviación estándar

double

 

Para las funciones ObjectSetString() y ObjectGetString()

ENUM_OBJECT_PROPERTY_STRING

Identificador

Descripción

Tipo de la propiedad

OBJPROP_NAME

Nombre de objeto

string

OBJPROP_TEXT

Descripción de objeto (texto contenido en el objeto)

string

OBJPROP_TOOLTIP

El texto de la ayuda emergente. Si la propiedad no está establecida, entonces sale la ayuda generada automáticamente por el terminal. Puede desactivar la visualización de ayuda emergente poniendo el valor "\n" (salto de línea) para esta propiedad

string

OBJPROP_LEVELTEXT

Descripción de nivel

string    modificador=número del nivel

OBJPROP_FONT

Fuente

string

OBJPROP_BMPFILE

Nombre del archivo BMP para el objeto "Etiqueta gráfica".  Véase también Recursos

string    modificador: 0-estado ON, 1-estado OFF

OBJPROP_SYMBOL

Símbolo para el objeto "Gráfico"

string

 

Para los objetos OBJ_RECTANGLE_LABEL ("Etiqueta rectangular") se puede especificar uno de los tres estilos del borde a los que corresponden los valores de la enumeración ENUM_BORDER_TYPE.

ENUM_BORDER_TYPE

Identificador

Descripción

BORDER_FLAT

Borde plano

BORDER_RAISED

Convexo

BORDER_SUNKEN

Cóncavo

 

Para el objeto OBJ_EDIT ("Campo de edición") y para la función ChartScreenShot() se puede indicar el tipo de alineación por la horizontal utilizando los valores de la enumeración ENUM_ALIGN_MODE.

ENUM_ALIGN_MODE

Identificador

Descripción

ALIGN_LEFT

Alineación por la izquierda

ALIGN_CENTER

Alineación centrada (sólo para el objeto "Campo de edición")

ALIGN_RIGHT

Alineación derecha

Ejemplo:

#define  UP          "\x0431"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   string label_name="my_OBJ_LABEL_object";
   if(ObjectFind(0,label_name)<0)
     {
      Print("Object ",label_name," not found. Error code = ",GetLastError());
      //--- creamos el objeto Label
      ObjectCreate(0,label_name,OBJ_LABEL,0,0,0);           
      //--- establecemos la coordenada X
      ObjectSetInteger(0,label_name,OBJPROP_XDISTANCE,200);
      //--- establecemos la coordenada Y
      ObjectSetInteger(0,label_name,OBJPROP_YDISTANCE,300);
      //--- definimos el color del texto
      ObjectSetInteger(0,label_name,OBJPROP_COLOR,clrWhite);
      //--- definimos el texto para el objeto Label
      ObjectSetString(0,label_name,OBJPROP_TEXT,UP);
      //--- definimos la fuente
      ObjectSetString(0,label_name,OBJPROP_FONT,"Wingdings");
      //--- definimos el tamaño de la fuente
      ObjectSetInteger(0,label_name,OBJPROP_FONTSIZE,10);
      //--- rotamos a 45 grados en el sentido de las agujas del reloj
      ObjectSetDouble(0,label_name,OBJPROP_ANGLE,-45);
      //--- deshabilitamos la selección del objeto con el ratón
      ObjectSetInteger(0,label_name,OBJPROP_SELECTABLE,false);
      //--- dibujamos todo eso en el gráfico
      ChartRedraw(0);                                      
     }
  }