Русский

Справочник MQL4 Операции с графиками ChartApplyTemplate

ChartApplyTemplate

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

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

Параметры

chart_id

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

filename

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

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

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

Примечание

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

Права на торговлю и использование DLL

Для MQL4 программы, запускаемой на графике, пользователь может при запуске разрешить или запретить:

  1. Совершение торговых операций,
  2. Вызовы функций из DLL.

Настройки советника

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

При сохранении шаблона запоминаются и права для запущенных на графике программ: право на торговлю и право на использование DLL. В целях безопасности эти права при применении шаблона к графику могут ограничиваться:

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

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

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

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

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

  • Цвет фона графика;
  • Цвет осей, шкалы и строки OHLC;
  • Цвет сетки;
  • Цвет объемов и уровней открытия ордеров;
  • Цвет бара вверх, тени и окантовки тела бычьей свечи;
  • Цвет бара вниз, тени и окантовки тела медвежьей свечи;
  • Цвет линии графика и японских свечей "Доджи";
  • Цвет тела бычьей свечи;
  • Цвет тела медвежьей свечи;
  • Цвет линии Bid-цены;
  • Цвет линии Ask-цены;
  • Цвет линии цены последней совершенной сделки (Last);
  • Цвет уровней стоп-ордеров (Stop Loss и Take Profit).

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

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

  • если в начале пути стоит разделитель обратная косая черта "\" (пишется "\\"), то шаблон ищется относительно пути каталог_данных_терминала\MQL4,
  • если обратной косой черты нет, то шаблон ищется относительно исполняемого EX4-файла, в котором происходит вызов функции ChartApplyTemplate();
  • если шаблон не найден в первых двух вариантах, то поиск ведется в папке каталог_терминала\Profiles\Templates\.

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

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

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

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

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

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

Пример:

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

Смотри также

Ресурсы