Введение в MQL5 (Часть 1): Руководство по алготрейдингу для начинающих

Israel Pelumi Abioye | 28 марта, 2024

Введение

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

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

Кроме того, обучение бывает более эффективным, если оно сопровождается практическими примерами. Поэтому я буду приводить примеры и сценарии из реальной жизни, чтобы показать, как MQL5 используется для алготрейдинга. А чтобы сделать весть процесс еще более эффективным, мы будем мотивировать вас на интерактивное обучение. Читателям будет предложено попрактиковаться в написании кода, поэкспериментировать с примерами и применить свои знания на практике. По сути, эти статьи должны дать людям, не имеющим никакого опыта программирования, возможность уверенно ориентироваться в парадигме MQL5 и при этом раскрыть для себя преимущества алгоритмической торговли.

В этой статье мы рассмотрим следующие темы:

Сразу скажу, чем мы займемся в следующих статьях:

1. Введение в программирование

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

Что такое язык программирования? Слово «программирование» означает процесс установления правил или инструкций, которым необходимо следовать для достижения конкретной цели. Слово «язык» означает систему общения, которая позволяет людям выражать идеи, эмоции и мысли. Но компьютеры не понимают человеческий язык. Так как нам передать набор инструкций для достижения наших целей? Здесь на помощь приходит язык программирования — он служит посредником между людьми и компьютерами, позволяя людям общаться с компьютером.

1.1. Типы языков программирования

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

Классификация языков по назначению

1.3. Важные термины в программировании

Примечание: к некоторым их этих терминов мы еще вернемся и рассмотрим их подробнее в ходе этой статьи.


 2. MQL5-программы

MQL5 (MetaQuotes Language 5) — это специализированный С++-подобный язык объектно-ориентированного программирования высокого уровня. С точки зрения области применения это предметно-ориентированный язык, используемый для решения задач, связанных с трейдингом. MQL5 позволяет автоматизировать торговые стратегии, разрабатывать торговых роботов и писать технические индикаторы.

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


3. MetaEditor IDE

MetaEditor — это среда разработки, используемая для создания программ на MQL5. По сути IDE — это редактор, где вы можете писать, отлаживать, компилировать и тестировать свои коды. Редактор MetaEditor 5 поставляется в стандартном пакете с платформой MetaTrader 5 и устанавливается на компьютер при установке платформы.


Примечание: далее в статье мы подробнее разберем, что происходит в этом коде.



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

Итак, это были наши небольшие, но такие важное первые шаги в понимании основ программирования и среды MetaEditor. Мы заложили основу для понимания MQL5 и познакомились с редактором MetaEditor — средой для написания кода. Редактор MetaEditor — это не просто инструмент, это возможность преобразовать ваши идеи в осуществимые стратегии. Давайте теперь немного углубимся в детали программирования на MQL5. Путешествие в алготрейдинг только началось.

4. Основы языка MQL5

Прежде чем приступить к разработке MQL5-программ, важно понять некоторые основные моменты, из которых состоит программа. Рассмотрим базовые понятия — типы данных, функции, переменные, комментарии и синтаксис MQL5.

4.1. Синтаксис

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

Ключевые аспекты синтаксиса:

4.1.1. Окончание операторов

Операторы в MQL5 обычно заканчиваются точкой с запятой («;»). Этот знак сообщает компилятору, что один оператор закончился и начинается следующий.

Пример:

void OnStart()
  {

   Alert("Hello MQL5");  // the semicolon means the end of the code line

  }

4.1.2. Комментарий

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

Однострочные комментарии. Однострочным комментариям предшествует символ «//». Они используются для кратких пояснений.

Примеры:

void OnStart()
  {

   Print("Hello MQL5");   // Эта строка кода выведет “Hello MQL5” при запуске

  }

Примечание: компилятор полностью игнорирует все, что написано после //

Многострочные комментарии

