Справка по MetaEditorРазработка программИнтеллектуальное управление

Интеллектуальное управление

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

В данном разделе описаны следующие функции:

Любые изменения кода можно откатить, выполнив команду "Отменить Отменить" в меню "Правка" или на панели инструментов "Стандартная", либо нажав горячие клавиши "Ctrl+Z".

Автоподстановка имен функций #

Когда вы пишете код программы, MetaEditor автоматически предлагает возможные варианты подстановки для встроенных и пользовательских функций, констант, переменных, членов классов, ключевых слов и т.д. Это ускоряет написание кода. Например, как только вы введете первые буквы названия функции, сразу открывается список функций с подходящими названиями. Выберите стрелками на клавиатуре подходящий вариант и нажмите "Enter":

Список имен

Если список вариантов слишком большой, наберите еще несколько букв названия функции. Для вызова списка вручную нажмите "Список имен Список имен" в меню "Правка" или "Ctrl+Space" после ввода первых символов названия.

Информация о параметрах #

Посмотреть сигнатуру функции можно прямо при написании кода, не открывая справочник по языку. Для этого установите курсор после открывающей скобки, с которой начинается описание параметров функции, а затем нажмите "Информация о параметрах Информация о параметрах" в меню "Правка" или "Ctrl+Shift+Space". Информация о параметрах и типе возвращаемого значения функции будет показана в виде всплывающей подсказки:

Информация о параметрах

На изображении выше для функции показывается следующая информация:

  • [1 of 2] — означает, что у функции есть варианта вызова — с разными параметрами. Для переключения между ними используйте стрелки на клавиатуре или же щелкните левой кнопкой мыши на строке подсказки.
  • bool — указывает на тип значения, возвращаемого функцией.
  • ObjectSetInteger — название функции.
  • (long chart_id, ... ) — перечисление возможных параметров функции, перед каждым параметром указывается его тип (в данном случае — "long"). Параметр, на котором в текущий момент находится курсор, отображается жирным шрифтом.

Переход к определению #

Этот инструмент позволяет быстро перемещаться к определению (реализации) выбранного типа или элемента класса. Установите курсор на его имя и нажмите "Перейти к определению Перейти к определению" в контекстном меню или "Alt+G". Если определение находится в другом файле, то он будет открыт, а курсор будет установлен в соответствующую его позицию.

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

Переход к объявлению #

Этот инструмент позволяет быстро перемещаться к объявлению переменной или члена класса. Установите курсор на имя элемента и нажмите "Перейти к объявлению" в контекстном меню. Если объявление находится в другом файле, то он будет открыт, а курсор будет установлен в соответствующую его позицию.

Список функций #

Этот инструмент позволяет посмотреть список всех объявленных функций в текущем файле. Чтобы открыть список, нажмите "Список функций Список функций" в меню "Правка" или "Alt+M".

Список функций

В скобках справа от названия функции указываются ее параметры. Чтобы перейти к функции, нажмите на ее имя в списке. Каждый тип функций в списке помечен своей иконкой:

  • Функция — функция.
  • Функция обработки событий — функция обработки событий (On*).
  • Публичный метод класса — публичный метод класса (public).
  • Защищенный метод класса — защищенный метод класса (protected).
  • Приватный метод класса — приватный метод класса (private).

Вставка комментариев #

Для облегчения работы с комментариями в коде программы в меню "Правка" и на панели инструментов "Стандартная" доступен ряд функций:

  • Заголовок функции Заголовок функции — вставка заготовки комментария для функции;
  • Блочный комментарий Блочный комментарий — вставка символов однострочного комментария;
  • Закомментировать строки Закомментировать строки — вставить комментарии "//" в начале каждой выделенной строки;
  • Раскомментировать строки Раскомментировать строки — убрать комментарии "//" из начала каждой выделенной строки.

Команда "Блочный комментарий Блочный комментарий" (Ctrl+/) вставляет в текущей позиции курсора символы однострочного комментария:

//---

Команда "Заголовок функции Заголовок функции" (Ctrl+.) вставляет в текущей позиции курсора заготовку для комментария к функции:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

Дополнительные возможности редактирования кода #

