Propriedades do Objeto

Os objetos gráficos podem ter muitas propriedades dependendo do tipo de objeto. A configuração e a obtenção de valores das propriedades dos objetos são efetuadas de acordo com as funções de trabalho com objetos gráficos.

Todos os objetos usados na análise técnica são vinculados aos gráficos nas coordenadas de preço e tempo: linha de tendência, canais, ferramentas de Fibonacci, etc.  Mas há uma série de objetos de apoio projetados para melhorar a interface, e que estão vinculados à parte sempre visível do gráfico (janela principal ou subjanela do gráfico do indicador):

Objeto

Identificador

X/Y

Width/Height

Date/Price

OBJPROP_CORNER

OBJPROP_ANCHOR

OBJPROP_ANGLE

Text

OBJ_TEXT

Sim

Sim

Sim

Label

OBJ_LABEL

Sim

Sim (apenas leitura)

Sim

Sim

Sim

Button

OBJ_BUTTON

Sim

Sim

Sim

Bitmap

OBJ_BITMAP

Sim (apenas leitura)

Sim

Sim

Bitmap Label

OBJ_BITMAP_LABEL

Sim

Sim (apenas leitura)

Sim

Sim

Edit

OBJ_EDIT

Sim

Sim

Sim

Rectangle Label

OBJ_RECTANGLE_LABEL

Sim

Sim

Sim

Na tabela são utilizadas as seguintes denominações:

  • X/Y — as coordenadas do ponto âncora são especificadas em pixels em relação a um dos cantos do gráfico;
  • Width/Height — os objetos têm largura e altura. Se você definir "apenas leitura", isso significa que os valores para largura e altura são calculados somente após o processamento do objeto no gráfico;
  • Date/Price — as coordenadas do ponto âncora são definidas pelo par data/preço;
  • OBJPROP_CORNER — define o ângulo do gráfico, que especifica as coordenadas do ponto de âncora. Pode ser um dos 4 valores de enumeração ENUM_BASE_CORNER;
  • OBJPROP_ANCHOR — define a posição do ponto de âncora no objeto, e pode ser um dos 9 valores de enumeração ENUM_ANCHOR_POINT. Precisamente a partir desse ponto até ao canto selecionado são expecificadas as cordenadas em pixels;
  • OBJPROP_ANGLE — define o ângulo de rotação do objeto no sentido anti-horário.

As funções que definem as propriedades dos objetos gráficos, bem como as operações ObjectCreate() e ObjectMove() para criar e mover objetos ao longo do gráfico são, na verdade, usadas para enviar comandos para o gráfico. Se essas funções forem executadas com êxito, o comando será incluído na fila comum dos eventos do gráfico. As mudanças visuais nas propriedades dos objetos gráficos são implementadas ao lidar com a fila dos eventos do gráfico.

Assim, não espere uma atualização visual imediata de objetos gráficos após chamar essas funções. Geralmente, os objetos gráficos no gráfico são atualizados automaticamente pelo terminal após a mudança de eventos - a chegada de uma nova cotação, o redimensionamento da janela de gráfico, etc. Use a função ChartRedraw() para forçar a atualização dos objetos gráficos.

Para funções ChartSetDouble() e ChartGetDouble()

ENUM_OBJECT_PROPERTY_INTEGER

Identificador

Descrição

Tipo de Propriedade

OBJPROP_COLOR

Cor

color

OBJPROP_STYLE

Estilo

ENUM_LINE_STYLE

OBJPROP_WIDTH

Espessura de linha

int

OBJPROP_BACK

Objeto no pano de fundo

bool

OBJPROP_ZORDER

Prioridade de um objeto gráfico para receber eventos de clicagem em um gráfico (CHARTEVENT_CLICK). O valor zero default é definido ao se criar um objeto; a prioridade pode ser aumentada se necessário. Ao colocar objetos um sobre o outro, somente aquele com a maior prioridade receberá o evento CHARTEVENT_CLICK.

long

OBJPROP_FILL

Preenche um objeto com cor (para OBJ_RECTANGLE, OBJ_TRIANGLE, OBJ_ELLIPSE, OBJ_CHANNEL, OBJ_STDDEVCHANNEL, OBJ_REGRESSION)

bool

OBJPROP_HIDDEN

Proíbe exibir o nome de um objeto gráfico na lista de objetos do menu do terminal "Gráficos" - "Objetos" - "Lista de objetos". O valor true permite ocultar um objeto da lista. Por default, true é definido para os objetos que exibem eventos de calendário, histórico de negociação e para objetos criados a partir de programas MQL5. Para ver tais objetos gráficos e acessar suas propriedades, clique no botão "TODOS" na janela "Lista de objetos".

bool

OBJPROP_SELECTED

Objeto é selecionado

bool

OBJPROP_READONLY

Capacidade de editar texto no objeto Edit

bool

OBJPROP_TYPE

Tipo de objeto

ENUM_OBJECT   r/o

