- Tipos de objetos y características de la especificación de sus coordenadas
- Objetos vinculados a tiempo y precio
- Objetos vinculados a coordenadas de pantalla
- Crear objetos
- Borrar objetos
- Encontrar objetos
- Visión general de las funciones de acceso a las propiedades de los objetos
- Propiedades principales de los objetos
- Coordenadas de tiempo y precio
- Anclar la esquina de la ventana y las coordenadas de la pantalla
- Definir el punto de anclaje en el objeto
- Gestión del estado de los objetos
- Prioridad de los objetos (orden Z)
- Ajustes de visualización de objetos: color, estilo y marco
- Ajustes de fuente
- Rotar un texto en un ángulo arbitrario
- Determinar ancho y alto del objeto
- Visibilidad de los objetos en el contexto de marcos temporales
- Asignar un código de carácter a una etiqueta
- Propiedades de los rayos para objetos con líneas rectas
- Gestionar el estado pulsado de los objetos
- Ajustar imágenes en objetos bitmap
- Recortar (dar salida a parte) de una imagen
- Propiedades de los campos de entrada: alineación y sólo lectura
- Anchura del canal de desviación estándar
- Establecer niveles en objetos de nivel
- Propiedades adicionales de los objetos de Gann, Fibonacci y Elliot
- Objeto gráfico
- Mover objetos
- Obtener hora o precio en puntos de línea especificados
Objeto gráfico
El objeto de gráfico OBJ_CHART permite crear miniaturas de otros gráficos dentro del gráfico para otros instrumentos y marcos temporales. Los objetos de gráfico se incluyen en la lista de gráficos, que hemos obtenido mediante programación utilizando las funciones ChartFirst y ChartNext. Como se menciona en la sección sobre Comprobar el estado de la ventana principal, la propiedad especial del gráfico CHART_IS_OBJECT permite averiguar por identificador si se trata de una ventana completa o de un objeto gráfico. En este último caso, la llamada a ChartGetInteger(id, CHART_IS_OBJECT) devolverá true.
El objeto gráfico tiene un conjunto de propiedades específicas.
Identificador |
Descripción |
Tipo |
---|---|---|
OBJPROP_CHART_ID |
ID del gráfico (r/o) |
long |
OBJPROP_PERIOD |
Período del gráfico |
ENUM_TIMEFRAMES |
OBJPROP_DATE_SCALE |
Mostrar la escala de tiempo |
bool |
OBJPROP_PRICE_SCALE |
Mostrar la escala de precios |
bool |
OBJPROP_CHART_SCALE |
Escala (valor en el intervalo 0 - 5) |
int |
OBJPROP_SYMBOL |
Símbolo |
string |
El identificador obtenido a través de la propiedad OBJPROP_CHART_ID permite gestionar el objeto como un gráfico normal utilizando las funciones del capítulo Trabajar con gráficos. Sin embargo, existen algunas limitaciones:
- El objeto no puede cerrarse con ChartClose
- No es posible cambiar el símbolo/período en el objeto utilizando la función CartSetSymbolPeriod
- Las propiedades CHART_SCALE, CHART_BRING_TO_TOP,CHART_SHOW_DATE_SCALE y CHART_SHOW_PRICE_SCALE no se modifican en el objeto.
Por defecto, todas las propiedades (excepto OBJPROP_CHART_ID) son iguales a las propiedades correspondientes de la ventana actual.
La demostración de objetos gráficos se implementa como un indicador sin búfer ObjectChart.mq5. Crea una subventana con dos objetos gráficos para el mismo símbolo que el gráfico actual, pero con marcos temporales adyacentes por encima y por debajo del actual.
Los objetos se ajustan a la esquina superior derecha de la subventana y tienen los mismos tamaños predefinidos:
#define SUBCHART_HEIGHT 150
|
Por supuesto, la altura de la subventana debe coincidir con la altura de los objetos, hasta que podamos responder de forma adaptativa a los eventos de cambio de tamaño.
#property indicator_separate_window
|
Un minigráfico se configura en la función SetupSubChart, que toma como entradas el número del objeto, sus dimensiones y el marco temporal requerido. El resultado de SetupSubChart es el identificador del objeto gráfico, que acabamos de introducir en el registro como referencia.
void OnInit()
|
Las macros PeriodUp y PeriodDown utilizan la función de ayuda PeriodRelative.
#define PeriodUp(P) PeriodRelative(P, +1)
|
Esta es la principal función de trabajo SetupSubChart.
long SetupSubChart(const int n, const int dx, const int dy,
|
Para un objeto gráfico, el punto de anclaje siempre se fija en la esquina superior izquierda del objeto, por lo que cuando se ancla a la esquina derecha de la ventana, es necesario añadir la anchura del objeto (esto se hace mediante +1 en la expresión(n+1)*dx para OBJPROP_XDISTANCE).
En la siguiente captura de pantalla se muestra el resultado del indicador en el gráfico XAUUSD,H1:
Dos objetos gráficos en la subventana del indicador
Como podemos ver, los minigráficos muestran los marcos temporales M30 y H2.
Es importante tener en cuenta que se pueden añadir indicadores a objetos gráficos y aplicar plantillas tpl, incluyendo aquellos con Asesores Expertos. No obstante, no se pueden crear objetos dentro de objetos gráficos.
Cuando el objeto gráfico está oculto debido a una visualización deshabilitada en el marco temporal actual o en todos los marcos temporales, la propiedad CHART_WINDOW_IS_VISIBLE para el gráfico interno sigue devolviendo true.