ChartApplyTemplate

Применяет к графику указанный шаблон. Отданная команда поступает в очередь сообщений графика и выполняется только после обработки всех предыдущих команд.

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

Параметры

chart_id

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

filename

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

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

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

Примечание

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

В целях безопасности права на торговлю при применении шаблона к графику могут ограничиваться:

Права на торговлю не могут быть повышены при запуске советника путем применения шаблона с помощью функции ChartApplyTemplate().

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

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

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

Средствами языка 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()
  {
//--- пример применения шаблона, расположенного в каталоге \MQL5\Files
   if(FileIsExist("my_template.tpl"))
     {
      Print("Шаблон my_template.tpl найден в каталоге \Files'");
      //--- применим найденный шаблон
      if(ChartApplyTemplate(0,"\\Files\\my_template.tpl"))
        {
         Print("Применили успешно шаблон 'my_template.tpl'");
         //--- принудительно перерисуем график для быстрого показа изменений
         ChartRedraw();
        }
      else
         Print("Не удалось применить шаблон 'my_template.tpl', ошибка ",GetLastError());
     }
   else
     {
      Print("Файл 'my_template.tpl' не найден в папке "
            +TerminalInfoString(TERMINAL_PATH)+"\\MQL5\\Files");
     }
  }

Смотри также

Ресурсы