Справка по MetaEditor

Отладка кода

В MetaEditor встроен отладчик — инструмент, который позволяет проверить работу программы по шагам (по отдельным функциям). Вы расставляете в коде программы точки останова — места, в которых исполнение программы должно быть приостановлено. Затем запускаете программу на обычном графике или в тестере стратегий. Как только исполнение программы дойдет до точки останова, оно будет прервано. Вы сможете посмотреть значения вычисленных переменных, а затем продолжить исполнение программы вручную по шагам, проверяя алгоритм работы.

Предварительная настройка

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

К графику, создаваемому для отладки, применяется шаблон "debug.tpl", расположенный в папке /profiles/templates торговой платформы.

Точки останова

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

Перед запуском отладки установите хотя бы одну точку останова в коде программы. Для этого дважды щелкните мышью на сером поле слева от строки с кодом. Также вы можете установить курсор в строку и нажать "Переключить точку останова Переключить точку останова" в меню "Отладка" или "F9". Выключение точек останова происходит таким же образом.

Включенная точка останова

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

Переход к точке останова

К любой из точек также можно перейти двойным кликом на ней.

Запуск отладки

Для запуска отладки откройте основной файл программы или проект. Отладку можно производить в двух режимах:

  • На реальных данных. Запускается командой "Начать на реальных данных Начать на реальных данных" в меню "Отладка" или клавишей "F5". В этом режиме отлаживаемая программа запускается на специальном графике в торговой платформе. Отладка осуществляется в реальных условиях на ценовых данных, поступающих от сервера.
  • На исторических данных. Запускается командой "Начать на исторических данных Начать на исторических данных" в меню "Отладка" или клавишами "Ctrl+F5". Отладка происходит в режиме визуального тестирования в тестере стратегий. Этот режим позволяет проверить работу программы на любом интересующем участке истории, не дожидаясь наступления определенных рыночных условий.

Как только исполнение программы в режиме отладки дойдет до строки с точкой останова, оно будет прервано. Строка, на которой остановилось выполнение, будет помечена иконкой Сработавшая точка останова. Также в окне "Инструменты" появится вкладка "Отладка". В левой ее части будет показан стек вызова функции.

Срабатывание точки остановка после запуска отладки

Наблюдаемые выражения

В процессе отладки можно отслеживать значения различных выражений (переменных), получаемых на текущем этапе исполнения программы. Для этого предназначена правая часть вкладки "Отладка" окна "Инструменты". Чтобы отслеживать значения выражения, добавьте его в наблюдаемые:

  • Во время отладки установите курсор на выражение в исходном коде и нажмите "Добавить наблюдение Добавить наблюдение" в контекстном меню.
  • Нажмите "Добавить Добавить" в контекстном меню правой части вкладки "Отладка". Далее введите имя выражения в появившейся строке.
  • Чтобы изменить название отслеживаемого выражения, дважды нажмите на него мышью.

Просмотр стека и значений выражений

В окне наблюдения за выражениями можно выполнять простые математические вычисления (сложение, вычитание, умножение и деление), а также просматривать значения в конкретных точках массива, например, указав запись A[3][4], где A — это название массива, а 3 и 4 — это позиции в его измерениях. При добавлении объектов в наблюдаемые выражения можно показать список их членов, указав в конце точку или нажав клавиши "Ctrl+Space":

Подстановка членов объектов

По умолчанию, целые числа отображаются в окне наблюдения в десятичном виде. Чтобы вывести значение в двоичном или шестнадцатеричном виде, в поле "Выражение" укажите через запятую модификатор b или x соответственно.

Просмотр выражений в двоичном и шестнадцатеричном виде

Просмотр стека вызовов

В стек вызовов заносится информация для возврата управления из подпрограмм (вложенных функций) в программу (основной обработчик события OnInit, OnTick и т.д.). В стеке вы можете посмотреть весь путь от возникновения события в торговой платформе до вызова конкретной функции.

Для каждой функции отображается следующая информация:

  • Название файла, из которого была вызвана функция.
  • Название функции.
  • Номер строки в файле, где эта функция была вызвана.

Пошаговая отладка

Для пошаговой отладки с просмотром стека вызовов используются команды меню "Отладка" или панели инструментов "Стандартная":

  • Шаг с заходом Шаг с заходом — пройти один шаг выполнения программы с заходом в вызываемые функции. Это же действие выполняется клавишей "F11".
  • Шаг с обходом Шаг с обходом — пройти один шаг выполнения программы без захода в вызываемые функции. Это же действие выполняется клавишей "F10".
  • Шаг наружу Шаг наружу — переход к выполнению одного шага программы на один уровень выше. Это же действие выполняется клавишами "Shift+F11".

Команды пошаговой отладки можно использовать только после приостановки выполнения программы в режиме отладки:

  • После срабатывания точки останова.
  • После приостановки программы вручную командой "Приостановить Приостановить" в меню "Отладка" или клавишей "Break".

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

Приостановка, возобновление и завершение отладки

Остановка выполнения программы во время отладки происходит автоматически, как только оно доходит до строки, в которой установлена точка останова. Также отладкой можно управлять вручную:

  • Приостановка выполнения
    Выполнение программы в процессе отладки может быть прервано вручную командой "Приостановить Приостановить" в меню "Отладка" или клавишей "Break". После приостановки выполнения вы можете использовать команды пошаговой отладки.
  • Возобновление выполнения
    Чтобы возобновить выполнение программы после прерывания, нажмите "Продолжить Продолжить" в меню "Отладка" или "F5".
  • Завершение отладки
    Чтобы прекратить отладку программы, нажмите "Завершить Завершить" в меню "Отладка" или "Shift+F5". Программа будет снята со специального графика, на котором она была запущена для отладки, а сам график будет закрыт.
  • Без исходных MQ4, MQ5 и MQH-файлов отладка невозможна.
  • Не рекомендуется распространять исполняемые EX4/EX5-файлы, полученные в процессе отладки.

Отладка на истории

Отладка торговых роботов и технических индикаторов может быть запущена не только на ценовых данных, обновляющихся в режиме реального времени, но и на исторических. Работу программы можно проверить на интересующем участке истории, не дожидаясь определенных торговых событий в режиме реального времени.

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

Чтобы запустить отладку на истории, задайте параметры запуска тестирования в настройках MetaEditor.

Настройка отладки на истории

Расставьте точки останова в коде программы, а затем запустите отладку на исторических данных.

Запуск отладки на истории

После этого будет запущено визуальное тестирование и начнется процесс отладки.

Отладка на истории