OBJPROP_TIME

Coordenada de tempo

datetime   modificador=número do ponto de ancoragem

OBJPROP_SELECTABLE

Disponibilidade de objeto

bool

OBJPROP_CREATETIME

Hora de criação do objeto

datetime    r/o

OBJPROP_LEVELS

Número de níveis

int

OBJPROP_LEVELCOLOR

Cor das linhas de nível

color   modificador=número de nível

OBJPROP_LEVELSTYLE

Estilo da linha de nível

ENUM_LINE_STYLE modificador=número de nível

OBJPROP_LEVELWIDTH

Espessura do nível de linha

int      modificador=número de nível

OBJPROP_ALIGN

Alinhamento de texto horizontal no objeto "Edit" (OBJ_EDIT)

ENUM_ALIGN_MODE

OBJPROP_FONTSIZE

Tamanho de fonte

int

OBJPROP_RAY_LEFT

Raios indo para esquerda

bool

OBJPROP_RAY_RIGHT

Raios indo para direita

bool

OBJPROP_RAY

Uma linha vertical indo através de todas as janelas de um gráfico

bool

OBJPROP_ELLIPSE

Exibição da elipse completa do objeto Arco de Fibonacci (OBJ_FIBOARC)

bool

OBJPROP_ARROWCODE

Código de seta para o objeto Seta

char

OBJPROP_TIMEFRAMES

Visibilidade de um objeto nas janelas de tempo

conjunto de flags

OBJPROP_ANCHOR

Localização do ponto de ancoragem de um objeto gráfico

ENUM_ARROW_ANCHOR (for OBJ_ARROW),

ENUM_ANCHOR_POINT (for OBJ_LABEL, OBJ_BITMAP_LABEL and OBJ_TEXT)

OBJPROP_XDISTANCE

A distância em pixels ao longo do eixo X a partir do canto de vinculação (see note)

int

OBJPROP_YDISTANCE

A distância em pixels ao longo do eixo Y a partir do canto de vinculação (see note)

int

OBJPROP_DIRECTION

Tendência do objeto Gann

ENUM_GANN_DIRECTION

OBJPROP_DEGREE

Nível de marcação da Onda de Elliott

ENUM_ELLIOT_WAVE_DEGREE

OBJPROP_DRAWLINES

Exibição de linhas para marcação da Onda de Elliott

bool

OBJPROP_STATE

Estado do botão (pressionado / não pressionado)

bool

OBJPROP_CHART_ID

ID do objeto "Chart" (OBJ_CHART). Permite trabalhar com as propriedades deste objeto como um gráfico normal usando as funções descritas em Operações de Gráfico, mas existem algumas exceções.

long   r/o

OBJPROP_XSIZE

O tamanho do objeto Chart ao longo do eixo X (largura em pixels) é especificado para objetos OBJ_LABEL (read only), OBJ_BUTTON, OBJ_CHART, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL.

int

OBJPROP_YSIZE

O tamanho do objeto Chart ao longo do eixo X (largura em pixels) é especificado para objetos OBJ_LABEL (read only), OBJ_BUTTON, OBJ_CHART, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL.

int

OBJPROP_XOFFSET

A coordenada X do canto superior esquerdo da área visível retangular nos objetos gráficos "Bitmap Label" e "Bitmap" (OBJ_BITMAP_LABEL e OBJ_BITMAP). O valor é definido em pixels em relação ao canto superior esquerdo da imagem original.

int

OBJPROP_YOFFSET

A coordenada X do canto superior esquerdo da área visível retangular nos objetos gráficos "Bitmap Label" e "Bitmap" (OBJ_BITMAP_LABEL e OBJ_BITMAP). O valor é definido em pixels em relação ao canto superior esquerdo da imagem original.

int

OBJPROP_PERIOD

Janela de tempo para o objeto Chart

ENUM_TIMEFRAMES

OBJPROP_DATE_SCALE

Exibição da escala de tempo para o objeto Chart

bool

OBJPROP_PRICE_SCALE

Exibição da escala de preço para o objeto Chart

bool

OBJPROP_CHART_SCALE

A escala para o objeto Chart

int   valor na faixa de 0—5

OBJPROP_BGCOLOR

A cor de fundo para OBJ_EDIT, OBJ_BUTTON, OBJ_RECTANGLE_LABEL

color

OBJPROP_CORNER

O canto do gráfico para linkar um objeto gráfico

ENUM_BASE_CORNER

OBJPROP_BORDER_TYPE

Tipo de borda para o objeto "Rectangle label"

ENUM_BORDER_TYPE

OBJPROP_BORDER_COLOR

Cor de borda para os objetos OBJ_EDIT e OBJ_BUTTON

color

Ao usar operações de gráfico para o objeto "Chart" (OBJ_CHART), as seguintes limitações são impostas:

 

