- 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
Coordenadas de tiempo y precio
Para los objetos de los tipos que existen en el sistema de coordenadas de las cotizaciones, la API de MQL5 admite un par de propiedades para especificar las vinculaciones de tiempo y precio. En caso de que un objeto tenga varios puntos de anclaje, las propiedades requieren la especificación de un parámetro modificador que contenga el índice del punto de anclaje al llamar a las funciones ObjectSet y ObjectGet.
Identificador |
Descripción |
Tipo de valor |
---|---|---|
OBJPROP_TIME |
Coordenada de tiempo |
datetime |
OBJPROP_PRICE |
Coordenada de precio |
double |
Estas propiedades están disponibles para absolutamente todos los objetos, pero no tiene sentido establecerlas o leerlas para objetos con coordenadas de pantalla.
Para demostrar cómo trabajar con coordenadas, analicemos el indicador sin búfer ObjectHighLowChannel.mq5, que dibuja dos líneas de tendencia para un determinado segmento de barras. Sus puntos de comienzo y fin en el eje temporal coinciden con la primera y la última barra del segmento, y a lo largo del eje de precios, los valores se calculan de forma diferente para cada una de las líneas: para la línea superior se utilizan los precios High más alto y más bajo, y para la línea inferior, los precios Low más alto y más bajo. A medida que el gráfico se actualice, nuestro improvisado canal debería moverse con los precios.
El rango de barras se establece mediante dos variables de entrada: el número de la barra inicial BarOffset y el número de barras BarCount. Por defecto, las líneas se trazan a los precios más recientes, ya que bar offset = 0.
input int BarOffset = 0;
|
Los objetos tienen el prefijo de nombre común «HighLowChannel-».
En el manejador OnCalculate supervisamos la aparición de nuevas barras sobre la hora iTime de la barra 0-ésima. En cuanto se forma la barra, se analizan los precios en el segmento especificado, se toman los valores máximo y mínimo de los precios de cada uno de los dos tipos (MODE_HIGH, MODE_LOW) y se llama a la función auxiliar DrawFigure para ellos, y aquí es donde tiene lugar el trabajo con los objetos: la creación y modificación de coordenadas.
int OnCalculate(const int rates_total,
|
Y aquí está la función DrawFigure propiamente dicha:
bool DrawFigure(const string name, const datetime &t[], const double &p[],
|
Después de la llamada a ObjectCreate que garantiza la existencia de un objeto, se llama a las funciones ObjectSet apropiadas para OBJPROP_TIME y OBJPROP_PRICE en todos los puntos de anclaje (dos en este caso).
En la imagen siguiente se muestra el resultado del indicador:
Canal en dos líneas de tendencia a precios máximos y mínimos
Puede ejecutar el indicador en el probador visual para ver cómo cambian las coordenadas de la línea sobre la marcha.