ChartApplyTemplate

Aplica al gráfico una plantilla especificada. El comando se añade a la cola de los mensajes del gráfico y se ejecuta sólo después del procesamiento de todos los comandos anteriores. Si el comando se coloca con éxito a la cola del gráfico, devuelve true, de lo contrario, devuelve false.

bool  ChartApplyTemplate(
   long          chart_id,     // identificador del gráfico
   const string  filename      // nombre del archivo con la plantilla
   );

Parámetros

chart_id

[in]  Identificador del gráfico. 0 significa el gráfico actual.

filename

[in]  Nombre del archivo que contiene la plantilla.

Valor devuelto

Si el comando se coloca con éxito a la cola del gráfico, devuelve true, de lo contrario, devuelve false. Para obtener la información sobre el error, hay que llamar a la función GetLastError().

Nota

Si a través de esta función desde el Asesor Experto se cargará una plantilla nueva en el gráfico al que este Asesor Experto está adjuntado, entonces este Asesor Experto será descargado y no podrá continuar su trabajo.

Al aplicar la plantilla al gráfico, el derecho al trading puede ser restringido por razones de seguridad:

Los derechos al trading no pueden ser ampliados cuando el EA se inicia por la aplicación de las plantillas mediante la función ChartApplyTemplate().

Si el programa mql5 que llama a la función ChartApplyTemplate() no tiene los derechos al trading, el EA cargado mediante la plantilla tampoco tendrá los derechos al trading independientemente de los ajustes de la plantilla.

Si el programa mql5 que llama a la función ChartApplyTemplate() tiene los derechos al trading y en los ajustes de la plantilla no hay estos derechos, el EA cargado mediante la plantilla no tendrá los derechos al trading.

Uso de plantillas

Los recursos del lenguaje MQL5 permiten establecer varias propiedades del gráfico, comprendido entre ellas los colores, utilizando la función ChartSetInteger()  :

  • Color del fondo del gráfico;
  • Color de ejes, escala y línea OHLC;
  • Color de cuadrícula;
  • Color de volúmenes y niveles de apertura de posiciones;
  • Color de la barra arriba, sombra y borde del cuerpo de vela alcista;
  • Color de la barra abajo, sombra y borde del cuerpo de vela bajista;
  • Color de la línea del gráfico y velas japonesas "Doji";
  • Color del cuerpo de vela alcista;
  • Color del cuerpo de vela bajista;
  • Color de la línea del precio Bid;
  • Color de la línea del precio Ask;
  • Color de la línea del precio de la última transacción realizada (Last);
  • Color de niveles de órdenes Stop (Stop Loss y Take Profit).

Además, en el gráfico pueden haber varios objetos gráficos e indicadores. Será suficiente configurar una vez la apariencia del gráfico, dotándolo con todos los indicadores necesarios, y guardarlo como una plantilla para luego poder aplicar esta plantilla a cualquier gráfico.

La función ChartApplyTemplate() sirve para usar las plantillas guardadas anteriormente. Esta función se puede utilizar en cualquier programa mql5. La ruta del archivo en el que se encuentra la plantilla se pasa con el segundo parámetro de la función ChartApplyTemplate(). La ruta del archivo en el que se encuentra la plantilla se pasa. La búsqueda del archivo de una plantilla se realiza según las siguientes reglas:

  • si la ruta se empieza con la barra inversa separadora "\" (se escribe "\\"), entonces la plantilla se busca según la ruta catálogo_de_datos_del_terminal\MQL5,
  • si no hay ninguna barra inversa, la plantilla se busca respecto a la ubicación del archivo ejecutable EX5 en el que se realiza la llamada a la función ChartApplyTemplate();
  • si la plantilla no ha sido encontrada en las primeras dos opciones, la búsqueda continúa en la carpeta directorio_del_terminal\Profiles\Templates\.

Aquí directorio_del_terminal significa la carpeta desde la que ha sido iniciado el terminal de cliente MetaTrader 5, mientras que catálogo_de_datos_del_terminal significa la carpeta en la que se guardan los archivos editables y su ubicación puede depender del tipo del sistema operativo, nombre del usuario y las configuraciones de seguridad del ordenador. Por lo general, se trata de diferentes carpetas, aunque en algunas ocasiones pueden coincidir.

La ubicación de las carpetas catálogo_de_datos_del_terminal y directorio_del_terminal se puede averiguar a través de la función TerminalInfoString().

//--- carpeta desde la que ha sido iniciado el terminal
   string terminal_path=TerminalInfoString(TERMINAL_PATH);
   Print("Directorio del terminal:",terminal_path);
//--- carpeta de datos del terminal que contiene la carpeta MQL5 con los EAs e indicadores
   string terminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);
   Print("Carpeta de datos del terminal:",terminal_data_path);

Ejemplos de entrada:

//--- buscamos la plantilla en la carpeta catálogo_de_datos_del_terminal\MQL5\
ChartApplyTemplate(0,"\\first_template.tpl"))
//--- buscamos la plantilla en la carpeta catálogo_del_archivo_ejecutable_EX5\, luego en la carpeta catálogo_de_datos_del_terminal\Profiles\Templates\
ChartApplyTemplate(0,"second_template.tpl"))
//--- buscamos la plantilla en la carpeta catálogo_del_archivo_ejecutable_EX5\My_templates\, luego en la carpeta directorio_del_terminal\Profiles\Templates\My_templates\
ChartApplyTemplate(0,"My_templates\\third_template.tpl"))

Las plantillas no pertenecen a los recursos, y no se puede insertarlos en un archivo ejecutable EX5.

Ejemplo:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- ejemplo de aplicación de la plantilla ubicada en la carpeta \MQL5\Files
   if(FileIsExist("my_template.tpl"))
     {
      Print("Plantilla my_template.tpl encontrada en la carpeta \Files'");
      //--- aplicamos la plantilla encontrada
      if(ChartApplyTemplate(0,"\\Files\\my_template.tpl"))
        {
         Print("La plantilla 'my_template.tpl' ha sido aplicada con éxito");
         //--- redibujamos forzosamente el gráfico para la visualización rápida de los cambios
         ChartRedraw();
        }
      else
         Print("Fallo al aplicar la plantilla 'my_template.tpl', error ",GetLastError());
     }
   else
     {
      Print("Archivo 'my_template.tpl' no encontrado en la carpeta "
            +TerminalInfoString(TERMINAL_PATH)+"\\MQL5\\Files");
     }
  }

Véase también

Recursos