Вы можете легко перемещать фрагменты кода из одной части программы в другую. Для этого выделите фрагмент, а затем перетащите его в нужную позицию (Drag'n'Drop").

В подменю "Дополнительно" меню "Правка" доступен ряд команд, упрощающих редактирование исходного кода:

  • Увеличить отступ строк Увеличить отступ строк — вставить три пробела (символ табуляции) в начале выделенных строк. Для вставки пробелов в одной строке, установите курсор в ее начале. Для вставки пробелов в нескольких строках, выделите их полностью.
  • Уменьшить отступ строк Уменьшить отступ строк — убрать три пробела (символ табуляции) в начале нескольких выделенных строк. Аналогичное действие выполняется сочетанием клавиш Tab+Shift.
  • Все прописные Все прописные — перевести все буквы выделенной фразы в верхний регистр. Аналогичное действие выполняется сочетанием клавиш Ctrl+Shift+U.
  • Все строчные Все строчные — перевести все буквы выделенной фразы в нижний регистр. Аналогичное действие выполняется сочетанием клавиш Ctrl+U.

Работа с закладками #

Закладки предназначены для быстрого перехода к различным частям кода. Пометьте закладками нужные строки, а затем перемещайтесь между ними при помощи команд меню "Правка — Закладки" и контекстного меню исходного кода:

  • Переключить закладку Переключить закладку — включить или выключить закладку на текущей строке, в зависимости от ее текущего состояния. Это же действие можно выполнить с помощью клавиш "Ctrl+F2";
  • Следующая закладка Следующая закладка — перейти к следующей закладке в текущем коде. Это же действие может быть выполнено с помощью клавиши "F2";
  • Предыдущая закладка Предыдущая закладка — перейти к предыдущей закладке в текущем коде. Это же действие можно выполнить, нажав клавиши "Shift+F2";
  • Убрать все закладки Убрать все закладки — убрать все закладки из текущего кода. Это же действие выполняется при нажатии клавиш "Ctrl+Shift+F2".

В MetaEditor также предусмотрены именованные закладки — закладки, которым присвоен цифровой идентификатор. Чтобы установить такую закладку, нажмите клавишу с цифрой от 0 до 9, удерживая клавишу Ctrl. Чтобы перейти к ранее установленной закладке, нажмите соответствующую цифру, удерживая клавишу Alt.

Переход к строке #

Для быстрого перехода к любой строке кода в текущем файле нажмите "Перейти к строке Перейти к строке" в меню "Поиск" или "Ctrl+G". Будет открыто следующее окно:

Перейти к строке

В окне указывается диапазон строк с кодом в текущем файле. Для перехода к строке введите ее номер и нажмите "ОК".

Сниппеты #

Сниппеты — это небольшие шаблонные фрагменты исходного кода, описывающие ту или иную конструкцию языка MQL4/MQL5. Они облегчают и ускоряют написание исходного кода. Например, при помощи них в код программы можно быстро добавить заготовку для описания класса или цикла. Для этого достаточно ввести ключевое слово — class или for. После этого курсор изменится на Возможна вставка сниппета, означающий возможность вставки сниппета. Нажмите "Tab", и в код программы будет вставлена заготовка для класса или цикла for, соответственно.

Пример сниппета

Для перехода между активными полями сниппета (в данном случае, это имя, конструктор и деструктор класса) используйте клавиши "Tab" и "Shift+Tab".

Изменение одного активного поля автоматически изменяет и остальные. Например, при изменении имени класса автоматически изменяются имена конструктора и деструктора; при изменении имени переменной в одном из выражений цикла "for" изменяются переменные и в остальных его выражениях.

Система работы со сниппетами также распознает уже описанные структуры, классы, перечисления, методы и функции. Установите курсор в пределах описания соответствующей конструкции и нажмите "Ctrl+Enter". После этого вы сможете перемещаться между членами (для классов, структур и перечислений) и аргументами (для методов и функций) при помощи клавиш "Tab" и "Shift+Tab", а также редактировать их совместно, как это описано выше.

В данный момент поддерживаются следующие сниппеты:

Ключевое слово

Значение

#import

Объявление импорта.

OnBookEvent

Обработчик OnBookEvent.

OnCalculate

Обработчик OnCalculate.

case

Селектор case.

OnChartEvent

Обработчик OnChartEvent.

class

Объявления класса.

OnDeinit

Обработчик OnDeinit.

do

Объявление цикла do while.

enum

Объявление перечисления.

for

Объявление цикла for.

if

Объявление условия if.

else

Объявление условия else.

OnInit

Обработчик OnInit.

OnStart

Обработчик OnStart.

struct

Объявление структуры.

switch

Селектор switch.

OnTester

Обработчик OnTester.

OnTesterInit

Обработчик OnTesterInit.

OnTesterPass

Обработчик OnTesterPass.

OnTesterDeinit

Обработчик OnTesterDeinit.

OnTick

Обработчик OnTick.

OnTimer

Обработчик OnTimer.

OnTrade

Обработчик OnTrade.

OnTradeTransation

Обработчик OnTradeTransation

while

Объявление цикла while.

Вставка ресурсов #

Для облегчения разработки приложений в меню "Правка — Вставить" доступен ряд команд для быстрой вставки файлов ресурсов.

Настройки в виде #property

Вставляет в текущую позицию программы директиву #property и сразу открывает список всех доступных в языке свойств программы.

BMP/WAV в виде #resource

Чтобы добавить изображение или звуковой файл в ресурсы программы, достаточно выполнить эту команду и выбрать BMP или WAV-файл (должен находиться в пределах каталога \MQL5). В текущую позицию программы будет добавлена директива #resource с правильно указанным путем к выбранному файлу.

#resource "\\Images\\image.bmp"

DLL/EX5 в виде #import

Чтобы импортировать функции из внешней DLL-библиотеки или EX5/EX4-файла, достаточно выполнить эту команду и выбрать файл (должен находиться в пределах каталога \MQL5). В текущую позицию программы будет добавлена пара директив #import с правильно указанным путем к выбранному файлу.

#import "..\Experts\SendNotification.ex5"
 
#import

Между директивами добавьте описание импортируемых функций.

MQH в виде #include

Чтобы добавить включаемый файл в код программы, выполните эту команду, а затем выберите MQH-файл (должен находиться в пределах каталога \MQL5). В текущую позицию программы будет добавлена директива #include с правильно указанным путем к выбранному файлу.

#include <Arrays\Array.mqh>

Набор параметров в виде #property

Чтобы добавить набор параметров для тестирования советника в код программы, выполните эту команду, а затем выберите SET-файл (должен находиться в пределах каталога \MQL5). В текущую позицию программы будет добавлена директива #property с правильно указанным путем к выбранному файлу.

#property tester_set "\\Profiles\\Tester\\Moving Average.set"

Дата и время в виде ГГГГ.ММ.ДД чч:мм:сс / UNIX-времени

Эта команда позволяет легко вставлять дату и время в код в нужном формате. При ее нажатии появляется интерактивный календарь. Выберите в нем дату и время и оно будет вставлено в текущую позицию программы в выбранном формате.

Вставка даты и времени в код

 

Цвет в виде clrColor

Эта команда позволяет легко вставлять цвет в код в нужном формате. При ее нажатии появляется интерактивная палитра. Выберите в ней цвет и он будет вставлено в текущую позицию в формате clrColor, используемом в функциях MQL5.

Вставка цвета в код

Файл в виде бинарного массива

Эта команда позволяет включить в текст программы любой файл в виде бинарного массива. Выполните ее и выберите нужный файл (должен находиться в пределах каталога \MQL5). В текущую позицию программы будет добавлен char-массив.

Используя эту функцию, можно, например, переносить шаблоны графиков вместе с экспертами/индикаторами: включите свой шаблон в код программы в виде массива, затем при помощи функции FileSave сохраните его на диск. После этого шаблон можно применить к графику при помощи функции ChartApplyTemplate.

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- файл шаблона в виде бинарного массива
   unsigned char my_template[]=
     {
      0xFF,0xFE,0x3C, ... ,0x00 // массив данных в примере сокращен
     };
//--- сохранение и применение шаблона
   if(FileSave("my_template.tpl",my_template))
     {
      Print("Custom template saved in \\MQL5\\Files");
      if(ChartApplyTemplate(0,"\\Files\\my_template.tpl"))
         Print("Custom template applied to the current chart");
      else
         Print("Failed to apply custom template");
     }
   else
      Print("Failed to save custom template");
  }

CSV в виде текстового массива

Чтобы добавить данные из текстового файла в код программы, выполните эту команду, а затем выберите TXT или CSV-файл (должен находиться в пределах каталога \MQL5). В текущую позицию программы будет добавлен string-массив нужной размерности с данными из файла:

string data[][3]=
  {
   {"name1","value1"},
   {"name2","value2"},
   {"name3","value3"}
  };

Преобразование текста #

MetaEditor позволяет легко преобразовывать формат исходных данных. Для этого откройте нужный файл, выделите в нем текст и выполните одну из команд в меню "Правка — Преобразовать":

  • ASCII в HEX
  • ASCII в Base64
  • ASCII в бинарный массив
  • HEX в ASCII
  • Base64 в ASCII

Слежение за буфером обмена #

Функция слежения за буфером позволяет повысить удобство работы с исходным кодом за счет быстрого доступа к последним использованным данным. Нажмите Alt+V в любой позиции исходного кода, выберите в меню любую из ранее скопированных строк, и она будет вставлена по месту.

Для вставки из истории буфера обмена нажмите ALT+V или воспользуйтесь панелью инструментов

Для включения/отключения слежения воспользуйтесь соответствующей командой на панели инструментов или настройками редактора.