Мастер MQL и эскиз программы

В данной главе мы рассмотрим простейшую MQL5-программу, которая по сути ничего не делает. Её цель в том, чтобы можно было познакомиться с процессом написания исходного кода в редакторе, его компиляции и запуска в терминале. Самостоятельно повторив указанные шаги, вы удостоверитесь в доступности программирования для обычных пользователей и начнете осваиваться в интегрированной среде разработки MQL-программ. Она будет постоянно нужна для практического закрепления материала.

Самым простым типом MQL-программ являются скрипты, поэтому попробуем создать именно скрипт. Для этого запустим MQL-Мастер (Файл -> Новый). На первом шаге выберем из перечня типов Скрипт и нажмем кнопку Далее:

Создание скрипта с помощью Мастера MQL. 1-й шаг

Создание скрипта с помощью Мастера MQL. 1-й шаг

На втором шаге введем название скрипта в поле Имя, дописав его после уже указанной папки по умолчанию и разделителя — "Scripts\". Например, назовем скрипт "Hello" (т.е. в поле Имя будет строка "Scripts\Hello") и, больше ничего не меняя, нажмем кнопку Готово.

Создание скрипта с помощью Мастера MQL. 2-й шаг

Создание скрипта с помощью Мастера MQL. 2-й шаг

В результате Мастер создаст для нас файл Hello.mq5 и откроет его на редактирование. Файл размещается в папке MQL5/Scripts (стандартной для скриптов), потому что мы оставили предложенную по умолчанию папку, но мы могли бы добавить любую вложенную папку или целую иерархию вложенных папок. Например, если на первом шаге Мастера в поле Имя написать "Scripts\Exercise\Hello", то в папке Scripts будет автоматически создана вложенная папка Exercise, и уже в ней будет находиться файл Hello.mq5.

Все примеры из данной книги будут располагаться в папках MQL5Book внутри каталогов, отведенных под MQL-программы соответствующих типов. Это нужно для упрощения установки примеров в вашу рабочую копию терминала и исключения конфликтов имен с другими MQL-программами, которые у вас уже установлены.
 
Например, файл Hello.mq5, поставляемый вместе с книгой, находится по пути MQL5\Scripts\MQL5Book\p1\, где p1 обозначает номер главы (от "part 1"), к которой относится пример.

Получившаяся заготовка скрипта Hello.mq5 содержит следующий текст.

//+------------------------------------------------------------------+
//|                                                        Hello.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
 
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
}
 
//+------------------------------------------------------------------+

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

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

Главная часть скрипта, где предполагается описать суть действий программы, представлена функцией OnStart. Здесь нам потребуется познакомиться с понятиями блока кода и функции.