Многострочные комментарии начинаются символами /* и заканчиваются символами */ . Они подходят для более развернутых объяснений. Такие комментарии могут быть полезны для записи планов или пошаговых инструкций при разработке программы.

Пример:

void OnStart()
  {

   /* Во многих языках программирования, включая MQL5,
    точка с запятой “;” используется для обозначения конца оператора.
   Это важнейший элемент, он позволяет компилятору понять структуру программы.
   */
   
  }

Компилятор полностью игнорирует все, что находится между /* и */.

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


4.1.3. Идентификаторы

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

Правила именования

Идентификаторы должны соответствовать определенным правилам именования. Они должны начинаться с буквы (A-Z или a-z), а далее могут следовать буквы, цифры (0–9) или символы подчеркивания (_).

Учет регистра

В MQL5 при именовании учитывается регистр, то есть прописные и строчные буквы различаются. Так, myVariable и MyVariable считаются разными идентификаторами.

Пример:

int myage = 25; 
int MyAge = 25;  // идентификаторы myage и MyAge разные.


Значимые имена

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

Зарезервированные слова

Не используйте зарезервированные слова в качестве идентификаторов. Зарезервированные слова — это слова, которые имеют особое значение в языке программирования и не могут использоваться для других целей. Например, это Alert, Print и Comment. Подробнее о зарезервированных словах модно почитать в документации.

Пример:

    int Age = 25;      
    Print(Age);   
    /*
    Int это тип данных, целое число 25.
    Age это идентификатор
    Print это зарезервированное слово в MQL5, исполняет определенную функцию. Его нельзя использовать в качестве идентификатора
    */


4.2. Основные типы данных

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

Integer (int)

Этот тип можно представить как коробку, в которой хранятся только целые числа. Такой тип может хранить числа типа 1, 5 или 10, но не числа с десятичной точкой.

Пример:

int myInteger = 10;

Double

Этот тип представляет числа с десятичной точкой.

Пример:

double myDouble = 3.14;

Character

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

Пример:

 // Объявляем символьную переменную 
      char myChar = 'A';

 // Выводим символ в консоль 
      Print(myChar);

Тип String

String — строка, представляет собой последовательность символов, обычно используется для текста.

Пример:

string myString = "Hello, MQL5!";

Alert(myString);

Тип Bool (логический)

Логические типы представляют истинные или ложные значения.

Пример:

bool iam25 = true;

Arrays (массивы)

Массивы в MQL5 позволяют хранить несколько значений одного типа данных под одним именем переменной. Это очень удобный способ работы с коллекциями данных. Основные аспекты работы с массивами в MQL5:

1. Объявление массива — вы объявляете массив, указывая его тип данных и имя, за которыми следуют квадратные скобки «[]», обозначающие массив.

Пример:

Объявляем целочисленный массив

int numbers[5];


2. Инициализация — инициализировать массив можно во время объявления, предоставив список значений, заключенный в фигурные скобки '{}'.

Пример:

// Инициализация целочисленного массива

   int numbers[] = {1, 2, 3, 4, 5};



3. Доступ к элементам массива осуществляется по их индексу, начиная с 0. Например, в массиве numbers первым элементом является numbers[0]. Массив в MQL5 можно использовать, например, для получения цен закрытия и открытия.

Пример:

// Доступ к элементам массива

   int firstNumber = numbers[0];  // Доступ к первому элементу


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


Заключение

Итак, в этой статье мы с вами совершили первые шаги в понимании основ программирования на MQL5. Мы начали с общего введения в программирование, перешли к типам MQL5-программ и познакомились со средой программирования MetaEditor IDE, в которой мы дальше будем создавать торговые алгоритмы. Все эти базовые знания должны послужить основой для дальнейшего изучения и создания более сложных программ. Помните, что это только начало, и по мере продвижения возможности программирования на MQL5 будут раскрываться. Следите за статьями и учитесь создавать надежные и эффективные торговые стратегии на MQL5!