- Funciones para obtener las propiedades básicas del gráfico actual
- Identificación de gráficos
- Obtener la lista de gráficos
- Obtener el símbolo y el marco temporal de un gráfico arbitrario
- Visión general de funciones para trabajar con el conjunto completo de propiedades
- Propiedades descriptivas de los gráficos
- Comprobar el estado de la ventana principal
- Obtener el número y la visibilidad de las ventanas/subventanas
- Modos de visualización de gráficos
- Gestionar la visibilidad de los elementos del gráfico
- Desplazamientos horizontales
- Escala horizontal (por tiempo)
- Escala vertical (por precio y lecturas del indicador)
- Colores
- Control del ratón y del teclado
- Desacoplar la ventana del gráfico
- Obtener las coordenadas de caída del programa MQL en un gráfico
- Conversión de coordenadas de pantalla a tiempo/precio y viceversa
- Desplazamiento de gráficos por el eje temporal
- Solicitud para volver a dibujar el gráfico
- Cambiar símbolo y marco temporal
- Gestionar indicadores en el gráfico
- Abrir y cerrar gráficos
- Trabajar con plantillas de gráficos tpl
- Guardar la imagen de un gráfico
Desplazamiento de gráficos por el eje temporal
Los usuarios de MetaTrader 5 están familiarizados con el panel de navegación rápida de gráficos, que se abre haciendo doble clic en la esquina izquierda de la línea de tiempo o pulsando las teclas Space o Input. También existe una posibilidad similar mediante programación utilizando la función ChartNavigate.
bool ChartNavigate(long chartId, ENUM_CHART_POSITION position, int shift = 0)
La función desplaza el gráfico chartId el número de barras especificado con respecto a la posición predefinida del gráfico especificada por el parámetro position. Es de tipo de enumeración ENUM_CHART_POSITION con los siguientes elementos:
Identificador |
Descripción |
|---|---|
CHART_BEGIN |
Inicio del gráfico (precios más antiguos) |
CHART_CURRENT_POS |
Posición actual |
CHART_END |
Fin del gráfico (últimos precios) |
El parámetro shift establece el número de barras en que debe desplazarse el gráfico. Un valor positivo desplaza el gráfico hacia la derecha (hacia el final), y un valor negativo lo desplaza hacia la izquierda (hacia el principio).
La función devuelve true en caso de éxito o false en caso de error.
Para probar la función, vamos a crear un sencillo script ChartNavigate.mq5. Con la ayuda de variables de entrada, el usuario puede elegir un punto de partida y un desplazamiento en barras.
#property script_show_inputs
|
El registro muestra el número de la primera barra visible antes y después del movimiento.
Un ejemplo más práctico sería el script ChartSynchro.mq5, que permite desplazarse de forma sincrónica por todos los gráficos en los que se está ejecutando, en respuesta a que el usuario se desplace manualmente por uno de los gráficos. Así, puede sincronizar ventanas de distintos marcos temporales del mismo instrumento o analizar movimientos de precios paralelos en distintos instrumentos.
void OnStart()
|
La alineación se realiza por la fecha y hora de la primera barra visible (CHART_FIRST_VISIBLE_BAR). El script en un bucle comprueba este valor y, si funciona en un gráfico activo, lo escribe en una variable global. Los scripts de otros gráficos leen esta variable y ajustan su posición en consecuencia con ChartNavigate. Los parámetros especifican el movimiento relativo del gráfico (CHART_CURRENT_POS), y el número de barras que se van a mover se define como la diferencia entre el número actual de la primera barra visible y el leído de la variable global.
En la siguiente imagen se muestra el resultado de sincronizar los gráficos H1 y M15 para EURUSD.

Ejemplo de script para sincronizar las posiciones de los gráficos
Después de familiarizarnos con el sistema eventos en gráficos convertiremos este script en un indicador y nos desharemos del bucle infinito.