Para os objetos OBJ_BITMAP_LABEL e OBJ_BITMAP, um modo especial de exibição de imagem pode ser definido por programação. Neste modo, somente parte da imagem original (na qual uma área visível retangular é aplicada) é exibida, enquanto o resto da imagem fica invisível. O tamanho desta área deve ser definido usando a propriedade OBJPROP_XSIZE e OBJPROP_YSIZE. A área visível pode ser "movida" somente dentro da imagem original usando as propriedades OBJPROP_XOFFSET e OBJPROP_YOFFSET.

 

Para objetos de tamanho fixo: OBJ_BUTTON, OBJ_RECTANGLE_LABEL, OBJ_EDIT e OBJ_CHART propriedades OBJPROP_XDISTANCE e OBJPROP_YDISTANCE defina a posição do canto superior esquerdo do ponto do objeto em relação ao canto de gráfico (OBJPROP_CORNER), a partir das quais as coordenadas X e Y serão contadas em pixels.

 

Para as funções ObjectSetDouble() e ObjectGetDouble()

ENUM_OBJECT_PROPERTY_DOUBLE

Identificador

Descrição

Tipo de Propriedade

OBJPROP_PRICE

Coordenada de Preço

double    modificador=número do ponto de ancoragem

OBJPROP_LEVELVALUE

Valor de nível

double    modificador=número de nível

OBJPROP_SCALE

Escala (propriedades de objetos Gann e Arcos de Fibonnacci)

double

OBJPROP_ANGLE

Ângulo. Para os objetos sem ângulo especificado, criado a partir de um programa, o valor é igual a EMPTY_VALUE

double

OBJPROP_DEVIATION

Desvio para o Canal de Desvio Padrão

double

 

Para as funções ObjectSetString() e ObjectGetString()

ENUM_OBJECT_PROPERTY_STRING

Identificador

Descrição

Tipo de Propriedade

OBJPROP_NAME

Nome de objeto

string

OBJPROP_TEXT

Descrição do objeto (o texto contido no objeto)

string

OBJPROP_TOOLTIP

O texto de um "tooltip" (dica). Se a propriedade não é definida, então o "tooltip" gerado automaticamente pelo terminal é exibido. Um "tooltip" pode ser desabilitado através da atribuição do valor "\n" (quebra de linha) a ele

string

OBJPROP_LEVELTEXT

Nível de descrição

string    modificador=número de nível

OBJPROP_FONT

Font

string

OBJPROP_BMPFILE

O nome do arquivo BMP para rótulo Bitmap. Veja também Recursos

string    modificador: 0-estado Ligado, 1-estado Desligado

OBJPROP_SYMBOL

Ativo para o objeto Chart

string

 

Para o objeto OBJ_RECTANGLE_LABEL ("Rótulo de Retângulo") um dentre os três modos de design podem ser definidos, correspondendo aos valores de ENUM_BORDER_TYPE.

ENUM_BORDER_TYPE

Identificador

Descrição

BORDER_FLAT

Forma lisa

BORDER_RAISED

Forma em relevo

BORDER_SUNKEN

Forma cavada

 

Para o objeto OBJ_EDIT ("Edit") e para a função ChartScreenShot(), pode-se especificar o tipo de alinhamento horizontal usando os valores da enumeração ENUM_ALIGN_MODE.

ENUM_ALIGN_MODE

Identificador

Descrição

ALIGN_LEFT

Alinhamento a esquerda

ALIGN_CENTER

Centrado (somente para o objeto Edit)

ALIGN_RIGHT

Alinhamento a direita

Exemplo:

#define  UP          "\x0431"
//+------------------------------------------------------------------+
//| Programa Script da função start (iniciar)                        |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   string label_name="my_OBJ_LABEL_object";
   if(ObjectFind(0,label_name)<0)
     {
      Print("Objeto ",label_name," não encontrado. Código de erro = ",GetLastError());
      //--- cria objeto Rótulo
      ObjectCreate(0,label_name,OBJ_LABEL,0,0,0);           
      //--- define coordenada X
      ObjectSetInteger(0,label_name,OBJPROP_XDISTANCE,200);
      //--- define coordenada Y
      ObjectSetInteger(0,label_name,OBJPROP_YDISTANCE,300);
      //--- define cor de texto
      ObjectSetInteger(0,label_name,OBJPROP_COLOR,clrWhite);
      //--- define texto para objeto Rótulo
      ObjectSetString(0,label_name,OBJPROP_TEXT,UP);
      //--- define fonte
      ObjectSetString(0,label_name,OBJPROP_FONT,"Wingdings");
      //--- define tamanho de fonte
      ObjectSetInteger(0,label_name,OBJPROP_FONTSIZE,10);
      //--- rotação de 45 graus em sentido horário
      ObjectSetDouble(0,label_name,OBJPROP_ANGLE,-45);
      //--- desabilita seleção de mouse
      ObjectSetInteger(0,label_name,OBJPROP_SELECTABLE,false);
      //--- desenha o objeto no gráfico
      ChartRedraw(0);                                      
     }
  }