Назад  Вперед

ChartApplyTemplate

Применяет к графику указанный шаблон.

bool  ChartApplyTemplate(
   long          chart_id,     // идентификатор графика
   const string  filename      // имя файла с шаблоном
   );

Параметры

chart_id

[in]  Идентификатор графика. 0 означает текущий график.

filename

[in]  Имя файла, содержащего шаблон.

Возвращаемое значение

При успешном применении шаблона функция возвращает true, в противном случае возвращает false. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().

Примечание

Если посредством этой функции из эксперта будет загружен новый шаблон на график, к которому он присоединен, то эксперт будет выгружен и не сможет продолжить работу.

Использование шаблонов

Средствами языка MQL5 можно задавать множество свойств графика, в том числе устанавливать цвета с помощью функции ChartSetInteger()  :

·Цвет фона графика;

·Цвет осей, шкалы и строки OHLC;

·Цвет сетки;

·Цвет объемов и уровней открытия позиций;

·Цвет бара вверх, тени и окантовки тела бычьей свечи;

·Цвет бара вниз, тени и окантовки тела медвежьей свечи;

·Цвет линии графика и японских свечей "Доджи";

·Цвет тела бычьей свечи;

·Цвет тела медвежьей свечи;

·Цвет линии Bid-цены;

·Цвет линии Ask-цены;

·Цвет линии цены последней совершенной сделки (Last);

·Цвет уровней стоп-ордеров (Stop Loss и Take Profit).

Кроме того, на графике может быть множество графических объектов и индикаторов. Достаточно один раз настроить внешний вид графика со всеми необходимыми индикаторами и сохранить его в виде шаблона, чтобы в последствии можно было применять этот шаблон к любому графику.

Функция ChartApplyTemplate() предназначена для использования ранее сохраненного шаблона и может использоваться в любой mql5-программе. Вторым параметром функции ChartApplyTemplate() передается путь к имени файла, в котором находится шаблон. Поиск файла шаблона осуществляется по следующим правилам:

·если в начале пути стоит разделитель обратная косая черта "\" (пишется "\\"), то шаблон ищется относительно пути каталог_данных_терминала\MQL5,

·если обратной косой черты нет, то шаблон ищется относительно исполняемого EX5-файла, в котором происходит вызов функции ChartApplyTemplate();

·если шаблон не найден в первых двух вариантах, то поиск ведется в папке каталог_терминала\Profiles\Templates\.

Здесь каталог_терминала означает папку, из которой запущен клиентский терминала MetaTrader 5, а каталог_данных_терминала означает папку, в которой хранятся изменяемые файлы и ее расположение может зависеть от типа операционной системы, имени пользователя и настроек безопасности компьютера. В общем случае это разные папки, хотя в некоторых случаях могут и совпадать.

Расположение папок каталог_данных_терминала и каталог_терминала можно узнать с помощью функции TerminalInfoString().

//--- каталог из которой запущен терминал
   string terminal_path=TerminalInfoString(TERMINAL_PATH);
   Print("Каталог терминала:",terminal_path);
//--- каталог данных терминала, в котором находится папка MQL5 с советниками и индикаторами
   string terminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);
   Print("Каталог данных терминала:",terminal_data_path);

Примеры записи:

//--- шаблон ищем в папке каталог_данных_терминала\MQL5\
ChartApplyTemplate(0,"\\first_template.tpl"))
 
//--- шаблон ищем в папке каталог_исполняемого_EX5_файла\, затем в папке каталог_данных терминала\Profiles\Templates\
ChartApplyTemplate(0,"second_template.tpl"))
 
//--- шаблон ищем в папке каталог_исполняемого_EX5_файла\My_templates\, затем в папке каталог_терминала\Profiles\Templates\My_templates\
ChartApplyTemplate(0,"My_templates\\third_template.tpl"))

Шаблоны не относятся к ресурсам, их нельзя включать в исполняемый файл EX5.

 

Пример:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- попытаемся открыть и применить шаблон my_template.tpl
   if(!ChartApplyTemplate(0,"my_template"))
     {
      //--- не удалось применить шаблон my_template
      Print("Не удалось применить шаблон 'my_template', ошибка ",GetLastError());
      ResetLastError();
      //--- поищем просто файл "my_template" без расширения tpl
      if(FileIsExist("my_template"))
         Print("Существует файл my_template, требуется же 'my_template.tpl'");
      else
         Print("Файл 'my_template.tpl' не найден в папке "
               +TerminalInfoString(TERMINAL_PATH)
               +"\\MQL5\\Files");
 
      //--- теперь правильно передадим имя файла - с расширением *.tpl
      if(ChartApplyTemplate(0,"my_template.tpl"))
         Print("Применили успешно шаблон 'my_template.tpl'");
      else
         Print("Не удалось применить шаблон 'my_template.tpl', ошибка ",GetLastError());
 
     }
   else
     {
      //--- шаблон хранится в файле без расширения
      Print("Применили успешно шаблон 'my_template' - файл без расширения");
     }
  }

Смотри также

Ресурсы